diff options
-rw-r--r-- | ChangeLog | 120 | ||||
-rw-r--r-- | NEWS | 14 | ||||
-rw-r--r-- | POSIX.STD | 17 | ||||
-rw-r--r-- | TODO | 5 | ||||
-rw-r--r-- | awk.h | 8 | ||||
-rw-r--r-- | awkgram.c | 17 | ||||
-rw-r--r-- | awkgram.y | 17 | ||||
-rw-r--r-- | awklib/eg/lib/assert.awk | 2 | ||||
-rw-r--r-- | awklib/eg/lib/inplace.awk | 9 | ||||
-rw-r--r-- | awklib/eg/lib/quicksort.awk | 5 | ||||
-rw-r--r-- | awklib/eg/prog/anagram.awk | 6 | ||||
-rw-r--r-- | awklib/eg/prog/extract.awk | 2 | ||||
-rw-r--r-- | awklib/eg/prog/translate.awk | 2 | ||||
-rw-r--r-- | builtin.c | 37 | ||||
-rwxr-xr-x | config.guess | 6 | ||||
-rwxr-xr-x | config.sub | 8 | ||||
-rw-r--r-- | configh.in | 3 | ||||
-rwxr-xr-x | configure | 147 | ||||
-rw-r--r-- | configure.ac | 12 | ||||
-rw-r--r-- | doc/ChangeLog | 108 | ||||
-rw-r--r-- | doc/gawk.info | 2956 | ||||
-rw-r--r-- | doc/gawk.texi | 1641 | ||||
-rw-r--r-- | doc/gawktexi.in | 1638 | ||||
-rw-r--r-- | doc/texinfo.tex | 150 | ||||
-rw-r--r-- | eval.c | 6 | ||||
-rw-r--r-- | extension/ChangeLog | 24 | ||||
-rw-r--r-- | extension/Makefile.am | 3 | ||||
-rw-r--r-- | extension/Makefile.in | 3 | ||||
-rw-r--r-- | extension/build-aux/ChangeLog | 4 | ||||
-rwxr-xr-x | extension/build-aux/config.guess | 6 | ||||
-rwxr-xr-x | extension/build-aux/config.sub | 8 | ||||
-rw-r--r-- | extension/build-aux/ltmain.sh | 23 | ||||
-rwxr-xr-x | extension/configure | 45 | ||||
-rw-r--r-- | extension/filefuncs.c | 2 | ||||
-rw-r--r-- | extension/inplace.3am | 18 | ||||
-rw-r--r-- | extension/inplace.c | 4 | ||||
-rw-r--r-- | extension/m4/ChangeLog | 4 | ||||
-rw-r--r-- | extension/m4/libtool.m4 | 27 | ||||
-rw-r--r-- | extension/m4/ltversion.m4 | 10 | ||||
-rw-r--r-- | gawkapi.c | 4 | ||||
-rw-r--r-- | gawkapi.h | 2 | ||||
-rw-r--r-- | io.c | 147 | ||||
-rw-r--r-- | main.c | 4 | ||||
-rw-r--r-- | missing_d/ChangeLog | 6 | ||||
-rw-r--r-- | missing_d/getaddrinfo.c | 16 | ||||
-rw-r--r-- | missing_d/getaddrinfo.h | 2 | ||||
-rw-r--r-- | po/ca.gmo | bin | 83005 -> 82049 bytes | |||
-rw-r--r-- | po/ca.po | 1077 | ||||
-rw-r--r-- | po/da.gmo | bin | 42160 -> 41373 bytes | |||
-rw-r--r-- | po/da.po | 1079 | ||||
-rw-r--r-- | po/de.gmo | bin | 45199 -> 83971 bytes | |||
-rw-r--r-- | po/de.po | 1561 | ||||
-rw-r--r-- | po/es.gmo | bin | 44600 -> 43722 bytes | |||
-rw-r--r-- | po/es.po | 1084 | ||||
-rw-r--r-- | po/fi.gmo | bin | 84555 -> 83703 bytes | |||
-rw-r--r-- | po/fi.po | 1082 | ||||
-rw-r--r-- | po/fr.gmo | bin | 85628 -> 84606 bytes | |||
-rw-r--r-- | po/fr.po | 1077 | ||||
-rw-r--r-- | po/gawk.pot | 1040 | ||||
-rw-r--r-- | po/it.gmo | bin | 81018 -> 81863 bytes | |||
-rw-r--r-- | po/it.po | 707 | ||||
-rw-r--r-- | po/ja.gmo | bin | 52559 -> 51602 bytes | |||
-rw-r--r-- | po/ja.po | 1079 | ||||
-rw-r--r-- | po/ms.gmo | bin | 1184 -> 1183 bytes | |||
-rw-r--r-- | po/ms.po | 1038 | ||||
-rw-r--r-- | po/nl.gmo | bin | 80863 -> 80070 bytes | |||
-rw-r--r-- | po/nl.po | 1082 | ||||
-rw-r--r-- | po/pl.gmo | bin | 71101 -> 70252 bytes | |||
-rw-r--r-- | po/pl.po | 1082 | ||||
-rw-r--r-- | po/sv.gmo | bin | 80917 -> 79966 bytes | |||
-rw-r--r-- | po/sv.po | 1075 | ||||
-rw-r--r-- | po/vi.gmo | bin | 93025 -> 91989 bytes | |||
-rw-r--r-- | po/vi.po | 1077 | ||||
-rw-r--r-- | profile.c | 27 | ||||
-rw-r--r-- | re.c | 37 | ||||
-rw-r--r-- | regcomp.c | 18 | ||||
-rw-r--r-- | regex.c | 2 | ||||
-rw-r--r-- | regex.h | 2 | ||||
-rw-r--r-- | regex_internal.c | 2 | ||||
-rw-r--r-- | regex_internal.h | 5 | ||||
-rw-r--r-- | regexec.c | 10 | ||||
-rw-r--r-- | symbol.c | 4 | ||||
-rw-r--r-- | test/ChangeLog | 71 | ||||
-rw-r--r-- | test/Makefile.am | 37 | ||||
-rw-r--r-- | test/Makefile.in | 62 | ||||
-rw-r--r-- | test/Maketests | 25 | ||||
-rw-r--r--[-rwxr-xr-x] | test/charasbytes.awk | 0 | ||||
-rw-r--r-- | test/crlf.awk | 11 | ||||
-rw-r--r-- | test/crlf.ok | 3 | ||||
-rw-r--r-- | test/fpat4.awk | 105 | ||||
-rw-r--r-- | test/fpat4.ok | 65 | ||||
-rw-r--r-- | test/inplace1.ok | 2 | ||||
-rw-r--r-- | test/inplace2.ok | 2 | ||||
-rw-r--r-- | test/inplace3.ok | 4 | ||||
-rw-r--r-- | test/mpfrmemok1.awk | 7 | ||||
-rw-r--r-- | test/mpfrmemok1.ok | 7 | ||||
-rw-r--r-- | test/nonfatal1.awk | 6 | ||||
-rw-r--r-- | test/nonfatal1.ok | 2 | ||||
-rw-r--r-- | test/nonfatal2.awk | 5 | ||||
-rw-r--r-- | test/nonfatal2.ok | 1 | ||||
-rw-r--r-- | test/nonfatal3.awk | 6 | ||||
-rw-r--r-- | test/nonfatal3.ok | 1 | ||||
-rw-r--r--[-rwxr-xr-x] | test/ofs1.awk | 0 | ||||
-rw-r--r-- | test/profile0.awk | 1 | ||||
-rw-r--r-- | test/profile0.in | 2 | ||||
-rw-r--r-- | test/profile0.ok | 6 | ||||
-rw-r--r--[-rwxr-xr-x] | test/range1.awk | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | test/sortglos.awk | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | test/sortglos.in | 0 |
109 files changed, 12643 insertions, 10333 deletions
@@ -1,3 +1,107 @@ +2015-03-18 Arnold D. Robbins <arnold@skeeve.com> + + * config.guess, config.sub: Updated, from libtool 2.4.6. + +2015-03-17 Arnold D. Robbins <arnold@skeeve.com> + + * profile.c (pp_number): Allocate enough room to print the number + in all cases. Was a problem mixing -M with profiling with a really + big number. Thanks to Hermann Peifer for the bug report. + +2015-03-08 Arnold D. Robbins <arnold@skeeve.com> + + * re.c (regexflags2str): Removed. It was redundant. + + * io.c (devopen): Change the logic such that if nonfatal is true + for the socket, don't do retries. Also clean up the formatting + some. At strictopen, check if errno is ENOENT and if so, propagate + the error from getaddrinfo() up to the caller. Add explanatory + comments. + +2015-02-28 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * io.c (pty_vs_pipe): Remove check for NULL PROCINFO_node, since + this is now checked inside in_PROCINFO. + +2015-02-27 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * io.c (socketopen): New parameter hard_error; set it if + getaddrinfo() fails. Change fatals to warnings. + (devopen): Pass in address of boolean hard_error variable + and stop trying to open the file if hard_error is true. + Save and restore errno around call to socketopen() and + use restored errno if open() fails at strictopen. + +2015-02-27 Arnold D. Robbins <arnold@skeeve.com> + + * symbol.c (check_param_names): Fix argument order in memset() call. + * configure.ac: Use AC_SEARCH_LIBS instead of AC_CHECK_LIB. This fixes + a long-standing problem where `-lm' was used twice in the final + compilation line. + +2015-02-24 Arnold D. Robbins <arnold@skeeve.com> + + * POSIX.STD: Update copyright year. + * awkgram.y (yylex): Allow \r after \\ line continuation everywhere. + Thanks to Scott Rush <scott.rush@honeywell.com> for the report. + +2015-02-13 Arnold D. Robbins <arnold@skeeve.com> + + * awkgram.y (yylex): Be more careful about passing true to + nextc() when collecting a regexp. Some systems' iscntrl() + are not as forgiving as GLIBC's. E.g., Solaris. + Thanks to Dagobert Michelsen <dam@baltic-online.de> for + the bug report and access to systems to check the fix. + +2015-02-12 Arnold D. Robbins <arnold@skeeve.com> + + * POSIX.STD: Update with info about function parameters. + * configure.ac: Remove test for / use of dbug library. + +2015-02-11 Arnold D. Robbins <arnold@skeeve.com> + + * gawkapi.h: Fix spelling error in comment. + +2015-02-10 Arnold D. Robbins <arnold@skeeve.com> + + * profile.c (pprint): Restore printing of count for rules. + Bug report by Hermann Peifer. + +2015-02-08 Arnold D. Robbins <arnold@skeeve.com> + + * io.c: Make it "NONFATAL" everywhere. + +2015-02-08 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * awk.h (RED_NON_FATAL): Removed. + (redirect): Add new failure_fatal parameter. + (is_non_fatal_redirect): Add declaration. + * builtin.c (efwrite): Rework check for non-fatal. + (do_printf): Adjust calls to redirect. + (do_print_rec): Ditto. Move check for redirection error up. + * io.c (redflags2str): Remove RED_NON_FATAL. + (redirect): Add new failure_fatal parameter. Simplify the code. + (is_non_fatal_redirect): New function. + (do_getline_redir): Adjust calls to redirect. + +2014-12-27 Arnold D. Robbins <arnold@skeeve.com> + + * awk.h (is_non_fatal_std): Declare new function. + * io.c (is_non_fatal_std): New function. + * builtin.c (efwrite): Call it. + +2015-02-07 Arnold D. Robbins <arnold@skeeve.com> + + * regcomp.c, regex.c, regex.h, regex_internal.c, regex_internal.h, + regexec.c: Sync with GLIBC. Mostly copyright date updates. + +2015-02-05 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * eval.c (set_IGNORECASE): If IGNORECASE has a numeric value, try + using that before treating it as a string. This fixes a problem + where setting -v IGNORECASE=0 on the command line was not working + properly. + 2015-02-01 Arnold D. Robbins <arnold@skeeve.com> Move POSIX requirement for disallowing paramater names with the @@ -162,6 +266,22 @@ * profile.c (pprint): Be sure to set ip2 in all paths through the code. Thanks to GCC 4.9 for the warning. +2014-12-20 Arnold D. Robbins <arnold@skeeve.com> + + Enable non-fatal output on per-file or global basis, + via PROCINFO. + + * awk.h (RED_NON_FATAL): New redirection flag. + * builtin.c (efwrite): If RED_NON_FATAL set, just set ERRNO and return. + (do_printf): Check errflg and if set, set ERRNO and return. + (do_print): Ditto. + (do_print_rec): Ditto. + * io.c (redflags2str): Update table. + (redirect): Check for global PROCINFO["nonfatal"] or for + PROCINFO[file, "nonfatal"] and don't fail on open if set. + Add RED_NON_FATAL to flags. + (in_PROCINFO): Make smarter and more general. + 2014-12-12 Stephen Davies <sdavies@sdc.com.au> Improve comment handling in pretty printing. @@ -1,4 +1,5 @@ - Copyright (C) 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc. + Copyright (C) 2010, 2011, 2012, 2013, 2014, 2015, + Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -61,8 +62,7 @@ Changes from 4.1.1 to 4.1.2 4. A number of bugs have been fixed in the MPFR code. -5. Indirect function calls now work for both built-in and - extension functions. +5. Indirect function calls now work for both built-in and extension functions. 6. Built-in functions are now included in FUNCTAB. @@ -83,10 +83,14 @@ Changes from 4.1.1 to 4.1.2 AWKPATH setting, be sure to put "." in it somewhere. The documentation has been updated and clarified. -10. Infrastructure upgrades: Automake 1.15, Gettext 0.19.4, Libtool 2.4.5, +10. Infrastructure upgrades: Automake 1.15, Gettext 0.19.4, Libtool 2.4.6, Bison 3.0.4. -11. POSIX requires that the names of function parameters not be the +11. If a user-defined function has a parameter with the same name as another + user-defined function, it is no longer possible to call the second + function from inside the first. + +12. POSIX requires that the names of function parameters not be the same as any of the special built-in variables and also not conflict with the names of any functions. Gawk has checked for the former since 3.1.7. With --posix, it now also checks for the latter. @@ -1,11 +1,11 @@ - Copyright (C) 1992, 1995, 1998, 2001, 2006, 2007, 2010, 2011 + Copyright (C) 1992, 1995, 1998, 2001, 2006, 2007, 2010, 2011, 2015 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. -------------------------------------------------------------------------- -Thu Mar 31 22:31:57 IST 2011 +Thu Feb 12 08:51:22 IST 2015 ============================ This file documents several things related to the 2008 POSIX standard that I noted after reviewing it. @@ -30,6 +30,19 @@ that I noted after reviewing it. sequence into account. By default gawk doesn't do this. Rather, gawk will do this only if --posix is in effect. +4. According to POSIX, the function parameters of one function may not have + the same name as another function, making this invalid: + + function foo() { ... } + function bar(foo) { ...} + + Or even: + + function bar(foo) { ...} + function foo() { ... } + + Gawk enforces this only with --posix. + The following things aren't described by POSIX but ought to be: 1. The value of $0 in an END rule @@ -1,4 +1,4 @@ -Sun Sep 28 22:19:10 IDT 2014 +Wed Dec 24 20:41:38 IST 2014 ============================ There were too many files tracking different thoughts and ideas for @@ -44,9 +44,6 @@ Minor New Features Consider relaxing the strictness of --posix. - Make it possible to put print/printf + redirections into - an expression. - ? Add an optional base to strtonum, allowing 2-36. ? Optional third argument for index indicating where to start the @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2014 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991-2015 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -1482,8 +1482,8 @@ extern void register_two_way_processor(awk_two_way_processor_t *processor); extern void set_FNR(void); extern void set_NR(void); -extern struct redirect *redirect(NODE *redir_exp, int redirtype, int *errflg); -extern struct redirect *redirect_string(const char *redir_exp_str, size_t redir_exp_len, int not_string_flag, int redirtype, int *errflg, int extfd); +extern struct redirect *redirect(NODE *redir_exp, int redirtype, int *errflg, bool failure_fatal); +extern struct redirect *redirect_string(const char *redir_exp_str, size_t redir_exp_len, bool not_string_flag, int redirtype, int *errflg, int extfd, bool failure_fatal); extern NODE *do_close(int nargs); extern int flush_io(void); extern int close_io(bool *stdio_problem); @@ -1495,6 +1495,8 @@ extern NODE *do_getline(int intovar, IOBUF *iop); extern struct redirect *getredirect(const char *str, int len); extern bool inrec(IOBUF *iop, int *errcode); extern int nextfile(IOBUF **curfile, bool skipping); +extern bool is_non_fatal_std(FILE *fp); +extern bool is_non_fatal_redirect(const char *str); /* main.c */ extern int arg_assign(char *arg, bool initing); extern int is_std_var(const char *var); @@ -5536,7 +5536,7 @@ yylex(void) if (lasttok == LEX_EOF) /* error earlier in current source, must give up !! */ return 0; - c = nextc(true); + c = nextc(! want_regexp); if (c == END_SRC) return 0; if (c == END_FILE) @@ -5578,12 +5578,12 @@ yylex(void) want_regexp = false; tok = tokstart; for (;;) { - c = nextc(true); + c = nextc(false); if (gawk_mb_cur_max == 1 || nextc_is_1stbyte) switch (c) { case '[': /* one day check for `.' and `=' too */ - if (nextc(true) == ':' || in_brack == 0) + if (nextc(false) == ':' || in_brack == 0) in_brack++; pushback(); break; @@ -5595,11 +5595,14 @@ yylex(void) in_brack--; break; case '\\': - if ((c = nextc(true)) == END_FILE) { + if ((c = nextc(false)) == END_FILE) { pushback(); yyerror(_("unterminated regexp ends with `\\' at end of file")); goto end_regexp; /* kludge */ - } else if (c == '\n') { + } + if (c == '\r') /* allow MS-DOS files. bleah */ + c = nextc(true); + if (c == '\n') { sourceline++; continue; } else { @@ -5813,7 +5816,7 @@ retry: return lasttok = '*'; case '/': - if (nextc(true) == '=') { + if (nextc(false) == '=') { pushback(); return lasttok = SLASH_BEFORE_EQUAL; } @@ -5948,6 +5951,8 @@ retry: if ((gawk_mb_cur_max == 1 || nextc_is_1stbyte) && c == '\\') { c = nextc(true); + if (c == '\r') /* allow MS-DOS files. bleah */ + c = nextc(true); if (c == '\n') { sourceline++; continue; @@ -3198,7 +3198,7 @@ yylex(void) if (lasttok == LEX_EOF) /* error earlier in current source, must give up !! */ return 0; - c = nextc(true); + c = nextc(! want_regexp); if (c == END_SRC) return 0; if (c == END_FILE) @@ -3240,12 +3240,12 @@ yylex(void) want_regexp = false; tok = tokstart; for (;;) { - c = nextc(true); + c = nextc(false); if (gawk_mb_cur_max == 1 || nextc_is_1stbyte) switch (c) { case '[': /* one day check for `.' and `=' too */ - if (nextc(true) == ':' || in_brack == 0) + if (nextc(false) == ':' || in_brack == 0) in_brack++; pushback(); break; @@ -3257,11 +3257,14 @@ yylex(void) in_brack--; break; case '\\': - if ((c = nextc(true)) == END_FILE) { + if ((c = nextc(false)) == END_FILE) { pushback(); yyerror(_("unterminated regexp ends with `\\' at end of file")); goto end_regexp; /* kludge */ - } else if (c == '\n') { + } + if (c == '\r') /* allow MS-DOS files. bleah */ + c = nextc(true); + if (c == '\n') { sourceline++; continue; } else { @@ -3475,7 +3478,7 @@ retry: return lasttok = '*'; case '/': - if (nextc(true) == '=') { + if (nextc(false) == '=') { pushback(); return lasttok = SLASH_BEFORE_EQUAL; } @@ -3610,6 +3613,8 @@ retry: if ((gawk_mb_cur_max == 1 || nextc_is_1stbyte) && c == '\\') { c = nextc(true); + if (c == '\r') /* allow MS-DOS files. bleah */ + c = nextc(true); if (c == '\n') { sourceline++; continue; diff --git a/awklib/eg/lib/assert.awk b/awklib/eg/lib/assert.awk index 75fd8853..c8e13490 100644 --- a/awklib/eg/lib/assert.awk +++ b/awklib/eg/lib/assert.awk @@ -1,4 +1,4 @@ -# assert --- assert that a condition is true. Otherwise exit. +# assert --- assert that a condition is true. Otherwise, exit. # # Arnold Robbins, arnold@skeeve.com, Public Domain diff --git a/awklib/eg/lib/inplace.awk b/awklib/eg/lib/inplace.awk index 6403a228..d1574654 100644 --- a/awklib/eg/lib/inplace.awk +++ b/awklib/eg/lib/inplace.awk @@ -5,10 +5,15 @@ # Please set INPLACE_SUFFIX to make a backup copy. For example, you may # want to set INPLACE_SUFFIX to .bak on the command line or in a BEGIN rule. +# N.B. We call inplace_end() in the BEGINFILE and END rules so that any +# actions in an ENDFILE rule will be redirected as expected. + BEGINFILE { - inplace_begin(FILENAME, INPLACE_SUFFIX) + if (_inplace_filename != "") + inplace_end(_inplace_filename, INPLACE_SUFFIX) + inplace_begin(_inplace_filename = FILENAME, INPLACE_SUFFIX) } -ENDFILE { +END { inplace_end(FILENAME, INPLACE_SUFFIX) } diff --git a/awklib/eg/lib/quicksort.awk b/awklib/eg/lib/quicksort.awk index 3ba2d6e3..e0ed8bc7 100644 --- a/awklib/eg/lib/quicksort.awk +++ b/awklib/eg/lib/quicksort.awk @@ -4,8 +4,9 @@ # 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 + +# quicksort --- C.A.R. Hoare's quicksort algorithm. See Wikipedia +# or almost any algorithms or computer science text. # # Adapted from K&R-II, page 110 diff --git a/awklib/eg/prog/anagram.awk b/awklib/eg/prog/anagram.awk index 7ca14559..df2768d9 100644 --- a/awklib/eg/prog/anagram.awk +++ b/awklib/eg/prog/anagram.awk @@ -1,5 +1,5 @@ -# anagram.awk --- An implementation of the anagram finding algorithm -# from Jon Bentley's "Programming Pearls", 2nd edition. +# anagram.awk --- An implementation of the anagram-finding algorithm +# from Jon Bentley's "Programming Pearls," 2nd edition. # Addison Wesley, 2000, ISBN 0-201-65788-0. # Column 2, Problem C, section 2.8, pp 18-20. # @@ -21,7 +21,7 @@ key = word2key($1) # Build signature data[key][$1] = $1 # Store word with signature } -# word2key --- split word apart into letters, sort, joining back together +# word2key --- split word apart into letters, sort, and join back together function word2key(word, a, i, n, result) { diff --git a/awklib/eg/prog/extract.awk b/awklib/eg/prog/extract.awk index 24f40ce5..f5dfcf40 100644 --- a/awklib/eg/prog/extract.awk +++ b/awklib/eg/prog/extract.awk @@ -1,4 +1,4 @@ -# extract.awk --- extract files and run programs from texinfo files +# extract.awk --- extract files and run programs from Texinfo files # # Arnold Robbins, arnold@skeeve.com, Public Domain # May 1993 diff --git a/awklib/eg/prog/translate.awk b/awklib/eg/prog/translate.awk index cf7f3897..e7403717 100644 --- a/awklib/eg/prog/translate.awk +++ b/awklib/eg/prog/translate.awk @@ -4,7 +4,7 @@ # August 1989 # February 2009 - bug fix -# Bugs: does not handle things like: tr A-Z a-z, it has +# Bugs: does not handle things like tr A-Z a-z; it has # to be spelled out. However, if `to' is shorter than `from', # the last character in `to' is used for the rest of `from'. @@ -129,10 +129,14 @@ wrerror: if (fp == stdout && errno == EPIPE) gawk_exit(EXIT_FATAL); + /* otherwise die verbosely */ - fatal(_("%s to \"%s\" failed (%s)"), from, - rp ? rp->value : _("standard output"), - errno ? strerror(errno) : _("reason unknown")); + if ((rp != NULL) ? is_non_fatal_redirect(rp->value) : is_non_fatal_std(fp)) + update_ERRNO_int(errno); + else + fatal(_("%s to \"%s\" failed (%s)"), from, + rp ? rp->value : _("standard output"), + errno ? strerror(errno) : _("reason unknown")); } /* do_exp --- exponential function */ @@ -1639,7 +1643,7 @@ do_printf(int nargs, int redirtype) FILE *fp = NULL; NODE *tmp; struct redirect *rp = NULL; - int errflg; /* not used, sigh */ + int errflg = 0; NODE *redir_exp = NULL; if (nargs == 0) { @@ -1650,7 +1654,7 @@ do_printf(int nargs, int redirtype) redir_exp = TOP(); if (redir_exp->type != Node_val) fatal(_("attempt to use array `%s' in a scalar context"), array_vname(redir_exp)); - rp = redirect(redir_exp, redirtype, & errflg); + rp = redirect(redir_exp, redirtype, & errflg, true); DEREF(redir_exp); decr_sp(); } @@ -1663,9 +1667,13 @@ do_printf(int nargs, int redirtype) redir_exp = PEEK(nargs); if (redir_exp->type != Node_val) fatal(_("attempt to use array `%s' in a scalar context"), array_vname(redir_exp)); - rp = redirect(redir_exp, redirtype, & errflg); + rp = redirect(redir_exp, redirtype, & errflg, true); if (rp != NULL) fp = rp->output.fp; + else if (errflg) { + update_ERRNO_int(errflg); + return; + } } else if (do_debug) /* only the debugger can change the default output */ fp = output_fp; else @@ -2078,7 +2086,7 @@ void do_print(int nargs, int redirtype) { struct redirect *rp = NULL; - int errflg; /* not used, sigh */ + int errflg = 0; FILE *fp = NULL; int i; NODE *redir_exp = NULL; @@ -2090,9 +2098,13 @@ do_print(int nargs, int redirtype) redir_exp = PEEK(nargs); if (redir_exp->type != Node_val) fatal(_("attempt to use array `%s' in a scalar context"), array_vname(redir_exp)); - rp = redirect(redir_exp, redirtype, & errflg); + rp = redirect(redir_exp, redirtype, & errflg, true); if (rp != NULL) fp = rp->output.fp; + else if (errflg) { + update_ERRNO_int(errflg); + return; + } } else if (do_debug) /* only the debugger can change the default output */ fp = output_fp; else @@ -2148,13 +2160,13 @@ do_print_rec(int nargs, int redirtype) FILE *fp = NULL; NODE *f0; struct redirect *rp = NULL; - int errflg; /* not used, sigh */ + int errflg = 0; NODE *redir_exp = NULL; assert(nargs == 0); if (redirtype != 0) { redir_exp = TOP(); - rp = redirect(redir_exp, redirtype, & errflg); + rp = redirect(redir_exp, redirtype, & errflg, true); if (rp != NULL) fp = rp->output.fp; DEREF(redir_exp); @@ -2162,6 +2174,11 @@ do_print_rec(int nargs, int redirtype) } else fp = output_fp; + if (errflg) { + update_ERRNO_int(errflg); + return; + } + if (fp == NULL) return; diff --git a/config.guess b/config.guess index 6c32c864..dbfb9786 100755 --- a/config.guess +++ b/config.guess @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2014 Free Software Foundation, Inc. +# Copyright 1992-2015 Free Software Foundation, Inc. -timestamp='2014-11-04' +timestamp='2015-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -50,7 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2014 Free Software Foundation, Inc. +Copyright 1992-2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -1,8 +1,8 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2014 Free Software Foundation, Inc. +# Copyright 1992-2015 Free Software Foundation, Inc. -timestamp='2014-12-03' +timestamp='2015-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -68,7 +68,7 @@ Report bugs and patches to <config-patches@gnu.org>." version="\ GNU config.sub ($timestamp) -Copyright 1992-2014 Free Software Foundation, Inc. +Copyright 1992-2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -260,7 +260,7 @@ case $basic_machine in | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ - | fido | fr30 | frv \ + | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ @@ -96,9 +96,6 @@ /* Define to 1 if you have the <libintl.h> header file. */ #undef HAVE_LIBINTL_H -/* Define to 1 if you have the `m' library (-lm). */ -#undef HAVE_LIBM - /* Define to 1 if you have a fully functional readline library. */ #undef HAVE_LIBREADLINE @@ -5837,11 +5837,7 @@ if test -f $srcdir/.developing then # add other debug flags as appropriate, save GAWKDEBUG for emergencies CFLAGS="$CFLAGS -DARRAYDEBUG -DYYDEBUG -DLOCALEDEBUG" - if grep dbug $srcdir/.developing - then - CFLAGS="$CFLAGS -DDBUG" - LIBS="$LIBS dbug/libdbug.a" - fi + # turn on compiler warnings if we're doing development # enable debugging using macros also if test "$GCC" = yes @@ -9596,13 +9592,12 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fmod in -lm" >&5 -$as_echo_n "checking for fmod in -lm... " >&6; } -if ${ac_cv_lib_m_fmod+:} false; then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing fmod" >&5 +$as_echo_n "checking for library containing fmod... " >&6; } +if ${ac_cv_search_fmod+:} false; then : $as_echo_n "(cached) " >&6 else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lm $LIBS" + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9621,33 +9616,44 @@ return fmod (); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_m_fmod=yes -else - ac_cv_lib_m_fmod=no +for ac_lib in '' m; 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_fmod=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS + conftest$ac_exeext + if ${ac_cv_search_fmod+:} false; then : + break fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_fmod" >&5 -$as_echo "$ac_cv_lib_m_fmod" >&6; } -if test "x$ac_cv_lib_m_fmod" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBM 1 -_ACEOF +done +if ${ac_cv_search_fmod+:} false; then : - LIBS="-lm $LIBS" +else + ac_cv_search_fmod=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_fmod" >&5 +$as_echo "$ac_cv_search_fmod" >&6; } +ac_res=$ac_cv_search_fmod +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for isinf in -lm" >&5 -$as_echo_n "checking for isinf in -lm... " >&6; } -if ${ac_cv_lib_m_isinf+:} false; then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing isinf" >&5 +$as_echo_n "checking for library containing isinf... " >&6; } +if ${ac_cv_search_isinf+:} false; then : $as_echo_n "(cached) " >&6 else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lm $LIBS" + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9666,33 +9672,44 @@ return isinf (); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_m_isinf=yes -else - ac_cv_lib_m_isinf=no +for ac_lib in '' m; 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_isinf=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS + conftest$ac_exeext + if ${ac_cv_search_isinf+:} false; then : + break fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_isinf" >&5 -$as_echo "$ac_cv_lib_m_isinf" >&6; } -if test "x$ac_cv_lib_m_isinf" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBM 1 -_ACEOF +done +if ${ac_cv_search_isinf+:} false; then : - LIBS="-lm $LIBS" +else + ac_cv_search_isinf=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_isinf" >&5 +$as_echo "$ac_cv_search_isinf" >&6; } +ac_res=$ac_cv_search_isinf +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ismod in -lm" >&5 -$as_echo_n "checking for ismod in -lm... " >&6; } -if ${ac_cv_lib_m_ismod+:} false; then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing ismod" >&5 +$as_echo_n "checking for library containing ismod... " >&6; } +if ${ac_cv_search_ismod+:} false; then : $as_echo_n "(cached) " >&6 else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lm $LIBS" + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9711,23 +9728,35 @@ return ismod (); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_m_ismod=yes -else - ac_cv_lib_m_ismod=no +for ac_lib in '' m; 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_ismod=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS + conftest$ac_exeext + if ${ac_cv_search_ismod+:} false; then : + break fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_ismod" >&5 -$as_echo "$ac_cv_lib_m_ismod" >&6; } -if test "x$ac_cv_lib_m_ismod" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBM 1 -_ACEOF +done +if ${ac_cv_search_ismod+:} false; then : - LIBS="-lm $LIBS" +else + ac_cv_search_ismod=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_ismod" >&5 +$as_echo "$ac_cv_search_ismod" >&6; } +ac_res=$ac_cv_search_ismod +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi diff --git a/configure.ac b/configure.ac index 8662ca2b..a6972ab2 100644 --- a/configure.ac +++ b/configure.ac @@ -88,11 +88,7 @@ if test -f $srcdir/.developing then # add other debug flags as appropriate, save GAWKDEBUG for emergencies CFLAGS="$CFLAGS -DARRAYDEBUG -DYYDEBUG -DLOCALEDEBUG" - if grep dbug $srcdir/.developing - then - CFLAGS="$CFLAGS -DDBUG" - LIBS="$LIBS dbug/libdbug.a" - fi + # turn on compiler warnings if we're doing development # enable debugging using macros also if test "$GCC" = yes @@ -258,9 +254,9 @@ AC_CHECK_FUNC(getaddrinfo, [AC_DEFINE(HAVE_GETADDRINFO, 1, [have getaddrinfo])], [AC_DEFINE(HAVE_GETADDRINFO, 1, [have getaddrinfo])])]) -AC_CHECK_LIB(m, fmod) -AC_CHECK_LIB(m, isinf) -AC_CHECK_LIB(m, ismod) +AC_SEARCH_LIBS(fmod, m) +AC_SEARCH_LIBS(isinf, m) +AC_SEARCH_LIBS(ismod, m) dnl Don't look for libsigsegv on OSF/1, gives us severe headaches case $host_os in osf1) : ;; diff --git a/doc/ChangeLog b/doc/ChangeLog index 9b7d31db..56b2d7f2 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,9 +1,100 @@ +2015-03-17 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * gawktexi.in: Modify inplace.awk to call inplace_end in BEGINFILE + and END instead of in ENDFILE. This way, actions in ENDFILE rules + will be redirected as expected. + +2015-03-17 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: Turn "positive" into non-negative as appropriate. + Thanks to Nicholas Mills <nlmills@clemson.edu> for pointing out + the issue. + +2015-03-08 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: Briefly describe that nonfatal I/O overrides + GAWK_SOCK_RETRIES, in the env var part and in the nonfatal I/O + part. + +2015-03-01 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: Change quotes to @dfn for pseudorandom. + A last-minute O'Reilly fix. + +2015-02-27 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: Update UPDATE-MONTH and copyright year. + Note that "the guide is definitive" quote is really + from "The Restaurant at the End of the Universe". Thanks + to Antonio Colombo for pointing this out. + +2015-02-24 Arnold D. Robbins <arnold@skeeve.com> + + * texinfo.tex: Update to most current version. + * gawktexi.in: Minor edit to match an O'Reilly fix. + Add some FIXMEs to one day use @sup. + +2015-02-22 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: Change 'div' to 'divisor' in some examples. + This future-proofs against a new function in master. + Thanks to Antonio Giovanni Colombo for the report. + +2015-02-20 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: More O'Reilly fixes. I think it's done! + +2015-02-19 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: More O'Reilly fixes. + +2015-02-17 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: A few minor formatting fixes to sync with O'Reilly + version. + +2015-02-13 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: O'Reilly fixes. Through QC1 review. + +2015-02-11 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: O'Reilly fixes. + +2015-02-10 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: Minor fixes, O'Reilly fixes. + +2015-02-09 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: Restore a lost sentence. O'Reilly fixes. + +2015-02-08 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: O'Reilly fixes. + Make non-fatal i/o use "NONFATAL". + +2015-02-06 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: O'Reilly fixes. + +2015-02-04 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: O'Reilly fixes. + * gawktexi.in: Update various version-related bits of info. + +2015-02-02 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: O'Reilly fixes. + 2015-02-01 Arnold D. Robbins <arnold@skeeve.com> * gawktexi.in: POSIX requirement that function parameters cannot have the same name as a function is now --posix. Restore indirectcall example. + More O'Reilly fixes. + 2015-01-30 Arnold D. Robbins <arnold@skeeve.com> * gawktexi.in: Document POSIX requirement that function parameters @@ -26,7 +117,7 @@ 2015-01-23 Arnold D. Robbins <arnold@skeeve.com> * gawktexi.in: O'Reilly fixes. - (Glossary): Many new entries from Antonio Giovanni Columbo. + (Glossary): Many new entries from Antonio Giovanni Colombo. 2015-01-21 Arnold D. Robbins <arnold@skeeve.com> @@ -40,7 +131,12 @@ 2015-01-19 Arnold D. Robbins <arnold@skeeve.com> * gawkinet.texi: Fix capitalization in document title. - * gawktexi.in: Here we again: Starting on more O'Reilly fixes. + * gawktexi.in: Here we go again: Starting on more O'Reilly fixes. + +2014-12-27 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: Add info that nonfatal I/O works with stdout and + stderr. Revise version info and what was added when. 2015-01-05 Andrew J. Schorr <aschorr@telemetry-investments.com> @@ -67,9 +163,13 @@ 2014-12-24 Arnold D. Robbins <arnold@skeeve.com> + * gawktexi.in: Start documenting nonfatal output. + +2014-12-24 Arnold D. Robbins <arnold@skeeve.com> + * gawktexi.in: Add one more paragraph to new foreword. * gawktexi.in: Fix exponentiation in TeX mode. Thanks to - Marco Curreli by way of Antonio Giovanni Columbo. + Marco Curreli by way of Antonio Giovanni Colombo. * texinfo.tex: Updated. @@ -139,7 +239,7 @@ 2014-10-17 Arnold D. Robbins <arnold@skeeve.com> * gawktexi.in: Fix date in docbook attribution for new Foreword; - thanks to Antonio Columbo for the catch. Update latest version + thanks to Antonio Colombo for the catch. Update latest version of gettext. 2014-10-15 Arnold D. Robbins <arnold@skeeve.com> diff --git a/doc/gawk.info b/doc/gawk.info index 15f5d978..95788ec2 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -247,6 +247,7 @@ entitled "GNU Free Documentation License". * Special Caveats:: Things to watch out for. * Close Files And Pipes:: Closing Input and Output Files and Pipes. +* Nonfatal:: Enabling Nonfatal Output. * Output Summary:: Output summary. * Output Exercises:: Exercises. * Values:: Constants, Variables, and Regular @@ -956,7 +957,7 @@ provided in *note Language History::. The language described in this Info file is often referred to as "new `awk'." By analogy, the original version of `awk' is referred to as "old `awk'." - Today, on most systems, when you run the `awk' utility you get some + On most current systems, when you run the `awk' utility you get some version of new `awk'.(1) If your system's standard `awk' is the old one, you will see something like this if you try the test program: @@ -1377,6 +1378,12 @@ also must acknowledge my gratitude to G-d, for the many opportunities He has sent my way, as well as for the gifts He has given me with which to take advantage of those opportunities. + +Arnold Robbins +Nof Ayalon +Israel +February 2015 + File: gawk.info, Node: Getting Started, Next: Invoking Gawk, Prev: Preface, Up: Top @@ -1870,7 +1877,7 @@ file surrounded by double quotes: File: gawk.info, Node: Sample Data Files, Next: Very Simple, Prev: Running gawk, Up: Getting Started -1.2 Data Files for the Examples +1.2 Data files for the Examples =============================== Many of the examples in this Info file take their input from two sample @@ -3009,7 +3016,8 @@ used by regular users: `GAWK_SOCK_RETRIES' Controls the number of times `gawk' attempts to retry a two-way TCP/IP (socket) connection before giving up. *Note TCP/IP - Networking::. + Networking::. Note that when nonfatal I/O is enabled (*note + Nonfatal::), `gawk' only tries to open a TCP/IP socket once. `POSIXLY_CORRECT' Causes `gawk' to switch to POSIX-compatibility mode, disabling all @@ -3455,8 +3463,8 @@ sequences apply to both string constants and regexp constants: would continue incorporating hexadecimal digits into the value until a non-hexadecimal digit or the end of the string was encountered. However, using more than two hexadecimal - digits produced undefined results. As of version *FIXME:* - 4.3.0, only two digits are processed. + digits produced undefined results. As of version 4.2, only + two digits are processed. `\/' A literal slash (necessary for regexp constants only). This @@ -5095,9 +5103,9 @@ the built-in variable `FIELDWIDTHS'. Each number specifies the width of the field, _including_ columns between fields. If you want to ignore the columns between fields, you can specify the width as a separate field that is subsequently ignored. It is a fatal error to -supply a field width that is not a positive number. The following data -is the output of the Unix `w' utility. It is useful to illustrate the -use of `FIELDWIDTHS': +supply a field width that has a negative value. The following data is +the output of the Unix `w' utility. It is useful to illustrate the use +of `FIELDWIDTHS': 10:06pm up 21 days, 14:04, 23 users User tty login idle JCPU PCPU what @@ -6157,6 +6165,7 @@ function. `gawk' allows access to inherited file descriptors. * Close Files And Pipes:: Closing Input and Output Files and Pipes. +* Nonfatal:: Enabling Nonfatal Output. * Output Summary:: Output summary. * Output Exercises:: Exercises. @@ -6554,7 +6563,7 @@ which they may appear: messages at runtime. *Note Printf Ordering::, which describes how and why to use positional specifiers. For now, we ignore them. -`- (Minus)' +`-' (Minus) The minus sign, used before the width modifier (see later on in this list), says to left-justify the argument within its specified width. Normally, the argument is printed right-justified in the @@ -6564,7 +6573,7 @@ which they may appear: prints `foo*'. -`SPACE' +SPACE For numeric conversions, prefix positive values with a space and negative values with a minus sign. @@ -6609,7 +6618,7 @@ which they may appear: programs. For information on appropriate quoting tricks, see *note Quoting::. -`WIDTH' +WIDTH This is a number specifying the desired minimum width of a field. Inserting any number between the `%' sign and the format-control character forces the field to expand to this width. The default @@ -6987,7 +6996,7 @@ option (*note Options::). File: gawk.info, Node: Special Files, Next: Close Files And Pipes, Prev: Special FD, Up: Printing -5.8 Special File Names in `gawk' +5.8 Special File names in `gawk' ================================ Besides access to standard input, standard output, and standard error, @@ -7048,7 +7057,7 @@ mentioned here only for completeness. Full discussion is delayed until File: gawk.info, Node: Special Caveats, Prev: Special Network, Up: Special Files -5.8.3 Special File Name Caveats +5.8.3 Special File name Caveats ------------------------------- Here are some things to bear in mind when using the special file names @@ -7070,7 +7079,7 @@ that `gawk' provides: behavior. -File: gawk.info, Node: Close Files And Pipes, Next: Output Summary, Prev: Special Files, Up: Printing +File: gawk.info, Node: Close Files And Pipes, Next: Nonfatal, Prev: Special Files, Up: Printing 5.9 Closing Input and Output Redirections ========================================= @@ -7239,9 +7248,68 @@ call. See the system manual pages for information on how to decode this value. -File: gawk.info, Node: Output Summary, Next: Output Exercises, Prev: Close Files And Pipes, Up: Printing +File: gawk.info, Node: Nonfatal, Next: Output Summary, Prev: Close Files And Pipes, Up: Printing + +5.10 Enabling Nonfatal Output +============================= + +This minor node describes a `gawk'-specific feature. + + In standard `awk', output with `print' or `printf' to a nonexistent +file, or some other I/O error (such as filling up the disk) is a fatal +error. + + $ gawk 'BEGIN { print "hi" > "/no/such/file" }' + error--> gawk: cmd. line:1: fatal: can't redirect to `/no/such/file' (No such file or directory) + + `gawk' makes it possible to detect that an error has occurred, +allowing you to possibly recover from the error, or at least print an +error message of your choosing before exiting. You can do this in one +of two ways: + + * For all output files, by assigning any value to + `PROCINFO["NONFATAL"]'. + + * On a per-file basis, by assigning any value to `PROCINFO[FILENAME, + "NONFATAL"]'. Here, FILENAME is the name of the file to which you + wish output to be nonfatal. + + Once you have enabled nonfatal output, you must check `ERRNO' after +every relevant `print' or `printf' statement to see if something went +wrong. It is also a good idea to initialize `ERRNO' to zero before +attempting the output. For example: + + $ gawk ' + > BEGIN { + > PROCINFO["NONFATAL"] = 1 + > ERRNO = 0 + > print "hi" > "/no/such/file" + > if (ERRNO) { + > print("Output failed:", ERRNO) > "/dev/stderr" + > exit 1 + > } + > }' + error--> Output failed: No such file or directory + + Here, `gawk' did not produce a fatal error; instead it let the `awk' +program code detect the problem and handle it. + + This mechanism works also for standard output and standard error. +For standard output, you may use `PROCINFO["-", "NONFATAL"]' or +`PROCINFO["/dev/stdout", "NONFATAL"]'. For standard error, use +`PROCINFO["/dev/stderr", "NONFATAL"]'. + + When attempting to open a TCP/IP socket (*note TCP/IP Networking::), +`gawk' tries multiple times. The `GAWK_SOCK_RETRIES' environment +variable (*note Other Environment Variables::) allows you to override +`gawk''s builtin default number of attempts. However, once nonfatal +I/O is enabled for a given socket, `gawk' only retries once, relying on +`awk'-level code to notice that there was a problem. + + +File: gawk.info, Node: Output Summary, Next: Output Exercises, Prev: Nonfatal, Up: Printing -5.10 Summary +5.11 Summary ============ * The `print' statement prints comma-separated expressions. Each @@ -7263,11 +7331,16 @@ File: gawk.info, Node: Output Summary, Next: Output Exercises, Prev: Close Fi For coprocesses, it is possible to close only one direction of the communications. + * Normally errors with `print' or `printf' are fatal. `gawk' lets + you make output errors be nonfatal either for all files or on a + per-file basis. You must then check for errors after every + relevant output statement. + File: gawk.info, Node: Output Exercises, Prev: Output Summary, Up: Printing -5.11 Exercises +5.12 Exercises ============== 1. Rewrite the program: @@ -9107,9 +9180,10 @@ accepts any record with a first field that contains `li': -| 555-5553 -| 555-6699 - 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'. + A regexp constant as a pattern is also a special case of an +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 @@ -9849,12 +9923,12 @@ divisor of any integer, and also identifies prime numbers: # find smallest divisor of num { num = $1 - for (div = 2; div * div <= num; div++) { - if (num % div == 0) + for (divisor = 2; divisor * divisor <= num; divisor++) { + if (num % divisor == 0) break } - if (num % div == 0) - printf "Smallest divisor of %d is %d\n", num, div + if (num % divisor == 0) + printf "Smallest divisor of %d is %d\n", num, divisor else printf "%d is prime\n", num } @@ -9872,12 +9946,12 @@ Statement::.) # find smallest divisor of num { num = $1 - for (div = 2; ; div++) { - if (num % div == 0) { - printf "Smallest divisor of %d is %d\n", num, div + for (divisor = 2; ; divisor++) { + if (num % divisor == 0) { + printf "Smallest divisor of %d is %d\n", num, divisor break } - if (div * div > num) { + if (divisor * divisor > num) { printf "%d is prime\n", num break } @@ -10212,15 +10286,14 @@ description of each variable.) `IGNORECASE #' If `IGNORECASE' is nonzero or non-null, then all string comparisons - and all regular expression matching are case-independent. Thus, - regexp matching with `~' and `!~', as well as the `gensub()', + and all regular expression matching are case-independent. This + applies to regexp matching with `~' and `!~', the `gensub()', `gsub()', `index()', `match()', `patsplit()', `split()', and `sub()' functions, record termination with `RS', and field - splitting with `FS' and `FPAT', all ignore case when doing their - particular regexp operations. However, the value of `IGNORECASE' - does _not_ affect array subscripting and it does not affect field - splitting when using a single-character field separator. *Note - Case-sensitivity::. + splitting with `FS' and `FPAT'. However, the value of + `IGNORECASE' does _not_ affect array subscripting and it does not + affect field splitting when using a single-character field + separator. *Note Case-sensitivity::. `LINT #' When this variable is true (nonzero or non-null), `gawk' behaves @@ -10908,7 +10981,7 @@ be used as an array index. including a specification of how many elements or components they contain. In such languages, the declaration causes a contiguous block of memory to be allocated for that many elements. Usually, an index in -the array must be a positive integer. For example, the index zero +the array must be a nonnegative integer. For example, the index zero specifies the first element in the array, which is actually stored at the beginning of the block of memory. Index one specifies the second element, which is stored in memory right after the first element, and @@ -10963,8 +11036,8 @@ It has elements 0-3 and 10, but doesn't have elements 4, 5, 6, 7, 8, or 9. Another consequence of associative arrays is that the indices don't -have to be positive integers. Any number, or even a string, can be an -index. For example, the following is an array that translates words +have to be nonnegative integers. Any number, or even a string, can be +an index. For example, the following is an array that translates words from English to French: Index Value @@ -11135,7 +11208,7 @@ File: gawk.info, Node: Scanning an Array, Next: Controlling Scanning, Prev: A 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 -arrays are contiguous and indices are limited to positive integers, +arrays are contiguous and indices are limited to nonnegative integers, this is easy: all the valid indices can be found by counting from the lowest index up to the highest. This technique won't do the job in `awk', because any number or string can be an array index. So `awk' @@ -12071,7 +12144,7 @@ numbers. (2) `mawk' uses a different seed each time. (3) Computer-generated random numbers really are not truly random. -They are technically known as "pseudorandom." This means that although +They are technically known as "pseudorandom". This means that although the numbers in a sequence appear to be random, you can in fact generate the same sequence of random numbers over and over again. @@ -13395,13 +13468,14 @@ This program produces the following output when run: -| lshift(0x99, 2) = 0x264 = 0000001001100100 -| rshift(0x99, 2) = 0x26 = 00100110 - The `bits2str()' function turns a binary number into a string. The -number `1' represents a binary value where the rightmost bit is set to -1. Using this mask, the function repeatedly checks the rightmost bit. -ANDing the mask with the value indicates whether the rightmost bit is 1 -or not. If so, a `"1"' is concatenated onto the front of the string. -Otherwise, a `"0"' is added. The value is then shifted right by one -bit and the loop continues until there are no more 1 bits. + The `bits2str()' function turns a binary number into a string. +Initializing `mask' to one creates a binary value where the rightmost +bit is set to one. Using this mask, the function repeatedly checks the +rightmost bit. ANDing the mask with the value indicates whether the +rightmost bit is one or not. If so, a `"1"' is concatenated onto the +front of the string. Otherwise, a `"0"' is added. The value is then +shifted right by one bit and the loop continues until there are no more +one bits. If the initial value is zero, it returns a simple `"0"'. Otherwise, at the end, it pads the value with zeros to represent multiples of @@ -13430,7 +13504,7 @@ traverses every element of an array of arrays (*note Arrays of Arrays::). `isarray(X)' - Return a true value if X is an array. Otherwise return false. + Return a true value if X is an array. Otherwise, return false. `isarray()' is meant for use in two circumstances. The first is when traversing a multidimensional array: you can test if an element is @@ -13477,8 +13551,8 @@ brackets ([ ]): Return the plural form used for NUMBER of the translation of STRING1 and STRING2 in text domain DOMAIN for locale category CATEGORY. STRING1 is the English singular variant of a message, - and STRING2 the English plural variant of the same message. The - default value for DOMAIN is the current value of `TEXTDOMAIN'. + and STRING2 is the English plural variant of the same message. + The default value for DOMAIN is the current value of `TEXTDOMAIN'. The default value for CATEGORY is `"LC_MESSAGES"'. @@ -13507,7 +13581,7 @@ File: gawk.info, Node: Definition Syntax, Next: Function Example, Up: User-de 9.2.1 Function Definition Syntax -------------------------------- - It's entirely fair to say that the `awk' syntax for local variable + It's entirely fair to say that the awk syntax for local variable definitions is appallingly awful. -- Brian Kernighan Definitions of functions can appear anywhere between the rules of an @@ -13550,9 +13624,9 @@ have a parameter with the same name as the function itself. Local variables act like the empty string if referenced where a string value is required, and like zero if referenced where a numeric -value is required. This is the same as regular variables that have -never been assigned a value. (There is more to understand about local -variables; *note Dynamic Typing::.) +value is required. This is the same as the behavior of regular +variables that have never been assigned a value. (There is more to +understand about local variables; *note Dynamic Typing::.) The BODY-OF-FUNCTION consists of `awk' statements. It is the most important part of the definition, because it says what the function @@ -13581,9 +13655,9 @@ function is supposed to be used. variable values hide, or "shadow", any variables of the same names used in the rest of the program. The shadowed variables are not accessible in the function definition, because there is no way to name them while -their names have been taken away for the local variables. All other -variables used in the `awk' program can be referenced or set normally -in the function's body. +their names have been taken away for the arguments and local variables. +All other variables used in the `awk' program can be referenced or set +normally in the function's body. The arguments and local variables last only as long as the function body is executing. Once the body finishes, you can once again access @@ -13636,7 +13710,7 @@ takes a number and prints it in a specific format: printf "%6.3g\n", num } -To illustrate, here is an `awk' rule that uses our `myprint' function: +To illustrate, here is an `awk' rule that uses our `myprint()' function: $3 > 0 { myprint($3) } @@ -13665,13 +13739,13 @@ extra whitespace signifies the start of the local variable list): When working with arrays, it is often necessary to delete all the 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'. +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 relatively 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. +string as an input parameter and returns the string in reverse order. Recursive functions must always have a test that stops the recursion. In this case, the recursion terminates when the input string is already empty: @@ -13762,14 +13836,14 @@ File: gawk.info, Node: Variable Scope, Next: Pass By Value/Reference, Prev: C 9.2.3.2 Controlling Variable Scope .................................. -Unlike many languages, there is no way to make a variable local to a +Unlike in many languages, there is no way to make a variable local to a `{' ... `}' block in `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 function. To make a variable local to a function, simply declare the variable as an argument after the actual function arguments (*note Definition -Syntax::). Look at the following example where variable `i' is a +Syntax::). Look at the following example, where variable `i' is a global variable used by both functions `foo()' and `bar()': function bar() @@ -13805,7 +13879,7 @@ variable instance: foo's i=3 top's i=3 - If you want `i' to be local to both `foo()' and `bar()' do as + If you want `i' to be local to both `foo()' and `bar()', do as follows (the extra space before `i' is a coding convention to indicate that `i' is a local variable, not an argument): @@ -13887,7 +13961,7 @@ explicitly whether the arguments are passed "by value" or "by reference". Instead, the passing convention is determined at runtime when the -function is called according to the following rule: if the argument is +function is called, according to the following rule: if the argument is an array variable, then it is passed by reference. Otherwise, the argument is passed by value. @@ -13945,7 +14019,7 @@ function _are_ visible outside that function. stores `"two"' in the second element of `a'. Some `awk' implementations allow you to call a function that has not -been defined. They only report a problem at runtime when the program +been defined. They only report a problem at runtime, when the program actually tries to call the function. For example: BEGIN { @@ -13990,15 +14064,15 @@ undefined, and therefore, unpredictable. In practice, though, all versions of `awk' simply return the null string, which acts like zero if used in a numeric context. - A `return' statement with no value expression is assumed at the end -of every function definition. So if control reaches the end of the -function body, then technically, the function returns an unpredictable + A `return' statement without an EXPRESSION is assumed at the end of +every function definition. So, if control reaches the end of the +function body, then technically the function returns an unpredictable value. In practice, it returns the empty string. `awk' does _not_ warn you if you use the return value of such a function. Sometimes, you want to write a function for what it does, not for what it returns. Such a function corresponds to a `void' function in -C, C++ or Java, or to a `procedure' in Ada. Thus, it may be +C, C++, or Java, or to a `procedure' in Ada. Thus, it may be appropriate to not return any value; simply bear in mind that you should not be using the return value of such a function. @@ -14104,13 +14178,13 @@ you can specify the name of the function to call as a string variable, and then call the function. Let's look at an example. Suppose you have a file with your test scores for the classes you -are taking. The first field is the class name. The following fields -are the functions to call to process the data, up to a "marker" field +are taking, and you wish to get the sum and the average of your test +scores. The first field is the class name. The following fields are +the functions to call to process the data, up to a "marker" field `data:'. Following the marker, to the end of the record, are the various numeric test scores. - Here is the initial file; you wish to get the sum and the average of -your test scores: + Here is the initial file: Biology_101 sum average data: 87.0 92.4 78.5 94.9 Chemistry_305 sum average data: 75.2 98.3 94.7 88.2 @@ -14168,9 +14242,9 @@ using indirect function calls: return ret } - These two functions expect to work on fields; thus the parameters + These two functions expect to work on fields; thus, the parameters `first' and `last' indicate where in the fields to start and end. -Otherwise they perform the expected computations and are not unusual: +Otherwise, they perform the expected computations and are not unusual: # For each record, print the class name and the requested statistics { @@ -14223,18 +14297,19 @@ to force it to be a string value.) may think at first. The C and C++ languages provide "function pointers," which are a mechanism for calling a function chosen at runtime. One of the most well-known uses of this ability is the C -`qsort()' function, which sorts an array using the famous "quick sort" +`qsort()' function, which sorts an array using the famous "quicksort" algorithm (see the Wikipedia article -(http://en.wikipedia.org/wiki/Quick_sort) for more information). To -use this function, you supply a pointer to a comparison function. This +(http://en.wikipedia.org/wiki/Quicksort) for more information). To use +this function, you supply a pointer to a comparison function. This mechanism allows you to sort arbitrary data in an arbitrary fashion. We can do something similar using `gawk', like this: # quicksort.awk --- Quicksort algorithm, with user-supplied # comparison function - # quicksort --- C.A.R. Hoare's quick sort algorithm. See Wikipedia - # or almost any algorithms or computer science text + + # quicksort --- C.A.R. Hoare's quicksort algorithm. See Wikipedia + # or almost any algorithms or computer science text. function quicksort(data, left, right, less_than, i, last) { @@ -14263,7 +14338,7 @@ mechanism allows you to sort arbitrary data in an arbitrary fashion. The `quicksort()' function receives the `data' array, the starting and ending indices to sort (`left' and `right'), and the name of a function that performs a "less than" comparison. It then implements -the quick sort algorithm. +the quicksort algorithm. To make use of the sorting function, we return to our previous example. The first thing to do is write some comparison functions: @@ -14357,61 +14432,7 @@ names of the two comparison functions: -| rsort: <100.0 95.6 93.4 87.1> Another example where indirect functions calls are useful can be -found in processing arrays. *note Walking Arrays::, presented a simple -function for "walking" an array of arrays. That function simply -printed the name and value of each scalar array element. However, it is -easy to generalize that function, by passing in the name of a function -to call when walking an array. The modified function looks like this: - - function process_array(arr, name, process, do_arrays, i, new_name) - { - for (i in arr) { - new_name = (name "[" i "]") - if (isarray(arr[i])) { - if (do_arrays) - @process(new_name, arr[i]) - process_array(arr[i], new_name, process, do_arrays) - } else - @process(new_name, arr[i]) - } - } - - The arguments are as follows: - -`arr' - The array. - -`name' - The name of the array (a string). - -`process' - The name of the function to call. - -`do_arrays' - If this is true, the function can handle elements that are - subarrays. - - If subarrays are to be processed, that is done before walking them -further. - - When run with the following scaffolding, the function produces the -same results as does the earlier `walk_array()' function: - - BEGIN { - a[1] = 1 - a[2][1] = 21 - a[2][2] = 22 - a[3] = 3 - a[4][1][1] = 411 - a[4][2] = 42 - - process_array(a, "a", "do_print", 0) - } - - function do_print(name, element) - { - printf "%s = %s\n", name, element - } +found in processing arrays. This is described in *note Walking Arrays::. Remember that you must supply a leading `@' in front of an indirect function call. @@ -14503,7 +14524,7 @@ File: gawk.info, Node: Library Functions, Next: Sample Programs, Prev: Functi *note User-defined::, describes how to write your own `awk' functions. Writing functions is important, because it allows you to encapsulate algorithms and program tasks in a single place. It simplifies -programming, making program development more manageable, and making +programming, making program development more manageable and making programs more readable. In their seminal 1976 book, `Software Tools',(1) Brian Kernighan and @@ -14608,7 +14629,7 @@ often use variable names like these for their own purposes. The example programs shown in this major node all start the names of their private variables with an underscore (`_'). Users generally don't use leading underscores in their variable names, so this -convention immediately decreases the chances that the variable name +convention immediately decreases the chances that the variable names will be accidentally shared with the user's program. In addition, several of the library functions use a prefix that helps @@ -14621,7 +14642,7 @@ for private function names.(1) As a final note on variable naming, if a function makes global variables available for use by a main program, it is a good convention -to start that variable's name with a capital letter--for example, +to start those variables' names with a capital letter--for example, `getopt()''s `Opterr' and `Optind' variables (*note Getopt Function::). The leading capital letter indicates that it is global, while the fact that the variable name is not all capital letters indicates that the @@ -14629,7 +14650,7 @@ variable is not one of `awk''s predefined variables, such as `FS'. It is also important that _all_ variables in library functions that do not need to save state are, in fact, declared local.(2) If this is -not done, the variable could accidentally be used in the user's +not done, the variables could accidentally be used in the user's program, leading to bugs that are very difficult to track down: function lib_func(x, y, l1, l2) @@ -14807,7 +14828,7 @@ for use in printing the diagnostic message. This is not possible in `awk', so this `assert()' function also requires a string version of the condition that is being tested. Following is the function: - # assert --- assert that a condition is true. Otherwise exit. + # assert --- assert that a condition is true. Otherwise, exit. function assert(condition, string) { @@ -14828,7 +14849,7 @@ the condition that is being tested. Following is the function: false, it prints a message to standard error, using the `string' parameter to describe the failed condition. It then sets the variable `_assert_exit' to one and executes the `exit' statement. The `exit' -statement jumps to the `END' rule. If the `END' rules finds +statement jumps to the `END' rule. If the `END' rule finds `_assert_exit' to be true, it exits immediately. The purpose of the test in the `END' rule is to keep any other `END' @@ -15043,9 +15064,9 @@ the strings in an array into one long string. The following function, `join()', accomplishes this task. It is used later in several of the application programs (*note Sample Programs::). - Good function design is important; this function needs to be general -but it should also have a reasonable default behavior. It is called -with an array as well as the beginning and ending indices of the + Good function design is important; this function needs to be +general, but it should also have a reasonable default behavior. It is +called with an array as well as the beginning and ending indices of the elements in the array to be merged. This assumes that the array indices are numeric--a reasonable assumption, as the array was likely created with `split()' (*note String Functions::): @@ -15164,7 +15185,7 @@ optional timestamp value to use instead of the current time. File: gawk.info, Node: Readfile Function, Next: Shell Quoting, Prev: Getlocaltime Function, Up: General Functions -10.2.8 Reading a Whole File At Once +10.2.8 Reading a Whole File at Once ----------------------------------- Often, it is convenient to have the entire contents of a file available @@ -15206,13 +15227,13 @@ reads the entire contents of the named file in one shot: It works by setting `RS' to `^$', a regular expression that will never match if the file has contents. `gawk' reads data from the file -into `tmp' attempting to match `RS'. The match fails after each read, +into `tmp', attempting to match `RS'. The match fails after each read, but fails quickly, such that `gawk' fills `tmp' with the entire contents of the file. (*Note Records::, for information on `RT' and `RS'.) In the case that `file' is empty, the return value is the null -string. Thus calling code may use something like: +string. Thus, calling code may use something like: contents = readfile("/some/path") if (length(contents) == 0) @@ -15279,7 +15300,7 @@ three-character string `"\"'\""': File: gawk.info, Node: Data File Management, Next: Getopt Function, Prev: General Functions, Up: Library Functions -10.3 Data File Management +10.3 Data file Management ========================= This minor node presents functions that are useful for managing @@ -15296,14 +15317,15 @@ command-line data files. File: gawk.info, Node: Filetrans Function, Next: Rewind Function, Up: Data File Management -10.3.1 Noting Data File Boundaries +10.3.1 Noting Data file Boundaries ---------------------------------- The `BEGIN' and `END' rules are each executed exactly once, at the beginning and end of your `awk' program, respectively (*note BEGIN/END::). We (the `gawk' authors) once had a user who mistakenly -thought that the `BEGIN' rule is executed at the beginning of each data -file and the `END' rule is executed at the end of each data file. +thought that the `BEGIN' rules were executed at the beginning of each +data file and the `END' rules were executed at the end of each data +file. When informed that this was not the case, the user requested that we add new special patterns to `gawk', named `BEGIN_FILE' and `END_FILE', @@ -15337,7 +15359,7 @@ does so _portably_; this works with any implementation of `awk': This file must be loaded before the user's "main" program, so that the rule it supplies is executed first. - This rule relies on `awk''s `FILENAME' variable that automatically + This rule relies on `awk''s `FILENAME' variable, which automatically changes for each new data file. The current file name is saved in a private variable, `_oldfilename'. If `FILENAME' does not equal `_oldfilename', then a new data file is being processed and it is @@ -15352,7 +15374,7 @@ correctly even for the first data file. The program also supplies an `END' rule to do the final processing for the last file. Because this `END' rule comes before any `END' rules supplied in the "main" program, `endfile()' is called first. Once -again the value of multiple `BEGIN' and `END' rules should be clear. +again, the value of multiple `BEGIN' and `END' rules should be clear. If the same data file occurs twice in a row on the command line, then `endfile()' and `beginfile()' are not executed at the end of the first @@ -15379,7 +15401,7 @@ how it simplifies writing the main program. You are probably wondering, if `beginfile()' and `endfile()' functions can do the job, why does `gawk' have `BEGINFILE' and -`ENDFILE' patterns (*note BEGINFILE/ENDFILE::)? +`ENDFILE' patterns? Good question. Normally, if `awk' cannot open a file, this causes an immediate fatal error. In this case, there is no way for a @@ -15387,7 +15409,8 @@ user-defined function to deal with the problem, as the mechanism for calling it relies on the file being open and at the first record. Thus, the main reason for `BEGINFILE' is to give you a "hook" to catch files that cannot be processed. `ENDFILE' exists for symmetry, and because -it provides an easy way to do per-file cleanup processing. +it provides an easy way to do per-file cleanup processing. For more +information, refer to *note BEGINFILE/ENDFILE::. File: gawk.info, Node: Rewind Function, Next: File Checking, Prev: Filetrans Function, Up: Data File Management @@ -15395,15 +15418,14 @@ File: gawk.info, Node: Rewind Function, Next: File Checking, Prev: Filetrans 10.3.2 Rereading the Current File --------------------------------- -Another request for a new built-in function was for a `rewind()' -function that would make it possible to reread the current file. The -requesting user didn't want to have to use `getline' (*note Getline::) -inside a loop. +Another request for a new built-in function was for a function that +would make it possible to reread the current file. The requesting user +didn't want to have to use `getline' (*note Getline::) inside a loop. However, as long as you are not in the `END' rule, it is quite easy to arrange to immediately close the current input file and then start -over with it from the top. For lack of a better name, we'll call it -`rewind()': +over with it from the top. For lack of a better name, we'll call the +function `rewind()': # rewind.awk --- rewind the current file and start over @@ -15433,7 +15455,7 @@ rule finishes!) File: gawk.info, Node: File Checking, Next: Empty Files, Prev: Rewind Function, Up: Data File Management -10.3.3 Checking for Readable Data Files +10.3.3 Checking for Readable Data files --------------------------------------- Normally, if you give `awk' a data file that isn't readable, it stops @@ -15461,7 +15483,7 @@ longer in the list). See also *note ARGC and ARGV::. Because `awk' variable names only allow the English letters, the regular expression check purposely does not use character classes such -as `[:alpha:]' and `[:alnum:]' (*note Bracket Expressions::) +as `[:alpha:]' and `[:alnum:]' (*note Bracket Expressions::). ---------- Footnotes ---------- @@ -15472,14 +15494,14 @@ opened. However, the code here provides a portable solution. File: gawk.info, Node: Empty Files, Next: Ignoring Assigns, Prev: File Checking, Up: Data File Management -10.3.4 Checking for Zero-length Files +10.3.4 Checking for Zero-Length Files ------------------------------------- All known `awk' implementations silently skip over zero-length files. This is a by-product of `awk''s implicit read-a-record-and-match-against-the-rules loop: when `awk' tries to -read a record from an empty file, it immediately receives an end of -file indication, closes the file, and proceeds on to the next +read a record from an empty file, it immediately receives an +end-of-file indication, closes the file, and proceeds on to the next command-line data file, _without_ executing any user-level `awk' program code. @@ -15523,13 +15545,13 @@ of the `for' loop uses the `<=' operator, not `<'. File: gawk.info, Node: Ignoring Assigns, Prev: Empty Files, Up: Data File Management -10.3.5 Treating Assignments as File Names +10.3.5 Treating Assignments as File names ----------------------------------------- Occasionally, you might not want `awk' to process command-line variable assignments (*note Assignment Options::). In particular, if you have a file name that contains an `=' character, `awk' treats the file name as -an assignment, and does not process it. +an assignment and does not process it. Some users have suggested an additional command-line option for `gawk' to disable command-line assignments. However, some simple @@ -15819,8 +15841,8 @@ which is in `ARGV[0]': } } - The rest of the `BEGIN' rule is a simple test program. Here is the -result of two sample runs of the test program: + The rest of the `BEGIN' rule is a simple test program. Here are the +results of two sample runs of the test program: $ awk -f getopt.awk -v _getopt_test=1 -- -a -cbARG bax -x -| c = <a>, Optarg = <> @@ -15866,10 +15888,10 @@ File: gawk.info, Node: Passwd Functions, Next: Group Functions, Prev: Getopt ============================== The `PROCINFO' array (*note Built-in Variables::) provides access to -the current user's real and effective user and group ID numbers, and if -available, the user's supplementary group set. However, because these -are numbers, they do not provide very useful information to the average -user. There needs to be some way to find the user information +the current user's real and effective user and group ID numbers, and, +if available, the user's supplementary group set. However, because +these are numbers, they do not provide very useful information to the +average user. There needs to be some way to find the user information associated with the user and group ID numbers. This minor node presents a suite of functions for retrieving information from the user database. *Note Group Functions::, for a similar suite that retrieves @@ -15880,7 +15902,7 @@ kept. Instead, it provides the `<pwd.h>' header file and several C language subroutines for obtaining user information. The primary function is `getpwent()', for "get password entry." The "password" comes from the original user database file, `/etc/passwd', which stores -user information, along with the encrypted passwords (hence the name). +user information along with the encrypted passwords (hence the name). Although an `awk' program could simply read `/etc/passwd' directly, this file may not contain complete information about the system's set @@ -15928,7 +15950,7 @@ Encrypted password User-ID The user's numeric user ID number. (On some systems, it's a C - `long', and not an `int'. Thus we cast it to `long' for all + `long', and not an `int'. Thus, we cast it to `long' for all cases.) Group-ID @@ -16027,8 +16049,8 @@ or on some other `awk' implementation. `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. When the loop is done, `_pw_init()' cleans up by closing +split the lines into fields, and then store the lines into each array +as necessary. When the loop is done, `_pw_init()' cleans up by closing the pipeline, setting `_pw_inited' to one, and restoring `FS' (and `FIELDWIDTHS' or `FPAT' if necessary), `RS', and `$0'. The use of `_pw_count' is explained shortly. @@ -16156,7 +16178,7 @@ Group Password Group ID Number The group's numeric group ID number; the association of name to number must be unique within the file. (On some systems it's a C - `long', and not an `int'. Thus we cast it to `long' for all + `long', and not an `int'. Thus, we cast it to `long' for all cases.) Group Member List @@ -16246,29 +16268,30 @@ to ensure that the database is scanned no more than once. The `_gr_init()' function first saves `FS', `RS', and `$0', and then sets `FS' and `RS' to the correct values for scanning the group information. It also takes care to note whether `FIELDWIDTHS' or `FPAT' is being -used, and to restore the appropriate field splitting mechanism. +used, and to restore the appropriate field-splitting mechanism. - The group information is stored is several associative arrays. The + The group information is stored in several associative arrays. The arrays are indexed by group name (`_gr_byname'), by group ID number (`_gr_bygid'), and by position in the database (`_gr_bycount'). There is an additional array indexed by username (`_gr_groupsbyuser'), which is a space-separated list of groups to which each user belongs. - Unlike the user database, it is possible to have multiple records in -the database for the same group. This is common when a group has a + Unlike in the user database, it is possible to have multiple records +in the database for the same group. This is common when a group has a large number of members. A pair of such entries might look like the following: - tvpeople:*:101:johny,jay,arsenio + tvpeople:*:101:johnny,jay,arsenio tvpeople:*:101:david,conan,tom,joan For this reason, `_gr_init()' looks to see if a group name or group -ID number is already seen. If it is, the usernames are simply +ID number is already seen. If so, the usernames are simply concatenated onto the previous list of users.(1) Finally, `_gr_init()' closes the pipeline to `grcat', restores `FS' -(and `FIELDWIDTHS' or `FPAT' if necessary), `RS', and `$0', initializes -`_gr_count' to zero (it is used later), and makes `_gr_inited' nonzero. +(and `FIELDWIDTHS' or `FPAT', if necessary), `RS', and `$0', +initializes `_gr_count' to zero (it is used later), and makes +`_gr_inited' nonzero. The `getgrnam()' function takes a group name as its argument, and if that group exists, it is returned. Otherwise, it relies on the array @@ -16331,9 +16354,9 @@ very simple, relying on `awk''s associative arrays to do work. ---------- Footnotes ---------- - (1) There is actually a subtle problem with the code just presented. -Suppose that the first time there were no names. This code adds the -names with a leading comma. It also doesn't check that there is a `$4'. + (1) There is a subtle problem with the code just presented. Suppose +that the first time there were no names. This code adds the names with +a leading comma. It also doesn't check that there is a `$4'. File: gawk.info, Node: Walking Arrays, Next: Library Functions Summary, Prev: Group Functions, Up: Library Functions @@ -16342,11 +16365,11 @@ File: gawk.info, Node: Walking Arrays, Next: Library Functions Summary, Prev: ================================ *note Arrays of Arrays::, described how `gawk' provides arrays of -arrays. In particular, any element of an array may be either a scalar, +arrays. In particular, any element of an array may be either a scalar or another array. The `isarray()' function (*note Type Functions::) lets you distinguish an array from a scalar. The following function, -`walk_array()', recursively traverses an array, printing each element's -indices and value. You call it with the array and a string +`walk_array()', recursively traverses an array, printing the element +indices and values. You call it with the array and a string representing the name of the array: function walk_array(arr, name, i) @@ -16386,6 +16409,61 @@ value. Here is a main program to demonstrate: -| a[4][1][1] = 411 -| a[4][2] = 42 + The function just presented simply prints the name and value of each +scalar array element. However, it is easy to generalize it, by passing +in the name of a function to call when walking an array. The modified +function looks like this: + + function process_array(arr, name, process, do_arrays, i, new_name) + { + for (i in arr) { + new_name = (name "[" i "]") + if (isarray(arr[i])) { + if (do_arrays) + @process(new_name, arr[i]) + process_array(arr[i], new_name, process, do_arrays) + } else + @process(new_name, arr[i]) + } + } + + The arguments are as follows: + +`arr' + The array. + +`name' + The name of the array (a string). + +`process' + The name of the function to call. + +`do_arrays' + If this is true, the function can handle elements that are + subarrays. + + If subarrays are to be processed, that is done before walking them +further. + + When run with the following scaffolding, the function produces the +same results as does the earlier version of `walk_array()': + + BEGIN { + a[1] = 1 + a[2][1] = 21 + a[2][2] = 22 + a[3] = 3 + a[4][1][1] = 411 + a[4][2] = 42 + + process_array(a, "a", "do_print", 0) + } + + function do_print(name, element) + { + printf "%s = %s\n", name, element + } + File: gawk.info, Node: Library Functions Summary, Next: Library Exercises, Prev: Walking Arrays, Up: Library Functions @@ -16403,24 +16481,24 @@ File: gawk.info, Node: Library Functions Summary, Next: Library Exercises, Pr * The functions presented here fit into the following categories: General problems - Number-to-string conversion, assertions, rounding, random - number generation, converting characters to numbers, joining - strings, getting easily usable time-of-day information, and - reading a whole file in one shot. + Number-to-string conversion, testing assertions, rounding, + random number generation, converting characters to numbers, + joining strings, getting easily usable time-of-day + information, and reading a whole file in one shot Managing data files Noting data file boundaries, rereading the current file, checking for readable files, checking for zero-length files, - and treating assignments as file names. + and treating assignments as file names Processing command-line options - An `awk' version of the standard C `getopt()' function. + An `awk' version of the standard C `getopt()' function Reading the user and group databases - Two sets of routines that parallel the C library versions. + Two sets of routines that parallel the C library versions Traversing arrays of arrays - A simple function to traverse an array of arrays to any depth. + Two functions that traverse an array of arrays to any depth @@ -16515,7 +16593,7 @@ you. to replace the installed versions on your system. Nor may all of these programs be fully compliant with the most recent POSIX standard. This is not a problem; their purpose is to illustrate `awk' language -programming for "real world" tasks. +programming for "real-world" tasks. The programs are presented in alphabetical order. @@ -16541,7 +16619,7 @@ separated by TABs by default, but you may supply a command-line option to change the field "delimiter" (i.e., the field-separator character). `cut''s definition of fields is less general than `awk''s. - A common use of `cut' might be to pull out just the login name of + A common use of `cut' might be to pull out just the login names of logged-on users from the output of `who'. For example, the following pipeline generates a sorted, unique list of the logged-on users: @@ -16950,7 +17028,7 @@ unsuccessful match. If the line does not match, the `next' statement just moves on to the next record. A number of additional tests are made, but they are only done if we -are not counting lines. First, if the user only wants exit status +are not counting lines. First, if the user only wants the exit status (`no_print' is true), then it is enough to know that _one_ line in this file matched, and we can skip on to the next file with `nextfile'. Similarly, if we are only printing file names, we can print the file @@ -16984,7 +17062,7 @@ line is printed, with a leading file name and colon if necessary: } The `END' rule takes care of producing the correct exit status. If -there are no matches, the exit status is one; otherwise it is zero: +there are no matches, the exit status is one; otherwise, it is zero: END { exit (total == 0) @@ -17026,7 +17104,8 @@ a more palatable output than just individual numbers. Here is a simple version of `id' written in `awk'. It uses the user database library functions (*note Passwd Functions::) and the group -database library functions (*note Group Functions::): +database library functions (*note Group Functions::) from *note Library +Functions::. The program is fairly straightforward. All the work is done in the `BEGIN' rule. The user and group ID numbers are obtained from @@ -17123,8 +17202,8 @@ is as follows:(1) By default, the output files are named `xaa', `xab', and so on. Each file has 1,000 lines in it, with the likely exception of the last file. To change the number of lines in each file, supply a number on the -command line preceded with a minus (e.g., `-500' for files with 500 -lines in them instead of 1,000). To change the name of the output +command line preceded with a minus sign (e.g., `-500' for files with +500 lines in them instead of 1,000). To change the names of the output files to something like `myfileaa', `myfileab', and so on, supply an additional argument that specifies the file name prefix. @@ -17761,7 +17840,7 @@ checking and setting of defaults: the delay, the count, and the message to print. If the user supplied a message without the ASCII BEL character (known as the "alert" character, `"\a"'), then it is added to the message. (On many systems, printing the ASCII BEL generates an -audible alert. Thus when the alarm goes off, the system calls attention +audible alert. Thus, when the alarm goes off, the system calls attention to itself in case the user is not looking at the computer.) Just for a change, this program uses a `switch' statement (*note Switch Statement::), but the processing could be done with a series of @@ -17893,7 +17972,7 @@ the "from" list. Once upon a time, a user proposed adding a transliteration function to `gawk'. The following program was written to prove that character transliteration could be done with a user-level function. This program -is not as complete as the system `tr' utility but it does most of the +is not as complete as the system `tr' utility, but it does most of the job. The `translate' program was written long before `gawk' acquired the @@ -17903,13 +17982,13 @@ and `gsub()' built-in functions (*note String Functions::). There are two functions. The first, `stranslate()', takes three arguments: `from' - A list of characters from which to translate. + A list of characters from which to translate `to' - A list of characters to which to translate. + A list of characters to which to translate `target' - The string on which to do the translation. + The string on which to do the translation Associative arrays make the translation part fairly easy. `t_ar' holds the "to" characters, indexed by the "from" characters. Then a @@ -17917,7 +17996,7 @@ simple loop goes through `from', one character at a time. For each character in `from', if the character appears in `target', it is replaced with the corresponding `to' character. - The `translate()' function calls `stranslate()' using `$0' as the + The `translate()' function calls `stranslate()', using `$0' as the target. The main program sets two global variables, `FROM' and `TO', from the command line, and then changes `ARGV' so that `awk' reads from the standard input. @@ -17926,7 +18005,7 @@ the standard input. record: # translate.awk --- do tr-like stuff - # Bugs: does not handle things like: tr A-Z a-z, it has + # Bugs: does not handle things like tr A-Z a-z; it has # to be spelled out. However, if `to' is shorter than `from', # the last character in `to' is used for the rest of `from'. @@ -18004,13 +18083,13 @@ File: gawk.info, Node: Labels Program, Next: Word Sorting, Prev: Translate Pr 11.3.4 Printing Mailing Labels ------------------------------ -Here is a "real world"(1) program. This script reads lists of names and +Here is a "real-world"(1) program. This script reads lists of names and addresses and generates mailing labels. Each page of labels has 20 labels on it, two across and 10 down. The addresses are guaranteed to be no more than five lines of data. Each address is separated from the next by a blank line. - The basic idea is to read 20 labels worth of data. Each line of + The basic idea is to read 20 labels' worth of data. Each line of each label is stored in the `line' array. The single rule takes care of filling the `line' array and printing the page when 20 labels have been read. @@ -18022,13 +18101,13 @@ splits records at blank lines (*note Records::). It sets `MAXLINES' to Most of the work is done in the `printpage()' function. The label lines are stored sequentially in the `line' array. But they have to -print horizontally; `line[1]' next to `line[6]', `line[2]' next to +print horizontally: `line[1]' next to `line[6]', `line[2]' next to `line[7]', and so on. Two loops accomplish this. The outer loop, controlled by `i', steps through every 10 lines of data; this is each row of labels. The inner loop, controlled by `j', goes through the -lines within the row. As `j' goes from 0 to 4, `i+j' is the `j'-th -line in the row, and `i+j+5' is the entry next to it. The output ends -up looking something like this: +lines within the row. As `j' goes from 0 to 4, `i+j' is the `j'th line +in the row, and `i+j+5' is the entry next to it. The output ends up +looking something like this: line 1 line 6 line 2 line 7 @@ -18131,8 +18210,8 @@ a useful format. printf "%s\t%d\n", word, freq[word] } - The program relies on `awk''s default field splitting mechanism to -break each line up into "words," and uses an associative array named + The program relies on `awk''s default field-splitting mechanism to +break each line up into "words" and uses an associative array named `freq', indexed by each word, to count the number of times the word occurs. In the `END' rule, it prints the counts. @@ -18218,7 +18297,7 @@ File: gawk.info, Node: History Sorting, Next: Extract Program, Prev: Word Sor 11.3.6 Removing Duplicates from Unsorted Text --------------------------------------------- -The `uniq' program (*note Uniq Program::), removes duplicate lines from +The `uniq' program (*note Uniq Program::) removes duplicate lines from _sorted_ data. Suppose, however, you need to remove duplicate lines from a data @@ -18271,7 +18350,7 @@ hand. Here we present a program that can extract parts of a Texinfo input file into separate files. This Info file is written in Texinfo -(http://www.gnu.org/software/texinfo/), the GNU project's document +(http://www.gnu.org/software/texinfo/), the GNU Project's document formatting language. A single Texinfo source file can be used to produce both printed documentation, with TeX, and online documentation. (The Texinfo language is described fully, starting with *note @@ -18312,7 +18391,7 @@ them in a standard directory where `gawk' can find them. The Texinfo file looks something like this: ... - This program has a @code{BEGIN} rule, + This program has a @code{BEGIN} rule that prints a nice message: @example @@ -18337,7 +18416,7 @@ upper- and lowercase letters in the directives won't matter. given (`NF' is at least three) and also checking that the command exits with a zero exit status, signifying OK: - # extract.awk --- extract files and run programs from texinfo files + # extract.awk --- extract files and run programs from Texinfo files BEGIN { IGNORECASE = 1 } @@ -18364,11 +18443,11 @@ The variable `e' is used so that the rule fits nicely on the screen. file name is given in the directive. If the file named is not the current file, then the current file is closed. Keeping the current file open until a new file is encountered allows the use of the `>' -redirection for printing the contents, keeping open file management +redirection for printing the contents, keeping open-file management simple. The `for' loop does the work. It reads lines using `getline' (*note -Getline::). For an unexpected end of file, it calls the +Getline::). For an unexpected end-of-file, it calls the `unexpected_eof()' function. If the line is an "endfile" line, then it breaks out of the loop. If the line is an `@group' or `@end group' line, then it ignores it and goes on to the next line. Similarly, @@ -18458,10 +18537,10 @@ File: gawk.info, Node: Simple Sed, Next: Igawk Program, Prev: Extract Program 11.3.8 A Simple Stream Editor ----------------------------- -The `sed' utility is a stream editor, a program that reads a stream of -data, makes changes to it, and passes it on. It is often used to make -global changes to a large file or to a stream of data generated by a -pipeline of commands. Although `sed' is a complicated program in its +The `sed' utility is a "stream editor", a program that reads a stream +of data, makes changes to it, and passes it on. It is often used to +make global changes to a large file or to a stream of data generated by +a pipeline of commands. Although `sed' is a complicated program in its own right, its most common use is to perform global substitutions in the middle of a pipeline: @@ -18575,7 +18654,7 @@ include a library function twice. `igawk' should behave just like `gawk' externally. This means it should accept all of `gawk''s command-line arguments, including the -ability to have multiple source files specified via `-f', and the +ability to have multiple source files specified via `-f' and the ability to mix command-line and library source files. The program is written using the POSIX Shell (`sh') command @@ -18605,8 +18684,8 @@ language.(1) It works as follows: file names). This program uses shell variables extensively: for storing -command-line arguments, the text of the `awk' program that will expand -the user's program, for the user's original program, and for the +command-line arguments and the text of the `awk' program that will +expand the user's program, for the user's original program, and for the expanded program. Doing so removes some potential problems that might arise were we to use temporary files instead, at the cost of making the script somewhat more complicated. @@ -18864,7 +18943,7 @@ It's done in these steps: The last step is to call `gawk' with the expanded program, along with the original options and command-line arguments that the user -supplied. +supplied: eval gawk $opts -- '"$processed_program"' '"$@"' @@ -18927,15 +19006,15 @@ One word is an anagram of another if both words contain the same letters Column 2, Problem C, of Jon Bentley's `Programming Pearls', Second Edition, presents an elegant algorithm. The idea is to give words that are anagrams a common signature, sort all the words together by their -signature, and then print them. Dr. Bentley observes that taking the -letters in each word and sorting them produces that common signature. +signatures, and then print them. Dr. Bentley observes that taking the +letters in each word and sorting them produces those common signatures. 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: - # anagram.awk --- An implementation of the anagram finding algorithm - # from Jon Bentley's "Programming Pearls", 2nd edition. + # anagram.awk --- An implementation of the anagram-finding algorithm + # from Jon Bentley's "Programming Pearls," 2nd edition. # Addison Wesley, 2000, ISBN 0-201-65788-0. # Column 2, Problem C, section 2.8, pp 18-20. @@ -18955,7 +19034,7 @@ signature; the second dimension is the word itself: apart into individual letters, sorts the letters, and then joins them back together: - # word2key --- split word apart into letters, sort, joining back together + # word2key --- split word apart into letters, sort, and join back together function word2key(word, a, i, n, result) { @@ -19053,12 +19132,13 @@ File: gawk.info, Node: Programs Summary, Next: Programs Exercises, Prev: Misc characters. The ability to use `split()' with the empty string as the separator can considerably simplify such tasks. - * The library functions from *note Library Functions::, proved their - usefulness for a number of real (if small) programs. + * The examples here demonstrate the usefulness of the library + functions from *note Library Functions::, for a number of real (if + small) programs. * Besides reinventing POSIX wheels, other programs solved a - selection of interesting problems, such as finding duplicates - words in text, printing mailing labels, and finding anagrams. + selection of interesting problems, such as finding duplicate words + in text, printing mailing labels, and finding anagrams. @@ -19175,16 +19255,16 @@ File: gawk.info, Node: Advanced Features, Next: Internationalization, Prev: S This major node discusses advanced features in `gawk'. It's a bit of a "grab bag" of items that are otherwise unrelated to each other. -First, a command-line option allows `gawk' to recognize nondecimal -numbers in input data, not just in `awk' programs. Then, `gawk''s -special features for sorting arrays are presented. Next, two-way I/O, -discussed briefly in earlier parts of this Info file, is described in -full detail, along with the basics of TCP/IP networking. Finally, -`gawk' can "profile" an `awk' program, making it possible to tune it -for performance. +First, we look at a command-line option that allows `gawk' to recognize +nondecimal numbers in input data, not just in `awk' programs. Then, +`gawk''s special features for sorting arrays are presented. Next, +two-way I/O, discussed briefly in earlier parts of this Info file, is +described in full detail, along with the basics of TCP/IP networking. +Finally, we see how `gawk' can "profile" an `awk' program, making it +possible to tune it for performance. - A number of advanced features require separate major nodes of their -own: + Additional advanced features are discussed in separate major nodes +of their own: * *note Internationalization::, discusses how to internationalize your `awk' programs, so that they can speak multiple national @@ -19258,7 +19338,7 @@ File: gawk.info, Node: Array Sorting, Next: Two-way I/O, Prev: Nondecimal Dat 12.2 Controlling Array Traversal and Array Sorting ================================================== -`gawk' lets you control the order in which a `for (i in array)' loop +`gawk' lets you control the order in which a `for (INDX in ARRAY)' loop traverses an array. In addition, two built-in functions, `asort()' and `asorti()', let @@ -19277,9 +19357,9 @@ File: gawk.info, Node: Controlling Array Traversal, Next: Array Sorting Functi 12.2.1 Controlling Array Traversal ---------------------------------- -By default, the order in which a `for (i in array)' loop scans an array -is not defined; it is generally based upon the internal implementation -of arrays inside `awk'. +By default, the order in which a `for (INDX in ARRAY)' loop scans an +array is not defined; it is generally based upon the internal +implementation of arrays inside `awk'. Often, though, it is desirable to be able to loop over the elements in a particular order that you, the programmer, choose. `gawk' lets @@ -19301,21 +19381,22 @@ arguments: RETURN < 0; 0; OR > 0 } - Here, I1 and I2 are the indices, and V1 and V2 are the corresponding -values of the two elements being compared. Either V1 or V2, or both, -can be arrays if the array being traversed contains subarrays as values. -(*Note Arrays of Arrays::, for more information about subarrays.) The -three possible return values are interpreted as follows: + Here, `i1' and `i2' are the indices, and `v1' and `v2' are the +corresponding values of the two elements being compared. Either `v1' +or `v2', or both, can be arrays if the array being traversed contains +subarrays as values. (*Note Arrays of Arrays::, for more information +about subarrays.) The three possible return values are interpreted as +follows: `comp_func(i1, v1, i2, v2) < 0' - Index I1 comes before index I2 during loop traversal. + Index `i1' comes before index `i2' during loop traversal. `comp_func(i1, v1, i2, v2) == 0' - Indices I1 and I2 come together but the relative order with + Indices `i1' and `i2' come together, but the relative order with respect to each other is undefined. `comp_func(i1, v1, i2, v2) > 0' - Index I1 comes after index I2 during loop traversal. + Index `i1' comes after index `i2' during loop traversal. Our first comparison function can be used to scan an array in numerical order of the indices: @@ -19458,7 +19539,7 @@ elements compare equal. This is usually not a problem, but letting the tied elements come out in arbitrary order can be an issue, especially when comparing item values. The partial ordering of the equal elements may change the next time the array is traversed, if other elements are -added or removed from the array. One way to resolve ties when +added to or removed from the array. One way to resolve ties when comparing elements with otherwise equal values is to include the indices in the comparison rules. Note that doing this may make the loop traversal less efficient, so consider it only if necessary. The @@ -19492,14 +19573,14 @@ lowercase letters as equivalent or distinct. Another point to keep in mind is that in the case of subarrays, the element values can themselves be arrays; a production comparison -function should use the `isarray()' function (*note Type Functions::), +function should use the `isarray()' function (*note Type Functions::) to check for this, and choose a defined sorting order for subarrays. All sorting based on `PROCINFO["sorted_in"]' is disabled in POSIX mode, because the `PROCINFO' array is not special in that case. As a side note, sorting the array indices before traversing the -array has been reported to add 15% to 20% overhead to the execution +array has been reported to add a 15% to 20% overhead to the execution time of `awk' programs. For this reason, sorted array traversal is not the default. @@ -19548,8 +19629,8 @@ array is not affected. Often, what's needed is to sort on the values of the _indices_ instead of the values of the elements. To do that, use the `asorti()' function. The interface and behavior are identical to that of -`asort()', except that the index values are used for sorting, and -become the values of the result array: +`asort()', except that the index values are used for sorting and become +the values of the result array: { source[$0] = some_func($0) } @@ -19581,8 +19662,8 @@ chooses_, taking into account just the indices, just the values, or both. This is extremely powerful. Once the array is sorted, `asort()' takes the _values_ in their -final order, and uses them to fill in the result array, whereas -`asorti()' takes the _indices_ in their final order, and uses them to +final order and uses them to fill in the result array, whereas +`asorti()' takes the _indices_ in their final order and uses them to fill in the result array. NOTE: Copying array indices and elements isn't expensive in terms @@ -19780,7 +19861,7 @@ REMOTE-PORT name. NOTE: Failure in opening a two-way socket will result in a - non-fatal error being returned to the calling code. The value of + nonfatal error being returned to the calling code. The value of `ERRNO' indicates the error (*note Auto-set::). Consider the following very simple example: @@ -19861,8 +19942,8 @@ 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 get up very early in the morning to work.) +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 Mon Sep 29 05:16:21 2014 @@ -19915,7 +19996,7 @@ profiler on this program and data. (This example also illustrates that output. They are as follows: * The program is printed in the order `BEGIN' rules, `BEGINFILE' - rules, pattern/action rules, `ENDFILE' rules, `END' rules and + 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. @@ -19960,13 +20041,13 @@ output. They are as follows: scalar, it gets parenthesized. * `gawk' supplies leading comments in front of the `BEGIN' and `END' - rules, the `BEGINFILE' and `ENDFILE' rules, the pattern/action + rules, the `BEGINFILE' and `ENDFILE' rules, the pattern-action rules, and the functions. The profiled version of your program may not look exactly like what you typed when you wrote it. This is because `gawk' creates the -profiled version by "pretty printing" its internal representation of +profiled version by "pretty-printing" its internal representation of the program. The advantage to this is that `gawk' can produce a standard representation. Also, things such as: @@ -20016,15 +20097,15 @@ output profile file. produces the profile and the function call trace and then exits. When `gawk' runs on MS-Windows systems, it uses the `INT' and `QUIT' -signals for producing the profile and, in the case of the `INT' signal, +signals for producing the profile, and in the case of the `INT' signal, `gawk' exits. This is because these systems don't support the `kill' command, so the only signals you can deliver to a program are those generated by the keyboard. The `INT' signal is generated by the -`Ctrl-<C>' or `Ctrl-<BREAK>' key, while the `QUIT' signal is generated -by the `Ctrl-<\>' key. +`Ctrl-c' or `Ctrl-BREAK' key, while the `QUIT' signal is generated by +the `Ctrl-\' key. Finally, `gawk' also accepts another option, `--pretty-print'. When -called this way, `gawk' "pretty prints" the program into `awkprof.out', +called this way, `gawk' "pretty-prints" the program into `awkprof.out', without any execution counts. NOTE: Once upon a time, the `--pretty-print' option would also run @@ -20076,7 +20157,7 @@ File: gawk.info, Node: Advanced Features Summary, Prev: Profiling, Up: Advanc two-way communications. * By using special file names with the `|&' operator, you can open a - TCP/IP (or UDP/IP) connection to remote hosts in the Internet. + TCP/IP (or UDP/IP) connection to remote hosts on the Internet. `gawk' supports both IPv4 and IPv6. * You can generate statement count profiles of your program. This @@ -20085,7 +20166,7 @@ File: gawk.info, Node: Advanced Features Summary, Prev: Profiling, Up: Advanc `USR1' signal while profiling causes `gawk' to dump the profile and keep going, including a function call stack. - * You can also just "pretty print" the program. This currently also + * You can also just "pretty-print" the program. This currently also runs the program, but that will change in the next major release. @@ -20129,7 +20210,7 @@ File: gawk.info, Node: I18N and L10N, Next: Explaining gettext, Up: Internati "Internationalization" means writing (or modifying) a program once, in such a way that it can use multiple languages without requiring further -source-code changes. "Localization" means providing the data necessary +source code changes. "Localization" means providing the data necessary for an internationalized program to work in a particular language. Most typically, these terms refer to features such as the language used for printing error messages, the language used to read responses, and @@ -20143,7 +20224,7 @@ File: gawk.info, Node: Explaining gettext, Next: Programmer i18n, Prev: I18N ================== `gawk' uses GNU `gettext' to provide its internationalization features. -The facilities in GNU `gettext' focus on messages; strings printed by a +The facilities in GNU `gettext' focus on messages: strings printed by a program, either directly or via formatting with `printf' or `sprintf()'.(1) @@ -20272,8 +20353,7 @@ File: gawk.info, Node: Programmer i18n, Next: Translator i18n, Prev: Explaini 13.3 Internationalizing `awk' Programs ====================================== -`gawk' provides the following variables and functions for -internationalization: +`gawk' provides the following variables for internationalization: `TEXTDOMAIN' This variable indicates the application's text domain. For @@ -20285,6 +20365,8 @@ internationalization: for translation at runtime. String constants without a leading underscore are not translated. + `gawk' provides the following functions for internationalization: + ``dcgettext(STRING' [`,' DOMAIN [`,' CATEGORY]]`)'' Return the translation of STRING in text domain DOMAIN for locale category CATEGORY. The default value for DOMAIN is the current @@ -20323,8 +20405,7 @@ internationalization: the null string (`""'), then `bindtextdomain()' returns the current binding for the given DOMAIN. - To use these facilities in your `awk' program, follow the steps -outlined in *note Explaining gettext::, like so: + To use these facilities in your `awk' program, follow these steps: 1. Set the variable `TEXTDOMAIN' to the text domain of your program. This is best done in a `BEGIN' rule (*note BEGIN/END::), or it can @@ -20546,7 +20627,7 @@ actually almost portable, requiring very little change: its value, leaving the original string constant as the result. * By defining "dummy" functions to replace `dcgettext()', - `dcngettext()' and `bindtextdomain()', the `awk' program can be + `dcngettext()', and `bindtextdomain()', the `awk' program can be made to run, but all the messages are output in the original language. For example: @@ -20681,8 +20762,8 @@ File: gawk.info, Node: Gawk I18N, Next: I18N Summary, Prev: I18N Example, Up `gawk' itself has been internationalized using the GNU `gettext' package. (GNU `gettext' is described in complete detail in *note (GNU -`gettext' utilities)Top:: gettext, GNU gettext tools.) As of this -writing, the latest version of GNU `gettext' is version 0.19.4 +`gettext' utilities)Top:: gettext, GNU `gettext' utilities.) As of +this writing, the latest version of GNU `gettext' is version 0.19.4 (ftp://ftp.gnu.org/gnu/gettext/gettext-0.19.4.tar.gz). If a translation of `gawk''s messages exists, then `gawk' produces @@ -20695,7 +20776,7 @@ File: gawk.info, Node: I18N Summary, Prev: Gawk I18N, Up: Internationalizatio ============ * Internationalization means writing a program such that it can use - multiple languages without requiring source-code changes. + multiple languages without requiring source code changes. Localization means providing the data necessary for an internationalized program to work in a particular language. @@ -20709,10 +20790,10 @@ File: gawk.info, Node: I18N Summary, Prev: Gawk I18N, Up: Internationalizatio file, and the `.po' files are compiled into `.gmo' files for use at runtime. - * You can use position specifications with `sprintf()' and `printf' - to rearrange the placement of argument values in formatted strings - and output. This is useful for the translations of format control - strings. + * You can use positional specifications with `sprintf()' and + `printf' to rearrange the placement of argument values in formatted + strings and output. This is useful for the translation of format + control strings. * The internationalization features have been designed so that they can be easily worked around in a standard `awk'. @@ -20768,8 +20849,7 @@ File: gawk.info, Node: Debugging Concepts, Next: Debugging Terms, Up: Debuggi --------------------------- (If you have used debuggers in other languages, you may want to skip -ahead to the next section on the specific features of the `gawk' -debugger.) +ahead to *note Awk Debugging::.) Of course, a debugging program cannot remove bugs for you, because it has no way of knowing what you or your users consider a "bug" versus @@ -20856,11 +20936,11 @@ defines terms used throughout the rest of this major node: File: gawk.info, Node: Awk Debugging, Prev: Debugging Terms, Up: Debugging -14.1.3 Awk Debugging --------------------- +14.1.3 `awk' Debugging +---------------------- Debugging an `awk' program has some specific aspects that are not -shared with other programming languages. +shared with programs written in other languages. First of all, the fact that `awk' programs usually take input line by line from a file or files and operate on those lines using specific @@ -20878,8 +20958,8 @@ commands. File: gawk.info, Node: Sample Debugging Session, Next: List of Debugger Commands, Prev: Debugging, Up: Debugger -14.2 Sample Debugging Session -============================= +14.2 Sample `gawk' Debugging Session +==================================== In order to illustrate the use of `gawk' as a debugger, let's look at a sample debugging session. We will use the `awk' implementation of the @@ -20898,8 +20978,8 @@ File: gawk.info, Node: Debugger Invocation, Next: Finding The Bug, Up: Sample -------------------------------- Starting the debugger is almost exactly like running `gawk' normally, -except you have to pass an additional option `--debug', or the -corresponding short option `-D'. The file(s) containing the program +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' options. (`gawk' is not designed to debug command-line programs, only programs contained in files.) In our case, we invoke @@ -20909,7 +20989,7 @@ the debugger like this: where both `getopt.awk' and `uniq.awk' are in `$AWKPATH'. (Experienced users of GDB or similar debuggers should note that this syntax is -slightly different from what they are used to. With the `gawk' +slightly different from what you are used to. With the `gawk' debugger, you give the arguments for running the program in the command line to the debugger rather than as part of the `run' command at the debugger prompt.) The `-1' is an option to `uniq.awk'. @@ -21033,10 +21113,10 @@ typing `n' (for "next"): -| 66 if (fcount > 0) { This tells us that `gawk' is now ready to execute line 66, which -decides whether to give the lines the special "field skipping" treatment +decides whether to give the lines the special "field-skipping" treatment indicated by the `-1' command-line option. (Notice that we skipped -from where we were before at line 63 to here, because the condition in -line 63 `if (fcount == 0 && charcount == 0)' was false.) +from where we were before, at line 63, to here, because the condition +in line 63, `if (fcount == 0 && charcount == 0)', was false.) Continuing to step, we now get to the splitting of the current and last records: @@ -21094,15 +21174,15 @@ mentioned): Well, here we are at our error (sorry to spoil the suspense). What we had in mind was to join the fields starting from the second one to -make the virtual record to compare, and if the first field was numbered -zero, this would work. Let's look at what we've got: +make the virtual record to compare, and if the first field were +numbered zero, this would work. Let's look at what we've got: gawk> p cline clast -| cline = "gawk is a wonderful program!" -| clast = "awk is a wonderful program!" Hey, those look pretty familiar! They're just our original, -unaltered, input records. A little thinking (the human brain is still +unaltered input records. A little thinking (the human brain is still the best debugging tool), and we realize that we were off by one! We get out of the debugger: @@ -21139,11 +21219,11 @@ categories: * Miscellaneous Each of these are discussed in the following subsections. In the -following descriptions, commands which may be abbreviated show the +following descriptions, commands that may be abbreviated show the abbreviation on a second description line. A debugger command name may also be truncated if that partial name is unambiguous. The debugger has the built-in capability to automatically repeat the previous command -just by hitting <Enter>. This works for the commands `list', `next', +just by hitting `Enter'. This works for the commands `list', `next', `nexti', `step', `stepi', and `continue' executed without any argument. * Menu: @@ -21183,8 +21263,8 @@ The commands for controlling breakpoints are: Set a breakpoint at entry to (the first instruction of) function FUNCTION. - Each breakpoint is assigned a number which can be used to delete - it from the breakpoint list using the `delete' command. + Each breakpoint is assigned a number that can be used to delete it + from the breakpoint list using the `delete' command. With a breakpoint, you may also supply a condition. This is an `awk' expression (enclosed in double quotes) that the debugger @@ -21222,26 +21302,26 @@ The commands for controlling breakpoints are: `delete' [N1 N2 ...] [N-M] `d' [N1 N2 ...] [N-M] - Delete specified breakpoints or a range of breakpoints. Deletes - all defined breakpoints if no argument is supplied. + Delete specified breakpoints or a range of breakpoints. Delete all + defined breakpoints if no argument is supplied. `disable' [N1 N2 ... | N-M] Disable specified breakpoints or a range of breakpoints. Without - any argument, disables all breakpoints. + any argument, disable all breakpoints. `enable' [`del' | `once'] [N1 N2 ...] [N-M] `e' [`del' | `once'] [N1 N2 ...] [N-M] Enable specified breakpoints or a range of breakpoints. Without - any argument, enables all breakpoints. Optionally, you can - specify how to enable the breakpoint: + any argument, enable all breakpoints. Optionally, you can specify + how to enable the breakpoints: `del' - Enable the breakpoint(s) temporarily, then delete it when the - program stops at the breakpoint. + Enable the breakpoints temporarily, then delete each one when + the program stops at it. `once' - Enable the breakpoint(s) temporarily, then disable it when - the program stops at the breakpoint. + Enable the breakpoints temporarily, then disable each one when + the program stops at it. `ignore' N COUNT Ignore breakpoint number N the next COUNT times it is hit. @@ -21287,7 +21367,7 @@ execution of the program than we saw in our earlier example: `continue' [COUNT] `c' [COUNT] Resume program execution. If continued from a breakpoint and COUNT - is specified, ignores the breakpoint at that location the next + is specified, ignore the breakpoint at that location the next COUNT times before stopping. `finish' @@ -21322,10 +21402,10 @@ execution of the program than we saw in our earlier example: `step' [COUNT] `s' [COUNT] Continue execution until control reaches a different source line - in the current stack frame. `step' steps inside any function - called within the line. If the argument COUNT is supplied, steps - that many times before stopping, unless it encounters a breakpoint - or watchpoint. + in the current stack frame, stepping inside any function called + within the line. If the argument COUNT is supplied, steps that + many times before stopping, unless it encounters a breakpoint or + watchpoint. `stepi' [COUNT] `si' [COUNT] @@ -21406,13 +21486,13 @@ AWK STATEMENTS (`"'...`"'). You can also set special `awk' variables, such as `FS', `NF', - `NR', and son on. + `NR', and so on. `watch' VAR | `$'N [`"EXPRESSION"'] `w' VAR | `$'N [`"EXPRESSION"'] Add variable VAR (or field `$N') to the watch list. The debugger then stops whenever the value of the variable or field changes. - Each watched item is assigned a number which can be used to delete + Each watched item is assigned a number that can be used to delete it from the watch list using the `unwatch' command. With a watchpoint, you may also supply a condition. This is an @@ -21436,11 +21516,11 @@ File: gawk.info, Node: Execution Stack, Next: Debugger Info, Prev: Viewing An 14.3.4 Working with the Stack ----------------------------- -Whenever you run a program which contains any function calls, `gawk' +Whenever you run a program that contains any function calls, `gawk' maintains a stack of all of the function calls leading up to where the program is right now. You can see how you got to where you are, and also move around in the stack to see what the state of things was in the -functions which called the one you are in. The commands for doing this +functions that called the one you are in. The commands for doing this are: `backtrace' [COUNT] @@ -21460,8 +21540,8 @@ are: `frame' [N] `f' [N] Select and print stack frame N. Frame 0 is the currently - executing, or "innermost", frame (function call), frame 1 is the - frame that called the innermost one. The highest numbered frame is + executing, or "innermost", frame (function call); frame 1 is the + frame that called the innermost one. The highest-numbered frame is the one for the main program. The printed information consists of the frame number, function and argument names, source file, and the source line. @@ -21478,7 +21558,7 @@ File: gawk.info, Node: Debugger Info, Next: Miscellaneous Debugger Commands, Besides looking at the values of variables, there is often a need to get other sorts of information about the state of your program and of the -debugging environment itself. The `gawk' debugger has one command which +debugging environment itself. The `gawk' debugger has one command that provides this information, appropriately called `info'. `info' is used with one of a number of arguments that tell it exactly what you want to know: @@ -21535,11 +21615,12 @@ from a file. The commands are: option. The available options are: `history_size' - The maximum number of lines to keep in the history file + Set the maximum number of lines to keep in the history file `./.gawk_history'. The default is 100. `listsize' - The number of lines that `list' prints. The default is 15. + Specify the number of lines that `list' prints. The default + is 15. `outfile' Send `gawk' output to a file; debugger output still goes to @@ -21547,7 +21628,7 @@ from a file. The commands are: standard output. `prompt' - The debugger prompt. The default is `gawk> '. + Change the debugger prompt. The default is `gawk> '. `save_history' [`on' | `off'] Save command history to file `./.gawk_history'. The default @@ -21555,8 +21636,8 @@ from a file. The commands are: `save_options' [`on' | `off'] Save current options to file `./.gawkrc' upon exit. The - default is `on'. Options are read back in to the next - session upon startup. + default is `on'. Options are read back into the next session + upon startup. `trace' [`on' | `off'] Turn instruction tracing on or off. The default is `off'. @@ -21575,7 +21656,7 @@ from a file. The commands are: commands; however, the `gawk' debugger will not source the same file more than once in order to avoid infinite recursion. - In addition to, or instead of the `source' command, you can use + In addition to, or instead of, the `source' command, you can use the `-D FILE' or `--debug=FILE' command-line options to execute commands from a file non-interactively (*note Options::). @@ -21585,13 +21666,13 @@ File: gawk.info, Node: Miscellaneous Debugger Commands, Prev: Debugger Info, 14.3.6 Miscellaneous Commands ----------------------------- -There are a few more commands which do not fit into the previous +There are a few more commands that do not fit into the previous categories, as follows: `dump' [FILENAME] - Dump bytecode of the program to standard output or to the file + Dump byte code of the program to standard output or to the file named in FILENAME. This prints a representation of the internal - instructions which `gawk' executes to implement the `awk' commands + instructions that `gawk' executes to implement the `awk' commands in a program. This can be very enlightening, as the following partial dump of Davide Brini's obfuscated code (*note Signature Program::) demonstrates: @@ -21675,22 +21756,21 @@ categories, as follows: FILENAME. This command may change the current source file. FUNCTION - Print lines centered around beginning of the function + Print lines centered around the beginning of the function FUNCTION. This command may change the current source file. `quit' `q' Exit the debugger. Debugging is great fun, but sometimes we all have to tend to other obligations in life, and sometimes we find - the bug, and are free to go on to the next one! As we saw - earlier, if you are running a program, the debugger warns you if - you accidentally type `q' or `quit', to make sure you really want - to quit. + the bug and are free to go on to the next one! As we saw earlier, + if you are running a program, the debugger warns you when you type + `q' or `quit', to make sure you really want to quit. `trace' [`on' | `off'] - Turn on or off a continuous printing of instructions which are - about to be executed, along with printing the `awk' line which they - implement. The default is `off'. + Turn on or off continuous printing of the instructions that are + about to be executed, along with the `awk' lines they implement. + The default is `off'. It is to be hoped that most of the "opcodes" in these instructions are fairly self-explanatory, and using `stepi' and `nexti' while @@ -21703,7 +21783,7 @@ File: gawk.info, Node: Readline Support, Next: Limitations, Prev: List of Deb 14.4 Readline Support ===================== -If `gawk' is compiled with the `readline' library +If `gawk' is compiled with the GNU Readline library (http://cnswww.cns.cwru.edu/php/chet/readline/readline.html), you can take advantage of that library's command completion and history expansion features. The following types of completion are available: @@ -21733,7 +21813,7 @@ File: gawk.info, Node: Limitations, Next: Debugging Summary, Prev: Readline S We hope you find the `gawk' debugger useful and enjoyable to work with, but as with any program, especially in its early releases, it still has -some limitations. A few which are worth being aware of are: +some limitations. A few that it's worth being aware of are: * At this point, the debugger does not give a detailed explanation of what you did wrong when you type in something it doesn't like. @@ -21744,13 +21824,13 @@ some limitations. A few which are worth being aware of are: Commands:: (or if you are already familiar with `gawk' internals), you will realize that much of the internal manipulation of data in `gawk', as in many interpreters, is done on a stack. `Op_push', - `Op_pop', and the like, are the "bread and butter" of most `gawk' + `Op_pop', and the like are the "bread and butter" of most `gawk' code. Unfortunately, as of now, the `gawk' debugger does not allow you to examine the stack's contents. That is, the intermediate results of expression evaluation are on the stack, but cannot be - printed. Rather, only variables which are defined in the program + printed. Rather, only variables that are defined in the program can be printed. Of course, a workaround for this is to use more explicit variables at the debugging stage and then change back to obscure, perhaps more optimal code later. @@ -21762,12 +21842,12 @@ some limitations. A few which are worth being aware of are: * The `gawk' debugger is designed to be used by running a program (with all its parameters) on the command line, as described in *note Debugger Invocation::. There is no way (as of now) to - attach or "break in" to a running program. This seems reasonable - for a language which is used mainly for quickly executing, short + attach or "break into" a running program. This seems reasonable + for a language that is used mainly for quickly executing, short programs. - * The `gawk' debugger only accepts source supplied with the `-f' - option. + * The `gawk' debugger only accepts source code supplied with the + `-f' option. File: gawk.info, Node: Debugging Summary, Prev: Limitations, Up: Debugger @@ -21776,8 +21856,8 @@ File: gawk.info, Node: Debugging Summary, Prev: Limitations, Up: Debugger ============ * Programs rarely work correctly the first time. Finding bugs is - "debugging" and a program that helps you find bugs is a - "debugger". `gawk' has a built-in debugger that works very + called debugging, and a program that helps you find bugs is a + debugger. `gawk' has a built-in debugger that works very similarly to the GNU Debugger, GDB. * Debuggers let you step through your program one statement at a @@ -21793,8 +21873,8 @@ File: gawk.info, Node: Debugging Summary, Prev: Limitations, Up: Debugger breakpoints, execution, viewing and changing data, working with the stack, getting information, and other tasks. - * If the `readline' library is available when `gawk' is compiled, it - is used by the debugger to provide command-line history and + * If the GNU Readline library is available when `gawk' is compiled, + it is used by the debugger to provide command-line history and editing. @@ -21855,7 +21935,7 @@ Decimal arithmetic sides) of the decimal point, and the results of a computation are always exact. - Some modern system can do decimal arithmetic in hardware, but + Some modern systems can do decimal arithmetic in hardware, but usually you need a special software library to provide access to these instructions. There are also libraries that do decimal arithmetic entirely in software. @@ -21871,8 +21951,7 @@ Integer arithmetic In computers, integer values come in two flavors: "signed" and "unsigned". Signed values may be negative or positive, whereas - unsigned values are always positive (i.e., greater than or equal - to zero). + unsigned values are always greater than or equal to zero. In computer systems, integer arithmetic is exact, but the possible range of values is limited. Integer arithmetic is generally @@ -21909,12 +21988,6 @@ Numeric representation Minimum value Maximum value 32-bit unsigned integer 0 4,294,967,295 64-bit signed integer -9,223,372,036,854,775,8089,223,372,036,854,775,807 64-bit unsigned integer 0 18,446,744,073,709,551,615 -Single-precision `1.175494e-38' `3.402823e+38' -floating point -(approximate) -Double-precision `2.225074e-308' `1.797693e+308' -floating point -(approximate) Table 15.1: Value ranges for different numeric representations @@ -21930,7 +22003,7 @@ File: gawk.info, Node: Math Definitions, Next: MPFR features, Prev: Computer The rest of this major node uses a number of terms. Here are some informal definitions that should help you work your way through the -material here. +material here: "Accuracy" A floating-point calculation's accuracy is how close it comes to @@ -21950,7 +22023,7 @@ material here. number and infinity produce infinity. "NaN" - "Not A Number."(1) A special value that results from attempting a + "Not a number."(1) A special value that results from attempting a calculation that has no answer as a real number. In such a case, programs can either receive a floating-point exception, or get `NaN' back as the result. The IEEE 754 standard recommends that @@ -21976,15 +22049,15 @@ material here. PREC = 3.322 * DPS - Here, PREC denotes the binary precision (measured in bits) and DPS - (short for decimal places) is the decimal digits. + Here, _prec_ denotes the binary precision (measured in bits) and + _dps_ (short for decimal places) is the decimal digits. "Rounding mode" How numbers are rounded up or down when necessary. More details are provided later. "Significand" - A floating-point value consists the significand multiplied by 10 + A floating-point value consists of the significand multiplied by 10 to the power of the exponent. For example, in `1.2345e67', the significand is `1.2345'. @@ -22006,7 +22079,7 @@ precision formats to allow greater precisions and larger exponent ranges. (`awk' uses only the 64-bit double-precision format.) *note table-ieee-formats:: lists the precision and exponent field -values for the basic IEEE 754 binary formats: +values for the basic IEEE 754 binary formats. Name Total bits Precision Minimum Maximum exponent exponent @@ -22071,7 +22144,7 @@ File: gawk.info, Node: FP Math Caution, Next: Arbitrary Precision Integers, P Math class is tough! -- Teen Talk Barbie, July 1992 - This minor node provides a high level overview of the issues + This minor node provides a high-level overview of the issues involved when doing lots of floating-point arithmetic.(1) The discussion applies to both hardware and arbitrary-precision floating-point arithmetic. @@ -22092,8 +22165,8 @@ floating-point arithmetic. (1) There is a very nice paper on floating-point arithmetic (http://www.validlab.com/goldberg/paper.pdf) by David Goldberg, "What -Every Computer Scientist Should Know About Floating-point Arithmetic," -`ACM Computing Surveys' *23*, 1 (1991-03), 5-48. This is worth reading +Every Computer Scientist Should Know About Floating-Point Arithmetic," +`ACM Computing Surveys' *23*, 1 (1991-03): 5-48. This is worth reading if you are interested in the details, but it does require a background in computer science. @@ -22147,7 +22220,7 @@ number as you assigned to it: Often the error is so small you do not even notice it, and if you do, you can always specify how much precision you would like in your output. -Usually this is a format string like `"%.15g"', which when used in the +Usually this is a format string like `"%.15g"', which, when used in the previous example, produces an output identical to the input. @@ -22187,7 +22260,7 @@ File: gawk.info, Node: Errors accumulate, Prev: Comparing FP Values, Up: Inex The loss of accuracy during a single computation with floating-point numbers usually isn't enough to worry about. However, if you compute a -value which is the result of a sequence of floating-point operations, +value that is the result of a sequence of floating-point operations, the error can accumulate and greatly affect the computation itself. Here is an attempt to compute the value of pi using one of its many series representations: @@ -22238,7 +22311,7 @@ easy answers. The standard rules of algebra often do not apply when using floating-point arithmetic. Among other things, the distributive and associative laws do not hold completely, and order of operation may be important for your computation. Rounding error, cumulative precision -loss and underflow are often troublesome. +loss, and underflow are often troublesome. When `gawk' tests the expressions `0.1 + 12.2' and `12.3' for equality using the machine double-precision arithmetic, it decides that @@ -22273,8 +22346,9 @@ illustrated by our earlier attempt to compute the value of pi. Extra precision can greatly enhance the stability and the accuracy of your computation in such cases. - Repeated addition is not necessarily equivalent to multiplication in -floating-point arithmetic. In the example in *note Errors accumulate::: + Additionally, you should understand that repeated addition is not +necessarily equivalent to multiplication in floating-point arithmetic. +In the example in *note Errors accumulate::: $ gawk 'BEGIN { > for (d = 1.1; d <= 1.5; d += 0.1) # loop five times (?) @@ -22329,7 +22403,7 @@ set the value to one of the predefined case-insensitive strings shown in *note table-predefined-precision-strings::, to emulate an IEEE 754 binary format. -`PREC' IEEE 754 Binary Format +`PREC' IEEE 754 binary format --------------------------------------------------- `"half"' 16-bit half-precision `"single"' Basic 32-bit single precision @@ -22362,14 +22436,14 @@ on arithmetic operations: example illustrates the differences among various ways to print a floating-point constant: - $ gawk -M 'BEGIN { PREC = 113; printf("%0.25f\n", 0.1) }' - -| 0.1000000000000000055511151 - $ gawk -M -v PREC=113 'BEGIN { printf("%0.25f\n", 0.1) }' - -| 0.1000000000000000000000000 - $ gawk -M 'BEGIN { PREC = 113; printf("%0.25f\n", "0.1") }' - -| 0.1000000000000000000000000 - $ gawk -M 'BEGIN { PREC = 113; printf("%0.25f\n", 1/10) }' - -| 0.1000000000000000000000000 + $ gawk -M 'BEGIN { PREC = 113; printf("%0.25f\n", 0.1) }' + -| 0.1000000000000000055511151 + $ gawk -M -v PREC=113 'BEGIN { printf("%0.25f\n", 0.1) }' + -| 0.1000000000000000000000000 + $ gawk -M 'BEGIN { PREC = 113; printf("%0.25f\n", "0.1") }' + -| 0.1000000000000000000000000 + $ gawk -M 'BEGIN { PREC = 113; printf("%0.25f\n", 1/10) }' + -| 0.1000000000000000000000000 File: gawk.info, Node: Setting the rounding mode, Prev: Setting precision, Up: FP Math Caution @@ -22377,15 +22451,15 @@ File: gawk.info, Node: Setting the rounding mode, Prev: Setting precision, Up 15.4.5 Setting the Rounding Mode -------------------------------- -The `ROUNDMODE' variable provides program level control over the +The `ROUNDMODE' variable provides program-level control over the rounding mode. The correspondence between `ROUNDMODE' and the IEEE rounding modes is shown in *note table-gawk-rounding-modes::. -Rounding Mode IEEE Name `ROUNDMODE' +Rounding mode IEEE name `ROUNDMODE' --------------------------------------------------------------------------- Round to nearest, ties to even `roundTiesToEven' `"N"' or `"n"' -Round toward plus Infinity `roundTowardPositive' `"U"' or `"u"' -Round toward negative Infinity `roundTowardNegative' `"D"' or `"d"' +Round toward positive infinity `roundTowardPositive' `"U"' or `"u"' +Round toward negative infinity `roundTowardNegative' `"D"' or `"d"' Round toward zero `roundTowardZero' `"Z"' or `"z"' Round to nearest, ties away `roundTiesToAway' `"A"' or `"a"' from zero @@ -22436,8 +22510,8 @@ distributes upward and downward rounds of exact halves, which might cause any accumulating round-off error to cancel itself out. This is the default rounding mode for IEEE 754 computing functions and operators. - The other rounding modes are rarely used. Round toward positive -infinity (`roundTowardPositive') and round toward negative infinity + The other rounding modes are rarely used. Rounding toward positive +infinity (`roundTowardPositive') and toward negative infinity (`roundTowardNegative') are often used to implement interval arithmetic, where you adjust the rounding mode to calculate upper and lower bounds for the range of output. The `roundTowardZero' mode can be @@ -22485,7 +22559,7 @@ floating-point values: If instead you were to compute the same value using arbitrary-precision floating-point values, the precision needed for -correct output (using the formula `prec = 3.322 * dps'), would be 3.322 +correct output (using the formula `prec = 3.322 * dps') would be 3.322 x 183231, or 608693. The result from an arithmetic operation with an integer and a @@ -22516,7 +22590,7 @@ interface to process arbitrary-precision integers or mixed-mode numbers as needed by an operation or function. In such a case, the precision is set to the minimum value necessary for exact conversion, and the working precision is not used for this purpose. If this is not what you need or -want, you can employ a subterfuge, and convert the integer to floating +want, you can employ a subterfuge and convert the integer to floating point first, like this: gawk -M 'BEGIN { n = 13; print (n + 0.0) % 2.0 }' @@ -22599,7 +22673,7 @@ File: gawk.info, Node: POSIX Floating Point Problems, Next: Floating point sum 15.6 Standards Versus Existing Practice ======================================= -Historically, `awk' has converted any non-numeric looking string to the +Historically, `awk' has converted any nonnumeric-looking string to the numeric value zero, when required. Furthermore, the original definition of the language and the original POSIX standards specified that `awk' only understands decimal numbers (base 10), and not octal @@ -22613,8 +22687,8 @@ These features are: hexadecimal notation (e.g., `0xDEADBEEF'). (Note: data values, _not_ source code constants.) - * Support for the special IEEE 754 floating-point values "Not A - Number" (NaN), positive Infinity ("inf"), and negative Infinity + * Support for the special IEEE 754 floating-point values "not a + number" (NaN), positive infinity ("inf"), and negative infinity ("-inf"). In particular, the format for these values is as specified by the ISO 1999 C standard, which ignores case and can allow implementation-dependent additional characters after the @@ -22631,21 +22705,21 @@ historical practice: values is also a very severe departure from historical practice. The second problem is that the `gawk' maintainer feels that this -interpretation of the standard, which requires a certain amount of +interpretation of the standard, which required a certain amount of "language lawyering" to arrive at in the first place, was not even -intended by the standard developers. In other words, "we see how you +intended by the standard developers. In other words, "We see how you got where you are, but we don't think that that's where you want to be." Recognizing these issues, but attempting to provide compatibility with the earlier versions of the standard, the 2008 POSIX standard added explicit wording to allow, but not require, that `awk' support -hexadecimal floating-point values and special values for "Not A Number" +hexadecimal floating-point values and special values for "not a number" and infinity. Although the `gawk' maintainer continues to feel that providing those features is inadvisable, nevertheless, on systems that support IEEE floating point, it seems reasonable to provide _some_ way to -support NaN and Infinity values. The solution implemented in `gawk' is +support NaN and infinity values. The solution implemented in `gawk' is as follows: * With the `--posix' command-line option, `gawk' becomes "hands @@ -22660,7 +22734,7 @@ as follows: $ echo 0xDeadBeef | gawk --posix '{ print $1 + 0 }' -| 3735928559 - * Without `--posix', `gawk' interprets the four strings `+inf', + * Without `--posix', `gawk' interprets the four string values `+inf', `-inf', `+nan', and `-nan' specially, producing the corresponding special numeric values. The leading sign acts a signal to `gawk' (and the user) that the value is really numeric. Hexadecimal @@ -22674,7 +22748,7 @@ as follows: $ echo 0xDeadBeef | gawk '{ print $1 + 0 }' -| 0 - `gawk' ignores case in the four special values. Thus `+nan' and + `gawk' ignores case in the four special values. Thus, `+nan' and `+NaN' are the same. ---------- Footnotes ---------- @@ -22691,9 +22765,9 @@ File: gawk.info, Node: Floating point summary, Prev: POSIX Floating Point Prob floating-point values. Standard `awk' uses double-precision floating-point values. - * In the early 1990s, Barbie mistakenly said "Math class is tough!" + * In the early 1990s Barbie mistakenly said, "Math class is tough!" Although math isn't tough, floating-point arithmetic isn't the same - as pencil and paper math, and care must be taken: + as pencil-and-paper math, and care must be taken: - Not all numbers can be represented exactly. @@ -22714,18 +22788,18 @@ File: gawk.info, Node: Floating point summary, Prev: POSIX Floating Point Prob rounding mode. * With `-M', `gawk' performs arbitrary-precision integer arithmetic - using the GMP library. This is faster and more space efficient + using the GMP library. This is faster and more space-efficient than using MPFR for the same calculations. - * There are several "dark corners" with respect to floating-point - numbers where `gawk' disagrees with the POSIX standard. It pays - to be aware of them. + * There are several areas with respect to floating-point numbers + where `gawk' disagrees with the POSIX standard. It pays to be + aware of them. * Overall, there is no need to be unduly suspicious about the results from floating-point arithmetic. The lesson to remember is that floating-point arithmetic is always more complex than arithmetic using pencil and paper. In order to take advantage of - the power of computer floating point, you need to know its + the power of floating-point arithmetic, you need to know its limitations and work within them. For most casual use of floating-point arithmetic, you will often get the expected result if you simply round the display of your final results to the @@ -22784,7 +22858,7 @@ the rest of this Info file. `gawk''s functionality. For example, they can provide access to system calls (such as `chdir()' to change directory) and to other C library routines that could be of use. As with most software, "the sky is the -limit;" if you can imagine something that you might want to do and can +limit"; if you can imagine something that you might want to do and can write in C or C++, you can write an extension to do it! Extensions are written in C or C++, using the "application @@ -22792,7 +22866,7 @@ programming interface" (API) defined for this purpose by the `gawk' developers. The rest of this major node explains the facilities that the API provides and how to use them, and presents a small example extension. In addition, it documents the sample extensions included in -the `gawk' distribution, and describes the `gawkextlib' project. *Note +the `gawk' distribution and describes the `gawkextlib' project. *Note Extension Design::, for a discussion of the extension mechanism goals and design. @@ -22910,7 +22984,7 @@ Example::) and also in the `testext.c' code for testing the APIs. Some other bits and pieces: * The API provides access to `gawk''s `do_XXX' values, reflecting - command-line options, like `do_lint', `do_profiling' and so on + command-line options, like `do_lint', `do_profiling', and so on (*note Extension API Variables::). These are informational: an extension cannot affect their values inside `gawk'. In addition, attempting to assign to them produces a compile-time error. @@ -22957,8 +23031,8 @@ File: gawk.info, Node: Extension API Functions Introduction, Next: General Dat 16.4.1 Introduction ------------------- -Access to facilities within `gawk' are made available by calling -through function pointers passed into your extension. +Access to facilities within `gawk' is achieved by calling through +function pointers passed into your extension. API function pointers are provided for the following kinds of operations: @@ -22979,7 +23053,7 @@ operations: - Two-way processors - All of these are discussed in detail, later in this major node. + All of these are discussed in detail later in this major node. * Printing fatal, warning, and "lint" warning messages. @@ -23005,7 +23079,7 @@ operations: - Clearing an array - - Flattening an array for easy C style looping over all its + - Flattening an array for easy C-style looping over all its indices and elements * Accessing and manipulating redirections. @@ -23017,7 +23091,7 @@ operations: `gawkapi.h'. For correct use, you must therefore include the corresponding standard header file _before_ including `gawkapi.h': - C Entity Header File + C entity Header file ------------------------------------------- `EOF' `<stdio.h>' Values for `errno' `<errno.h>' @@ -23041,13 +23115,13 @@ operations: * Although the API only uses ISO C 90 features, there is an exception; the "constructor" functions use the `inline' keyword. If your compiler does not support this keyword, you should either - place `-Dinline=''' on your command line, or use the GNU Autotools + place `-Dinline=''' on your command line or use the GNU Autotools and include a `config.h' file in your extensions. * All pointers filled in by `gawk' point 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 calling one of `gawk_malloc()', `gawk_calloc()' or + from calling one of `gawk_malloc()', `gawk_calloc()', or `gawk_realloc()', and is managed by `gawk' from then on. * The API defines several simple `struct's that map values as seen @@ -23060,7 +23134,7 @@ operations: multibyte encoding (as defined by `LC_XXX' environment variables) and not using wide characters. This matches how `gawk' stores strings internally and also how characters are - likely to be input and output from files. + likely to be input into and output from files. * When retrieving a value (such as a parameter or that of a global variable or array element), the extension requests a specific type @@ -23097,6 +23171,8 @@ general-purpose use. Additional, more specialized, data structures are introduced in subsequent minor nodes, together with the functions that use them. + The general-purpose types and structures are as follows: + `typedef void *awk_ext_id_t;' A value of this type is received from `gawk' when an extension is loaded. That value must then be passed back to `gawk' as the @@ -23112,7 +23188,7 @@ use them. ` awk_false = 0,' ` awk_true' `} awk_bool_t;' - A simple boolean type. + A simple Boolean type. `typedef struct awk_string {' ` char *str; /* data */' @@ -23156,8 +23232,8 @@ use them. `#define array_cookie u.a' `#define scalar_cookie u.scl' `#define value_cookie u.vc' - These macros make accessing the fields of the `awk_value_t' more - readable. + Using these macros makes accessing the fields of the `awk_value_t' + more readable. `typedef void *awk_scalar_t;' Scalars can be represented as an opaque type. These values are @@ -23177,8 +23253,8 @@ indicates what is in the `union'. Representing numbers is easy--the API uses a C `double'. Strings require more work. Because `gawk' allows embedded NUL bytes in string -values, a string must be represented as a pair containing a -data-pointer and length. This is the `awk_string_t' type. +values, a string must be represented as a pair containing a data +pointer and length. This is the `awk_string_t' type. Identifiers (i.e., the names of global variables) can be associated with either scalar values or with arrays. In addition, `gawk' provides @@ -23190,12 +23266,12 @@ Manipulation::. of the `union' as if they were fields in a `struct'; this is a common coding practice in C. Such code is easier to write and to read, but it remains _your_ responsibility to make sure that the `val_type' member -correctly reflects the type of the value in the `awk_value_t'. +correctly reflects the type of the value in the `awk_value_t' struct. Conceptually, the first three members of the `union' (number, string, and array) are all that is needed for working with `awk' values. However, because the API provides routines for accessing and changing -the value of global scalar variables only by using the variable's name, +the value of a global scalar variable only by using the variable's name, there is a performance penalty: `gawk' must find the variable each time it is accessed and changed. This turns out to be a real issue, not just a theoretical one. @@ -23204,17 +23280,19 @@ just a theoretical one. reading and/or changing the value of one or more scalar variables, you can obtain a "scalar cookie"(1) object for that variable, and then use the cookie for getting the variable's value or for changing the -variable's value. This is the `awk_scalar_t' type and `scalar_cookie' -macro. Given a scalar cookie, `gawk' can directly retrieve or modify -the value, as required, without having to find it first. +variable's value. The `awk_scalar_t' type holds a scalar cookie, and +the `scalar_cookie' macro provides access to the value of that type in +the `awk_value_t' struct. Given a scalar cookie, `gawk' can directly +retrieve or modify the value, as required, without having to find it +first. The `awk_value_cookie_t' type and `value_cookie' macro are similar. If you know that you wish to use the same numeric or string _value_ for one or more variables, you can create the value once, retaining a "value cookie" for it, and then pass in that value cookie whenever you -wish to set the value of a variable. This saves both storage space -within the running `gawk' process as well as the time needed to create -the value. +wish to set the value of a variable. This saves storage space within +the running `gawk' process and reduces the time needed to create the +value. ---------- Footnotes ---------- @@ -23249,7 +23327,7 @@ prototypes, in the way that extension code would use them: `void gawk_free(void *ptr);' Call the correct version of `free()' to release storage that was - allocated with `gawk_malloc()', `gawk_calloc()' or + allocated with `gawk_malloc()', `gawk_calloc()', or `gawk_realloc()'. The API has to provide these functions because it is possible for an @@ -23261,7 +23339,7 @@ version of `malloc()', unexpected behavior would likely result. Two convenience macros may be used for allocating storage from `gawk_malloc()' and `gawk_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. +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: @@ -23291,13 +23369,13 @@ as if they were 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 `gawk_realloc()', instead - of `gawk_malloc()'. The arguments are the same as for the + This is like `emalloc()', but it calls `gawk_realloc()' instead of + `gawk_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 + (1) This is more common on MS-Windows systems, but it can happen on Unix-like systems as well. @@ -23312,29 +23390,29 @@ 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)' +`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)' +`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 `gawk_malloc()', - `gawk_calloc()' or `gawk_realloc()'. The idea here is that the + `gawk_calloc()', or `gawk_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)' +`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)' +`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'. @@ -23373,7 +23451,7 @@ Extension functions are described by the following record: The fields are: `const char *name;' - The name of the new function. `awk' level code calls the function + The name of the new function. `awk'-level code calls the function by this name. This is a regular C string. Function names must obey the rules for `awk' identifiers. That is, @@ -23385,7 +23463,7 @@ Extension functions are described by the following record: This is a pointer to the C function that provides the extension's functionality. The function must fill in `*result' with either a number or a string. `gawk' takes ownership of any string memory. - As mentioned earlier, string memory *must* come from one of + As mentioned earlier, string memory _must_ come from one of `gawk_malloc()', `gawk_calloc()', or `gawk_realloc()'. The `num_actual_args' argument tells the C function how many @@ -23432,10 +23510,10 @@ function with `gawk' using the following function: `gawk' intends to pass to the `exit()' system call. `arg0' - A pointer to private data which `gawk' saves in order to pass + A pointer to private data that `gawk' saves in order to pass to the function pointed to by `funcp'. - Exit callback functions are called in last-in-first-out (LIFO) + Exit callback functions are called in last-in, first-out (LIFO) order--that is, in the reverse order in which they are registered with `gawk'. @@ -23445,8 +23523,8 @@ File: gawk.info, Node: Extension Version String, Next: Input Parsers, Prev: E 16.4.5.3 Registering An Extension Version String ................................................ -You can register a version string which indicates the name and version -of your extension, with `gawk', as follows: +You can register a version string that indicates the name and version +of your extension with `gawk', as follows: `void register_ext_version(const char *version);' Register the string pointed to by `version' with `gawk'. Note @@ -23469,7 +23547,7 @@ Files::). Additionally, it sets the value of `RT' (*note Built-in Variables::). If you want, you can provide your own custom input parser. An input -parser's job is to return a record to the `gawk' record processing +parser's job is to return a record to the `gawk' record-processing code, along with indicators for the value and length of the data to be used for `RT', if any. @@ -23486,10 +23564,10 @@ used for `RT', if any. `awk_bool_t XXX_take_control_of(awk_input_buf_t *iobuf);' When `gawk' decides to hand control of the file over to the input parser, it calls this function. This function in turn must fill - in certain fields in the `awk_input_buf_t' structure, and ensure + in certain fields in the `awk_input_buf_t' structure and ensure that certain conditions are true. It should then return true. If - an error of some kind occurs, it should not fill in any fields, - and should return false; then `gawk' will not use the input parser. + an error of some kind occurs, it should not fill in any fields and + should return false; then `gawk' will not use the input parser. The details are presented shortly. Your extension should package these functions inside an @@ -23566,10 +23644,10 @@ the `struct stat', or any combination of these factors. Once `XXX_can_take_file()' has returned true, and `gawk' has decided to use your input parser, it calls `XXX_take_control_of()'. That -function then fills one of either the `get_record' field or the -`read_func' field in the `awk_input_buf_t'. It must also ensure that -`fd' is _not_ set to `INVALID_HANDLE'. The following list describes -the fields that may be filled by `XXX_take_control_of()': +function then fills either the `get_record' field or the `read_func' +field in the `awk_input_buf_t'. It must also ensure that `fd' is _not_ +set to `INVALID_HANDLE'. The following list describes the fields that +may be filled by `XXX_take_control_of()': `void *opaque;' This is used to hold any state information needed by the input @@ -23586,22 +23664,22 @@ the fields that may be filled by `XXX_take_control_of()': Its behavior is described in the text following this list. `ssize_t (*read_func)();' - This function pointer should point to function that has the same + This function pointer should point to a function that has the same behavior as the standard POSIX `read()' system call. It is an alternative to the `get_record' pointer. Its behavior is also described in the text following this list. `void (*close_func)(struct awk_input *iobuf);' This function pointer should point to a function that does the - "tear down." It should release any resources allocated by + "teardown." It should release any resources allocated by `XXX_take_control_of()'. It may also close the file. If it does so, it should set the `fd' field to `INVALID_HANDLE'. If `fd' is still not `INVALID_HANDLE' after the call to this function, `gawk' calls the regular `close()' system call. - Having a "tear down" function is optional. If your input parser - does not need it, do not set this field. Then, `gawk' calls the + Having a "teardown" function is optional. If your input parser does + not need it, do not set this field. Then, `gawk' calls the regular `close()' system call on the file descriptor, so it should be valid. @@ -23609,7 +23687,7 @@ the fields that may be filled by `XXX_take_control_of()': records. The parameters are as follows: `char **out' - This is a pointer to a `char *' variable which is set to point to + This is a pointer to a `char *' variable that is set to point to the record. `gawk' makes its own copy of the data, so the extension must manage this storage. @@ -23658,16 +23736,16 @@ explicitly. NOTE: You must choose one method or the other: either a function that returns a record, or one that returns raw data. In particular, if you supply a function to get a record, `gawk' will - call it, and never call the raw read function. + call it, and will never call the raw read function. `gawk' ships with a sample extension that reads directories, -returning records for each entry in the directory (*note Extension -Sample Readdir::). You may wish to use that code as a guide for writing -your own input parser. +returning records for each entry in a directory (*note Extension Sample +Readdir::). You may wish to use that code as a guide for writing your +own input parser. When writing an input parser, you should think about (and document) how it is expected to interact with `awk' code. You may want it to -always be called, and take effect as appropriate (as the `readdir' +always be called, and to take effect as appropriate (as the `readdir' extension does). Or you may want it to take effect based upon the value of an `awk' variable, as the XML extension from the `gawkextlib' project does (*note gawkextlib::). In the latter case, code in a @@ -23767,17 +23845,17 @@ in the `awk_output_buf_t'. The data members are as follows: These pointers should be set to point to functions that perform the equivalent function as the `<stdio.h>' functions do, if appropriate. `gawk' uses these function pointers for all output. - `gawk' initializes the pointers to point to internal, "pass - through" functions that just call the regular `<stdio.h>' - functions, so an extension only needs to redefine those functions - that are appropriate for what it does. + `gawk' initializes the pointers to point to internal "pass-through" + functions that just call the regular `<stdio.h>' functions, so an + extension only needs to redefine those functions that are + appropriate for what it does. The `XXX_can_take_file()' function should make a decision based upon the `name' and `mode' fields, and any additional state (such as `awk' variable values) that is appropriate. When `gawk' calls `XXX_take_control_of()', that function should fill -in the other fields, as appropriate, except for `fp', which it should +in the other fields as appropriate, except for `fp', which it should just use normally. You register your output wrapper with the following function: @@ -23814,16 +23892,17 @@ structures as described earlier. The name of the two-way processor. `awk_bool_t (*can_take_two_way)(const char *name);' - This function returns true if it wants to take over two-way I/O - for this file name. It should not change any state (variable - values, etc.) within `gawk'. + The function pointed to by this field should return true if it + wants to take over two-way I/O for this file name. It should not + change any state (variable values, etc.) within `gawk'. `awk_bool_t (*take_control_of)(const char *name,' ` awk_input_buf_t *inbuf,' ` awk_output_buf_t *outbuf);' - This function should fill in the `awk_input_buf_t' and - `awk_outut_buf_t' structures pointed to by `inbuf' and `outbuf', - respectively. These structures were described earlier. + The function pointed to by this field should fill in the + `awk_input_buf_t' and `awk_outut_buf_t' structures pointed to by + `inbuf' and `outbuf', respectively. These structures were + described earlier. `awk_const struct two_way_processor *awk_const next;' This is for use by `gawk'; therefore it is marked `awk_const' so @@ -23847,7 +23926,7 @@ File: gawk.info, Node: Printing Messages, Next: Updating `ERRNO', Prev: Regis You can print different kinds of warning messages from your extension, as described here. Note that for these functions, you must pass in the -extension id received from `gawk' when the extension was loaded:(1) +extension ID received from `gawk' when the extension was loaded:(1) `void fatal(awk_ext_id_t id, const char *format, ...);' Print a message and then cause `gawk' to exit immediately. @@ -23903,7 +23982,7 @@ value you expect. If the actual value matches what you requested, the function returns true and fills in the `awk_value_t' result. Otherwise, the function returns false, and the `val_type' member indicates the type of the actual value. You may then print an error -message, or reissue the request for the actual value type, as +message or reissue the request for the actual value type, as appropriate. This behavior is summarized in *note table-value-types-returned::. @@ -23912,15 +23991,15 @@ table-value-types-returned::. String Number Array Undefined ------------------------------------------------------------------------------ - String String String false false - Number Number if can Number false false + String String String False False + Number Number if can Number False False be converted, else false -Type Array false false Array false -Requested Scalar Scalar Scalar false false +Type Array False False Array False +Requested Scalar Scalar Scalar False False Undefined String Number Array Undefined - Value false false false false - Cookie + Value False False False False + cookie Table 16.1: API value types returned @@ -23937,16 +24016,16 @@ your extension function. They are: ` awk_valtype_t wanted,' ` awk_value_t *result);' Fill in the `awk_value_t' structure pointed to by `result' with - the `count''th argument. Return true if the actual type matches - `wanted', false otherwise. In the latter case, `result->val_type' - indicates the actual type (*note Table 16.1: - table-value-types-returned.). Counts are zero based--the first + the `count'th argument. Return true if the actual type matches + `wanted', and false otherwise. In the latter case, + `result->val_type' indicates the actual type (*note Table 16.1: + table-value-types-returned.). Counts are zero-based--the first argument is numbered zero, the second one, and so on. `wanted' indicates the type of value expected. `awk_bool_t set_argument(size_t count, awk_array_t array);' Convert a parameter that was undefined into an array; this provides - call-by-reference for arrays. Return false if `count' is too big, + call by reference for arrays. Return false if `count' is too big, or if the argument's type is not undefined. *Note Array Manipulation::, for more information on creating arrays. @@ -23974,8 +24053,8 @@ File: gawk.info, Node: Symbol table by name, Next: Symbol table by cookie, Up The following routines provide the ability to access and update global `awk'-level variables by name. In compiler terminology, identifiers of different kinds are termed "symbols", thus the "sym" in the routines' -names. The data structure which stores information about symbols is -termed a "symbol table". +names. The data structure that stores information about symbols is +termed a "symbol table". The functions are as follows: `awk_bool_t sym_lookup(const char *name,' ` awk_valtype_t wanted,' @@ -23983,14 +24062,14 @@ termed a "symbol table". Fill in the `awk_value_t' structure pointed to by `result' with the value of the variable named by the string `name', which is a regular C string. `wanted' indicates the type of value expected. - Return true if the actual type matches `wanted', false otherwise. - In the latter case, `result->val_type' indicates the actual type - (*note Table 16.1: table-value-types-returned.). + Return true if the actual type matches `wanted', and false + otherwise. In the latter case, `result->val_type' indicates the + actual type (*note Table 16.1: table-value-types-returned.). `awk_bool_t sym_update(const char *name, awk_value_t *value);' Update the variable named by the string `name', which is a regular C string. The variable is added to `gawk''s symbol table if it is - not there. Return true if everything worked, false otherwise. + not there. Return true if everything worked, and false otherwise. Changing types (scalar to array or vice versa) of an existing variable is _not_ allowed, nor may this routine be used to update @@ -24015,7 +24094,7 @@ File: gawk.info, Node: Symbol table by cookie, Next: Cached values, Prev: Sym A "scalar cookie" is an opaque handle that provides access to a global variable or array. It is an optimization that avoids looking up variables in `gawk''s symbol table every time access is needed. This -was discussed earlier in *note General Data Types::. +was discussed earlier, in *note General Data Types::. The following functions let you work with scalar cookies: @@ -24126,7 +24205,7 @@ File: gawk.info, Node: Cached values, Prev: Symbol table by cookie, Up: Symbo .......................................... The routines in this section allow you to create and release cached -values. As with scalar cookies, in theory, cached values are not +values. Like scalar cookies, in theory, cached values are not necessary. You can create numbers and strings using the functions in *note Constructor Functions::. You can then assign those values to variables using `sym_update()' or `sym_update_scalar()', as you like. @@ -24197,7 +24276,7 @@ Using value cookies in this way saves considerable storage, as all of `VAR1' through `VAR100' share the same value. You might be wondering, "Is this sharing problematic? What happens -if `awk' code assigns a new value to `VAR1', are all the others changed +if `awk' code assigns a new value to `VAR1'; are all the others changed too?" That's a great question. The answer is that no, it's not a problem. @@ -24316,7 +24395,7 @@ File: gawk.info, Node: Array Functions, Next: Flattening Arrays, Prev: Array 16.4.11.2 Array Functions ......................... -The following functions relate to individual array elements. +The following functions relate to individual array elements: `awk_bool_t get_element_count(awk_array_t a_cookie, size_t *count);' For the array represented by `a_cookie', place in `*count' the @@ -24334,13 +24413,14 @@ The following functions relate to individual array elements. (*note Table 16.1: table-value-types-returned.). The value for `index' can be numeric, in which case `gawk' - converts it to a string. Using non-integral values is possible, but + converts it to a string. Using nonintegral values is possible, but requires that you understand how such values are converted to - strings (*note Conversion::); thus using integral values is safest. + 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 `gawk_malloc()', - `gawk_calloc()' or `gawk_realloc()', and `gawk' releases the + `gawk_calloc()', or `gawk_realloc()', and `gawk' releases the storage. `awk_bool_t set_array_element(awk_array_t a_cookie,' @@ -24384,9 +24464,9 @@ The following functions relate to individual array elements. `awk_bool_t release_flattened_array(awk_array_t a_cookie,' ` awk_flat_array_t *data);' When done with a flattened array, release the storage using this - function. You must pass in both the original array cookie, and - the address of the created `awk_flat_array_t' structure. The - function returns true upon success, false otherwise. + function. You must pass in both the original array cookie and the + address of the created `awk_flat_array_t' structure. The function + returns true upon success, false otherwise. File: gawk.info, Node: Flattening Arrays, Next: Creating Arrays, Prev: Array Functions, Up: Array Manipulation @@ -24396,8 +24476,8 @@ File: gawk.info, Node: Flattening Arrays, Next: Creating Arrays, Prev: Array To "flatten" an array is to create a structure that represents the full array in a fashion that makes it easy for C code to traverse the entire -array. Test code in `extension/testext.c' does this, and also serves -as a nice example showing how to use the APIs. +array. Some of the code in `extension/testext.c' does this, and also +serves as a nice example showing how to use the APIs. We walk through that part of the code one step at a time. First, the `gawk' script that drives the test extension: @@ -24446,9 +24526,8 @@ number of arguments: } The function then proceeds in steps, as follows. First, retrieve the -name of the array, passed as the first argument. Then retrieve the -array itself. If either operation fails, print error messages and -return: +name of the array, passed as the first argument, followed by the array +itself. If either operation fails, print an error message and return: /* get argument named array as flat array and print it */ if (get_argument(0, AWK_STRING, & value)) { @@ -24478,9 +24557,9 @@ count of elements in the array and print it: printf("dump_array_and_delete: incoming size is %lu\n", (unsigned long) count); - The third step is to actually flatten the array, and then to double -check that the count in the `awk_flat_array_t' is the same as the count -just retrieved: + The third step is to actually flatten the array, and then to +double-check that the count in the `awk_flat_array_t' is the same as +the count just retrieved: if (! flatten_array(value2.array_cookie, & flat_array)) { printf("dump_array_and_delete: could not flatten array\n"); @@ -24497,7 +24576,7 @@ just retrieved: The fourth step is to retrieve the index of the element to be deleted, which was passed as the second argument. Remember that -argument counts passed to `get_argument()' are zero-based, thus the +argument counts passed to `get_argument()' are zero-based, and thus the second argument is numbered one: if (! get_argument(1, AWK_STRING, & value3)) { @@ -24510,7 +24589,7 @@ over every element in the array, printing the index and element values. In addition, upon finding the element with the index that is supposed to be deleted, the function sets the `AWK_ELEMENT_DELETE' bit in the `flags' field of the element. When the array is released, `gawk' -traverses the flattened array, and deletes any elements which have this +traverses the flattened array, and deletes any elements that have this flag bit set: for (i = 0; i < flat_array->count; i++) { @@ -24791,10 +24870,10 @@ The API provides both a "major" and a "minor" version number. The API versions are available at compile time as constants: `GAWK_API_MAJOR_VERSION' - The major version of the API. + The major version of the API `GAWK_API_MINOR_VERSION' - The minor version of the API. + The minor version of the API The minor version increases when new functions are added to the API. Such new functions are always added to the end of the API `struct'. @@ -24809,13 +24888,13 @@ For this reason, the major and minor API versions of the running `gawk' are included in the API `struct' as read-only constant integers: `api->major_version' - The major version of the running `gawk'. + The major version of the running `gawk' `api->minor_version' - The minor version of the running `gawk'. + The minor version of the running `gawk' It is up to the extension to decide if there are API -incompatibilities. Typically a check like this is enough: +incompatibilities. Typically, a check like this is enough: if (api->major_version != GAWK_API_MAJOR_VERSION || api->minor_version < GAWK_API_MINOR_VERSION) { @@ -24827,7 +24906,7 @@ incompatibilities. Typically a check like this is enough: } Such code is included in the boilerplate `dl_load_func()' macro -provided in `gawkapi.h' (discussed later, in *note Extension API +provided in `gawkapi.h' (discussed in *note Extension API Boilerplate::). @@ -24878,7 +24957,7 @@ functions) toward the top of your source file, using predefined names as described here. The boilerplate needed is also provided in comments in the `gawkapi.h' header file: - /* Boiler plate code: */ + /* Boilerplate code: */ int plugin_is_GPL_compatible; static gawk_api_t *const api; @@ -24928,7 +25007,7 @@ in the `gawkapi.h' header file: to point to a string giving the name and version of your extension. `static awk_ext_func_t func_table[] = { ... };' - This is an array of one or more `awk_ext_func_t' structures as + This is an array of one or more `awk_ext_func_t' structures, as described earlier (*note Extension Functions::). It can then be looped over for multiple calls to `add_ext_func()'. @@ -25041,7 +25120,7 @@ appropriate information: `stat()' fails. It fills in the following elements: `"name"' - The name of the file that was `stat()''ed. + The name of the file that was `stat()'ed. `"dev"' `"ino"' @@ -25089,7 +25168,7 @@ appropriate information: The file is a directory. `"fifo"' - The file is a named-pipe (also known as a FIFO). + The file is a named pipe (also known as a FIFO). `"file"' The file is just a regular file. @@ -25109,7 +25188,7 @@ appropriate information: systems, "a priori" knowledge is used to provide a value. Where no value can be determined, it defaults to 512. - Several additional elements may be present depending upon the + Several additional elements may be present, depending upon the operating system and the type of the file. You can test for them in your `awk' program by using the `in' operator (*note Reference to Elements::): @@ -25138,9 +25217,9 @@ File: gawk.info, Node: Internal File Ops, Next: Using Internal File Ops, Prev Here is the C code for these extensions.(1) The file includes a number of standard header files, and then -includes the `gawkapi.h' header file which provides the API definitions. -Those are followed by the necessary variable declarations to make use -of the API macros and boilerplate code (*note Extension API +includes the `gawkapi.h' header file, which provides the API +definitions. Those are followed by the necessary variable declarations +to make use of the API macros and boilerplate code (*note Extension API Boilerplate::): #ifdef HAVE_CONFIG_H @@ -25176,9 +25255,9 @@ Boilerplate::): By convention, for an `awk' function `foo()', the C function that implements it is called `do_foo()'. The function should have two -arguments: the first is an `int' usually called `nargs', that +arguments. The first is an `int', usually called `nargs', that represents the number of actual arguments for the function. The second -is a pointer to an `awk_value_t', usually named `result': +is a pointer to an `awk_value_t' structure, usually named `result': /* do_chdir --- provide dynamically loaded chdir() function for gawk */ @@ -25214,8 +25293,8 @@ is numbered zero. } The `stat()' extension is more involved. First comes a function -that turns a numeric mode into a printable representation (e.g., 644 -becomes `-rw-r--r--'). This is omitted here for brevity: +that turns a numeric mode into a printable representation (e.g., octal +`0644' becomes `-rw-r--r--'). This is omitted here for brevity: /* format_mode --- turn a stat mode field into something readable */ @@ -25265,8 +25344,8 @@ contain the result of the `stat()': The following function does most of the work to fill in the `awk_array_t' result array with values obtained from a valid `struct -stat'. It is done in a separate function to support the `stat()' -function for `gawk' and also to support the `fts()' extension which is +stat'. This work is done in a separate function to support the `stat()' +function for `gawk' and also to support the `fts()' extension, which is included in the same file but whose code is not shown here (*note Extension Sample File Functions::). @@ -25378,8 +25457,8 @@ argument is optional. If present, it causes `do_stat()' to use the `stat()' system call instead of the `lstat()' system call. This is done by using a function pointer: `statfunc'. `statfunc' is initialized to point to `lstat()' (instead of `stat()') to get the file -information, in case the file is a symbolic link. However, if there -were three arguments, `statfunc' is set point to `stat()', instead. +information, in case the file is a symbolic link. However, if the third +argument is included, `statfunc' is set to point to `stat()', instead. Here is the `do_stat()' function, which starts with variable declarations and argument checking: @@ -25428,7 +25507,7 @@ returns: /* always empty out the array */ clear_array(array); - /* stat the file, if error, set ERRNO and return */ + /* stat the file; if error, set ERRNO and return */ ret = statfunc(name, & sbuf); if (ret < 0) { update_ERRNO_int(errno); @@ -25447,7 +25526,8 @@ When done, the function returns the result from `fill_stat_array()': function(s) into `gawk'. The `filefuncs' extension also provides an `fts()' function, which -we omit here. For its sake there is an initialization function: +we omit here (*note Extension Sample File Functions::). For its sake, +there is an initialization function: /* init_filefuncs --- initialization routine */ @@ -25571,9 +25651,9 @@ File: gawk.info, Node: Extension Samples, Next: gawkextlib, Prev: Extension E 16.7 The Sample Extensions in the `gawk' Distribution ===================================================== -This minor node provides brief overviews of the sample extensions that +This minor node provides a brief overview of the sample extensions that come in the `gawk' distribution. Some of them are intended for -production use (e.g., the `filefuncs', `readdir' and `inplace' +production use (e.g., the `filefuncs', `readdir', and `inplace' extensions). Others mainly provide example code that shows how to use the extension API. @@ -25610,13 +25690,13 @@ follows. The usage is: `result = chdir("/some/directory")' The `chdir()' function is a direct hook to the `chdir()' system call to change the current directory. It returns zero upon - success or less than zero upon error. In the latter case, it - updates `ERRNO'. + success or a value less than zero upon error. In the latter case, + it updates `ERRNO'. `result = stat("/some/path", statdata' [`, follow']`)' The `stat()' function provides a hook into the `stat()' system - call. It returns zero upon success or less than zero upon error. - In the latter case, it updates `ERRNO'. + call. It returns zero upon success or a value less than zero upon + error. In the latter case, it updates `ERRNO'. By default, it uses the `lstat()' system call. However, if passed a third argument, it uses `stat()' instead. @@ -25643,23 +25723,23 @@ follows. The usage is: `"minor"' `st_minor' Device files `"blksize"'`st_blksize' All `"pmode"' A human-readable version of the All - mode value, such as printed by - `ls'. For example, - `"-rwxr-xr-x"' + mode value, like that printed by + `ls' (for example, + `"-rwxr-xr-x"') `"linkval"'The value of the symbolic link Symbolic links - `"type"' The type of the file as a string. All - One of `"file"', `"blockdev"', - `"chardev"', `"directory"', - `"socket"', `"fifo"', `"symlink"', - `"door"', or `"unknown"'. Not - all systems support all file - types. + `"type"' The type of the file as a All + string--one of `"file"', + `"blockdev"', `"chardev"', + `"directory"', `"socket"', + `"fifo"', `"symlink"', `"door"', + or `"unknown"' (not all systems + support all file types) `flags = or(FTS_PHYSICAL, ...)' `result = fts(pathlist, flags, filedata)' Walk the file trees provided in `pathlist' and fill in the - `filedata' array as described next. `flags' is the bitwise OR of + `filedata' array, as described next. `flags' is the bitwise OR of several predefined values, also described in a moment. Return zero if there were no errors, otherwise return -1. @@ -25712,10 +25792,11 @@ requested hierarchies. filesystem. `filedata' - The `filedata' array is first cleared. Then, `fts()' creates an - element in `filedata' for every element in `pathlist'. The index - is the name of the directory or file given in `pathlist'. The - element for this index is itself an array. There are two cases: + The `filedata' array holds the results. `fts()' first clears it. + Then it creates an element in `filedata' for every element in + `pathlist'. The index is the name of the directory or file given + in `pathlist'. The element for this index is itself an array. + There are two cases: _The path is a file_ In this case, the array contains two or three elements: @@ -25751,7 +25832,7 @@ requested hierarchies. elements as for a file: `"path"', `"stat"', and `"error"'. The `fts()' function returns zero if there were no errors. -Otherwise it returns -1. +Otherwise, it returns -1. NOTE: The `fts()' extension does not exactly mimic the interface of the C library `fts()' routines, choosing instead to provide an @@ -25790,14 +25871,14 @@ adds one constant (`FNM_NOMATCH'), and an array of flag values named The arguments to `fnmatch()' are: `pattern' - The file name wildcard to match. + The file name wildcard to match `string' - The file name string. + The file name string `flag' Either zero, or the bitwise OR of one or more of the flags in the - `FNM' array. + `FNM' array The flags are as follows: @@ -25831,13 +25912,13 @@ The `fork' extension adds three functions, as follows: `pid = fork()' 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 + 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()' @@ -25861,8 +25942,8 @@ File: gawk.info, Node: Extension Sample Inplace, Next: Extension Sample Ord, 16.7.4 Enabling In-Place File Editing ------------------------------------- -The `inplace' extension emulates GNU `sed''s `-i' option which performs -"in place" editing of each input file. It uses the bundled +The `inplace' extension emulates GNU `sed''s `-i' option, which +performs "in-place" editing of each input file. It uses the bundled `inplace.awk' include file to invoke the extension properly: # inplace --- load and invoke the inplace extension. @@ -25872,11 +25953,16 @@ The `inplace' extension emulates GNU `sed''s `-i' option which performs # Please set INPLACE_SUFFIX to make a backup copy. For example, you may # want to set INPLACE_SUFFIX to .bak on the command line or in a BEGIN rule. + # N.B. We call inplace_end() in the BEGINFILE and END rules so that any + # actions in an ENDFILE rule will be redirected as expected. + BEGINFILE { - inplace_begin(FILENAME, INPLACE_SUFFIX) + if (_inplace_filename != "") + inplace_end(_inplace_filename, INPLACE_SUFFIX) + inplace_begin(_inplace_filename = FILENAME, INPLACE_SUFFIX) } - ENDFILE { + END { inplace_end(FILENAME, INPLACE_SUFFIX) } @@ -25888,6 +25974,10 @@ the extension restores standard output to its original destination. If a backup file name created by appending that suffix. Finally, the temporary file is renamed to the original file name. + The `_inplace_filename' variable serves to keep track of the current +filename so as to not invoke `inplace_end()' before processing the +first file. + If any error occurs, the extension issues a fatal error to terminate processing immediately without damaging the original file. @@ -25945,11 +26035,11 @@ returned as a record. The record consists of three fields. The first two are the inode number and the file name, separated by a forward slash character. On systems where the directory entry contains the file type, the record -has a third field (also separated by a slash) which is a single letter +has a third field (also separated by a slash), which is a single letter indicating the type of the file. The letters and their corresponding file types are shown in *note table-readdir-file-types::. -Letter File Type +Letter File type -------------------------------------------------------------------------- `b' Block device `c' Character device @@ -25996,7 +26086,7 @@ unwary. Here is an example: print "don't panic" > "/dev/stdout" } - The output from this program is: `cinap t'nod'. + The output from this program is `cinap t'nod'. File: gawk.info, Node: Extension Sample Rev2way, Next: Extension Sample Read write array, Prev: Extension Sample Revout, Up: Extension Samples @@ -26044,7 +26134,7 @@ The `rwarray' extension adds two functions, named `writea()' and `reada()' is the inverse of `writea()'; it reads the file named as its first argument, filling in the array named as the second argument. It clears the array first. Here too, the return value - is one on success and zero upon failure. + is one on success, or zero upon failure. The array created by `reada()' is identical to that written by `writea()' in the sense that the contents are the same. However, due to @@ -26128,7 +26218,7 @@ The `time' extension adds two functions, named `gettimeofday()' and Attempt to sleep for SECONDS seconds. If SECONDS is negative, or the attempt to sleep fails, return -1 and set `ERRNO'. Otherwise, return zero after sleeping for the indicated amount of time. Note - that SECONDS may be a floating-point (non-integral) value. + that SECONDS may be a floating-point (nonintegral) value. Implementation details: depending on platform availability, this function tries to use `nanosleep()' or `select()' to implement the delay. @@ -26156,7 +26246,9 @@ provides a number of `gawk' extensions, including one for processing XML files. This is the evolution of the original `xgawk' (XML `gawk') project. - As of this writing, there are six extensions: + As of this writing, there are seven extensions: + + * `errno' extension * GD graphics library extension @@ -26165,7 +26257,7 @@ project. * PostgreSQL extension * MPFR library extension (this provides access to a number of MPFR - functions which `gawk''s native MPFR support does not) + functions that `gawk''s native MPFR support does not) * Redis extension @@ -26206,7 +26298,7 @@ follows. First, build and install `gawk': If you have installed `gawk' in the standard way, then you will likely not need the `--with-gawk' option when configuring `gawkextlib'. -You may also need to use the `sudo' utility to install both `gawk' and +You may need to use the `sudo' utility to install both `gawk' and `gawkextlib', depending upon how your system works. If you write an extension that you wish to share with other `gawk' @@ -26228,7 +26320,7 @@ File: gawk.info, Node: Extension summary, Next: Extension Exercises, Prev: ga a variable named `plugin_is_GPL_compatible'. * Communication between `gawk' and an extension is two-way. `gawk' - passes a `struct' to the extension which contains various data + passes a `struct' to the extension that contains various data fields and function pointers. The extension can then call into `gawk' via the supplied function pointers to accomplish certain tasks. @@ -26239,7 +26331,7 @@ File: gawk.info, Node: Extension summary, Next: Extension Exercises, Prev: ga convention, implementation functions are named `do_XXXX()' for some `awk'-level function `XXXX()'. - * The API is defined in a header file named `gawkpi.h'. You must + * The API is defined in a header file named `gawkapi.h'. You must include a number of standard header files _before_ including it in your source file. @@ -26269,16 +26361,16 @@ File: gawk.info, Node: Extension summary, Next: Extension Exercises, Prev: ga * Manipulating arrays (retrieving, adding, deleting, and modifying elements; getting the count of elements in an array; creating a new array; clearing an array; and flattening an - array for easy C style looping over all its indices and + array for easy C-style looping over all its indices and elements) * The API defines a number of standard data types for representing `awk' values, array elements, and arrays. - * The API provide convenience functions for constructing values. It - also provides memory management functions to ensure compatibility - between memory allocated by `gawk' and memory allocated by an - extension. + * The API provides convenience functions for constructing values. + It also provides memory management functions to ensure + compatibility between memory allocated by `gawk' and memory + allocated by an extension. * _All_ memory passed from `gawk' to an extension must be treated as read-only by the extension. @@ -26296,8 +26388,8 @@ File: gawk.info, Node: Extension summary, Next: Extension Exercises, Prev: ga header file make this easier to do. * The `gawk' distribution includes a number of small but useful - sample extensions. The `gawkextlib' project includes several more, - larger, extensions. If you wish to write an extension and + sample extensions. The `gawkextlib' project includes several more + (larger) extensions. If you wish to write an extension and contribute it to the community of `gawk' users, the `gawkextlib' project is the place to do so. @@ -26367,56 +26459,56 @@ available in System V Release 3.1 (1987). This minor node summarizes the changes, with cross-references to further details: * The requirement for `;' to separate rules on a line (*note - Statements/Lines::). + Statements/Lines::) * User-defined functions and the `return' statement (*note - User-defined::). + User-defined::) * The `delete' statement (*note Delete::). - * The `do'-`while' statement (*note Do Statement::). + * The `do'-`while' statement (*note Do Statement::) * The built-in functions `atan2()', `cos()', `sin()', `rand()', and - `srand()' (*note Numeric Functions::). + `srand()' (*note Numeric Functions::) * The built-in functions `gsub()', `sub()', and `match()' (*note - String Functions::). + String Functions::) * The built-in functions `close()' and `system()' (*note I/O - Functions::). + Functions::) * The `ARGC', `ARGV', `FNR', `RLENGTH', `RSTART', and `SUBSEP' - predefined variables (*note Built-in Variables::). + predefined variables (*note Built-in Variables::) - * Assignable `$0' (*note Changing Fields::). + * Assignable `$0' (*note Changing Fields::) * The conditional expression using the ternary operator `?:' (*note - Conditional Exp::). + Conditional Exp::) - * The expression `INDEX-VARIABLE in ARRAY' outside of `for' - statements (*note Reference to Elements::). + * The expression `INDX in ARRAY' outside of `for' statements (*note + Reference to Elements::) * The exponentiation operator `^' (*note Arithmetic Ops::) and its - assignment operator form `^=' (*note Assignment Ops::). + assignment operator form `^=' (*note Assignment Ops::) * C-compatible operator precedence, which breaks some old `awk' - programs (*note Precedence::). + programs (*note Precedence::) * Regexps as the value of `FS' (*note Field Separators::) and as the third argument to the `split()' function (*note String - Functions::), rather than using only the first character of `FS'. + Functions::), rather than using only the first character of `FS' * Dynamic regexps as operands of the `~' and `!~' operators (*note - Computed Regexps::). + Computed Regexps::) * The escape sequences `\b', `\f', and `\r' (*note Escape - Sequences::). + Sequences::) - * Redirection of input for the `getline' function (*note Getline::). + * Redirection of input for the `getline' function (*note Getline::) - * Multiple `BEGIN' and `END' rules (*note BEGIN/END::). + * Multiple `BEGIN' and `END' rules (*note BEGIN/END::) - * Multidimensional arrays (*note Multidimensional::). + * Multidimensional arrays (*note Multidimensional::) File: gawk.info, Node: SVR4, Next: POSIX, Prev: V7/SVR3.1, Up: Language History @@ -26427,37 +26519,37 @@ A.2 Changes Between SVR3.1 and SVR4 The System V Release 4 (1989) version of Unix `awk' added these features (some of which originated in `gawk'): - * The `ENVIRON' array (*note Built-in Variables::). + * The `ENVIRON' array (*note Built-in Variables::) - * Multiple `-f' options on the command line (*note Options::). + * Multiple `-f' options on the command line (*note Options::) * The `-v' option for assigning variables before program execution - begins (*note Options::). + begins (*note Options::) - * The `--' signal for terminating command-line options. + * The `--' signal for terminating command-line options * The `\a', `\v', and `\x' escape sequences (*note Escape - Sequences::). + Sequences::) * A defined return value for the `srand()' built-in function (*note - Numeric Functions::). + Numeric Functions::) * The `toupper()' and `tolower()' built-in string functions for case - translation (*note String Functions::). + translation (*note String Functions::) * A cleaner specification for the `%c' format-control letter in the - `printf' function (*note Control Letters::). + `printf' function (*note Control Letters::) * The ability to dynamically pass the field width and precision (`"%*.*d"') in the argument list of `printf' and `sprintf()' - (*note Control Letters::). + (*note Control Letters::) * The use of regexp constants, such as `/foo/', as expressions, where they are equivalent to using the matching operator, as in `$0 ~ - /foo/' (*note Using Constant Regexps::). + /foo/' (*note Using Constant Regexps::) * Processing of escape sequences inside command-line variable - assignments (*note Assignment Options::). + assignments (*note Assignment Options::) File: gawk.info, Node: POSIX, Next: BTL, Prev: SVR4, Up: Language History @@ -26469,30 +26561,30 @@ The POSIX Command Language and Utilities standard for `awk' (1992) introduced the following changes into the language: * The use of `-W' for implementation-specific options (*note - Options::). + Options::) * The use of `CONVFMT' for controlling the conversion of numbers to - strings (*note Conversion::). + strings (*note Conversion::) * The concept of a numeric string and tighter comparison rules to go - with it (*note Typing and Comparison::). + with it (*note Typing and Comparison::) * The use of predefined variables as function parameter names is - forbidden (*note Definition Syntax::). + forbidden (*note Definition Syntax::) * More complete documentation of many of the previously undocumented - features of the language. + features of the language In 2012, a number of extensions that had been commonly available for many years were finally added to POSIX. They are: * The `fflush()' built-in function for flushing buffered output - (*note I/O Functions::). + (*note I/O Functions::) - * The `nextfile' statement (*note Nextfile Statement::). + * The `nextfile' statement (*note Nextfile Statement::) * The ability to delete all of an array at once with `delete ARRAY' - (*note Delete::). + (*note Delete::) *Note Common Extensions::, for a list of common extensions not @@ -26514,13 +26606,13 @@ Other Versions::). in his version of `awk': * The `**' and `**=' operators (*note Arithmetic Ops:: and *note - Assignment Ops::). + Assignment Ops::) * The use of `func' as an abbreviation for `function' (*note - Definition Syntax::). + Definition Syntax::) * The `fflush()' built-in function for flushing buffered output - (*note I/O Functions::). + (*note I/O Functions::) *Note Common Extensions::, for a full list of the extensions @@ -26542,104 +26634,108 @@ the current version of `gawk'. * Additional predefined variables: - - The `ARGIND' `BINMODE', `ERRNO', `FIELDWIDTHS', `FPAT', + - The `ARGIND', `BINMODE', `ERRNO', `FIELDWIDTHS', `FPAT', `IGNORECASE', `LINT', `PROCINFO', `RT', and `TEXTDOMAIN' - variables (*note Built-in Variables::). + variables (*note Built-in Variables::) * Special files in I/O redirections: - - The `/dev/stdin', `/dev/stdout', `/dev/stderr' and - `/dev/fd/N' special file names (*note Special Files::). + - The `/dev/stdin', `/dev/stdout', `/dev/stderr', and + `/dev/fd/N' special file names (*note Special Files::) - The `/inet', `/inet4', and `/inet6' special files for TCP/IP networking using `|&' to specify which version of the IP - protocol to use (*note TCP/IP Networking::). + protocol to use (*note TCP/IP Networking::) * Changes and/or additions to the language: - - The `\x' escape sequence (*note Escape Sequences::). + - The `\x' escape sequence (*note Escape Sequences::) - - Full support for both POSIX and GNU regexps (*note Regexp::). + - Full support for both POSIX and GNU regexps (*note Regexp::) - The ability for `FS' and for the third argument to `split()' - to be null strings (*note Single Character Fields::). + to be null strings (*note Single Character Fields::) - - The ability for `RS' to be a regexp (*note Records::). + - The ability for `RS' to be a regexp (*note Records::) - The ability to use octal and hexadecimal constants in `awk' - program source code (*note Nondecimal-numbers::). + program source code (*note Nondecimal-numbers::) - The `|&' operator for two-way I/O to a coprocess (*note - Two-way I/O::). + Two-way I/O::) - - Indirect function calls (*note Indirect Calls::). + - Indirect function calls (*note Indirect Calls::) - Directories on the command line produce a warning and are - skipped (*note Command-line directories::). + skipped (*note Command-line directories::) + + - Output with `print' and `printf' need not be fatal (*note + Nonfatal::) * New keywords: - The `BEGINFILE' and `ENDFILE' special patterns (*note - BEGINFILE/ENDFILE::). + BEGINFILE/ENDFILE::) - - The `switch' statement (*note Switch Statement::). + - The `switch' statement (*note Switch Statement::) * Changes to standard `awk' functions: - The optional second argument to `close()' that allows closing - one end of a two-way pipe to a coprocess (*note Two-way - I/O::). + one end of a two-way pipe to a coprocess (*note Two-way I/O::) - - POSIX compliance for `gsub()' and `sub()' with `--posix'. + - POSIX compliance for `gsub()' and `sub()' with `--posix' - The `length()' function accepts an array argument and returns - the number of elements in the array (*note String - Functions::). + the number of elements in the array (*note String Functions::) - The optional third argument to the `match()' function for capturing text-matching subexpressions within a regexp (*note - String Functions::). + String Functions::) - Positional specifiers in `printf' formats for making - translations easier (*note Printf Ordering::). + translations easier (*note Printf Ordering::) - - The `split()' function's additional optional fourth argument + - The `split()' function's additional optional fourth argument, which is an array to hold the text of the field separators - (*note String Functions::). + (*note String Functions::) * Additional functions only in `gawk': - The `gensub()', `patsplit()', and `strtonum()' functions for - more powerful text manipulation (*note String Functions::). + more powerful text manipulation (*note String Functions::) - The `asort()' and `asorti()' functions for sorting arrays - (*note Array Sorting::). + (*note Array Sorting::) - The `mktime()', `systime()', and `strftime()' functions for - working with timestamps (*note Time Functions::). + working with timestamps (*note Time Functions::) - The `and()', `compl()', `lshift()', `or()', `rshift()', and `xor()' functions for bit manipulation (*note Bitwise - Functions::). + Functions::) - The `isarray()' function to check if a variable is an array - or not (*note Type Functions::). + or not (*note Type Functions::) - - The `bindtextdomain()', `dcgettext()' and `dcngettext()' - functions for internationalization (*note Programmer i18n::). + - The `bindtextdomain()', `dcgettext()', and `dcngettext()' + functions for internationalization (*note Programmer i18n::) + + - The `div()' function for doing integer division and remainder + (*note Numeric Functions::) * Changes and/or additions in the command-line options: - The `AWKPATH' environment variable for specifying a path - search for the `-f' command-line option (*note Options::). + search for the `-f' command-line option (*note Options::) - The `AWKLIBPATH' environment variable for specifying a path - search for the `-l' command-line option (*note Options::). + search for the `-l' command-line option (*note Options::) - The `-b', `-c', `-C', `-d', `-D', `-e', `-E', `-g', `-h', `-i', `-l', `-L', `-M', `-n', `-N', `-o', `-O', `-p', `-P', `-r', `-S', `-t', and `-V' short options. Also, the ability - to use GNU-style long-named options that start with `--' and + to use GNU-style long-named options that start with `--', and the `--assign', `--bignum', `--characters-as-bytes', `--copyright', `--debug', `--dump-variables', `--exec', `--field-separator', `--file', `--gen-pot', `--help', @@ -26677,12 +26773,15 @@ the current version of `gawk'. - GCC for VAX and Alpha has not been tested for a while. - * Support for the following obsolete systems was removed from the - code for `gawk' version 4.1: + * Support for the following obsolete system was removed from the code + for `gawk' version 4.1: - Ultrix - * Support for MirBSD was removed at `gawk' version 4.2. + * Support for the following systems was removed from the code for + `gawk' version 4.2: + + - MirBSD @@ -27069,6 +27168,28 @@ in POSIX `awk', in the order they were added to `gawk'. * The dynamic extension interface was completely redone (*note Dynamic Extensions::). + * Support for Ultrix was removed. + + + Version 4.2 introduced the following changes: + + * Changes to `ENVIRON' are reflected into `gawk''s environment and + that of programs that it runs. *Note Auto-set::. + + * The `--pretty-print' option no longer runs the `awk' program too. + *Note Options::. + + * The `igawk' program and its manual page are no longer installed + when `gawk' is built. *Note Igawk Program::. + + * The `div()' function. *Note Numeric Functions::. + + * The maximum number of hexdecimal digits in `\x' escapes is now two. + *Note Escape Sequences::. + + * Nonfatal output with `print' and `printf'. *Note Nonfatal::. + + * Support for MirBSD was removed. File: gawk.info, Node: Common Extensions, Next: Ranges and Locales, Prev: Feature History, Up: Language History @@ -27080,22 +27201,22 @@ The following table summarizes the common extensions supported by `gawk', Brian Kernighan's `awk', and `mawk', the three most widely used freely available versions of `awk' (*note Other Versions::). -Feature BWK Awk Mawk GNU Awk Now standard ------------------------------------------------------------------------ -`\x' Escape sequence X 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 -`delete' without subscript X X X X -`fflush()' function X X X X -`length()' of an array X X X -`nextfile' statement X 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 +Feature BWK `awk' `mawk' `gawk' Now standard +-------------------------------------------------------------------------- +`\x' escape sequence X 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 +`delete' without subscript X X X X +`fflush()' function X X X X +`length()' of an array X X X +`nextfile' statement X 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 File: gawk.info, Node: Ranges and Locales, Next: Contributors, Prev: Common Extensions, Up: Language History @@ -27115,7 +27236,7 @@ in the machine's native character set. Thus, on ASCII-based systems, `[a-z]' matched all the lowercase letters, and only the lowercase letters, as the numeric values for the letters from `a' through `z' were contiguous. (On an EBCDIC system, the range `[a-z]' includes -additional, non-alphabetic characters as well.) +additional nonalphabetic characters as well.) Almost all introductory Unix literature explained range expressions as working in this fashion, and in particular, would teach that the @@ -27139,7 +27260,7 @@ outside those locales, the ordering was defined to be based on What does that mean? In many locales, `A' and `a' are both less than `B'. In other words, these locales sort characters in dictionary order, and `[a-dx-z]' is typically not equivalent to `[abcdxyz]'; -instead it might be equivalent to `[ABCXYabcdxyz]', for example. +instead, it might be equivalent to `[ABCXYabcdxyz]', for example. This point needs to be emphasized: much literature teaches that you should use `[a-z]' to match a lowercase character. But on systems with @@ -27163,17 +27284,17 @@ is perfectly valid in ASCII, but is not valid in many Unicode locales, such as `en_US.UTF-8'. Early versions of `gawk' used regexp matching code that was not -locale aware, so ranges had their traditional interpretation. +locale-aware, so ranges had their traditional interpretation. When `gawk' switched to using locale-aware regexp matchers, the problems began; especially as both GNU/Linux and commercial Unix vendors started implementing non-ASCII locales, _and making them the default_. Perhaps the most frequently asked question became something -like "why does `[A-Z]' match lowercase letters?!?" +like, "Why does `[A-Z]' match lowercase letters?!?" This situation existed for close to 10 years, if not more, and the `gawk' maintainer grew weary of trying to explain that `gawk' was being -nicely standards compliant, and that the issue was in the user's +nicely standards-compliant, and that the issue was in the user's locale. During the development of version 4.0, he modified `gawk' to always treat ranges in the original, pre-POSIX fashion, unless `--posix' was used (*note Options::).(2) @@ -27185,18 +27306,18 @@ 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'; -in all cases, `gawk' remains POSIX compliant. +`gawk' maintainer chose to apply the pre-POSIX meaning both with the +default regexp matching and when `--traditional' or `--posix' are used. +In all cases `gawk' remains POSIX-compliant. ---------- Footnotes ---------- (1) And Life was good. (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." +(or RRI). A number of GNU tools have already 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) @@ -27228,7 +27349,7 @@ Info file, in approximate chronological order: * Richard Stallman helped finish the implementation and the initial draft of this Info file. He is also the founder of the FSF and - the GNU project. + the GNU Project. * John Woods contributed parts of the code (mostly fixes) in the initial version of `gawk'. @@ -27314,22 +27435,22 @@ Info file, in approximate chronological order: * John Haque made the following contributions: - The modifications to convert `gawk' into a byte-code - interpreter, including the debugger. + interpreter, including the debugger - - The addition of true arrays of arrays. + - The addition of true arrays of arrays - The additional modifications for support of - arbitrary-precision arithmetic. + arbitrary-precision arithmetic - - The initial text of *note Arbitrary Precision Arithmetic::. + - The initial text of *note Arbitrary Precision Arithmetic:: - The work to merge the three versions of `gawk' into one, for - the 4.1 release. + the 4.1 release - - Improved array internals for arrays indexed by integers. + - Improved array internals for arrays indexed by integers - - The improved array sorting features were driven by John - together with Pat Rankin. + - The improved array sorting features were also driven by John, + together with Pat Rankin * Panos Papadopoulos contributed the original text for *note Include Files::. @@ -27358,11 +27479,11 @@ A.10 Summary ============ * The `awk' language has evolved over time. The first release was - with V7 Unix circa 1978. In 1987, for System V Release 3.1, major - additions, including user-defined functions, were made to the - language. Additional changes were made for System V Release 4, in - 1989. Since then, further minor changes happen under the auspices - of the POSIX standard. + with V7 Unix, circa 1978. In 1987, for System V Release 3.1, + major additions, including user-defined functions, were made to + the language. Additional changes were made for System V Release + 4, in 1989. Since then, further minor changes have happened under + the auspices of the POSIX standard. * Brian Kernighan's `awk' provides a small number of extensions that are implemented in common with other versions of `awk'. @@ -27375,7 +27496,7 @@ A.10 Summary been confusing over the years. Today, `gawk' implements Rational Range Interpretation, where ranges of the form `[a-z]' match _only_ the characters numerically between `a' through `z' in the - machine's native character set. Usually this is ASCII but it can + machine's native character set. Usually this is ASCII, but it can be EBCDIC on IBM S/390 systems. * Many people have contributed to `gawk' development over the years. @@ -27453,7 +27574,7 @@ B.1.2 Extracting the Distribution `gawk' is distributed as several `tar' files compressed with different 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'. +the GNU Gzip program (`gzip'). Once you have the distribution (e.g., `gawk-4.1.2.tar.gz'), use `gzip' to expand the file and then use `tar' to extract it. You can @@ -27493,10 +27614,10 @@ files, subdirectories, and files related to the configuration process to different non-Unix operating systems: Various `.c', `.y', and `.h' files - The actual `gawk' source code. + These files contain the actual `gawk' source code. `ABOUT-NLS' - Information about GNU `gettext' and translations. + A file containing information about GNU `gettext' and translations. `AUTHORS' A file with some information about the authorship of `gawk'. It @@ -27528,7 +27649,7 @@ Various `.c', `.y', and `.h' files The GNU General Public License. `POSIX.STD' - A description of behaviors in the POSIX standard for `awk' which + A description of behaviors in the POSIX standard for `awk' that are left undefined, or where `gawk' may not comply fully, as well as a list of things that the POSIX standard should describe but does not. @@ -27792,14 +27913,16 @@ command line when compiling `gawk' from scratch, including: do nothing. Similarly, setting the `LINT' variable (*note User-modified::) has no effect on the running `awk' program. - When used with GCC's automatic dead-code-elimination, this option - cuts almost 23K bytes off the size of the `gawk' executable on - GNU/Linux x86_64 systems. Results on other systems and with other - compilers are likely to vary. Using this option may bring you - some slight performance improvement. + When used with the GNU Compiler Collection's (GCC's) automatic + dead-code-elimination, this option cuts almost 23K bytes off the + size of the `gawk' executable on GNU/Linux x86_64 systems. + Results on other systems and with other compilers are likely to + vary. Using this option may bring you some slight performance + improvement. - Using this option will cause some of the tests in the test suite - to fail. This option may be removed at a later date. + CAUTION: Using this option will cause some of the tests in + the test suite to fail. This option may be removed at a + later date. `--disable-nls' Disable all message-translation facilities. This is usually not @@ -27883,10 +28006,10 @@ B.3.1 Installation on PC Operating Systems This minor node covers installation and usage of `gawk' on Intel architecture machines running MS-DOS, any version of MS-Windows, or OS/2. In this minor node, the term "Windows32" refers to any of -Microsoft Windows-95/98/ME/NT/2000/XP/Vista/7/8. +Microsoft Windows 95/98/ME/NT/2000/XP/Vista/7/8. The limitations of MS-DOS (and MS-DOS shells under the other -operating systems) has meant that various "DOS extenders" are often +operating systems) have meant that various "DOS extenders" are often used with programs such as `gawk'. The varying capabilities of Microsoft Windows 3.1 and Windows32 can add to the confusion. For an overview of the considerations, refer to `README_d/README.pc' in the @@ -28081,7 +28204,7 @@ The DJGPP collection of tools includes an MS-DOS port of Bash, and several shells are available for OS/2, including `ksh'. Under MS-Windows, OS/2 and MS-DOS, `gawk' (and many other text -programs) silently translate end-of-line `\r\n' to `\n' on input and +programs) silently translates end-of-line `\r\n' to `\n' on input and `\n' to `\r\n' on output. A special `BINMODE' variable (c.e.) allows control over these translations and is interpreted as follows: @@ -28103,7 +28226,7 @@ The modes for standard input and standard output are set one time only program). Setting `BINMODE' for standard input or standard output is accomplished by using an appropriate `-v BINMODE=N' option on the command line. `BINMODE' is set at the time a file or pipe is opened -and cannot be changed mid-stream. +and cannot be changed midstream. The name `BINMODE' was chosen to match `mawk' (*note Other Versions::). `mawk' and `gawk' handle `BINMODE' similarly; however, @@ -28147,10 +28270,9 @@ 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 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: +environment provides an excellent simulation of GNU/Linux, using Bash, +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.2.tar.gz cd gawk-4.1.2 @@ -28168,7 +28290,7 @@ B.3.1.6 Using `gawk' In The MSYS Environment ............................................ In the MSYS environment under MS-Windows, `gawk' automatically uses -binary mode for reading and writing files. Thus there is no need to +binary mode for reading and writing files. Thus, there is no need to use the `BINMODE' variable. This can cause problems with other Unix-like components that have @@ -28223,9 +28345,9 @@ available from `https://github.com/endlesssoftware/mmk'. target parameter may need to be exact. `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) +Compaq C V6.4, and under 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) *Note VMS GNV::, for information on building `gawk' as a PCSI kit that is compatible with the GNV product. @@ -28268,7 +28390,7 @@ than 32 bits. /name=(as_is,short) - Compile time macros need to be defined before the first VMS-supplied + Compile-time macros need to be defined before the first VMS-supplied header file is included, as follows: #if (__CRTL_VER >= 70200000) && !defined (__VAX) @@ -28312,14 +28434,14 @@ directory tree, the program will be known as `GNV$GNU:[vms_help]gawk.hlp'. The PCSI kit also installs a `GNV$GNU:[vms_bin]gawk_verb.cld' file -which can be used to add `gawk' and `awk' as DCL commands. +that can be used to add `gawk' and `awk' as DCL commands. For just the current process you can use: $ set command gnv$gnu:[vms_bin]gawk_verb.cld Or the system manager can use `GNV$GNU:[vms_bin]gawk_verb.cld' to -add the `gawk' and `awk' to the system wide `DCLTABLES'. +add the `gawk' and `awk' to the system-wide `DCLTABLES'. The DCL syntax is documented in the `gawk.hlp' file. @@ -28379,14 +28501,14 @@ process) are present, there is no ambiguity and `--' can be omitted. status value when the program exits. The VMS severity bits will be set based on the `exit' value. A -failure is indicated by 1 and VMS sets the `ERROR' status. A fatal -error is indicated by 2 and VMS sets the `FATAL' status. All other +failure is indicated by 1, and VMS sets the `ERROR' status. A fatal +error is indicated by 2, and VMS sets the `FATAL' status. All other values will have the `SUCCESS' status. The exit value is encoded to comply with VMS coding standards and will have the `C_FACILITY_NO' of `0x350000' with the constant `0xA000' added to the number shifted over by 3 bits to make room for the severity codes. - To extract the actual `gawk' exit code from the VMS status use: + To extract the actual `gawk' exit code from the VMS status, use: unix_status = (vms_status .and. &x7f8) / 8 @@ -28402,7 +28524,7 @@ Function::. VMS reports time values in GMT unless one of the `SYS$TIMEZONE_RULE' or `TZ' logical names is set. Older versions of VMS, such as VAX/VMS -7.3 do not set these logical names. +7.3, do not set these logical names. The default search path, when looking for `awk' program files specified by the `-f' option, is `"SYS$DISK:[],AWK_LIBRARY:"'. The @@ -28419,7 +28541,7 @@ B.3.2.5 The VMS GNV Project The VMS GNV package provides a build environment similar to POSIX with ports of a collection of open source tools. The `gawk' found in the GNV -base kit is an older port. Currently the GNV project is being +base kit is an older port. Currently, the GNV project is being reorganized to supply individual PCSI packages for each component. See `https://sourceforge.net/p/gnv/wiki/InstallingGNVPackages/'. @@ -28453,7 +28575,7 @@ B.4 Reporting Problems and Bugs Douglas Adams, `The Hitchhiker's Guide to the Galaxy' If you have problems with `gawk' or think that you have found a bug, -report it to the developers; we cannot promise to do anything but we +report it to the developers; we cannot promise to do anything, but we might well want to fix it. Before reporting a bug, make sure you have really found a genuine @@ -28464,7 +28586,7 @@ documentation! Before reporting a bug or trying to fix it yourself, try to isolate it to the smallest possible `awk' program and input data file that -reproduces the problem. Then send us the program and data file, some +reproduce the problem. Then send us the program and data file, some idea of what kind of Unix system you're using, the compiler you used to compile `gawk', and the exact results `gawk' gave you. Also say what you expected to occur; this helps us decide whether the problem is @@ -28476,7 +28598,7 @@ You can get this information with the command `gawk --version'. Once you have a precise problem description, send email to <bug-gawk@gnu.org>. - The `gawk' maintainers subscribe to this address and thus they will + The `gawk' maintainers subscribe to this address, and thus they will receive your bug report. Although you can send mail to the maintainers directly, the bug reporting address is preferred because the email list is archived at the GNU Project. _All email must be in English. This is @@ -28497,8 +28619,8 @@ the only language understood in common by all the maintainers._ forward bug reports "upstream" to the GNU mailing list, many don't, so there is a good chance that the `gawk' maintainers won't even see the bug report! Second, mail to the GNU list is - archived, and having everything at the GNU project keeps things - self-contained and not dependant on other organizations. + archived, and having everything at the GNU Project keeps things + self-contained and not dependent on other organizations. Non-bug suggestions are always welcome as well. If you have questions about things that are unclear in the documentation or are @@ -28507,18 +28629,19 @@ if we can. If you find bugs in one of the non-Unix ports of `gawk', send an email to the bug list, with a copy to the person who maintains that -port. They are named in the following list, as well as in the `README' -file in the `gawk' distribution. Information in the `README' file -should be considered authoritative if it conflicts with this Info file. +port. The maintainers are named in the following list, as well as in +the `README' file in the `gawk' distribution. Information in the +`README' file should be considered authoritative if it conflicts with +this Info file. The people maintaining the various `gawk' ports are: -Unix and POSIX systems Arnold Robbins, <arnold@skeeve.com>. -MS-DOS with DJGPP Scott Deifik, <scottd.mail@sbcglobal.net>. -MS-Windows with MinGW Eli Zaretskii, <eliz@gnu.org>. -OS/2 Andreas Buening, <andreas.buening@nexgo.de>. -VMS John Malmberg, <wb8tyw@qsl.net>. -z/OS (OS/390) Dave Pitts, <dpitts@cozx.com>. +Unix and POSIX systems Arnold Robbins, <arnold@skeeve.com> +MS-DOS with DJGPP Scott Deifik, <scottd.mail@sbcglobal.net> +MS-Windows with MinGW Eli Zaretskii, <eliz@gnu.org> +OS/2 Andreas Buening, <andreas.buening@nexgo.de> +VMS John Malmberg, <wb8tyw@qsl.net> +z/OS (OS/390) Dave Pitts, <dpitts@cozx.com> If your bug is also reproducible under Unix, send a copy of your report to the <bug-gawk@gnu.org> email list as well. @@ -28529,7 +28652,7 @@ File: gawk.info, Node: Other Versions, Next: Installation summary, Prev: Bugs B.5 Other Freely Available `awk' Implementations ================================================ - It's kind of fun to put comments like this in your awk code. + It's kind of fun to put comments like this in your awk code: `// Do C++ comments work? answer: yes! of course' -- Michael Brennan @@ -28552,7 +28675,7 @@ Unix `awk' Zip file `http://www.cs.princeton.edu/~bwk/btl.mirror/awk.zip' - You can also retrieve it from Git Hub: + You can also retrieve it from GitHub: git clone git://github.com/onetrueawk/awk bwkawk @@ -28594,7 +28717,7 @@ Unix `awk' `awka' Written by Andrew Sumner, `awka' translates `awk' programs into C, compiles them, and links them with a library of functions that - provides the core `awk' functionality. It also has a number of + provide the core `awk' functionality. It also has a number of extensions. The `awk' translator is released under the GPL, and the library is @@ -28608,14 +28731,14 @@ Unix `awk' `pawk' Nelson H.F. Beebe at the University of Utah has modified BWK `awk' to provide timing and profiling information. It is different from - `gawk' with the `--profile' option (*note Profiling::), in that it + `gawk' with the `--profile' option (*note Profiling::) in that it uses CPU-based profiling, not line-count profiling. You may find it at either `ftp://ftp.math.utah.edu/pub/pawk/pawk-20030606.tar.gz' or `http://www.math.utah.edu/pub/pawk/pawk-20030606.tar.gz'. -Busybox Awk - Busybox is a GPL-licensed program providing small versions of many +BusyBox `awk' + BusyBox is a GPL-licensed program providing small versions of many applications within a single executable. It is aimed at embedded systems. It includes a full implementation of POSIX `awk'. When building it, be careful not to do `make install' as it will @@ -28625,7 +28748,7 @@ Busybox Awk The OpenSolaris POSIX `awk' The versions of `awk' in `/usr/xpg4/bin' and `/usr/xpg6/bin' on - Solaris are more-or-less POSIX-compliant. They are based on the + Solaris are more or less POSIX-compliant. They are based on the `awk' from Mortice Kern Systems for PCs. We were able to make this code compile and work under GNU/Linux with 1-2 hours of work. Making it more generally portable (using GNU Autoconf and/or @@ -28657,7 +28780,7 @@ Libmawk information. (This is not related to Nelson Beebe's modified version of BWK `awk', described earlier.) -QSE Awk +QSE `awk' This is an embeddable `awk' interpreter. For more information, see `http://code.google.com/p/qse/' and `http://awk.info/?tools/qse'. @@ -28675,7 +28798,7 @@ Other versions See also the "Versions and implementations" section of the Wikipedia article (http://en.wikipedia.org/wiki/Awk_language#Versions_and_implementations) - for information on additional versions. + on `awk' for information on additional versions. @@ -28684,7 +28807,7 @@ File: gawk.info, Node: Installation summary, Prev: Other Versions, Up: Instal B.6 Summary =========== - * The `gawk' distribution is available from GNU project's main + * The `gawk' distribution is available from the GNU Project's main distribution site, `ftp.gnu.org'. The canonical build recipe is: wget http://ftp.gnu.org/gnu/gawk/gawk-4.1.2.tar.gz @@ -28693,17 +28816,17 @@ B.6 Summary ./configure && make && make check * `gawk' may be built on non-POSIX systems as well. The currently - supported systems are MS-Windows using DJGPP, MSYS, MinGW and + supported systems are MS-Windows using DJGPP, MSYS, MinGW, and Cygwin, OS/2 using EMX, and both Vax/VMS and OpenVMS. Instructions for each system are included in this major node. * Bug reports should be sent via email to <bug-gawk@gnu.org>. Bug - reports should be in English, and should include the version of + reports should be in English and should include the version of `gawk', how it was compiled, and a short program and data file - which demonstrate the problem. + that demonstrate the problem. * There are a number of other freely available `awk' - implementations. Many are POSIX compliant; others are less so. + implementations. Many are POSIX-compliant; others are less so. @@ -31755,7 +31878,7 @@ Index * --disable-lint configuration option: Additional Configuration Options. (line 15) * --disable-nls configuration option: Additional Configuration Options. - (line 30) + (line 32) * --dump-variables option: Options. (line 93) * --dump-variables option, using for library functions: Library Names. (line 45) @@ -31793,7 +31916,7 @@ Index * --use-lc-numeric option: Options. (line 220) * --version option: Options. (line 300) * --with-whiny-user-strftime configuration option: Additional Configuration Options. - (line 35) + (line 37) * -b option: Options. (line 68) * -C option: Options. (line 88) * -c option: Options. (line 81) @@ -31829,7 +31952,7 @@ Index * -W option: Options. (line 46) * . (period), regexp operator: Regexp Operators. (line 44) * .gmo files: Explaining gettext. (line 42) -* .gmo files, specifying directory of <1>: Programmer i18n. (line 47) +* .gmo files, specifying directory of <1>: Programmer i18n. (line 48) * .gmo files, specifying directory of: Explaining gettext. (line 54) * .mo files, converting from .po: I18N Example. (line 64) * .po files <1>: Translator i18n. (line 6) @@ -32211,7 +32334,7 @@ Index * 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 69) +* 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) @@ -32228,14 +32351,14 @@ Index * BEGIN pattern, TEXTDOMAIN variable and: Programmer i18n. (line 60) * BEGINFILE pattern: BEGINFILE/ENDFILE. (line 6) * BEGINFILE pattern, Boolean patterns and: Expression Patterns. - (line 69) -* beginfile() user-defined function: Filetrans Function. (line 61) + (line 70) +* beginfile() user-defined function: Filetrans Function. (line 62) * Bentley, Jon: Glossary. (line 207) * Benzinger, Michael: Contributors. (line 97) * Berry, Karl <1>: Ranges and Locales. (line 74) * Berry, Karl: Acknowledgments. (line 33) * binary input/output: User-modified. (line 15) -* bindtextdomain <1>: Programmer i18n. (line 47) +* bindtextdomain <1>: Programmer i18n. (line 48) * bindtextdomain: I18N Functions. (line 12) * bindtextdomain() function (C library): Explaining gettext. (line 50) * bindtextdomain() function (gawk), portability and: I18N Portability. @@ -32254,7 +32377,7 @@ Index * 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 38) +* 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 142) @@ -32314,7 +32437,7 @@ Index * Brown, Martin: Contributors. (line 82) * BSD-based operating systems: Glossary. (line 753) * bt debugger command (alias for backtrace): Execution Stack. (line 13) -* Buening, Andreas <1>: Bugs. (line 70) +* Buening, Andreas <1>: Bugs. (line 71) * Buening, Andreas <2>: Contributors. (line 92) * Buening, Andreas: Acknowledgments. (line 60) * buffering, input/output <1>: Two-way I/O. (line 52) @@ -32327,7 +32450,7 @@ Index * bug-gawk@gnu.org bug reporting address: Bugs. (line 30) * built-in functions: Functions. (line 6) * built-in functions, evaluation order: Calling Built-in. (line 30) -* Busybox Awk: Other Versions. (line 92) +* BusyBox Awk: Other Versions. (line 92) * c.e., See common extensions: Conventions. (line 51) * call by reference: Pass By Value/Reference. (line 44) @@ -32459,9 +32582,9 @@ Index * configuration option, --disable-lint: Additional Configuration Options. (line 15) * configuration option, --disable-nls: Additional Configuration Options. - (line 30) + (line 32) * configuration option, --with-whiny-user-strftime: Additional Configuration Options. - (line 35) + (line 37) * configuration options, gawk: Additional Configuration Options. (line 6) * constant regexps: Regexp Usage. (line 57) @@ -32569,11 +32692,11 @@ Index * Davies, Stephen <1>: Contributors. (line 74) * Davies, Stephen: Acknowledgments. (line 60) * Day, Robert P.J.: Acknowledgments. (line 78) -* dcgettext <1>: Programmer i18n. (line 19) +* dcgettext <1>: Programmer i18n. (line 20) * dcgettext: I18N Functions. (line 22) * dcgettext() function (gawk), portability and: I18N Portability. (line 33) -* dcngettext <1>: Programmer i18n. (line 36) +* dcngettext <1>: Programmer i18n. (line 37) * dcngettext: I18N Functions. (line 28) * dcngettext() function (gawk), portability and: I18N Portability. (line 33) @@ -32660,7 +32783,7 @@ Index * debugger commands, t (tbreak): Breakpoint Control. (line 90) * debugger commands, tbreak: Breakpoint Control. (line 90) * debugger commands, trace: Miscellaneous Debugger Commands. - (line 108) + (line 107) * debugger commands, u (until): Debugger Execution Control. (line 83) * debugger commands, undisplay: Viewing And Changing Data. @@ -32676,18 +32799,18 @@ Index (line 67) * debugger commands, where (backtrace): Execution Stack. (line 13) * debugger default list amount: Debugger Info. (line 69) -* debugger history file: Debugger Info. (line 80) +* debugger history file: Debugger Info. (line 81) * debugger history size: Debugger Info. (line 65) * debugger options: Debugger Info. (line 57) -* debugger prompt: Debugger Info. (line 77) +* debugger prompt: Debugger Info. (line 78) * debugger, how to start: Debugger Invocation. (line 6) -* debugger, read commands from a file: Debugger Info. (line 96) +* debugger, read commands from a file: Debugger Info. (line 97) * debugging awk programs: Debugger. (line 6) * debugging gawk, bug reports: Bugs. (line 9) * decimal point character, locale specific: Options. (line 270) * decrement operators: Increment Ops. (line 35) * default keyword: Switch Statement. (line 6) -* Deifik, Scott <1>: Bugs. (line 70) +* Deifik, Scott <1>: Bugs. (line 71) * Deifik, Scott <2>: Contributors. (line 53) * Deifik, Scott: Acknowledgments. (line 60) * delete ARRAY: Delete. (line 39) @@ -32746,7 +32869,7 @@ Index (line 6) * differences in awk and gawk, line continuations: Conditional Exp. (line 34) -* differences in awk and gawk, LINT variable: User-modified. (line 88) +* differences in awk and gawk, LINT variable: User-modified. (line 87) * differences in awk and gawk, match() function: String Functions. (line 263) * differences in awk and gawk, print/printf statements: Format Modifiers. @@ -32773,7 +32896,7 @@ Index (line 77) * differences in awk and gawk, SYMTAB variable: Auto-set. (line 296) * differences in awk and gawk, TEXTDOMAIN variable: User-modified. - (line 152) + (line 151) * differences in awk and gawk, trunc-mod operation: Arithmetic Ops. (line 66) * directories, command-line: Command-line directories. @@ -32841,7 +32964,7 @@ Index * END pattern, and profiling: Profiling. (line 62) * END pattern, assert() user-defined function and: Assert Function. (line 75) -* END pattern, Boolean patterns and: Expression Patterns. (line 69) +* 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 44) @@ -32850,10 +32973,10 @@ 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 69) -* endfile() user-defined function: Filetrans Function. (line 61) -* endgrent() function (C library): Group Functions. (line 211) -* endgrent() user-defined function: Group Functions. (line 214) +* ENDFILE pattern, Boolean patterns and: Expression Patterns. (line 70) +* endfile() user-defined function: Filetrans Function. (line 62) +* endgrent() function (C library): Group Functions. (line 212) +* endgrent() user-defined function: Group Functions. (line 215) * endpwent() function (C library): Passwd Functions. (line 207) * endpwent() user-defined function: Passwd Functions. (line 210) * English, Steve: Advanced Features. (line 6) @@ -32909,7 +33032,7 @@ Index (line 99) * exp: Numeric Functions. (line 33) * expand utility: Very Simple. (line 73) -* Expat XML parser library: gawkextlib. (line 33) +* Expat XML parser library: gawkextlib. (line 35) * exponent: Numeric Functions. (line 33) * expressions: Expressions. (line 6) * expressions, as patterns: Expression Patterns. (line 6) @@ -33014,7 +33137,7 @@ Index * FILENAME variable, getline, setting with: Getline Notes. (line 19) * filenames, assignments as: Ignoring Assigns. (line 6) * files, .gmo: Explaining gettext. (line 42) -* files, .gmo, specifying directory of <1>: Programmer i18n. (line 47) +* files, .gmo, specifying directory of <1>: Programmer i18n. (line 48) * files, .gmo, specifying directory of: Explaining gettext. (line 54) * files, .mo, converting from .po: I18N Example. (line 64) * files, .po <1>: Translator i18n. (line 6) @@ -33041,7 +33164,7 @@ Index * files, message object, converting from portable object files: I18N Example. (line 64) * files, message object, specifying directory of <1>: Programmer i18n. - (line 47) + (line 48) * files, message object, specifying directory of: Explaining gettext. (line 54) * files, multiple passes over: Other Arguments. (line 56) @@ -33236,7 +33359,7 @@ Index (line 6) * gawk, interval expressions and: Regexp Operators. (line 139) * gawk, line continuation in: Conditional Exp. (line 34) -* gawk, LINT variable in: User-modified. (line 88) +* gawk, LINT variable in: User-modified. (line 87) * gawk, list of contributors to: Contributors. (line 6) * gawk, MS-DOS version of: PC Using. (line 10) * gawk, MS-Windows version of: PC Using. (line 10) @@ -33262,7 +33385,7 @@ Index * gawk, splitting fields and: Constant Size. (line 87) * gawk, string-translation functions: I18N Functions. (line 6) * gawk, SYMTAB array in: Auto-set. (line 296) -* gawk, TEXTDOMAIN variable in: User-modified. (line 152) +* gawk, TEXTDOMAIN variable in: User-modified. (line 151) * gawk, timestamps: Time Functions. (line 6) * gawk, uses for: Preface. (line 34) * gawk, versions of, information about, printing: Options. (line 300) @@ -33287,12 +33410,12 @@ Index * getaddrinfo() function (C library): TCP/IP Networking. (line 38) * getgrent() function (C library): Group Functions. (line 6) * getgrent() user-defined function: Group Functions. (line 6) -* getgrgid() function (C library): Group Functions. (line 182) -* getgrgid() user-defined function: Group Functions. (line 185) -* getgrnam() function (C library): Group Functions. (line 171) -* getgrnam() user-defined function: Group Functions. (line 176) -* getgruser() function (C library): Group Functions. (line 191) -* getgruser() function, user-defined: Group Functions. (line 194) +* getgrgid() function (C library): Group Functions. (line 183) +* getgrgid() user-defined function: Group Functions. (line 186) +* getgrnam() function (C library): Group Functions. (line 172) +* getgrnam() user-defined function: Group Functions. (line 177) +* getgruser() function (C library): Group Functions. (line 192) +* getgruser() function, user-defined: Group Functions. (line 195) * getline command: Reading Files. (line 20) * getline command, _gr_init() user-defined function: Group Functions. (line 83) @@ -33329,7 +33452,7 @@ Index * git utility <2>: Accessing The Source. (line 10) * git utility <3>: Other Versions. (line 29) -* git utility: gawkextlib. (line 27) +* git utility: gawkextlib. (line 29) * Git, use of for gawk source code: Derived Files. (line 6) * GNITS mailing list: Acknowledgments. (line 52) * GNU awk, See gawk: Preface. (line 51) @@ -33385,7 +33508,7 @@ Index * hyphen (-), in bracket expressions: Bracket Expressions. (line 17) * i debugger command (alias for info): Debugger Info. (line 13) * id utility: Id Program. (line 6) -* id.awk program: Id Program. (line 30) +* id.awk program: Id Program. (line 31) * if statement: If Statement. (line 6) * if statement, actions, changing: Ranges. (line 25) * if statement, use of regexps in: Regexp Usage. (line 19) @@ -33453,7 +33576,7 @@ Index * insomnia, cure for: Alarm Program. (line 6) * installation, VMS: VMS Installation. (line 6) * installing gawk: Installation. (line 6) -* instruction tracing, in debugger: Debugger Info. (line 89) +* instruction tracing, in debugger: Debugger Info. (line 90) * int: Numeric Functions. (line 38) * INT signal (MS-Windows): Profiling. (line 213) * integer array indices: Numeric Array Subscripts. @@ -33466,7 +33589,7 @@ Index * internationalization: I18N Functions. (line 6) * internationalization, localization <1>: Internationalization. (line 13) -* internationalization, localization: User-modified. (line 152) +* internationalization, localization: User-modified. (line 151) * internationalization, localization, character classes: Bracket Expressions. (line 101) * internationalization, localization, gawk and: Internationalization. @@ -33474,7 +33597,7 @@ Index * internationalization, localization, locale categories: Explaining gettext. (line 81) * internationalization, localization, marked strings: Programmer i18n. - (line 14) + (line 13) * internationalization, localization, portability and: I18N Portability. (line 6) * internationalizing a program: Explaining gettext. (line 6) @@ -33576,7 +33699,7 @@ Index * lines, duplicate, removing: History Sorting. (line 6) * lines, matching ranges of: Ranges. (line 6) * lines, skipping between markers: Ranges. (line 43) -* lint checking: User-modified. (line 88) +* lint checking: User-modified. (line 87) * lint checking, array elements: Delete. (line 34) * lint checking, array subscripts: Uninitialized Subscripts. (line 43) @@ -33586,7 +33709,7 @@ Index (line 339) * lint checking, undefined functions: Pass By Value/Reference. (line 85) -* LINT variable: User-modified. (line 88) +* LINT variable: User-modified. (line 87) * Linux <1>: Glossary. (line 753) * Linux <2>: I18N Example. (line 55) * Linux: Manual History. (line 28) @@ -33627,7 +33750,7 @@ Index * 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 70) +* Malmberg, John <1>: Bugs. (line 71) * Malmberg, John: Acknowledgments. (line 60) * Malmberg, John E.: Contributors. (line 137) * mark parity: Ordinal Functions. (line 45) @@ -33655,7 +33778,7 @@ Index * message object files, converting from portable object files: I18N Example. (line 64) * message object files, specifying directory of <1>: Programmer i18n. - (line 47) + (line 48) * message object files, specifying directory of: Explaining gettext. (line 54) * messages from extensions: Printing Messages. (line 6) @@ -33758,11 +33881,11 @@ Index * obsolete features: Obsolete. (line 6) * octal numbers: Nondecimal-numbers. (line 6) * octal values, enabling interpretation of: Options. (line 211) -* OFMT variable <1>: User-modified. (line 105) +* OFMT variable <1>: User-modified. (line 104) * OFMT variable <2>: Strings And Numbers. (line 57) * OFMT variable: OFMT. (line 15) * OFMT variable, POSIX awk and: OFMT. (line 27) -* OFS variable <1>: User-modified. (line 114) +* OFS variable <1>: User-modified. (line 113) * OFS variable <2>: Output Separators. (line 6) * OFS variable: Changing Fields. (line 64) * OpenBSD: Glossary. (line 753) @@ -33815,7 +33938,7 @@ Index (line 12) * ord() user-defined function: Ordinal Functions. (line 16) * order of evaluation, concatenation: Concatenation. (line 41) -* ORS variable <1>: User-modified. (line 119) +* ORS variable <1>: User-modified. (line 118) * ORS variable: Output Separators. (line 21) * output field separator, See OFS variable: Changing Fields. (line 64) * output record separator, See ORS variable: Output Separators. @@ -33866,7 +33989,7 @@ Index (line 6) * pipe, input: Getline/Pipe. (line 9) * pipe, output: Redirection. (line 57) -* Pitts, Dave <1>: Bugs. (line 70) +* Pitts, Dave <1>: Bugs. (line 71) * Pitts, Dave: Acknowledgments. (line 60) * Plauger, P.J.: Library Functions. (line 12) * plug-in: Extension Intro. (line 6) @@ -33955,7 +34078,7 @@ Index * POSIX, gawk extensions not included in: POSIX/GNU. (line 6) * POSIX, programs, implementing in awk: Clones. (line 6) * POSIXLY_CORRECT environment variable: Options. (line 339) -* PREC variable: User-modified. (line 124) +* PREC variable: User-modified. (line 123) * precedence <1>: Precedence. (line 6) * precedence: Increment Ops. (line 60) * precedence, regexp operators: Regexp Operators. (line 156) @@ -33970,7 +34093,7 @@ Index * print statement, commas, omitting: Print Examples. (line 31) * print statement, I/O operators in: Precedence. (line 71) * print statement, line continuations and: Print Examples. (line 76) -* print statement, OFMT variable and: User-modified. (line 114) +* print statement, OFMT variable and: User-modified. (line 113) * print statement, See Also redirection, of output: Redirection. (line 17) * print statement, sprintf() function and: Round Function. (line 6) @@ -34044,7 +34167,7 @@ Index * pwcat program: Passwd Functions. (line 23) * q debugger command (alias for quit): Miscellaneous Debugger Commands. (line 99) -* QSE Awk: Other Versions. (line 135) +* QSE awk: Other Versions. (line 135) * Quanstrom, Erik: Alarm Program. (line 8) * question mark (?), ?: operator: Precedence. (line 92) * question mark (?), regexp operator <1>: GNU Regexp Operators. @@ -34085,7 +34208,7 @@ Index * 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 133) +* record separators <1>: User-modified. (line 132) * record separators: awk split records. (line 6) * record separators, changing: awk split records. (line 85) * record separators, regular expressions as: awk split records. @@ -34099,7 +34222,7 @@ Index * records, terminating: awk split records. (line 125) * records, treating files as: gawk split records. (line 93) * recursive functions: Definition Syntax. (line 88) -* redirect gawk output, in debugger: Debugger Info. (line 72) +* redirect gawk output, in debugger: Debugger Info. (line 73) * redirection of input: Getline/File. (line 6) * redirection of output: Redirection. (line 6) * reference counting, sorting arrays: Array Sorting Functions. @@ -34164,7 +34287,7 @@ Index (line 11) * revtwoway extension: Extension Sample Rev2way. (line 12) -* rewind() user-defined function: Rewind Function. (line 16) +* rewind() user-defined function: Rewind Function. (line 15) * right angle bracket (>), > operator <1>: Precedence. (line 65) * right angle bracket (>), > operator: Comparison Operators. (line 11) @@ -34180,7 +34303,7 @@ Index * RLENGTH variable: Auto-set. (line 279) * RLENGTH variable, match() function and: String Functions. (line 228) * Robbins, Arnold <1>: Future Extensions. (line 6) -* Robbins, Arnold <2>: Bugs. (line 70) +* Robbins, Arnold <2>: Bugs. (line 71) * Robbins, Arnold <3>: Contributors. (line 144) * Robbins, Arnold <4>: General Data Types. (line 6) * Robbins, Arnold <5>: Alarm Program. (line 6) @@ -34198,8 +34321,8 @@ Index * round to nearest integer: Numeric Functions. (line 38) * round() user-defined function: Round Function. (line 16) * rounding numbers: Round Function. (line 6) -* ROUNDMODE variable: User-modified. (line 128) -* RS variable <1>: User-modified. (line 133) +* ROUNDMODE variable: User-modified. (line 127) +* RS variable <1>: User-modified. (line 132) * RS variable: awk split records. (line 12) * RS variable, multiline records and: Multiple Line. (line 17) * rshift: Bitwise Functions. (line 53) @@ -34219,7 +34342,7 @@ Index * sample debugging session: Sample Debugging Session. (line 6) * sandbox mode: Options. (line 286) -* save debugger options: Debugger Info. (line 84) +* save debugger options: Debugger Info. (line 85) * scalar or array: Type Functions. (line 11) * scalar values: Basic Data Typing. (line 13) * scanning arrays: Scanning an Array. (line 6) @@ -34256,12 +34379,12 @@ Index * separators, field, FIELDWIDTHS variable and: User-modified. (line 37) * separators, field, FPAT variable and: User-modified. (line 43) * separators, field, POSIX and: Fields. (line 6) -* separators, for records <1>: User-modified. (line 133) +* separators, for records <1>: User-modified. (line 132) * separators, for records: awk split records. (line 6) * separators, for records, regular expressions as: awk split records. (line 125) * separators, for statements in actions: Action Overview. (line 19) -* separators, subscript: User-modified. (line 146) +* separators, subscript: User-modified. (line 145) * set breakpoint: Breakpoint Control. (line 11) * set debugger command: Viewing And Changing Data. (line 59) @@ -34325,7 +34448,7 @@ Index * sidebar, Recipe for a Programming Language: History. (line 6) * sidebar, RS = "\0" Is Not Portable: gawk split records. (line 63) * sidebar, So Why Does gawk Have BEGINFILE and ENDFILE?: Filetrans Function. - (line 82) + (line 83) * sidebar, Syntactic Ambiguities Between /= and Regular Expressions: Assignment Ops. (line 146) * sidebar, Understanding #!: Executable Scripts. (line 31) @@ -34371,7 +34494,7 @@ Index (line 94) * source code, awka: Other Versions. (line 68) * source code, Brian Kernighan's awk: Other Versions. (line 13) -* source code, Busybox Awk: Other Versions. (line 92) +* source code, BusyBox Awk: Other Versions. (line 92) * source code, gawk: Gawk Distribution. (line 6) * source code, Illumos awk: Other Versions. (line 109) * source code, jawk: Other Versions. (line 117) @@ -34380,7 +34503,7 @@ Index * source code, mixing: Options. (line 117) * source code, pawk: Other Versions. (line 82) * source code, pawk (Python version): Other Versions. (line 129) -* source code, QSE Awk: Other Versions. (line 135) +* source code, QSE awk: Other Versions. (line 135) * source code, QuikTrim Awk: Other Versions. (line 139) * source code, Solaris awk: Other Versions. (line 100) * source files, search path for: Programs Exercises. (line 70) @@ -34393,7 +34516,7 @@ Index * split.awk program: Split Program. (line 30) * sprintf <1>: String Functions. (line 384) * sprintf: OFMT. (line 15) -* sprintf() function, OFMT variable and: User-modified. (line 114) +* sprintf() function, OFMT variable and: User-modified. (line 113) * sprintf() function, print/printf statements and: Round Function. (line 6) * sqrt: Numeric Functions. (line 92) @@ -34441,7 +34564,7 @@ Index * strings, converting, numbers to: User-modified. (line 30) * strings, empty, See null strings: awk split records. (line 115) * strings, extracting: String Extraction. (line 6) -* strings, for localization: Programmer i18n. (line 14) +* strings, for localization: Programmer i18n. (line 13) * strings, length limitations: Scalar Constants. (line 20) * strings, merging arrays into: Join Function. (line 6) * strings, null: Regexp Field Splitting. @@ -34455,7 +34578,7 @@ Index (line 43) * sub() function, arguments of: String Functions. (line 463) * sub() function, escape processing: Gory Details. (line 6) -* subscript separators: User-modified. (line 146) +* subscript separators: User-modified. (line 145) * subscripts in arrays, multidimensional: Multidimensional. (line 10) * subscripts in arrays, multidimensional, scanning: Multiscanning. (line 11) @@ -34463,7 +34586,7 @@ Index (line 6) * subscripts in arrays, uninitialized variables as: Uninitialized Subscripts. (line 6) -* SUBSEP variable: User-modified. (line 146) +* SUBSEP variable: User-modified. (line 145) * SUBSEP variable, and multidimensional arrays: Multidimensional. (line 16) * substitute in string: String Functions. (line 90) @@ -34501,8 +34624,8 @@ Index (line 6) * text, printing: Print. (line 22) * text, printing, unduplicated lines of: Uniq Program. (line 6) -* TEXTDOMAIN variable <1>: Programmer i18n. (line 9) -* TEXTDOMAIN variable: User-modified. (line 152) +* TEXTDOMAIN variable <1>: Programmer i18n. (line 8) +* TEXTDOMAIN variable: User-modified. (line 151) * TEXTDOMAIN variable, BEGIN pattern and: Programmer i18n. (line 60) * TEXTDOMAIN variable, portability and: I18N Portability. (line 20) * textdomain() function (C library): Explaining gettext. (line 28) @@ -34529,7 +34652,7 @@ Index * toupper: String Functions. (line 530) * tr utility: Translate Program. (line 6) * trace debugger command: Miscellaneous Debugger Commands. - (line 108) + (line 107) * traceback, display in debugger: Execution Stack. (line 13) * translate string: I18N Functions. (line 22) * translate.awk program: Translate Program. (line 55) @@ -34709,7 +34832,7 @@ Index * xor: Bitwise Functions. (line 56) * XOR bitwise operation: Bitwise Functions. (line 6) * Yawitz, Efraim: Contributors. (line 131) -* Zaretskii, Eli <1>: Bugs. (line 70) +* Zaretskii, Eli <1>: Bugs. (line 71) * Zaretskii, Eli <2>: Contributors. (line 55) * Zaretskii, Eli: Acknowledgments. (line 60) * zerofile.awk program: Empty Files. (line 21) @@ -34742,562 +34865,563 @@ Index Tag Table: Node: Top1204 -Node: Foreword342385 -Node: Foreword446829 -Node: Preface48360 -Ref: Preface-Footnote-151231 -Ref: Preface-Footnote-251338 -Ref: Preface-Footnote-351571 -Node: History51713 -Node: Names54064 -Ref: Names-Footnote-155157 -Node: This Manual55303 -Ref: This Manual-Footnote-161803 -Node: Conventions61903 -Node: Manual History64240 -Ref: Manual History-Footnote-167233 -Ref: Manual History-Footnote-267274 -Node: How To Contribute67348 -Node: Acknowledgments68477 -Node: Getting Started73294 -Node: Running gawk75733 -Node: One-shot76923 -Node: Read Terminal78187 -Node: Long80218 -Node: Executable Scripts81731 -Ref: Executable Scripts-Footnote-184520 -Node: Comments84623 -Node: Quoting87105 -Node: DOS Quoting92623 -Node: Sample Data Files93298 -Node: Very Simple95893 -Node: Two Rules100792 -Node: More Complex102678 -Node: Statements/Lines105540 -Ref: Statements/Lines-Footnote-1109995 -Node: Other Features110260 -Node: When111196 -Ref: When-Footnote-1112950 -Node: Intro Summary113015 -Node: Invoking Gawk113899 -Node: Command Line115413 -Node: Options116211 -Ref: Options-Footnote-1132006 -Ref: Options-Footnote-2132235 -Node: Other Arguments132260 -Node: Naming Standard Input135208 -Node: Environment Variables136301 -Node: AWKPATH Variable136859 -Ref: AWKPATH Variable-Footnote-1140266 -Ref: AWKPATH Variable-Footnote-2140311 -Node: AWKLIBPATH Variable140571 -Node: Other Environment Variables141827 -Node: Exit Status145345 -Node: Include Files146021 -Node: Loading Shared Libraries149610 -Node: Obsolete151037 -Node: Undocumented151729 -Node: Invoking Summary151996 -Node: Regexp153659 -Node: Regexp Usage155113 -Node: Escape Sequences157150 -Node: Regexp Operators163390 -Ref: Regexp Operators-Footnote-1170800 -Ref: Regexp Operators-Footnote-2170947 -Node: Bracket Expressions171045 -Ref: table-char-classes173060 -Node: Leftmost Longest176002 -Node: Computed Regexps177304 -Node: GNU Regexp Operators180733 -Node: Case-sensitivity184405 -Ref: Case-sensitivity-Footnote-1187290 -Ref: Case-sensitivity-Footnote-2187525 -Node: Regexp Summary187633 -Node: Reading Files189100 -Node: Records191262 -Node: awk split records191995 -Node: gawk split records196924 -Ref: gawk split records-Footnote-1201463 -Node: Fields201500 -Ref: Fields-Footnote-1204278 -Node: Nonconstant Fields204364 -Ref: Nonconstant Fields-Footnote-1206602 -Node: Changing Fields206805 -Node: Field Separators212736 -Node: Default Field Splitting215440 -Node: Regexp Field Splitting216557 -Node: Single Character Fields219907 -Node: Command Line Field Separator220966 -Node: Full Line Fields224183 -Ref: Full Line Fields-Footnote-1225704 -Ref: Full Line Fields-Footnote-2225750 -Node: Field Splitting Summary225851 -Node: Constant Size227925 -Node: Splitting By Content232508 -Ref: Splitting By Content-Footnote-1236473 -Node: Multiple Line236636 -Ref: Multiple Line-Footnote-1242517 -Node: Getline242696 -Node: Plain Getline245175 -Node: Getline/Variable247815 -Node: Getline/File248964 -Node: Getline/Variable/File250349 -Ref: Getline/Variable/File-Footnote-1251952 -Node: Getline/Pipe252039 -Node: Getline/Variable/Pipe254717 -Node: Getline/Coprocess255848 -Node: Getline/Variable/Coprocess257112 -Node: Getline Notes257851 -Node: Getline Summary260645 -Ref: table-getline-variants261057 -Node: Read Timeout261886 -Ref: Read Timeout-Footnote-1265789 -Node: Retrying Input265847 -Node: Command-line directories267042 -Node: Input Summary267949 -Node: Input Exercises271334 -Node: Printing272062 -Node: Print273839 -Node: Print Examples275296 -Node: Output Separators278075 -Node: OFMT280093 -Node: Printf281448 -Node: Basic Printf282233 -Node: Control Letters283805 -Node: Format Modifiers287790 -Node: Printf Examples293800 -Node: Redirection296286 -Node: Special FD303124 -Ref: Special FD-Footnote-1306290 -Node: Special Files306364 -Node: Other Inherited Files306981 -Node: Special Network307981 -Node: Special Caveats308843 -Node: Close Files And Pipes309792 -Ref: Close Files And Pipes-Footnote-1316983 -Ref: Close Files And Pipes-Footnote-2317131 -Node: Output Summary317281 -Node: Output Exercises318279 -Node: Expressions318959 -Node: Values320148 -Node: Constants320825 -Node: Scalar Constants321516 -Ref: Scalar Constants-Footnote-1322378 -Node: Nondecimal-numbers322628 -Node: Regexp Constants325638 -Node: Using Constant Regexps326164 -Node: Variables329327 -Node: Using Variables329984 -Node: Assignment Options331895 -Node: Conversion333770 -Node: Strings And Numbers334294 -Ref: Strings And Numbers-Footnote-1337359 -Node: Locale influences conversions337468 -Ref: table-locale-affects340214 -Node: All Operators340806 -Node: Arithmetic Ops341435 -Node: Concatenation343940 -Ref: Concatenation-Footnote-1346759 -Node: Assignment Ops346866 -Ref: table-assign-ops351845 -Node: Increment Ops353155 -Node: Truth Values and Conditions356586 -Node: Truth Values357669 -Node: Typing and Comparison358718 -Node: Variable Typing359534 -Node: Comparison Operators363201 -Ref: table-relational-ops363611 -Node: POSIX String Comparison367106 -Ref: POSIX String Comparison-Footnote-1368178 -Node: Boolean Ops368317 -Ref: Boolean Ops-Footnote-1372795 -Node: Conditional Exp372886 -Node: Function Calls374624 -Node: Precedence378504 -Node: Locales382164 -Node: Expressions Summary383796 -Node: Patterns and Actions386367 -Node: Pattern Overview387487 -Node: Regexp Patterns389166 -Node: Expression Patterns389709 -Node: Ranges393418 -Node: BEGIN/END396525 -Node: Using BEGIN/END397286 -Ref: Using BEGIN/END-Footnote-1400022 -Node: I/O And BEGIN/END400128 -Node: BEGINFILE/ENDFILE402443 -Node: Empty405340 -Node: Using Shell Variables405657 -Node: Action Overview407930 -Node: Statements410256 -Node: If Statement412104 -Node: While Statement413599 -Node: Do Statement415627 -Node: For Statement416775 -Node: Switch Statement419933 -Node: Break Statement422315 -Node: Continue Statement424356 -Node: Next Statement426183 -Node: Nextfile Statement428564 -Node: Exit Statement431192 -Node: Built-in Variables433603 -Node: User-modified434736 -Ref: User-modified-Footnote-1442439 -Node: Auto-set442501 -Ref: Auto-set-Footnote-1456734 -Ref: Auto-set-Footnote-2456939 -Node: ARGC and ARGV456995 -Node: Pattern Action Summary461213 -Node: Arrays463646 -Node: Array Basics464975 -Node: Array Intro465819 -Ref: figure-array-elements467753 -Ref: Array Intro-Footnote-1470373 -Node: Reference to Elements470501 -Node: Assigning Elements472963 -Node: Array Example473454 -Node: Scanning an Array475213 -Node: Controlling Scanning478233 -Ref: Controlling Scanning-Footnote-1483627 -Node: Numeric Array Subscripts483943 -Node: Uninitialized Subscripts486128 -Node: Delete487745 -Ref: Delete-Footnote-1490494 -Node: Multidimensional490551 -Node: Multiscanning493648 -Node: Arrays of Arrays495237 -Node: Arrays Summary499991 -Node: Functions502082 -Node: Built-in503121 -Node: Calling Built-in504199 -Node: Numeric Functions506194 -Ref: Numeric Functions-Footnote-1511012 -Ref: Numeric Functions-Footnote-2511369 -Ref: Numeric Functions-Footnote-3511417 -Node: String Functions511689 -Ref: String Functions-Footnote-1535190 -Ref: String Functions-Footnote-2535319 -Ref: String Functions-Footnote-3535567 -Node: Gory Details535654 -Ref: table-sub-escapes537435 -Ref: table-sub-proposed538950 -Ref: table-posix-sub540312 -Ref: table-gensub-escapes541849 -Ref: Gory Details-Footnote-1542682 -Node: I/O Functions542833 -Ref: I/O Functions-Footnote-1550069 -Node: Time Functions550216 -Ref: Time Functions-Footnote-1560725 -Ref: Time Functions-Footnote-2560793 -Ref: Time Functions-Footnote-3560951 -Ref: Time Functions-Footnote-4561062 -Ref: Time Functions-Footnote-5561174 -Ref: Time Functions-Footnote-6561401 -Node: Bitwise Functions561667 -Ref: table-bitwise-ops562229 -Ref: Bitwise Functions-Footnote-1566541 -Node: Type Functions566713 -Node: I18N Functions567864 -Node: User-defined569509 -Node: Definition Syntax570314 -Ref: Definition Syntax-Footnote-1575946 -Node: Function Example576017 -Ref: Function Example-Footnote-1578936 -Node: Function Caveats578958 -Node: Calling A Function579476 -Node: Variable Scope580434 -Node: Pass By Value/Reference583422 -Node: Return Statement586917 -Node: Dynamic Typing589898 -Node: Indirect Calls590827 -Ref: Indirect Calls-Footnote-1602129 -Node: Functions Summary602257 -Node: Library Functions604959 -Ref: Library Functions-Footnote-1608568 -Ref: Library Functions-Footnote-2608711 -Node: Library Names608882 -Ref: Library Names-Footnote-1612336 -Ref: Library Names-Footnote-2612559 -Node: General Functions612645 -Node: Strtonum Function613748 -Node: Assert Function616770 -Node: Round Function620094 -Node: Cliff Random Function621635 -Node: Ordinal Functions622651 -Ref: Ordinal Functions-Footnote-1625714 -Ref: Ordinal Functions-Footnote-2625966 -Node: Join Function626177 -Ref: Join Function-Footnote-1627946 -Node: Getlocaltime Function628146 -Node: Readfile Function631890 -Node: Shell Quoting633860 -Node: Data File Management635261 -Node: Filetrans Function635893 -Node: Rewind Function639949 -Node: File Checking641336 -Ref: File Checking-Footnote-1642668 -Node: Empty Files642869 -Node: Ignoring Assigns644848 -Node: Getopt Function646399 -Ref: Getopt Function-Footnote-1657861 -Node: Passwd Functions658061 -Ref: Passwd Functions-Footnote-1666898 -Node: Group Functions666986 -Ref: Group Functions-Footnote-1674880 -Node: Walking Arrays675093 -Node: Library Functions Summary676696 -Node: Library Exercises678097 -Node: Sample Programs679377 -Node: Running Examples680147 -Node: Clones680875 -Node: Cut Program682099 -Node: Egrep Program691818 -Ref: Egrep Program-Footnote-1699316 -Node: Id Program699426 -Node: Split Program703071 -Ref: Split Program-Footnote-1706519 -Node: Tee Program706647 -Node: Uniq Program709436 -Node: Wc Program716855 -Ref: Wc Program-Footnote-1721105 -Node: Miscellaneous Programs721199 -Node: Dupword Program722412 -Node: Alarm Program724443 -Node: Translate Program729247 -Ref: Translate Program-Footnote-1733812 -Node: Labels Program734082 -Ref: Labels Program-Footnote-1737433 -Node: Word Sorting737517 -Node: History Sorting741588 -Node: Extract Program743424 -Node: Simple Sed750949 -Node: Igawk Program754017 -Ref: Igawk Program-Footnote-1768341 -Ref: Igawk Program-Footnote-2768542 -Ref: Igawk Program-Footnote-3768664 -Node: Anagram Program768779 -Node: Signature Program771836 -Node: Programs Summary773083 -Node: Programs Exercises774276 -Ref: Programs Exercises-Footnote-1778407 -Node: Advanced Features778498 -Node: Nondecimal Data780446 -Node: Array Sorting782036 -Node: Controlling Array Traversal782733 -Ref: Controlling Array Traversal-Footnote-1791066 -Node: Array Sorting Functions791184 -Ref: Array Sorting Functions-Footnote-1795073 -Node: Two-way I/O795269 -Ref: Two-way I/O-Footnote-1800214 -Ref: Two-way I/O-Footnote-2800400 -Node: TCP/IP Networking800482 -Node: Profiling803355 -Node: Advanced Features Summary811632 -Node: Internationalization813565 -Node: I18N and L10N815045 -Node: Explaining gettext815731 -Ref: Explaining gettext-Footnote-1820756 -Ref: Explaining gettext-Footnote-2820940 -Node: Programmer i18n821105 -Ref: Programmer i18n-Footnote-1825971 -Node: Translator i18n826020 -Node: String Extraction826814 -Ref: String Extraction-Footnote-1827945 -Node: Printf Ordering828031 -Ref: Printf Ordering-Footnote-1830817 -Node: I18N Portability830881 -Ref: I18N Portability-Footnote-1833336 -Node: I18N Example833399 -Ref: I18N Example-Footnote-1836202 -Node: Gawk I18N836274 -Node: I18N Summary836912 -Node: Debugger838251 -Node: Debugging839273 -Node: Debugging Concepts839714 -Node: Debugging Terms841567 -Node: Awk Debugging844139 -Node: Sample Debugging Session845033 -Node: Debugger Invocation845553 -Node: Finding The Bug846937 -Node: List of Debugger Commands853412 -Node: Breakpoint Control854745 -Node: Debugger Execution Control858441 -Node: Viewing And Changing Data861805 -Node: Execution Stack865183 -Node: Debugger Info866820 -Node: Miscellaneous Debugger Commands870837 -Node: Readline Support875866 -Node: Limitations876758 -Node: Debugging Summary878872 -Node: Arbitrary Precision Arithmetic880040 -Node: Computer Arithmetic881456 -Ref: table-numeric-ranges885054 -Ref: Computer Arithmetic-Footnote-1885913 -Node: Math Definitions885970 -Ref: table-ieee-formats889258 -Ref: Math Definitions-Footnote-1889862 -Node: MPFR features889967 -Node: FP Math Caution891638 -Ref: FP Math Caution-Footnote-1892688 -Node: Inexactness of computations893057 -Node: Inexact representation894016 -Node: Comparing FP Values895373 -Node: Errors accumulate896455 -Node: Getting Accuracy897888 -Node: Try To Round900550 -Node: Setting precision901449 -Ref: table-predefined-precision-strings902133 -Node: Setting the rounding mode903922 -Ref: table-gawk-rounding-modes904286 -Ref: Setting the rounding mode-Footnote-1907741 -Node: Arbitrary Precision Integers907920 -Ref: Arbitrary Precision Integers-Footnote-1912820 -Node: POSIX Floating Point Problems912969 -Ref: POSIX Floating Point Problems-Footnote-1916842 -Node: Floating point summary916880 -Node: Dynamic Extensions919074 -Node: Extension Intro920626 -Node: Plugin License921892 -Node: Extension Mechanism Outline922689 -Ref: figure-load-extension923117 -Ref: figure-register-new-function924597 -Ref: figure-call-new-function925601 -Node: Extension API Description927587 -Node: Extension API Functions Introduction929121 -Node: General Data Types933993 -Ref: General Data Types-Footnote-1939732 -Node: Memory Allocation Functions940031 -Ref: Memory Allocation Functions-Footnote-1942870 -Node: Constructor Functions942966 -Node: Registration Functions944700 -Node: Extension Functions945385 -Node: Exit Callback Functions947682 -Node: Extension Version String948930 -Node: Input Parsers949595 -Node: Output Wrappers959474 -Node: Two-way processors963989 -Node: Printing Messages966193 -Ref: Printing Messages-Footnote-1967269 -Node: Updating `ERRNO'967421 -Node: Requesting Values968161 -Ref: table-value-types-returned968889 -Node: Accessing Parameters969846 -Node: Symbol Table Access971077 -Node: Symbol table by name971591 -Node: Symbol table by cookie973572 -Ref: Symbol table by cookie-Footnote-1977716 -Node: Cached values977779 -Ref: Cached values-Footnote-1981278 -Node: Array Manipulation981369 -Ref: Array Manipulation-Footnote-1982459 -Node: Array Data Types982496 -Ref: Array Data Types-Footnote-1985151 -Node: Array Functions985243 -Node: Flattening Arrays989097 -Node: Creating Arrays995989 -Node: Redirection API1000760 -Node: Extension API Variables1003531 -Node: Extension Versioning1004164 -Node: Extension API Informational Variables1006065 -Node: Extension API Boilerplate1007130 -Node: Finding Extensions1010939 -Node: Extension Example1011499 -Node: Internal File Description1012271 -Node: Internal File Ops1016338 -Ref: Internal File Ops-Footnote-11028008 -Node: Using Internal File Ops1028148 -Ref: Using Internal File Ops-Footnote-11030531 -Node: Extension Samples1030804 -Node: Extension Sample File Functions1032330 -Node: Extension Sample Fnmatch1039968 -Node: Extension Sample Fork1041459 -Node: Extension Sample Inplace1042674 -Node: Extension Sample Ord1044349 -Node: Extension Sample Readdir1045185 -Ref: table-readdir-file-types1046061 -Node: Extension Sample Revout1046872 -Node: Extension Sample Rev2way1047462 -Node: Extension Sample Read write array1048202 -Node: Extension Sample Readfile1050142 -Node: Extension Sample Time1051237 -Node: Extension Sample API Tests1052586 -Node: gawkextlib1053077 -Node: Extension summary1055735 -Node: Extension Exercises1059424 -Node: Language History1060146 -Node: V7/SVR3.11061802 -Node: SVR41063983 -Node: POSIX1065428 -Node: BTL1066817 -Node: POSIX/GNU1067551 -Node: Feature History1073175 -Node: Common Extensions1086273 -Node: Ranges and Locales1087597 -Ref: Ranges and Locales-Footnote-11092215 -Ref: Ranges and Locales-Footnote-21092242 -Ref: Ranges and Locales-Footnote-31092476 -Node: Contributors1092697 -Node: History summary1098238 -Node: Installation1099608 -Node: Gawk Distribution1100554 -Node: Getting1101038 -Node: Extracting1101861 -Node: Distribution contents1103496 -Node: Unix Installation1109561 -Node: Quick Installation1110244 -Node: Shell Startup Files1112655 -Node: Additional Configuration Options1113734 -Node: Configuration Philosophy1115473 -Node: Non-Unix Installation1117842 -Node: PC Installation1118300 -Node: PC Binary Installation1119619 -Node: PC Compiling1121467 -Ref: PC Compiling-Footnote-11124488 -Node: PC Testing1124597 -Node: PC Using1125773 -Node: Cygwin1129888 -Node: MSYS1130711 -Node: VMS Installation1131211 -Node: VMS Compilation1132003 -Ref: VMS Compilation-Footnote-11133225 -Node: VMS Dynamic Extensions1133283 -Node: VMS Installation Details1134967 -Node: VMS Running1137219 -Node: VMS GNV1140055 -Node: VMS Old Gawk1140789 -Node: Bugs1141259 -Node: Other Versions1145142 -Node: Installation summary1151566 -Node: Notes1152622 -Node: Compatibility Mode1153487 -Node: Additions1154269 -Node: Accessing The Source1155194 -Node: Adding Code1156629 -Node: New Ports1162786 -Node: Derived Files1167268 -Ref: Derived Files-Footnote-11172743 -Ref: Derived Files-Footnote-21172777 -Ref: Derived Files-Footnote-31173373 -Node: Future Extensions1173487 -Node: Implementation Limitations1174093 -Node: Extension Design1175341 -Node: Old Extension Problems1176495 -Ref: Old Extension Problems-Footnote-11178012 -Node: Extension New Mechanism Goals1178069 -Ref: Extension New Mechanism Goals-Footnote-11181429 -Node: Extension Other Design Decisions1181618 -Node: Extension Future Growth1183726 -Node: Old Extension Mechanism1184562 -Node: Notes summary1186324 -Node: Basic Concepts1187510 -Node: Basic High Level1188191 -Ref: figure-general-flow1188463 -Ref: figure-process-flow1189062 -Ref: Basic High Level-Footnote-11192291 -Node: Basic Data Typing1192476 -Node: Glossary1195804 -Node: Copying1227733 -Node: GNU Free Documentation License1265289 -Node: Index1290425 +Node: Foreword342451 +Node: Foreword446895 +Node: Preface48426 +Ref: Preface-Footnote-151297 +Ref: Preface-Footnote-251404 +Ref: Preface-Footnote-351637 +Node: History51779 +Node: Names54130 +Ref: Names-Footnote-155224 +Node: This Manual55370 +Ref: This Manual-Footnote-161870 +Node: Conventions61970 +Node: Manual History64307 +Ref: Manual History-Footnote-167300 +Ref: Manual History-Footnote-267341 +Node: How To Contribute67415 +Node: Acknowledgments68544 +Node: Getting Started73410 +Node: Running gawk75849 +Node: One-shot77039 +Node: Read Terminal78303 +Node: Long80334 +Node: Executable Scripts81847 +Ref: Executable Scripts-Footnote-184636 +Node: Comments84739 +Node: Quoting87221 +Node: DOS Quoting92739 +Node: Sample Data Files93414 +Node: Very Simple96009 +Node: Two Rules100908 +Node: More Complex102794 +Node: Statements/Lines105656 +Ref: Statements/Lines-Footnote-1110111 +Node: Other Features110376 +Node: When111312 +Ref: When-Footnote-1113066 +Node: Intro Summary113131 +Node: Invoking Gawk114015 +Node: Command Line115529 +Node: Options116327 +Ref: Options-Footnote-1132122 +Ref: Options-Footnote-2132351 +Node: Other Arguments132376 +Node: Naming Standard Input135324 +Node: Environment Variables136417 +Node: AWKPATH Variable136975 +Ref: AWKPATH Variable-Footnote-1140382 +Ref: AWKPATH Variable-Footnote-2140427 +Node: AWKLIBPATH Variable140687 +Node: Other Environment Variables141943 +Node: Exit Status145574 +Node: Include Files146250 +Node: Loading Shared Libraries149839 +Node: Obsolete151266 +Node: Undocumented151958 +Node: Invoking Summary152225 +Node: Regexp153888 +Node: Regexp Usage155342 +Node: Escape Sequences157379 +Node: Regexp Operators163608 +Ref: Regexp Operators-Footnote-1171018 +Ref: Regexp Operators-Footnote-2171165 +Node: Bracket Expressions171263 +Ref: table-char-classes173278 +Node: Leftmost Longest176220 +Node: Computed Regexps177522 +Node: GNU Regexp Operators180951 +Node: Case-sensitivity184623 +Ref: Case-sensitivity-Footnote-1187508 +Ref: Case-sensitivity-Footnote-2187743 +Node: Regexp Summary187851 +Node: Reading Files189318 +Node: Records191480 +Node: awk split records192213 +Node: gawk split records197142 +Ref: gawk split records-Footnote-1201681 +Node: Fields201718 +Ref: Fields-Footnote-1204496 +Node: Nonconstant Fields204582 +Ref: Nonconstant Fields-Footnote-1206820 +Node: Changing Fields207023 +Node: Field Separators212954 +Node: Default Field Splitting215658 +Node: Regexp Field Splitting216775 +Node: Single Character Fields220125 +Node: Command Line Field Separator221184 +Node: Full Line Fields224401 +Ref: Full Line Fields-Footnote-1225922 +Ref: Full Line Fields-Footnote-2225968 +Node: Field Splitting Summary226069 +Node: Constant Size228143 +Node: Splitting By Content232722 +Ref: Splitting By Content-Footnote-1236687 +Node: Multiple Line236850 +Ref: Multiple Line-Footnote-1242731 +Node: Getline242910 +Node: Plain Getline245389 +Node: Getline/Variable248029 +Node: Getline/File249178 +Node: Getline/Variable/File250563 +Ref: Getline/Variable/File-Footnote-1252166 +Node: Getline/Pipe252253 +Node: Getline/Variable/Pipe254931 +Node: Getline/Coprocess256062 +Node: Getline/Variable/Coprocess257326 +Node: Getline Notes258065 +Node: Getline Summary260859 +Ref: table-getline-variants261271 +Node: Read Timeout262100 +Ref: Read Timeout-Footnote-1266003 +Node: Retrying Input266061 +Node: Command-line directories267256 +Node: Input Summary268163 +Node: Input Exercises271548 +Node: Printing272276 +Node: Print274111 +Node: Print Examples275568 +Node: Output Separators278347 +Node: OFMT280365 +Node: Printf281720 +Node: Basic Printf282505 +Node: Control Letters284077 +Node: Format Modifiers288062 +Node: Printf Examples294068 +Node: Redirection296554 +Node: Special FD303392 +Ref: Special FD-Footnote-1306558 +Node: Special Files306632 +Node: Other Inherited Files307249 +Node: Special Network308249 +Node: Special Caveats309111 +Node: Close Files And Pipes310060 +Ref: Close Files And Pipes-Footnote-1317245 +Ref: Close Files And Pipes-Footnote-2317393 +Node: Nonfatal317543 +Node: Output Summary319868 +Node: Output Exercises321089 +Node: Expressions321769 +Node: Values322958 +Node: Constants323635 +Node: Scalar Constants324326 +Ref: Scalar Constants-Footnote-1325188 +Node: Nondecimal-numbers325438 +Node: Regexp Constants328448 +Node: Using Constant Regexps328974 +Node: Variables332137 +Node: Using Variables332794 +Node: Assignment Options334705 +Node: Conversion336580 +Node: Strings And Numbers337104 +Ref: Strings And Numbers-Footnote-1340169 +Node: Locale influences conversions340278 +Ref: table-locale-affects343024 +Node: All Operators343616 +Node: Arithmetic Ops344245 +Node: Concatenation346750 +Ref: Concatenation-Footnote-1349569 +Node: Assignment Ops349676 +Ref: table-assign-ops354655 +Node: Increment Ops355965 +Node: Truth Values and Conditions359396 +Node: Truth Values360479 +Node: Typing and Comparison361528 +Node: Variable Typing362344 +Node: Comparison Operators366011 +Ref: table-relational-ops366421 +Node: POSIX String Comparison369916 +Ref: POSIX String Comparison-Footnote-1370988 +Node: Boolean Ops371127 +Ref: Boolean Ops-Footnote-1375605 +Node: Conditional Exp375696 +Node: Function Calls377434 +Node: Precedence381314 +Node: Locales384974 +Node: Expressions Summary386606 +Node: Patterns and Actions389177 +Node: Pattern Overview390297 +Node: Regexp Patterns391976 +Node: Expression Patterns392519 +Node: Ranges396299 +Node: BEGIN/END399406 +Node: Using BEGIN/END400167 +Ref: Using BEGIN/END-Footnote-1402903 +Node: I/O And BEGIN/END403009 +Node: BEGINFILE/ENDFILE405324 +Node: Empty408221 +Node: Using Shell Variables408538 +Node: Action Overview410811 +Node: Statements413137 +Node: If Statement414985 +Node: While Statement416480 +Node: Do Statement418508 +Node: For Statement419656 +Node: Switch Statement422814 +Node: Break Statement425196 +Node: Continue Statement427289 +Node: Next Statement429116 +Node: Nextfile Statement431497 +Node: Exit Statement434125 +Node: Built-in Variables436536 +Node: User-modified437669 +Ref: User-modified-Footnote-1445303 +Node: Auto-set445365 +Ref: Auto-set-Footnote-1459598 +Ref: Auto-set-Footnote-2459803 +Node: ARGC and ARGV459859 +Node: Pattern Action Summary464077 +Node: Arrays466510 +Node: Array Basics467839 +Node: Array Intro468683 +Ref: figure-array-elements470620 +Ref: Array Intro-Footnote-1473243 +Node: Reference to Elements473371 +Node: Assigning Elements475833 +Node: Array Example476324 +Node: Scanning an Array478083 +Node: Controlling Scanning481106 +Ref: Controlling Scanning-Footnote-1486500 +Node: Numeric Array Subscripts486816 +Node: Uninitialized Subscripts489001 +Node: Delete490618 +Ref: Delete-Footnote-1493367 +Node: Multidimensional493424 +Node: Multiscanning496521 +Node: Arrays of Arrays498110 +Node: Arrays Summary502864 +Node: Functions504955 +Node: Built-in505994 +Node: Calling Built-in507072 +Node: Numeric Functions509067 +Ref: Numeric Functions-Footnote-1513885 +Ref: Numeric Functions-Footnote-2514242 +Ref: Numeric Functions-Footnote-3514290 +Node: String Functions514562 +Ref: String Functions-Footnote-1538063 +Ref: String Functions-Footnote-2538192 +Ref: String Functions-Footnote-3538440 +Node: Gory Details538527 +Ref: table-sub-escapes540308 +Ref: table-sub-proposed541823 +Ref: table-posix-sub543185 +Ref: table-gensub-escapes544722 +Ref: Gory Details-Footnote-1545555 +Node: I/O Functions545706 +Ref: I/O Functions-Footnote-1552942 +Node: Time Functions553089 +Ref: Time Functions-Footnote-1563598 +Ref: Time Functions-Footnote-2563666 +Ref: Time Functions-Footnote-3563824 +Ref: Time Functions-Footnote-4563935 +Ref: Time Functions-Footnote-5564047 +Ref: Time Functions-Footnote-6564274 +Node: Bitwise Functions564540 +Ref: table-bitwise-ops565102 +Ref: Bitwise Functions-Footnote-1569430 +Node: Type Functions569602 +Node: I18N Functions570754 +Node: User-defined572401 +Node: Definition Syntax573206 +Ref: Definition Syntax-Footnote-1578865 +Node: Function Example578936 +Ref: Function Example-Footnote-1581857 +Node: Function Caveats581879 +Node: Calling A Function582397 +Node: Variable Scope583355 +Node: Pass By Value/Reference586348 +Node: Return Statement589845 +Node: Dynamic Typing592824 +Node: Indirect Calls593753 +Ref: Indirect Calls-Footnote-1603618 +Node: Functions Summary603746 +Node: Library Functions606448 +Ref: Library Functions-Footnote-1610056 +Ref: Library Functions-Footnote-2610199 +Node: Library Names610370 +Ref: Library Names-Footnote-1613828 +Ref: Library Names-Footnote-2614051 +Node: General Functions614137 +Node: Strtonum Function615240 +Node: Assert Function618262 +Node: Round Function621586 +Node: Cliff Random Function623127 +Node: Ordinal Functions624143 +Ref: Ordinal Functions-Footnote-1627206 +Ref: Ordinal Functions-Footnote-2627458 +Node: Join Function627669 +Ref: Join Function-Footnote-1629439 +Node: Getlocaltime Function629639 +Node: Readfile Function633383 +Node: Shell Quoting635355 +Node: Data File Management636756 +Node: Filetrans Function637388 +Node: Rewind Function641484 +Node: File Checking642870 +Ref: File Checking-Footnote-1644203 +Node: Empty Files644404 +Node: Ignoring Assigns646383 +Node: Getopt Function647933 +Ref: Getopt Function-Footnote-1659397 +Node: Passwd Functions659597 +Ref: Passwd Functions-Footnote-1668437 +Node: Group Functions668525 +Ref: Group Functions-Footnote-1676422 +Node: Walking Arrays676627 +Node: Library Functions Summary679633 +Node: Library Exercises681035 +Node: Sample Programs682315 +Node: Running Examples683085 +Node: Clones683813 +Node: Cut Program685037 +Node: Egrep Program694757 +Ref: Egrep Program-Footnote-1702260 +Node: Id Program702370 +Node: Split Program706046 +Ref: Split Program-Footnote-1709500 +Node: Tee Program709628 +Node: Uniq Program712417 +Node: Wc Program719836 +Ref: Wc Program-Footnote-1724086 +Node: Miscellaneous Programs724180 +Node: Dupword Program725393 +Node: Alarm Program727424 +Node: Translate Program732229 +Ref: Translate Program-Footnote-1736792 +Node: Labels Program737062 +Ref: Labels Program-Footnote-1740413 +Node: Word Sorting740497 +Node: History Sorting744567 +Node: Extract Program746402 +Node: Simple Sed753926 +Node: Igawk Program756996 +Ref: Igawk Program-Footnote-1771322 +Ref: Igawk Program-Footnote-2771523 +Ref: Igawk Program-Footnote-3771645 +Node: Anagram Program771760 +Node: Signature Program774821 +Node: Programs Summary776068 +Node: Programs Exercises777289 +Ref: Programs Exercises-Footnote-1781420 +Node: Advanced Features781511 +Node: Nondecimal Data783493 +Node: Array Sorting785083 +Node: Controlling Array Traversal785783 +Ref: Controlling Array Traversal-Footnote-1794149 +Node: Array Sorting Functions794267 +Ref: Array Sorting Functions-Footnote-1798153 +Node: Two-way I/O798349 +Ref: Two-way I/O-Footnote-1803294 +Ref: Two-way I/O-Footnote-2803480 +Node: TCP/IP Networking803562 +Node: Profiling806434 +Node: Advanced Features Summary814705 +Node: Internationalization816638 +Node: I18N and L10N818118 +Node: Explaining gettext818804 +Ref: Explaining gettext-Footnote-1823829 +Ref: Explaining gettext-Footnote-2824013 +Node: Programmer i18n824178 +Ref: Programmer i18n-Footnote-1829054 +Node: Translator i18n829103 +Node: String Extraction829897 +Ref: String Extraction-Footnote-1831028 +Node: Printf Ordering831114 +Ref: Printf Ordering-Footnote-1833900 +Node: I18N Portability833964 +Ref: I18N Portability-Footnote-1836420 +Node: I18N Example836483 +Ref: I18N Example-Footnote-1839286 +Node: Gawk I18N839358 +Node: I18N Summary840002 +Node: Debugger841342 +Node: Debugging842364 +Node: Debugging Concepts842805 +Node: Debugging Terms844615 +Node: Awk Debugging847187 +Node: Sample Debugging Session848093 +Node: Debugger Invocation848627 +Node: Finding The Bug850012 +Node: List of Debugger Commands856491 +Node: Breakpoint Control857823 +Node: Debugger Execution Control861500 +Node: Viewing And Changing Data864859 +Node: Execution Stack868235 +Node: Debugger Info869870 +Node: Miscellaneous Debugger Commands873915 +Node: Readline Support878916 +Node: Limitations879810 +Node: Debugging Summary881925 +Node: Arbitrary Precision Arithmetic883099 +Node: Computer Arithmetic884515 +Ref: table-numeric-ranges888092 +Ref: Computer Arithmetic-Footnote-1888616 +Node: Math Definitions888673 +Ref: table-ieee-formats891968 +Ref: Math Definitions-Footnote-1892572 +Node: MPFR features892677 +Node: FP Math Caution894348 +Ref: FP Math Caution-Footnote-1895398 +Node: Inexactness of computations895767 +Node: Inexact representation896726 +Node: Comparing FP Values898084 +Node: Errors accumulate899166 +Node: Getting Accuracy900598 +Node: Try To Round903302 +Node: Setting precision904201 +Ref: table-predefined-precision-strings904885 +Node: Setting the rounding mode906714 +Ref: table-gawk-rounding-modes907078 +Ref: Setting the rounding mode-Footnote-1910530 +Node: Arbitrary Precision Integers910709 +Ref: Arbitrary Precision Integers-Footnote-1915607 +Node: POSIX Floating Point Problems915756 +Ref: POSIX Floating Point Problems-Footnote-1919635 +Node: Floating point summary919673 +Node: Dynamic Extensions921860 +Node: Extension Intro923412 +Node: Plugin License924677 +Node: Extension Mechanism Outline925474 +Ref: figure-load-extension925902 +Ref: figure-register-new-function927382 +Ref: figure-call-new-function928386 +Node: Extension API Description930373 +Node: Extension API Functions Introduction931907 +Node: General Data Types936776 +Ref: General Data Types-Footnote-1942676 +Node: Memory Allocation Functions942975 +Ref: Memory Allocation Functions-Footnote-1945814 +Node: Constructor Functions945913 +Node: Registration Functions947652 +Node: Extension Functions948337 +Node: Exit Callback Functions950634 +Node: Extension Version String951882 +Node: Input Parsers952545 +Node: Output Wrappers962420 +Node: Two-way processors966933 +Node: Printing Messages969196 +Ref: Printing Messages-Footnote-1970272 +Node: Updating `ERRNO'970424 +Node: Requesting Values971164 +Ref: table-value-types-returned971891 +Node: Accessing Parameters972848 +Node: Symbol Table Access974082 +Node: Symbol table by name974596 +Node: Symbol table by cookie976616 +Ref: Symbol table by cookie-Footnote-1980761 +Node: Cached values980824 +Ref: Cached values-Footnote-1984320 +Node: Array Manipulation984411 +Ref: Array Manipulation-Footnote-1985501 +Node: Array Data Types985538 +Ref: Array Data Types-Footnote-1988193 +Node: Array Functions988285 +Node: Flattening Arrays992144 +Node: Creating Arrays999046 +Node: Redirection API1003817 +Node: Extension API Variables1006588 +Node: Extension Versioning1007221 +Node: Extension API Informational Variables1009112 +Node: Extension API Boilerplate1010177 +Node: Finding Extensions1013986 +Node: Extension Example1014546 +Node: Internal File Description1015318 +Node: Internal File Ops1019385 +Ref: Internal File Ops-Footnote-11031136 +Node: Using Internal File Ops1031276 +Ref: Using Internal File Ops-Footnote-11033659 +Node: Extension Samples1033932 +Node: Extension Sample File Functions1035460 +Node: Extension Sample Fnmatch1043141 +Node: Extension Sample Fork1044629 +Node: Extension Sample Inplace1045844 +Node: Extension Sample Ord1047930 +Node: Extension Sample Readdir1048766 +Ref: table-readdir-file-types1049643 +Node: Extension Sample Revout1050454 +Node: Extension Sample Rev2way1051043 +Node: Extension Sample Read write array1051783 +Node: Extension Sample Readfile1053723 +Node: Extension Sample Time1054818 +Node: Extension Sample API Tests1056166 +Node: gawkextlib1056657 +Node: Extension summary1059335 +Node: Extension Exercises1063024 +Node: Language History1063746 +Node: V7/SVR3.11065402 +Node: SVR41067555 +Node: POSIX1068989 +Node: BTL1070370 +Node: POSIX/GNU1071101 +Node: Feature History1076937 +Node: Common Extensions1090731 +Node: Ranges and Locales1092103 +Ref: Ranges and Locales-Footnote-11096722 +Ref: Ranges and Locales-Footnote-21096749 +Ref: Ranges and Locales-Footnote-31096984 +Node: Contributors1097205 +Node: History summary1102745 +Node: Installation1104124 +Node: Gawk Distribution1105070 +Node: Getting1105554 +Node: Extracting1106377 +Node: Distribution contents1108014 +Node: Unix Installation1114116 +Node: Quick Installation1114799 +Node: Shell Startup Files1117210 +Node: Additional Configuration Options1118289 +Node: Configuration Philosophy1120093 +Node: Non-Unix Installation1122462 +Node: PC Installation1122920 +Node: PC Binary Installation1124240 +Node: PC Compiling1126088 +Ref: PC Compiling-Footnote-11129109 +Node: PC Testing1129218 +Node: PC Using1130394 +Node: Cygwin1134509 +Node: MSYS1135279 +Node: VMS Installation1135780 +Node: VMS Compilation1136572 +Ref: VMS Compilation-Footnote-11137801 +Node: VMS Dynamic Extensions1137859 +Node: VMS Installation Details1139543 +Node: VMS Running1141794 +Node: VMS GNV1144634 +Node: VMS Old Gawk1145369 +Node: Bugs1145839 +Node: Other Versions1149728 +Node: Installation summary1156162 +Node: Notes1157221 +Node: Compatibility Mode1158086 +Node: Additions1158868 +Node: Accessing The Source1159793 +Node: Adding Code1161228 +Node: New Ports1167385 +Node: Derived Files1171867 +Ref: Derived Files-Footnote-11177342 +Ref: Derived Files-Footnote-21177376 +Ref: Derived Files-Footnote-31177972 +Node: Future Extensions1178086 +Node: Implementation Limitations1178692 +Node: Extension Design1179940 +Node: Old Extension Problems1181094 +Ref: Old Extension Problems-Footnote-11182611 +Node: Extension New Mechanism Goals1182668 +Ref: Extension New Mechanism Goals-Footnote-11186028 +Node: Extension Other Design Decisions1186217 +Node: Extension Future Growth1188325 +Node: Old Extension Mechanism1189161 +Node: Notes summary1190923 +Node: Basic Concepts1192109 +Node: Basic High Level1192790 +Ref: figure-general-flow1193062 +Ref: figure-process-flow1193661 +Ref: Basic High Level-Footnote-11196890 +Node: Basic Data Typing1197075 +Node: Glossary1200403 +Node: Copying1232332 +Node: GNU Free Documentation License1269888 +Node: Index1295024 End Tag Table diff --git a/doc/gawk.texi b/doc/gawk.texi index cc215c6a..68d35876 100644 --- a/doc/gawk.texi +++ b/doc/gawk.texi @@ -51,10 +51,11 @@ @c applies to and all the info about who's publishing this edition @c These apply across the board. -@set UPDATE-MONTH September, 2014 +@set UPDATE-MONTH February, 2015 @set VERSION 4.1 @set PATCHLEVEL 2 +@set GAWKINETTITLE TCP/IP Internetworking with @command{gawk} @ifset FOR_PRINT @set TITLE Effective awk Programming @end ifset @@ -197,9 +198,9 @@ @ifclear FOR_PRINT @set FN file name -@set FFN File Name +@set FFN File name @set DF data file -@set DDF Data File +@set DDF Data file @set PVERSION version @end ifclear @ifset FOR_PRINT @@ -298,7 +299,7 @@ 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 +<literallayout class="normal">Copyright © 1989, 1991, 1992, 1993, 1996–2005, 2007, 2009–2015 Free Software Foundation, Inc. All Rights Reserved.</literallayout> @end docbook @@ -633,6 +634,7 @@ particular records in a file and perform operations upon them. * Special Caveats:: Things to watch out for. * Close Files And Pipes:: Closing Input and Output Files and Pipes. +* Nonfatal:: Enabling Nonfatal Output. * Output Summary:: Output summary. * Output Exercises:: Exercises. * Values:: Constants, Variables, and Regular @@ -1302,7 +1304,7 @@ October 2014 <affiliation><jobtitle>Nof Ayalon</jobtitle></affiliation> <affiliation><jobtitle>Israel</jobtitle></affiliation> </author> - <date>December 2014</date> + <date>February 2015</date> </prefaceinfo> @end docbook @@ -1498,7 +1500,7 @@ In May 1997, J@"urgen Kahrs felt the need for network access from @command{awk}, and with a little help from me, set about adding features to do this for @command{gawk}. At that time, he also wrote the bulk of -@cite{TCP/IP Internetworking with @command{gawk}} +@cite{@value{GAWKINETTITLE}} (a separate document, available as part of the @command{gawk} distribution). His code finally became part of the main @command{gawk} distribution with @command{gawk} @value{PVERSION} 3.1. @@ -1521,7 +1523,7 @@ is often referred to as ``new @command{awk}.'' By analogy, the original version of @command{awk} is referred to as ``old @command{awk}.'' -Today, on most systems, when you run the @command{awk} utility +On most current systems, when you run the @command{awk} utility you get some version of new @command{awk}.@footnote{Only Solaris systems still use an old @command{awk} for the default @command{awk} utility. A more modern @command{awk} lives in @@ -1752,15 +1754,39 @@ and how to compile and use it on different non-POSIX systems. It also describes how to report bugs in @command{gawk} and where to get other freely available @command{awk} implementations. -@end itemize @ifset FOR_PRINT -@itemize @value{MINUS} @item @ref{Copying}, presents the license that covers the @command{gawk} source code. +@end ifset + +@ifclear FOR_PRINT +@item +@ref{Notes}, +describes how to disable @command{gawk}'s extensions, as +well as how to contribute new code to @command{gawk}, +and some possible future directions for @command{gawk} development. + +@item +@ref{Basic Concepts}, +provides some very cursory background material for those who +are completely unfamiliar with computer programming. + +The @ref{Glossary}, defines most, if not all, of the significant terms used +throughout the @value{DOCUMENT}. If you find terms that you aren't familiar with, +try looking them up here. + +@item +@ref{Copying}, and +@ref{GNU Free Documentation License}, +present the licenses that cover the @command{gawk} source code +and this @value{DOCUMENT}, respectively. +@end ifclear +@end itemize @end itemize +@ifset FOR_PRINT The version of this @value{DOCUMENT} distributed with @command{gawk} contains additional appendices and other end material. To save space, we have omitted them from the @@ -1798,32 +1824,6 @@ Some of the chapters have exercise sections; these have also been omitted from the print edition but are available online. @end ifset -@ifclear FOR_PRINT -@itemize @value{MINUS} -@item -@ref{Notes}, -describes how to disable @command{gawk}'s extensions, as -well as how to contribute new code to @command{gawk}, -and some possible future directions for @command{gawk} development. - -@item -@ref{Basic Concepts}, -provides some very cursory background material for those who -are completely unfamiliar with computer programming. - -The @ref{Glossary}, defines most, if not all, of the significant terms used -throughout the @value{DOCUMENT}. If you find terms that you aren't familiar with, -try looking them up here. - -@item -@ref{Copying}, and -@ref{GNU Free Documentation License}, -present the licenses that cover the @command{gawk} source code -and this @value{DOCUMENT}, respectively. -@end itemize -@end ifclear -@end itemize - @c FULLXREF OFF @node Conventions @@ -1865,15 +1865,23 @@ $ @kbd{echo hello on stderr 1>&2} @end example @ifnotinfo -In the text, command names appear in @code{this font}, while code segments +In the text, almost anything related to programming, such as +command names, +variable and function names, and string, numeric and regexp constants +appear in @code{this font}. Code fragments appear in the same font and quoted, @samp{like this}. +Things that are replaced by the user or programmer +appear in @var{this font}. Options look like this: @option{-f}. +@value{FFN}s are indicated like this: @file{/path/to/ourfile}. +@ifclear FOR_PRINT Some things are emphasized @emph{like this}, and if a point needs to be made -strongly, it is done @strong{like this}. The first occurrence of +strongly, it is done @strong{like this}. +@end ifclear +The first occurrence of a new term is usually its @dfn{definition} and appears in the same font as the previous occurrence of ``definition'' in this sentence. -Finally, @value{FN}s are indicated like this: @file{/path/to/ourfile}. @end ifnotinfo Characters that you type at the keyboard look @kbd{like this}. In particular, @@ -2286,14 +2294,14 @@ which they raised and educated me. Finally, I also must acknowledge my gratitude to G-d, for the many opportunities He has sent my way, as well as for the gifts He has given me with which to take advantage of those opportunities. -@iftex +@ifnotdocbook @sp 2 @noindent Arnold Robbins @* Nof Ayalon @* Israel @* -December 2014 -@end iftex +February 2015 +@end ifnotdocbook @ifnotinfo @part @value{PART1}The @command{awk} Language @@ -4544,6 +4552,8 @@ wait for input before returning with an error. Controls the number of times @command{gawk} attempts to retry a two-way TCP/IP (socket) connection before giving up. @xref{TCP/IP Networking}. +Note that when nonfatal I/O is enabled (@pxref{Nonfatal}), +@command{gawk} only tries to open a TCP/IP socket once. @item POSIXLY_CORRECT Causes @command{gawk} to switch to POSIX-compatibility @@ -5180,13 +5190,12 @@ letters or numbers. @value{COMMONEXT} @quotation CAUTION In ISO C, the escape sequence continues until the first nonhexadecimal digit is seen. -@c FIXME: Add exact version here. For many years, @command{gawk} would continue incorporating hexadecimal digits into the value until a non-hexadecimal digit or the end of the string was encountered. However, using more than two hexadecimal digits produced undefined results. -As of @value{PVERSION} @strong{FIXME:} 4.3.0, only two digits +As of @value{PVERSION} 4.2, only two digits are processed. @end quotation @@ -7669,7 +7678,7 @@ variable @code{FIELDWIDTHS}. Each number specifies the width of the field, @emph{including} columns between fields. If you want to ignore the columns between fields, you can specify the width as a separate field that is subsequently ignored. -It is a fatal error to supply a field width that is not a positive number. +It is a fatal error to supply a field width that has a negative value. The following data is the output of the Unix @command{w} utility. It is useful to illustrate the use of @code{FIELDWIDTHS}: @@ -8967,6 +8976,7 @@ and discusses the @code{close()} built-in function. @command{gawk} allows access to inherited file descriptors. * Close Files And Pipes:: Closing Input and Output Files and Pipes. +* Nonfatal:: Enabling Nonfatal Output. * Output Summary:: Output summary. * Output Exercises:: Exercises. @end menu @@ -9445,12 +9455,12 @@ represent spaces in the output. Here are the possible modifiers, in the order in which they may appear: -@table @code +@table @asis @cindex differences in @command{awk} and @command{gawk}, @code{print}/@code{printf} statements @cindex @code{printf} statement, positional specifiers @c the code{} does NOT start a secondary @cindex positional specifiers, @code{printf} statement -@item @var{N}$ +@item @code{@var{N}$} An integer constant followed by a @samp{$} is a @dfn{positional specifier}. Normally, format specifications are applied to arguments in the order given in the format string. With a positional specifier, the format @@ -9473,7 +9483,7 @@ messages at runtime. which describes how and why to use positional specifiers. For now, we ignore them. -@item - @r{(Minus)} +@item @code{-} (Minus) The minus sign, used before the width modifier (see later on in this list), says to left-justify @@ -9491,13 +9501,13 @@ prints @samp{foo@bullet{}}. For numeric conversions, prefix positive values with a space and negative values with a minus sign. -@item + +@item @code{+} The plus sign, used before the width modifier (see later on in this list), says to always supply a sign for numeric conversions, even if the data to format is positive. The @samp{+} overrides the space modifier. -@item # +@item @code{#} Use an ``alternative form'' for certain control letters. For @samp{%o}, supply a leading zero. For @samp{%x} and @samp{%X}, supply a leading @samp{0x} or @samp{0X} for @@ -9506,14 +9516,14 @@ For @samp{%e}, @samp{%E}, @samp{%f}, and @samp{%F}, the result always contains a decimal point. For @samp{%g} and @samp{%G}, trailing zeros are not removed from the result. -@item 0 +@item @code{0} A leading @samp{0} (zero) acts as a flag indicating that output should be padded with zeros instead of spaces. This applies only to the numeric output formats. This flag only has an effect when the field width is wider than the value to print. -@item ' +@item @code{'} A single quote or apostrophe character is a POSIX extension to ISO C. It indicates that the integer part of a floating-point value, or the entire part of an integer decimal value, should have a thousands-separator @@ -9566,7 +9576,7 @@ prints @samp{foobar}. Preceding the @var{width} with a minus sign causes the output to be padded with spaces on the right, instead of on the left. -@item .@var{prec} +@item @code{.@var{prec}} A period followed by an integer constant specifies the precision to use when printing. The meaning of the precision varies by control letter: @@ -10473,6 +10483,71 @@ when closing a pipe. @end ifnotdocbook +@node Nonfatal +@section Enabling Nonfatal Output + +This @value{SECTION} describes a @command{gawk}-specific feature. + +In standard @command{awk}, output with @code{print} or @code{printf} +to a nonexistent file, or some other I/O error (such as filling up the +disk) is a fatal error. + +@example +$ @kbd{gawk 'BEGIN @{ print "hi" > "/no/such/file" @}'} +@error{} gawk: cmd. line:1: fatal: can't redirect to `/no/such/file' (No such file or directory) +@end example + +@command{gawk} makes it possible to detect that an error has +occurred, allowing you to possibly recover from the error, or +at least print an error message of your choosing before exiting. +You can do this in one of two ways: + +@itemize @bullet +@item +For all output files, by assigning any value to @code{PROCINFO["NONFATAL"]}. + +@item +On a per-file basis, by assigning any value to +@code{PROCINFO[@var{filename}, "NONFATAL"]}. +Here, @var{filename} is the name of the file to which +you wish output to be nonfatal. +@end itemize + +Once you have enabled nonfatal output, you must check @code{ERRNO} +after every relevant @code{print} or @code{printf} statement to +see if something went wrong. It is also a good idea to initialize +@code{ERRNO} to zero before attempting the output. For example: + +@example +$ @kbd{gawk '} +> @kbd{BEGIN @{} +> @kbd{ PROCINFO["NONFATAL"] = 1} +> @kbd{ ERRNO = 0} +> @kbd{ print "hi" > "/no/such/file"} +> @kbd{ if (ERRNO) @{} +> @kbd{ print("Output failed:", ERRNO) > "/dev/stderr"} +> @kbd{ exit 1} +> @kbd{ @}} +> @kbd{@}'} +@error{} Output failed: No such file or directory +@end example + +Here, @command{gawk} did not produce a fatal error; instead +it let the @command{awk} program code detect the problem and handle it. + +This mechanism works also for standard output and standard error. +For standard output, you may use @code{PROCINFO["-", "NONFATAL"]} +or @code{PROCINFO["/dev/stdout", "NONFATAL"]}. For standard error, use +@code{PROCINFO["/dev/stderr", "NONFATAL"]}. + +When attempting to open a TCP/IP socket (@pxref{TCP/IP Networking}), +@command{gawk} tries multiple times. The @env{GAWK_SOCK_RETRIES} +environment variable (@pxref{Other Environment Variables}) allows you to +override @command{gawk}'s builtin default number of attempts. However, +once nonfatal I/O is enabled for a given socket, @command{gawk} only +retries once, relying on @command{awk}-level code to notice that there +was a problem. + @node Output Summary @section Summary @@ -10501,6 +10576,12 @@ Use @code{close()} to close open file, pipe, and coprocess redirections. For coprocesses, it is possible to close only one direction of the communications. +@item +Normally errors with @code{print} or @code{printf} are fatal. +@command{gawk} lets you make output errors be nonfatal either for +all files or on a per-file basis. You must then check for errors +after every relevant output statement. + @end itemize @c EXCLUDE START @@ -11815,6 +11896,7 @@ has the value four, but it changes the value of @code{foo} to five. In other words, the operator returns the old value of the variable, but with the side effect of incrementing it. +@c FIXME: Use @sup here for superscript The post-increment @samp{foo++} is nearly the same as writing @samp{(foo += 1) - 1}. It is not perfectly equivalent because all numbers in @command{awk} are floating point---in floating point, @samp{foo + 1 - 1} does @@ -12035,6 +12117,9 @@ the string constant @code{"0"} is actually true, because it is non-null. @i{The Guide is definitive. Reality is frequently inaccurate.} @author Douglas Adams, @cite{The Hitchhiker's Guide to the Galaxy} @end quotation +@c 2/2015: Antonio Colombo points out that this is really from +@c The Restaurant at the End of the Universe. But I'm going to +@c leave it alone. @cindex comparison expressions @cindex expressions, comparison @@ -13205,6 +13290,7 @@ $ @kbd{awk '$1 ~ /li/ @{ print $2 @}' mail-list} @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{/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}. @@ -14156,12 +14242,12 @@ numbers: # find smallest divisor of num @{ num = $1 - for (div = 2; div * div <= num; div++) @{ - if (num % div == 0) + for (divisor = 2; divisor * divisor <= num; divisor++) @{ + if (num % divisor == 0) break @} - if (num % div == 0) - printf "Smallest divisor of %d is %d\n", num, div + if (num % divisor == 0) + printf "Smallest divisor of %d is %d\n", num, divisor else printf "%d is prime\n", num @} @@ -14182,12 +14268,12 @@ an @code{if}: # find smallest divisor of num @{ num = $1 - for (div = 2; ; div++) @{ - if (num % div == 0) @{ - printf "Smallest divisor of %d is %d\n", num, div + for (divisor = 2; ; divisor++) @{ + if (num % divisor == 0) @{ + printf "Smallest divisor of %d is %d\n", num, divisor break @} - if (div * div > num) @{ + if (divisor * divisor > num) @{ printf "%d is prime\n", num break @} @@ -14629,12 +14715,13 @@ is to simply say @samp{FS = FS}, perhaps with an explanatory comment. @cindex regular expressions, case sensitivity @item IGNORECASE # If @code{IGNORECASE} is nonzero or non-null, then all string comparisons -and all regular expression matching are case-independent. Thus, regexp -matching with @samp{~} and @samp{!~}, as well as the @code{gensub()}, -@code{gsub()}, @code{index()}, @code{match()}, @code{patsplit()}, -@code{split()}, and @code{sub()} -functions, record termination with @code{RS}, and field splitting with -@code{FS} and @code{FPAT}, all ignore case when doing their particular regexp operations. +and all regular expression matching are case-independent. +This applies to +regexp matching with @samp{~} and @samp{!~}, +the @code{gensub()}, @code{gsub()}, @code{index()}, @code{match()}, +@code{patsplit()}, @code{split()}, and @code{sub()} functions, +record termination with @code{RS}, and field splitting with +@code{FS} and @code{FPAT}. However, the value of @code{IGNORECASE} does @emph{not} affect array subscripting and it does not affect field splitting when using a single-character field separator. @@ -15551,7 +15638,7 @@ In most other languages, arrays must be @dfn{declared} before use, including a specification of how many elements or components they contain. In such languages, the declaration causes a contiguous block of memory to be allocated for that -many elements. Usually, an index in the array must be a positive integer. +many elements. Usually, an index in the array must be a nonnegative integer. For example, the index zero specifies the first element in the array, which is actually stored at the beginning of the block of memory. Index one specifies the second element, which is stored in memory right after the @@ -15731,7 +15818,7 @@ Now the array is @dfn{sparse}, which just means some indices are missing. It has elements 0--3 and 10, but doesn't have elements 4, 5, 6, 7, 8, or 9. Another consequence of associative arrays is that the indices don't -have to be positive integers. Any number, or even a string, can be +have to be nonnegative integers. Any number, or even a string, can be an index. For example, the following is an array that translates words from English to French: @@ -15994,7 +16081,7 @@ END @{ 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 -arrays are contiguous and indices are limited to positive integers, +arrays are contiguous and indices are limited to nonnegative integers, this is easy: all the valid indices can be found by counting from the lowest index up to the highest. This technique won't do the job in @command{awk}, because any number or string can be an array index. @@ -17116,7 +17203,7 @@ for generating random numbers to the value @var{x}. Each seed value leads to a particular sequence of random numbers.@footnote{Computer-generated random numbers really are not truly -random. They are technically known as ``pseudorandom.'' This means +random. They are technically known as @dfn{pseudorandom}. This means that although the numbers in a sequence appear to be random, you can in fact generate the same sequence of random numbers over and over again.} Thus, if the seed is set to the same value a second time, @@ -18634,6 +18721,7 @@ 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. +@c FIXME: Use @sup here for superscript @cindex @command{date} utility, GNU @cindex time, retrieving @@ -19257,15 +19345,16 @@ $ @kbd{gawk -f testbits.awk} @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, +Initializing @code{mask} to one creates +a binary value where the rightmost bit +is set to one. Using this mask, the function repeatedly checks the rightmost bit. ANDing the mask with the value indicates whether the -rightmost bit is 1 or not. If so, a @code{"1"} is concatenated onto the front +rightmost bit is one or not. If so, a @code{"1"} is concatenated onto the front of the string. Otherwise, a @code{"0"} is added. The value is then shifted right by one bit and the loop continues -until there are no more 1 bits. +until there are no more one bits. If the initial value is zero, it returns a simple @code{"0"}. Otherwise, at the end, it pads the value with zeros to represent multiples @@ -19289,7 +19378,7 @@ that traverses every element of an array of arrays @cindexgawkfunc{isarray} @cindex scalar or array @item isarray(@var{x}) -Return a true value if @var{x} is an array. Otherwise return false. +Return a true value if @var{x} is an array. Otherwise, return false. @end table @code{isarray()} is meant for use in two circumstances. The first is when @@ -19350,7 +19439,7 @@ The default value for @var{category} is @code{"LC_MESSAGES"}. Return the plural form used for @var{number} of the translation of @var{string1} and @var{string2} in text domain @var{domain} for locale category @var{category}. @var{string1} is the -English singular variant of a message, and @var{string2} the English plural +English singular variant of a message, and @var{string2} is the English plural variant of the same message. The default value for @var{domain} is the current value of @code{TEXTDOMAIN}. The default value for @var{category} is @code{"LC_MESSAGES"}. @@ -19379,7 +19468,7 @@ them (i.e., to tell @command{awk} what they should do). @subsection Function Definition Syntax @quotation -@i{It's entirely fair to say that the @command{awk} syntax for local +@i{It's entirely fair to say that the awk syntax for local variable definitions is appallingly awful.} @author Brian Kernighan @end quotation @@ -19437,7 +19526,7 @@ it also enforces the second restriction. Local variables act like the empty string if referenced where a string value is required, and like zero if referenced where a numeric value -is required. This is the same as regular variables that have never been +is required. This is the same as the behavior of regular variables that have never been assigned a value. (There is more to understand about local variables; @pxref{Dynamic Typing}.) @@ -19471,7 +19560,7 @@ 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 function definition, because there is no way to name them while their -names have been taken away for the local variables. All other variables +names have been taken away for the arguments and local variables. All other variables used in the @command{awk} program can be referenced or set normally in the function's body. @@ -19538,7 +19627,7 @@ function myprint(num) @end example @noindent -To illustrate, here is an @command{awk} rule that uses our @code{myprint} +To illustrate, here is an @command{awk} rule that uses our @code{myprint()} function: @example @@ -19579,13 +19668,13 @@ in an array and start over with a new list of elements (@pxref{Delete}). Instead of having to repeat this loop everywhere that you need to clear out -an array, your program can just call @code{delarray}. +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 relatively 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. +as an input parameter and returns the string in reverse order. Recursive functions must always have a test that stops the recursion. In this case, the recursion terminates when the input string is already empty: @@ -19682,7 +19771,7 @@ an error. @cindex local variables, in a function @cindex variables, local to a function -Unlike many languages, +Unlike in many languages, there is no way to make a variable local to a @code{@{} @dots{} @code{@}} 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 @@ -19691,7 +19780,7 @@ function. To make a variable local to a function, simply declare the variable as an argument after the actual function arguments (@pxref{Definition Syntax}). -Look at the following example where variable +Look at the following example, where variable @code{i} is a global variable used by both functions @code{foo()} and @code{bar()}: @@ -19732,7 +19821,7 @@ foo's i=3 top's i=3 @end example -If you want @code{i} to be local to both @code{foo()} and @code{bar()} do as +If you want @code{i} to be local to both @code{foo()} and @code{bar()}, do as follows (the extra space before @code{i} is a coding convention to indicate that @code{i} is a local variable, not an argument): @@ -19820,7 +19909,7 @@ declare explicitly whether the arguments are passed @dfn{by value} or @dfn{by reference}. Instead, the passing convention is determined at runtime when -the function is called according to the following rule: +the function is called, according to the following rule: if the argument is an array variable, then it is passed by reference. Otherwise, the argument is passed by value. @@ -19897,7 +19986,7 @@ prints @samp{a[1] = 1, a[2] = two, a[3] = 3}, because @cindex undefined functions @cindex functions, undefined Some @command{awk} implementations allow you to call a function that -has not been defined. They only report a problem at runtime when the +has not been defined. They only report a problem at runtime, when the program actually tries to call the function. For example: @example @@ -19956,15 +20045,15 @@ makes the returned value undefined, and therefore, unpredictable. In practice, though, all versions of @command{awk} simply return the null string, which acts like zero if used in a numeric context. -A @code{return} statement with no value expression is assumed at the end of -every function definition. So if control reaches the end of the function -body, then technically, the function returns an unpredictable value. +A @code{return} statement without an @var{expression} is assumed at the end of +every function definition. So, if control reaches the end of the function +body, then technically the function returns an unpredictable value. In practice, it returns the empty string. @command{awk} does @emph{not} warn you if you use the return value of such a function. Sometimes, you want to write a function for what it does, not for what it returns. Such a function corresponds to a @code{void} function -in C, C++ or Java, or to a @code{procedure} in Ada. Thus, it may be appropriate to not +in C, C++, or Java, or to a @code{procedure} in Ada. Thus, it may be appropriate to not return any value; simply bear in mind that you should not be using the return value of such a function. @@ -20083,13 +20172,15 @@ function calls, you can specify the name of the function to call as a string variable, and then call the function. Let's look at an example. Suppose you have a file with your test scores for the classes you -are taking. The first field is the class name. The following fields +are taking, and +you wish to get the sum and the average of +your test scores. +The first field is the class name. The following fields are the functions to call to process the data, up to a ``marker'' field @samp{data:}. Following the marker, to the end of the record, are the various numeric test scores. -Here is the initial file; you wish to get the sum and the average of -your test scores: +Here is the initial file: @example @c file eg/data/class_data1 @@ -20172,9 +20263,9 @@ function sum(first, last, ret, i) @c endfile @end example -These two functions expect to work on fields; thus the parameters +These two functions expect to work on fields; thus, the parameters @code{first} and @code{last} indicate where in the fields to start and end. -Otherwise they perform the expected computations and are not unusual: +Otherwise, they perform the expected computations and are not unusual: @example @c file eg/prog/indirectcall.awk @@ -20233,8 +20324,8 @@ The ability to use indirect function calls is more powerful than you may think at first. The C and C++ languages provide ``function pointers,'' which are a mechanism for calling a function chosen at runtime. One of the most well-known uses of this ability is the C @code{qsort()} function, which sorts -an array using the famous ``quick sort'' algorithm -(see @uref{http://en.wikipedia.org/wiki/Quick_sort, the Wikipedia article} +an array using the famous ``quicksort'' algorithm +(see @uref{http://en.wikipedia.org/wiki/Quicksort, the Wikipedia article} for more information). To use this function, you supply a pointer to a comparison function. This mechanism allows you to sort arbitrary data in an arbitrary fashion. @@ -20253,11 +20344,11 @@ We can do something similar using @command{gawk}, like this: # January 2009 @c endfile - @end ignore @c file eg/lib/quicksort.awk -# quicksort --- C.A.R. Hoare's quick sort algorithm. See Wikipedia -# or almost any algorithms or computer science text + +# quicksort --- C.A.R. Hoare's quicksort algorithm. See Wikipedia +# or almost any algorithms or computer science text. @c endfile @ignore @c file eg/lib/quicksort.awk @@ -20295,7 +20386,7 @@ function quicksort_swap(data, i, j, temp) The @code{quicksort()} function receives the @code{data} array, the starting and ending indices to sort (@code{left} and @code{right}), and the name of a function that -performs a ``less than'' comparison. It then implements the quick sort algorithm. +performs a ``less than'' comparison. It then implements the quicksort algorithm. To make use of the sorting function, we return to our previous example. The first thing to do is write some comparison functions: @@ -20406,67 +20497,7 @@ $ @kbd{gawk -f quicksort.awk -f indirectcall.awk class_data2} @end example Another example where indirect functions calls are useful can be found in -processing arrays. @DBREF{Walking Arrays} presented a simple function -for ``walking'' an array of arrays. That function simply printed the -name and value of each scalar array element. However, it is easy to -generalize that function, by passing in the name of a function to call -when walking an array. The modified function looks like this: - -@example -@c file eg/lib/processarray.awk -function process_array(arr, name, process, do_arrays, i, new_name) -@{ - for (i in arr) @{ - new_name = (name "[" i "]") - if (isarray(arr[i])) @{ - if (do_arrays) - @@process(new_name, arr[i]) - process_array(arr[i], new_name, process, do_arrays) - @} else - @@process(new_name, arr[i]) - @} -@} -@c endfile -@end example - -The arguments are as follows: - -@table @code -@item arr -The array. - -@item name -The name of the array (a string). - -@item process -The name of the function to call. - -@item do_arrays -If this is true, the function can handle elements that are subarrays. -@end table - -If subarrays are to be processed, that is done before walking them further. - -When run with the following scaffolding, the function produces the same -results as does the earlier @code{walk_array()} function: - -@example -BEGIN @{ - a[1] = 1 - a[2][1] = 21 - a[2][2] = 22 - a[3] = 3 - a[4][1][1] = 411 - a[4][2] = 42 - - process_array(a, "a", "do_print", 0) -@} - -function do_print(name, element) -@{ - printf "%s = %s\n", name, element -@} -@end example +processing arrays. This is described in @ref{Walking Arrays}. Remember that you must supply a leading @samp{@@} in front of an indirect function call. @@ -20582,7 +20613,7 @@ It contains the following chapters: your own @command{awk} functions. Writing functions is important, because 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. +manageable and making programs more readable. @cindex Kernighan, Brian @cindex Plauger, P.J.@: @@ -20711,7 +20742,7 @@ often use variable names like these for their own purposes. The example programs shown in this @value{CHAPTER} all start the names of their private variables with an underscore (@samp{_}). Users generally don't use leading underscores in their variable names, so this convention immediately -decreases the chances that the variable name will be accidentally shared +decreases the chances that the variable names will be accidentally shared with the user's program. @cindex @code{_} (underscore), in names of private variables @@ -20729,8 +20760,8 @@ show how our own @command{awk} programming style has evolved and to provide some basis for this discussion.} As a final note on variable naming, if a function makes global variables -available for use by a main program, it is a good convention to start that -variable's name with a capital letter---for +available for use by a main program, it is a good convention to start those +variables' names with a capital letter---for example, @code{getopt()}'s @code{Opterr} and @code{Optind} variables (@pxref{Getopt Function}). The leading capital letter indicates that it is global, while the fact that @@ -20741,7 +20772,7 @@ not one of @command{awk}'s predefined variables, such as @code{FS}. 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 -option is useful for verifying this.} If this is not done, the variable +option is useful for verifying this.} If this is not done, the variables could accidentally be used in the user's program, leading to bugs that are very difficult to track down: @@ -20939,7 +20970,7 @@ Following is the function: @example @c file eg/lib/assert.awk -# assert --- assert that a condition is true. Otherwise exit. +# assert --- assert that a condition is true. Otherwise, exit. @c endfile @ignore @@ -20975,7 +21006,7 @@ is false, it prints a message to standard error, using the @code{string} parameter to describe the failed condition. It then sets the variable @code{_assert_exit} to one and executes the @code{exit} statement. The @code{exit} statement jumps to the @code{END} rule. If the @code{END} -rules finds @code{_assert_exit} to be true, it exits immediately. +rule finds @code{_assert_exit} to be true, it exits immediately. The purpose of the test in the @code{END} rule is to keep any other @code{END} rules from running. When an assertion fails, the @@ -21267,7 +21298,7 @@ all the strings in an array into one long string. The following function, the application programs (@pxref{Sample Programs}). -Good function design is important; this function needs to be general but it +Good function design is important; this function needs to be general, but it should also have a reasonable default behavior. It is called with an array as well as the beginning and ending indices of the elements in the array to be merged. This assumes that the array indices are numeric---a reasonable @@ -21415,7 +21446,7 @@ allowed the user to supply an optional timestamp value to use instead of the current time. @node Readfile Function -@subsection Reading a Whole File At Once +@subsection Reading a Whole File at Once Often, it is convenient to have the entire contents of a file available in memory as a single string. A straightforward but naive way to @@ -21472,13 +21503,13 @@ function readfile(file, tmp, save_rs) It works by setting @code{RS} to @samp{^$}, a regular expression that will never match if the file has contents. @command{gawk} reads data from -the file into @code{tmp} attempting to match @code{RS}. The match fails +the file into @code{tmp}, attempting to match @code{RS}. The match fails after each read, but fails quickly, such that @command{gawk} fills @code{tmp} with the entire contents of the file. (@DBXREF{Records} for information on @code{RT} and @code{RS}.) In the case that @code{file} is empty, the return value is the null -string. Thus calling code may use something like: +string. Thus, calling code may use something like: @example contents = readfile("/some/path") @@ -21489,7 +21520,7 @@ if (length(contents) == 0) This tests the result to see if it is empty or not. An equivalent test would be @samp{contents == ""}. -@xref{Extension Sample Readfile}, for an extension function that +@DBXREF{Extension Sample Readfile} for an extension function that also reads an entire file into memory. @node Shell Quoting @@ -21596,8 +21627,8 @@ The @code{BEGIN} and @code{END} rules are each executed exactly once, at the beginning and end of your @command{awk} program, respectively (@pxref{BEGIN/END}). We (the @command{gawk} authors) once had a user who mistakenly thought that the -@code{BEGIN} rule is executed at the beginning of each @value{DF} and the -@code{END} rule is executed at the end of each @value{DF}. +@code{BEGIN} rules were executed at the beginning of each @value{DF} and the +@code{END} rules were executed at the end of each @value{DF}. When informed that this was not the case, the user requested that we add new special @@ -21637,7 +21668,7 @@ END @{ endfile(FILENAME) @} This file must be loaded before the user's ``main'' program, so that the rule it supplies is executed first. -This rule relies on @command{awk}'s @code{FILENAME} variable that +This rule relies on @command{awk}'s @code{FILENAME} variable, which automatically changes for each new @value{DF}. The current @value{FN} is saved in a private variable, @code{_oldfilename}. If @code{FILENAME} does not equal @code{_oldfilename}, then a new @value{DF} is being processed and @@ -21653,7 +21684,7 @@ first @value{DF}. The program also supplies an @code{END} rule to do the final processing for the last file. Because this @code{END} rule comes before any @code{END} rules supplied in the ``main'' program, @code{endfile()} is called first. Once -again the value of multiple @code{BEGIN} and @code{END} rules should be clear. +again, the value of multiple @code{BEGIN} and @code{END} rules should be clear. @cindex @code{beginfile()} user-defined function @cindex @code{endfile()} user-defined function @@ -21701,7 +21732,7 @@ how it simplifies writing the main program. You are probably wondering, if @code{beginfile()} and @code{endfile()} functions can do the job, why does @command{gawk} have -@code{BEGINFILE} and @code{ENDFILE} patterns (@pxref{BEGINFILE/ENDFILE})? +@code{BEGINFILE} and @code{ENDFILE} patterns? Good question. Normally, if @command{awk} cannot open a file, this causes an immediate fatal error. In this case, there is no way for a @@ -21710,6 +21741,7 @@ calling it relies on the file being open and at the first record. Thus, the main reason for @code{BEGINFILE} is to give you a ``hook'' to catch files that cannot be processed. @code{ENDFILE} exists for symmetry, and because it provides an easy way to do per-file cleanup processing. +For more information, refer to @ref{BEGINFILE/ENDFILE}. @docbook </sidebar> @@ -21724,7 +21756,7 @@ and because it provides an easy way to do per-file cleanup processing. You are probably wondering, if @code{beginfile()} and @code{endfile()} functions can do the job, why does @command{gawk} have -@code{BEGINFILE} and @code{ENDFILE} patterns (@pxref{BEGINFILE/ENDFILE})? +@code{BEGINFILE} and @code{ENDFILE} patterns? Good question. Normally, if @command{awk} cannot open a file, this causes an immediate fatal error. In this case, there is no way for a @@ -21733,6 +21765,7 @@ calling it relies on the file being open and at the first record. Thus, the main reason for @code{BEGINFILE} is to give you a ``hook'' to catch files that cannot be processed. @code{ENDFILE} exists for symmetry, and because it provides an easy way to do per-file cleanup processing. +For more information, refer to @ref{BEGINFILE/ENDFILE}. @end cartouche @end ifnotdocbook @@ -21740,7 +21773,7 @@ and because it provides an easy way to do per-file cleanup processing. @subsection Rereading the Current File @cindex files, reading -Another request for a new built-in function was for a @code{rewind()} +Another request for a new built-in function was for a function that would make it possible to reread the current file. The requesting user didn't want to have to use @code{getline} (@pxref{Getline}) @@ -21749,7 +21782,7 @@ inside a loop. However, as long as you are not in the @code{END} rule, it is quite easy to arrange to immediately close the current input file and then start over with it from the top. -For lack of a better name, we'll call it @code{rewind()}: +For lack of a better name, we'll call the function @code{rewind()}: @cindex @code{rewind()} user-defined function @example @@ -21842,16 +21875,16 @@ See also @ref{ARGC and ARGV}. Because @command{awk} variable names only allow the English letters, the regular expression check purposely does not use character classes such as @samp{[:alpha:]} and @samp{[:alnum:]} -(@pxref{Bracket Expressions}) +(@pxref{Bracket Expressions}). @node Empty Files -@subsection Checking for Zero-length Files +@subsection Checking for Zero-Length Files All known @command{awk} implementations silently skip over zero-length files. This is a by-product of @command{awk}'s implicit read-a-record-and-match-against-the-rules loop: when @command{awk} tries to read a record from an empty file, it immediately receives an -end of file indication, closes the file, and proceeds on to the next +end-of-file indication, closes the file, and proceeds on to the next command-line @value{DF}, @emph{without} executing any user-level @command{awk} program code. @@ -21916,7 +21949,7 @@ Occasionally, you might not want @command{awk} to process command-line variable assignments (@pxref{Assignment Options}). In particular, if you have a @value{FN} that contains an @samp{=} character, -@command{awk} treats the @value{FN} as an assignment, and does not process it. +@command{awk} treats the @value{FN} as an assignment and does not process it. Some users have suggested an additional command-line option for @command{gawk} to disable command-line assignments. However, some simple programming with @@ -22278,8 +22311,8 @@ BEGIN @{ @c endfile @end example -The rest of the @code{BEGIN} rule is a simple test program. Here is the -result of two sample runs of the test program: +The rest of the @code{BEGIN} rule is a simple test program. Here are the +results of two sample runs of the test program: @example $ @kbd{awk -f getopt.awk -v _getopt_test=1 -- -a -cbARG bax -x} @@ -22337,7 +22370,7 @@ use @code{getopt()} to process their arguments. The @code{PROCINFO} array (@pxref{Built-in Variables}) provides access to the current user's real and effective user and group ID -numbers, and if available, the user's supplementary group set. +numbers, and, if available, the user's supplementary group set. However, because these are numbers, they do not provide very useful information to the average user. There needs to be some way to find the user information associated with the user and group ID numbers. This @@ -22357,7 +22390,7 @@ kept. Instead, it provides the @code{<pwd.h>} header file and several C language subroutines for obtaining user information. The primary function is @code{getpwent()}, for ``get password entry.'' The ``password'' comes from the original user database file, -@file{/etc/passwd}, which stores user information, along with the +@file{/etc/passwd}, which stores user information along with the encrypted passwords (hence the name). @cindex @command{pwcat} program @@ -22456,7 +22489,7 @@ The user's encrypted password. This may not be available on some systems. @item User-ID The user's numeric user ID number. -(On some systems, it's a C @code{long}, and not an @code{int}. Thus +(On some systems, it's a C @code{long}, and not an @code{int}. Thus, we cast it to @code{long} for all cases.) @item Group-ID @@ -22583,7 +22616,7 @@ The code that checks for using @code{FPAT}, using @code{using_fpat} 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. +the lines into fields, and then store the lines into each array as necessary. When the loop is done, @code{@w{_pw_init()}} cleans up by closing the pipeline, setting @code{@w{_pw_inited}} to one, and restoring @code{FS} (and @code{FIELDWIDTHS} or @code{FPAT} @@ -22800,7 +22833,7 @@ it is usually empty or set to @samp{*}. @item Group ID Number The group's numeric group ID number; the association of name to number must be unique within the file. -(On some systems it's a C @code{long}, and not an @code{int}. Thus +(On some systems it's a C @code{long}, and not an @code{int}. Thus, we cast it to @code{long} for all cases.) @item Group Member List @@ -22914,32 +22947,32 @@ The @code{@w{_gr_init()}} function first saves @code{FS}, @code{$0}, and then sets @code{FS} and @code{RS} to the correct values for scanning the group information. It also takes care to note whether @code{FIELDWIDTHS} or @code{FPAT} -is being used, and to restore the appropriate field splitting mechanism. +is being used, and to restore the appropriate field-splitting mechanism. -The group information is stored is several associative arrays. +The group information is stored in several associative arrays. The arrays are indexed by group name (@code{@w{_gr_byname}}), by group ID number (@code{@w{_gr_bygid}}), and by position in the database (@code{@w{_gr_bycount}}). There is an additional array indexed by username (@code{@w{_gr_groupsbyuser}}), which is a space-separated list of groups to which each user belongs. -Unlike the user database, it is possible to have multiple records in the +Unlike in the user database, it is possible to have multiple records in the database for the same group. This is common when a group has a large number of members. A pair of such entries might look like the following: @example -tvpeople:*:101:johny,jay,arsenio +tvpeople:*:101:johnny,jay,arsenio tvpeople:*:101:david,conan,tom,joan @end example For this reason, @code{_gr_init()} looks to see if a group name or -group ID number is already seen. If it is, the usernames are -simply concatenated onto the previous list of users.@footnote{There is actually a +group ID number is already seen. If so, the usernames are +simply concatenated onto the previous list of users.@footnote{There is a subtle problem with the code just presented. Suppose that the first time there were no names. This code adds the names with a leading comma. It also doesn't check that there is a @code{$4}.} Finally, @code{_gr_init()} closes the pipeline to @command{grcat}, restores -@code{FS} (and @code{FIELDWIDTHS} or @code{FPAT} if necessary), @code{RS}, and @code{$0}, +@code{FS} (and @code{FIELDWIDTHS} or @code{FPAT}, if necessary), @code{RS}, and @code{$0}, initializes @code{_gr_count} to zero (it is used later), and makes @code{_gr_inited} nonzero. @@ -23039,12 +23072,12 @@ uses these functions. @DBREF{Arrays of Arrays} described how @command{gawk} provides arrays of arrays. In particular, any element of -an array may be either a scalar, or another array. The +an array may be either a scalar or another array. The @code{isarray()} function (@pxref{Type Functions}) lets you distinguish an array from a scalar. The following function, @code{walk_array()}, recursively traverses -an array, printing each element's indices and value. +an array, printing the element indices and values. You call it with the array and a string representing the name of the array: @@ -23095,6 +23128,66 @@ $ @kbd{gawk -f walk_array.awk} @print{} a[4][2] = 42 @end example +The function just presented simply prints the +name and value of each scalar array element. However, it is easy to +generalize it, by passing in the name of a function to call +when walking an array. The modified function looks like this: + +@example +@c file eg/lib/processarray.awk +function process_array(arr, name, process, do_arrays, i, new_name) +@{ + for (i in arr) @{ + new_name = (name "[" i "]") + if (isarray(arr[i])) @{ + if (do_arrays) + @@process(new_name, arr[i]) + process_array(arr[i], new_name, process, do_arrays) + @} else + @@process(new_name, arr[i]) + @} +@} +@c endfile +@end example + +The arguments are as follows: + +@table @code +@item arr +The array. + +@item name +The name of the array (a string). + +@item process +The name of the function to call. + +@item do_arrays +If this is true, the function can handle elements that are subarrays. +@end table + +If subarrays are to be processed, that is done before walking them further. + +When run with the following scaffolding, the function produces the same +results as does the earlier version of @code{walk_array()}: + +@example +BEGIN @{ + a[1] = 1 + a[2][1] = 21 + a[2][2] = 22 + a[3] = 3 + a[4][1][1] = 411 + a[4][2] = 42 + + process_array(a, "a", "do_print", 0) +@} + +function do_print(name, element) +@{ + printf "%s = %s\n", name, element +@} +@end example @node Library Functions Summary @section Summary @@ -23116,24 +23209,24 @@ The functions presented here fit into the following categories: @c nested list @table @asis @item General problems -Number-to-string conversion, assertions, rounding, random number +Number-to-string conversion, testing assertions, rounding, random number generation, converting characters to numbers, joining strings, getting easily usable time-of-day information, and reading a whole file in -one shot. +one shot @item Managing @value{DF}s Noting @value{DF} boundaries, rereading the current file, checking for readable files, checking for zero-length files, and treating assignments -as @value{FN}s. +as @value{FN}s @item Processing command-line options -An @command{awk} version of the standard C @code{getopt()} function. +An @command{awk} version of the standard C @code{getopt()} function @item Reading the user and group databases -Two sets of routines that parallel the C library versions. +Two sets of routines that parallel the C library versions @item Traversing arrays of arrays -A simple function to traverse an array of arrays to any depth. +Two functions that traverse an array of arrays to any depth @end table @c end nested list @@ -23228,10 +23321,10 @@ in this @value{CHAPTER}. The second presents @command{awk} versions of several common POSIX utilities. These are programs that you are hopefully already familiar with, -and therefore, whose problems are understood. +and therefore whose problems are understood. By reimplementing these programs in @command{awk}, you can focus on the @command{awk}-related aspects of solving -the programming problem. +the programming problems. The third is a grab bag of interesting programs. These solve a number of different data-manipulation and management @@ -23291,7 +23384,7 @@ It should be noted that these programs are not necessarily intended to replace the installed versions on your system. Nor may all of these programs be fully compliant with the most recent POSIX standard. This is not a problem; their -purpose is to illustrate @command{awk} language programming for ``real world'' +purpose is to illustrate @command{awk} language programming for ``real-world'' tasks. The programs are presented in alphabetical order. @@ -23320,7 +23413,7 @@ but you may supply a command-line option to change the field @dfn{delimiter} (i.e., the field-separator character). @command{cut}'s definition of fields is less general than @command{awk}'s. -A common use of @command{cut} might be to pull out just the login name of +A common use of @command{cut} might be to pull out just the login names of logged-on users from the output of @command{who}. For example, the following pipeline generates a sorted, unique list of the logged-on users: @@ -23829,7 +23922,7 @@ successful or unsuccessful match. If the line does not match, the @code{next} statement just moves on to the next record. A number of additional tests are made, but they are only done if we -are not counting lines. First, if the user only wants exit status +are not counting lines. First, if the user only wants the exit status (@code{no_print} is true), then it is enough to know that @emph{one} line in this file matched, and we can skip on to the next file with @code{nextfile}. Similarly, if we are only printing @value{FN}s, we can @@ -23870,7 +23963,7 @@ if necessary: @end example The @code{END} rule takes care of producing the correct exit status. If -there are no matches, the exit status is one; otherwise it is zero: +there are no matches, the exit status is one; otherwise, it is zero: @example @c file eg/prog/egrep.awk @@ -23922,7 +24015,8 @@ Here is a simple version of @command{id} written in @command{awk}. It uses the user database library functions (@pxref{Passwd Functions}) and the group database library functions -(@pxref{Group Functions}): +(@pxref{Group Functions}) +from @ref{Library Functions}. The program is fairly straightforward. All the work is done in the @code{BEGIN} rule. The user and group ID numbers are obtained from @@ -24049,8 +24143,8 @@ By default, the output files are named @file{xaa}, @file{xab}, and so on. Each file has 1,000 lines in it, with the likely exception of the last file. To change the number of lines in each file, supply a number on the command line -preceded with a minus (e.g., @samp{-500} for files with 500 lines in them -instead of 1,000). To change the name of the output files to something like +preceded with a minus sign (e.g., @samp{-500} for files with 500 lines in them +instead of 1,000). To change the names of the output files to something like @file{myfileaa}, @file{myfileab}, and so on, supply an additional argument that specifies the @value{FN} prefix. @@ -24889,7 +24983,7 @@ checking and setting of defaults: the delay, the count, and the message to print. If the user supplied a message without the ASCII BEL character (known as the ``alert'' character, @code{"\a"}), then it is added to the message. (On many systems, printing the ASCII BEL generates an -audible alert. Thus when the alarm goes off, the system calls attention +audible alert. Thus, when the alarm goes off, the system calls attention to itself in case the user is not looking at the computer.) Just for a change, this program uses a @code{switch} statement (@pxref{Switch Statement}), but the processing could be done with a series of @@ -25058,7 +25152,7 @@ to @command{gawk}. @c at least theoretically The following program was written to prove that character transliteration could be done with a user-level -function. This program is not as complete as the system @command{tr} utility +function. This program is not as complete as the system @command{tr} utility, but it does most of the job. The @command{translate} program was written long before @command{gawk} @@ -25070,13 +25164,13 @@ takes three arguments: @table @code @item from -A list of characters from which to translate. +A list of characters from which to translate @item to -A list of characters to which to translate. +A list of characters to which to translate @item target -The string on which to do the translation. +The string on which to do the translation @end table Associative arrays make the translation part fairly easy. @code{t_ar} holds @@ -25085,7 +25179,7 @@ loop goes through @code{from}, one character at a time. For each character in @code{from}, if the character appears in @code{target}, it is replaced with the corresponding @code{to} character. -The @code{translate()} function calls @code{stranslate()} using @code{$0} +The @code{translate()} function calls @code{stranslate()}, using @code{$0} as the target. The main program sets two global variables, @code{FROM} and @code{TO}, from the command line, and then changes @code{ARGV} so that @command{awk} reads from the standard input. @@ -25107,7 +25201,7 @@ Finally, the processing rule simply calls @code{translate()} for each record: @c endfile @end ignore @c file eg/prog/translate.awk -# Bugs: does not handle things like: tr A-Z a-z, it has +# Bugs: does not handle things like tr A-Z a-z; it has # to be spelled out. However, if `to' is shorter than `from', # the last character in `to' is used for the rest of `from'. @@ -25183,7 +25277,7 @@ for inspiration. @cindex printing, mailing labels @cindex mailing labels@comma{} printing -Here is a ``real world''@footnote{``Real world'' is defined as +Here is a ``real-world''@footnote{``Real world'' is defined as ``a program actually used to get something done.''} program. This script reads lists of names and @@ -25192,7 +25286,7 @@ on it, two across and 10 down. The addresses are guaranteed to be no more than five lines of data. Each address is separated from the next by a blank line. -The basic idea is to read 20 labels worth of data. Each line of each label +The basic idea is to read 20 labels' worth of data. Each line of each label is stored in the @code{line} array. The single rule takes care of filling the @code{line} array and printing the page when 20 labels have been read. @@ -25215,12 +25309,12 @@ of lines on the page Most of the work is done in the @code{printpage()} function. The label lines are stored sequentially in the @code{line} array. But they -have to print horizontally; @code{line[1]} next to @code{line[6]}, +have to print horizontally: @code{line[1]} next to @code{line[6]}, @code{line[2]} next to @code{line[7]}, and so on. Two loops accomplish this. The outer loop, controlled by @code{i}, steps through every 10 lines of data; this is each row of labels. The inner loop, controlled by @code{j}, goes through the lines within the row. -As @code{j} goes from 0 to 4, @samp{i+j} is the @code{j}-th line in +As @code{j} goes from 0 to 4, @samp{i+j} is the @code{j}th line in the row, and @samp{i+j+5} is the entry next to it. The output ends up looking something like this: @@ -25338,8 +25432,8 @@ END @{ @} @end example -The program relies on @command{awk}'s default field splitting -mechanism to break each line up into ``words,'' and uses an +The program relies on @command{awk}'s default field-splitting +mechanism to break each line up into ``words'' and uses an associative array named @code{freq}, indexed by each word, to count the number of times the word occurs. In the @code{END} rule, it prints the counts. @@ -25444,7 +25538,7 @@ to use the @command{sort} program. @cindex lines, duplicate@comma{} removing The @command{uniq} program -(@pxref{Uniq Program}), +(@pxref{Uniq Program}) removes duplicate lines from @emph{sorted} data. Suppose, however, you need to remove duplicate lines from a @value{DF} but @@ -25531,7 +25625,7 @@ Texinfo input file into separate files. @cindex Texinfo This @value{DOCUMENT} is written in @uref{http://www.gnu.org/software/texinfo/, Texinfo}, -the GNU project's document formatting language. +the GNU Project's document formatting language. A single Texinfo source file can be used to produce both printed documentation, with @TeX{}, and online documentation. @ifnotinfo @@ -25590,7 +25684,7 @@ The Texinfo file looks something like this: @example @dots{} -This program has a @@code@{BEGIN@} rule, +This program has a @@code@{BEGIN@} rule that prints a nice message: @@example @@ -25619,7 +25713,7 @@ exits with a zero exit status, signifying OK: @cindex @code{extract.awk} program @example @c file eg/prog/extract.awk -# extract.awk --- extract files and run programs from texinfo files +# extract.awk --- extract files and run programs from Texinfo files @c endfile @ignore @c file eg/prog/extract.awk @@ -25660,12 +25754,12 @@ The second rule handles moving data into files. It verifies that a @value{FN} is given in the directive. If the file named is not the current file, then the current file is closed. Keeping the current file open until a new file is encountered allows the use of the @samp{>} -redirection for printing the contents, keeping open file management +redirection for printing the contents, keeping open-file management simple. The @code{for} loop does the work. It reads lines using @code{getline} (@pxref{Getline}). -For an unexpected end of file, it calls the @code{@w{unexpected_eof()}} +For an unexpected end-of-file, it calls the @code{@w{unexpected_eof()}} function. If the line is an ``endfile'' line, then it breaks out of the loop. If the line is an @samp{@@group} or @samp{@@end group} line, then it @@ -25767,7 +25861,7 @@ END @{ @cindex @command{sed} utility @cindex stream editors -The @command{sed} utility is a stream editor, a program that reads a +The @command{sed} utility is a @dfn{stream editor}, a program that reads a stream of data, makes changes to it, and passes it on. It is often used to make global changes to a large file or to a stream of data generated by a pipeline of commands. @@ -25912,7 +26006,7 @@ includes don't accidentally include a library function twice. @command{igawk} should behave just like @command{gawk} externally. This means it should accept all of @command{gawk}'s command-line arguments, including the ability to have multiple source files specified via -@option{-f}, and the ability to mix command-line and library source files. +@option{-f} and the ability to mix command-line and library source files. The program is written using the POSIX Shell (@command{sh}) command language.@footnote{Fully explaining the @command{sh} language is beyond @@ -25951,7 +26045,7 @@ Run the expanded program with @command{gawk} and any other original command-line arguments that the user supplied (such as the @value{DF} names). @end enumerate -This program uses shell variables extensively: for storing command-line arguments, +This program uses shell variables extensively: for storing command-line arguments and the text of the @command{awk} program that will expand the user's program, for the user's original program, and for the expanded program. Doing so removes some potential problems that might arise were we to use temporary files instead, @@ -26268,22 +26362,7 @@ Save the results of this processing in the shell variable The last step is to call @command{gawk} with the expanded program, along with the original -options and command-line arguments that the user supplied. - -@c this causes more problems than it solves, so leave it out. -@ignore -The special file @file{/dev/null} is passed as a @value{DF} to @command{gawk} -to handle an interesting case. Suppose that the user's program only has -a @code{BEGIN} rule and there are no @value{DF}s to read. -The program should exit without reading any @value{DF}s. -However, suppose that an included library file defines an @code{END} -rule of its own. In this case, @command{gawk} will hang, reading standard -input. In order to avoid this, @file{/dev/null} is explicitly added to the -command line. Reading from @file{/dev/null} always returns an immediate -end of file indication. - -@c Hmm. Add /dev/null if $# is 0? Still messes up ARGV. Sigh. -@end ignore +options and command-line arguments that the user supplied: @example @c file eg/prog/igawk.sh @@ -26349,8 +26428,8 @@ the same letters Column 2, Problem C, of Jon Bentley's @cite{Programming Pearls}, Second Edition, presents an elegant algorithm. The idea is to give words that are anagrams a common signature, sort all the words together by their -signature, and then print them. Dr.@: Bentley observes that taking the -letters in each word and sorting them produces that common signature. +signatures, and then print them. Dr.@: Bentley observes that taking the +letters in each word and sorting them produces those common signatures. The following program uses arrays of arrays to bring together words with the same signature and array sorting to print the words @@ -26359,8 +26438,8 @@ in sorted order: @cindex @code{anagram.awk} program @example @c file eg/prog/anagram.awk -# anagram.awk --- An implementation of the anagram finding algorithm -# from Jon Bentley's "Programming Pearls", 2nd edition. +# anagram.awk --- An implementation of the anagram-finding algorithm +# from Jon Bentley's "Programming Pearls," 2nd edition. # Addison Wesley, 2000, ISBN 0-201-65788-0. # Column 2, Problem C, section 2.8, pp 18-20. @c endfile @@ -26408,7 +26487,7 @@ sorts the letters, and then joins them back together: @example @c file eg/prog/anagram.awk -# word2key --- split word apart into letters, sort, joining back together +# word2key --- split word apart into letters, sort, and join back together function word2key(word, a, i, n, result) @{ @@ -26603,12 +26682,13 @@ characters. The ability to use @code{split()} with the empty string as the separator can considerably simplify such tasks. @item -The library functions from @ref{Library Functions}, proved their -usefulness for a number of real (if small) programs. +The examples here demonstrate the usefulness of the library +functions from @DBREF{Library Functions} +for a number of real (if small) programs. @item Besides reinventing POSIX wheels, other programs solved a selection of -interesting problems, such as finding duplicates words in text, printing +interesting problems, such as finding duplicate words in text, printing mailing labels, and finding anagrams. @end itemize @@ -26804,18 +26884,18 @@ a violent psychopath who knows where you live.} This @value{CHAPTER} discusses advanced features in @command{gawk}. It's a bit of a ``grab bag'' of items that are otherwise unrelated to each other. -First, a command-line option allows @command{gawk} to recognize +First, we look at a command-line option that allows @command{gawk} to recognize nondecimal numbers in input data, not just in @command{awk} programs. Then, @command{gawk}'s special features for sorting arrays are presented. Next, two-way I/O, discussed briefly in earlier parts of this @value{DOCUMENT}, is described in full detail, along with the basics -of TCP/IP networking. Finally, @command{gawk} +of TCP/IP networking. Finally, we see how @command{gawk} can @dfn{profile} an @command{awk} program, making it possible to tune it for performance. @c FULLXREF ON -A number of advanced features require separate @value{CHAPTER}s of their +Additional advanced features are discussed in separate @value{CHAPTER}s of their own: @itemize @value{BULLET} @@ -26909,7 +26989,8 @@ This option may disappear in a future version of @command{gawk}. @node Array Sorting @section Controlling Array Traversal and Array Sorting -@command{gawk} lets you control the order in which a @samp{for (i in array)} +@command{gawk} lets you control the order in which a +@samp{for (@var{indx} in @var{array})} loop traverses an array. In addition, two built-in functions, @code{asort()} and @code{asorti()}, @@ -26925,7 +27006,7 @@ to order the elements during sorting. @node Controlling Array Traversal @subsection Controlling Array Traversal -By default, the order in which a @samp{for (i in array)} loop +By default, the order in which a @samp{for (@var{indx} in @var{array})} loop scans an array is not defined; it is generally based upon the internal implementation of arrays inside @command{awk}. @@ -26954,23 +27035,23 @@ function comp_func(i1, v1, i2, v2) @} @end example -Here, @var{i1} and @var{i2} are the indices, and @var{v1} and @var{v2} +Here, @code{i1} and @code{i2} are the indices, and @code{v1} and @code{v2} are the corresponding values of the two elements being compared. -Either @var{v1} or @var{v2}, or both, can be arrays if the array being +Either @code{v1} or @code{v2}, or both, can be arrays if the array being traversed contains subarrays as values. (@DBXREF{Arrays of Arrays} for more information about subarrays.) The three possible return values are interpreted as follows: @table @code @item comp_func(i1, v1, i2, v2) < 0 -Index @var{i1} comes before index @var{i2} during loop traversal. +Index @code{i1} comes before index @code{i2} during loop traversal. @item comp_func(i1, v1, i2, v2) == 0 -Indices @var{i1} and @var{i2} -come together but the relative order with respect to each other is undefined. +Indices @code{i1} and @code{i2} +come together, but the relative order with respect to each other is undefined. @item comp_func(i1, v1, i2, v2) > 0 -Index @var{i1} comes after index @var{i2} during loop traversal. +Index @code{i1} comes after index @code{i2} during loop traversal. @end table Our first comparison function can be used to scan an array in @@ -27131,7 +27212,7 @@ As already mentioned, the order of the indices is arbitrary if two elements compare equal. This is usually not a problem, but letting the tied elements come out in arbitrary order can be an issue, especially when comparing item values. The partial ordering of the equal elements -may change the next time the array is traversed, if other elements are added or +may change the next time the array is traversed, if other elements are added to or removed from the array. One way to resolve ties when comparing elements with otherwise equal values is to include the indices in the comparison rules. Note that doing this may make the loop traversal less efficient, @@ -27174,7 +27255,7 @@ equivalent or distinct. Another point to keep in mind is that in the case of subarrays, the element values can themselves be arrays; a production comparison function should use the @code{isarray()} function -(@pxref{Type Functions}), +(@pxref{Type Functions}) to check for this, and choose a defined sorting order for subarrays. All sorting based on @code{PROCINFO["sorted_in"]} @@ -27182,7 +27263,7 @@ is disabled in POSIX mode, because the @code{PROCINFO} array is not special in that case. As a side note, sorting the array indices before traversing -the array has been reported to add 15% to 20% overhead to the +the array has been reported to add a 15% to 20% overhead to the execution time of @command{awk} programs. For this reason, sorted array traversal is not the default. @@ -27241,7 +27322,7 @@ However, the @code{source} array is not affected. Often, what's needed is to sort on the values of the @emph{indices} instead of the values of the elements. To do that, use the @code{asorti()} function. The interface and behavior are identical to -that of @code{asort()}, except that the index values are used for sorting, +that of @code{asort()}, except that the index values are used for sorting and become the values of the result array: @example @@ -27276,8 +27357,8 @@ it chooses}, taking into account just the indices, just the values, or both. This is extremely powerful. Once the array is sorted, @code{asort()} takes the @emph{values} in -their final order, and uses them to fill in the result array, whereas -@code{asorti()} takes the @emph{indices} in their final order, and uses +their final order and uses them to fill in the result array, whereas +@code{asorti()} takes the @emph{indices} in their final order and uses them to fill in the result array. @cindex reference counting, sorting arrays @@ -27574,7 +27655,7 @@ service name. @cindex @command{gawk}, @code{ERRNO} variable in @cindex @code{ERRNO} variable @quotation NOTE -Failure in opening a two-way socket will result in a non-fatal error +Failure in opening a two-way socket will result in a nonfatal error being returned to the calling code. The value of @code{ERRNO} indicates the error (@pxref{Auto-set}). @end quotation @@ -27591,19 +27672,19 @@ BEGIN @{ @end example This program reads the current date and time from the local system's -TCP @samp{daytime} server. +TCP @code{daytime} server. It then prints the results and closes the connection. Because this topic is extensive, the use of @command{gawk} for TCP/IP programming is documented separately. @ifinfo See -@inforef{Top, , General Introduction, gawkinet, TCP/IP Internetworking with @command{gawk}}, +@inforef{Top, , General Introduction, gawkinet, @value{GAWKINETTITLE}}, @end ifinfo @ifnotinfo See @uref{http://www.gnu.org/software/gawk/manual/gawkinet/, -@cite{TCP/IP Internetworking with @command{gawk}}}, +@cite{@value{GAWKINETTITLE}}}, which comes as part of the @command{gawk} distribution, @end ifnotinfo for a much more complete introduction and discussion, as well as @@ -27679,9 +27760,9 @@ 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 +@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.) +in the morning to work): @cindex @code{BEGIN} pattern, and profiling @cindex @code{END} pattern, and profiling @@ -27741,8 +27822,8 @@ They are as follows: @item The program is printed in the order @code{BEGIN} rules, @code{BEGINFILE} rules, -pattern/action rules, -@code{ENDFILE} rules, @code{END} rules and functions, listed +pattern--action rules, +@code{ENDFILE} rules, @code{END} rules, and functions, listed alphabetically. Multiple @code{BEGIN} and @code{END} rules retain their separate identities, as do @@ -27750,7 +27831,7 @@ multiple @code{BEGINFILE} and @code{ENDFILE} rules. @cindex patterns, counts, in a profile @item -Pattern-action rules have two counts. +Pattern--action rules have two counts. The first count, to the left of the rule, shows how many times the rule's pattern was @emph{tested}. The second count, to the right of the rule's opening left brace @@ -27817,13 +27898,13 @@ the target of a redirection isn't a scalar, it gets parenthesized. @command{gawk} supplies leading comments in front of the @code{BEGIN} and @code{END} rules, the @code{BEGINFILE} and @code{ENDFILE} rules, -the pattern/action rules, and the functions. +the pattern--action rules, and the functions. @end itemize The profiled version of your program may not look exactly like what you typed when you wrote it. This is because @command{gawk} creates the -profiled version by ``pretty printing'' its internal representation of +profiled version by ``pretty-printing'' its internal representation of the program. The advantage to this is that @command{gawk} can produce a standard representation. Also, things such as: @@ -27906,16 +27987,16 @@ If you use the @code{HUP} signal instead of the @code{USR1} signal, @cindex @code{SIGQUIT} signal (MS-Windows) @cindex signals, @code{QUIT}/@code{SIGQUIT} (MS-Windows) When @command{gawk} runs on MS-Windows systems, it uses the -@code{INT} and @code{QUIT} signals for producing the profile and, in +@code{INT} and @code{QUIT} signals for producing the profile, and in the case of the @code{INT} signal, @command{gawk} exits. This is because these systems don't support the @command{kill} command, so the only signals you can deliver to a program are those generated by the keyboard. The @code{INT} signal is generated by the -@kbd{Ctrl-@key{C}} or @kbd{Ctrl-@key{BREAK}} key, while the -@code{QUIT} signal is generated by the @kbd{Ctrl-@key{\}} key. +@kbd{Ctrl-c} or @kbd{Ctrl-BREAK} key, while the +@code{QUIT} signal is generated by the @kbd{Ctrl-\} key. Finally, @command{gawk} also accepts another option, @option{--pretty-print}. -When called this way, @command{gawk} ``pretty prints'' the program into +When called this way, @command{gawk} ``pretty-prints'' the program into @file{awkprof.out}, without any execution counts. @quotation NOTE @@ -27969,7 +28050,7 @@ optionally, close off one side of the two-way communications. @item By using special @value{FN}s with the @samp{|&} operator, you can open a -TCP/IP (or UDP/IP) connection to remote hosts in the Internet. @command{gawk} +TCP/IP (or UDP/IP) connection to remote hosts on the Internet. @command{gawk} supports both IPv4 and IPv6. @item @@ -27979,7 +28060,7 @@ you tune them more easily. Sending the @code{USR1} signal while profiling cause @command{gawk} to dump the profile and keep going, including a function call stack. @item -You can also just ``pretty print'' the program. This currently also runs +You can also just ``pretty-print'' the program. This currently also runs the program, but that will change in the next major release. @end itemize @@ -28028,7 +28109,7 @@ a requirement. @cindex localization @dfn{Internationalization} means writing (or modifying) a program once, in such a way that it can use multiple languages without requiring -further source-code changes. +further source code changes. @dfn{Localization} means providing the data necessary for an internationalized program to work in a particular language. Most typically, these terms refer to features such as the language @@ -28043,7 +28124,7 @@ monetary values are printed and read. @cindex @command{gettext} library @command{gawk} uses GNU @command{gettext} to provide its internationalization features. -The facilities in GNU @command{gettext} focus on messages; strings printed +The facilities in GNU @command{gettext} focus on messages: strings printed by a program, either directly or via formatting with @code{printf} or @code{sprintf()}.@footnote{For some operating systems, the @command{gawk} port doesn't support GNU @command{gettext}. @@ -28234,7 +28315,7 @@ All of the above. (Not too useful in the context of @command{gettext}.) @section Internationalizing @command{awk} Programs @cindex @command{awk} programs, internationalizing -@command{gawk} provides the following variables and functions for +@command{gawk} provides the following variables for internationalization: @table @code @@ -28250,7 +28331,12 @@ value is @code{"messages"}. String constants marked with a leading underscore are candidates for translation at runtime. String constants without a leading underscore are not translated. +@end table + +@command{gawk} provides the following functions for +internationalization: +@table @code @cindexgawkfunc{dcgettext} @item @code{dcgettext(@var{string}} [@code{,} @var{domain} [@code{,} @var{category}]]@code{)} Return the translation of @var{string} in @@ -28307,15 +28393,7 @@ If @var{directory} is the null string (@code{""}), then given @var{domain}. @end table -To use these facilities in your @command{awk} program, follow the steps -outlined in -@ifnotinfo -the previous @value{SECTION}, -@end ifnotinfo -@ifinfo -@ref{Explaining gettext}, -@end ifinfo -like so: +To use these facilities in your @command{awk} program, follow these steps: @enumerate @cindex @code{BEGIN} pattern, @code{TEXTDOMAIN} variable and @@ -28598,7 +28676,7 @@ the null string (@code{""}) as its value, leaving the original string constant a the result. @item -By defining ``dummy'' functions to replace @code{dcgettext()}, @code{dcngettext()} +By defining ``dummy'' functions to replace @code{dcgettext()}, @code{dcngettext()}, and @code{bindtextdomain()}, the @command{awk} program can be made to run, but all the messages are output in the original language. For example: @@ -28782,11 +28860,11 @@ using the GNU @command{gettext} package. (GNU @command{gettext} is described in complete detail in @ifinfo -@inforef{Top, , GNU @command{gettext} utilities, gettext, GNU gettext tools}.) +@inforef{Top, , GNU @command{gettext} utilities, gettext, GNU @command{gettext} utilities}.) @end ifinfo @ifnotinfo @uref{http://www.gnu.org/software/gettext/manual/, -@cite{GNU gettext tools}}.) +@cite{GNU @command{gettext} utilities}}.) @end ifnotinfo As of this writing, the latest version of GNU @command{gettext} is @uref{ftp://ftp.gnu.org/gnu/gettext/gettext-0.19.4.tar.gz, @@ -28802,7 +28880,7 @@ and fatal errors in the local language. @itemize @value{BULLET} @item Internationalization means writing a program such that it can use multiple -languages without requiring source-code changes. Localization means +languages without requiring source code changes. Localization means providing the data necessary for an internationalized program to work in a particular language. @@ -28819,9 +28897,9 @@ file, and the @file{.po} files are compiled into @file{.gmo} files for use at runtime. @item -You can use position specifications with @code{sprintf()} and +You can use positional specifications with @code{sprintf()} and @code{printf} to rearrange the placement of argument values in formatted -strings and output. This is useful for the translations of format +strings and output. This is useful for the translation of format control strings. @item @@ -28877,8 +28955,7 @@ the discussion of debugging in @command{gawk}. @subsection Debugging in General (If you have used debuggers in other languages, you may want to skip -ahead to the next section on the specific features of the @command{gawk} -debugger.) +ahead to @ref{Awk Debugging}.) Of course, a debugging program cannot remove bugs for you, because it has no way of knowing what you or your users consider a ``bug'' versus a @@ -28969,10 +29046,10 @@ and usually find the errant code quite quickly. @end table @node Awk Debugging -@subsection Awk Debugging +@subsection @command{awk} Debugging Debugging an @command{awk} program has some specific aspects that are -not shared with other programming languages. +not shared with programs written in other languages. First of all, the fact that @command{awk} programs usually take input line by line from a file or files and operate on those lines using specific @@ -28988,7 +29065,7 @@ to look at the individual primitive instructions carried out by the higher-level @command{awk} commands. @node Sample Debugging Session -@section Sample Debugging Session +@section Sample @command{gawk} Debugging Session @cindex sample debugging session In order to illustrate the use of @command{gawk} as a debugger, let's look at a sample @@ -29007,8 +29084,8 @@ as our example. @cindex debugger, how to start Starting the debugger is almost exactly like running @command{gawk} normally, -except you have to pass an additional option @option{--debug}, or the -corresponding short option @option{-D}. The file(s) containing the +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.) @@ -29021,7 +29098,7 @@ $ @kbd{gawk -D -f getopt.awk -f join.awk -f uniq.awk -1 inputfile} @noindent where both @file{getopt.awk} and @file{uniq.awk} are in @env{$AWKPATH}. (Experienced users of GDB or similar debuggers should note that -this syntax is slightly different from what they are used to. +this syntax is slightly different from what you are used to. With the @command{gawk} debugger, you give the arguments for running the program in the command line to the debugger rather than as part of the @code{run} command at the debugger prompt.) @@ -29175,10 +29252,10 @@ gawk> @kbd{n} @end example This tells us that @command{gawk} is now ready to execute line 66, which -decides whether to give the lines the special ``field skipping'' treatment +decides whether to give the lines the special ``field-skipping'' treatment indicated by the @option{-1} command-line option. (Notice that we skipped -from where we were before at line 63 to here, because the condition in line 63 -@samp{if (fcount == 0 && charcount == 0)} was false.) +from where we were before, at line 63, to here, because the condition +in line 63, @samp{if (fcount == 0 && charcount == 0)}, was false.) Continuing to step, we now get to the splitting of the current and last records: @@ -29252,7 +29329,7 @@ gawk> @kbd{n} Well, here we are at our error (sorry to spoil the suspense). What we had in mind was to join the fields starting from the second one to make -the virtual record to compare, and if the first field was numbered zero, +the virtual record to compare, and if the first field were numbered zero, this would work. Let's look at what we've got: @example @@ -29261,7 +29338,7 @@ gawk> @kbd{p cline clast} @print{} clast = "awk is a wonderful program!" @end example -Hey, those look pretty familiar! They're just our original, unaltered, +Hey, those look pretty familiar! They're just our original, unaltered input records. A little thinking (the human brain is still the best debugging tool), and we realize that we were off by one! @@ -29311,11 +29388,11 @@ Miscellaneous @end itemize Each of these are discussed in the following subsections. -In the following descriptions, commands which may be abbreviated +In the following descriptions, commands that may be abbreviated show the abbreviation on a second description line. A debugger command name may also be truncated if that partial name is unambiguous. The debugger has the built-in capability to -automatically repeat the previous command just by hitting @key{Enter}. +automatically repeat the previous command just by hitting @kbd{Enter}. This works for the commands @code{list}, @code{next}, @code{nexti}, @code{step}, @code{stepi}, and @code{continue} executed without any argument. @@ -29365,7 +29442,7 @@ Set a breakpoint at entry to (the first instruction of) function @var{function}. @end table -Each breakpoint is assigned a number which can be used to delete it from +Each breakpoint is assigned a number that can be used to delete it from the breakpoint list using the @code{delete} command. With a breakpoint, you may also supply a condition. This is an @@ -29417,7 +29494,7 @@ watchpoint is made unconditional). @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 +Delete specified breakpoints or a range of breakpoints. Delete all defined breakpoints if no argument is supplied. @cindex debugger commands, @code{disable} @@ -29426,7 +29503,7 @@ all defined breakpoints if no argument is supplied. @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. +any argument, disable all breakpoints. @cindex debugger commands, @code{e} (@code{enable}) @cindex debugger commands, @code{enable} @@ -29436,18 +29513,18 @@ any argument, disables all breakpoints. @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 -any argument, enables all breakpoints. -Optionally, you can specify how to enable the breakpoint: +any argument, enable all breakpoints. +Optionally, you can specify how to enable the breakpoints: @c nested table @table @code @item del -Enable the breakpoint(s) temporarily, then delete it when -the program stops at the breakpoint. +Enable the breakpoints temporarily, then delete each one when +the program stops at it. @item once -Enable the breakpoint(s) temporarily, then disable it when -the program stops at the breakpoint. +Enable the breakpoints temporarily, then disable each one when +the program stops at it. @end table @cindex debugger commands, @code{ignore} @@ -29515,7 +29592,7 @@ gawk> @item @code{continue} [@var{count}] @itemx @code{c} [@var{count}] Resume program execution. If continued from a breakpoint and @var{count} is -specified, ignores the breakpoint at that location the next @var{count} times +specified, ignore the breakpoint at that location the next @var{count} times before stopping. @cindex debugger commands, @code{finish} @@ -29569,7 +29646,7 @@ automatic display variables, and debugger options. @item @code{step} [@var{count}] @itemx @code{s} [@var{count}] Continue execution until control reaches a different source line in the -current stack frame. @code{step} steps inside any function called within +current stack frame, stepping inside any function called within the line. If the argument @var{count} is supplied, steps that many times before stopping, unless it encounters a breakpoint or watchpoint. @@ -29682,7 +29759,7 @@ or field. String values must be enclosed between double quotes (@code{"}@dots{}@code{"}). You can also set special @command{awk} variables, such as @code{FS}, -@code{NF}, @code{NR}, and son on. +@code{NF}, @code{NR}, and so on. @cindex debugger commands, @code{w} (@code{watch}) @cindex debugger commands, @code{watch} @@ -29694,7 +29771,7 @@ You can also set special @command{awk} variables, such as @code{FS}, Add variable @var{var} (or field @code{$@var{n}}) to the watch list. The debugger then stops whenever the value of the variable or field changes. Each watched item is assigned a -number which can be used to delete it from the watch list using the +number that can be used to delete it from the watch list using the @code{unwatch} command. With a watchpoint, you may also supply a condition. This is an @@ -29722,11 +29799,11 @@ watch list. @node Execution Stack @subsection Working with the Stack -Whenever you run a program which contains any function calls, +Whenever you run a program that contains any function calls, @command{gawk} maintains a stack of all of the function calls leading up to where the program is right now. You can see how you got to where you are, and also move around in the stack to see what the state of things was in the -functions which called the one you are in. The commands for doing this are: +functions that called the one you are in. The commands for doing this are: @table @asis @cindex debugger commands, @code{bt} (@code{backtrace}) @@ -29761,8 +29838,8 @@ Then select and print the frame. @item @code{frame} [@var{n}] @itemx @code{f} [@var{n}] Select and print stack frame @var{n}. Frame 0 is the currently executing, -or @dfn{innermost}, frame (function call), frame 1 is the frame that -called the innermost one. The highest numbered frame is the one for the +or @dfn{innermost}, frame (function call); frame 1 is the frame that +called the innermost one. The highest-numbered frame is the one for the main program. The printed information consists of the frame number, function and argument names, source file, and the source line. @@ -29778,7 +29855,7 @@ Then select and print the frame. Besides looking at the values of variables, there is often a need to get other sorts of information about the state of your program and of the -debugging environment itself. The @command{gawk} debugger has one command which +debugging environment itself. The @command{gawk} debugger has one command that provides this information, appropriately called @code{info}. @code{info} is used with one of a number of arguments that tell it exactly what you want to know: @@ -29866,12 +29943,12 @@ The available options are: @table @asis @item @code{history_size} @cindex debugger history size -The maximum number of lines to keep in the history file @file{./.gawk_history}. -The default is 100. +Set the maximum number of lines to keep in the history file +@file{./.gawk_history}. The default is 100. @item @code{listsize} @cindex debugger default list amount -The number of lines that @code{list} prints. The default is 15. +Specify the number of lines that @code{list} prints. The default is 15. @item @code{outfile} @cindex redirect @command{gawk} output, in debugger @@ -29881,7 +29958,7 @@ standard output. @item @code{prompt} @cindex debugger prompt -The debugger prompt. The default is @samp{@w{gawk> }}. +Change the debugger prompt. The default is @samp{@w{gawk> }}. @item @code{save_history} [@code{on} | @code{off}] @cindex debugger history file @@ -29892,7 +29969,7 @@ The default is @code{on}. @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. +Options are read back into the next session upon startup. @item @code{trace} [@code{on} | @code{off}] @cindex instruction tracing, in debugger @@ -29915,7 +29992,7 @@ command in the file. Also, the list of commands may include additional @code{source} commands; however, the @command{gawk} debugger will not source the same file more than once in order to avoid infinite recursion. -In addition to, or instead of the @code{source} command, you can use +In addition to, or instead of, the @code{source} command, you can use the @option{-D @var{file}} or @option{--debug=@var{file}} command-line options to execute commands from a file non-interactively (@pxref{Options}). @@ -29924,16 +30001,16 @@ options to execute commands from a file non-interactively @node Miscellaneous Debugger Commands @subsection Miscellaneous Commands -There are a few more commands which do not fit into the +There are a few more commands that do not fit into the previous categories, as follows: @table @asis @cindex debugger commands, @code{dump} @cindex @code{dump} debugger command @item @code{dump} [@var{filename}] -Dump bytecode of the program to standard output or to the file +Dump byte code of the program to standard output or to the file named in @var{filename}. This prints a representation of the internal -instructions which @command{gawk} executes to implement the @command{awk} +instructions that @command{gawk} executes to implement the @command{awk} commands in a program. This can be very enlightening, as the following partial dump of Davide Brini's obfuscated code (@pxref{Signature Program}) demonstrates: @@ -30030,7 +30107,7 @@ Print lines centered around line number @var{n} in source file @var{filename}. This command may change the current source file. @item @var{function} -Print lines centered around beginning of the +Print lines centered around the beginning of the function @var{function}. This command may change the current source file. @end table @@ -30042,16 +30119,16 @@ function @var{function}. This command may change the current source file. @item @code{quit} @itemx @code{q} Exit the debugger. Debugging is great fun, but sometimes we all have -to tend to other obligations in life, and sometimes we find the bug, +to tend to other obligations in life, and sometimes we find the bug and are free to go on to the next one! As we saw earlier, if you are -running a program, the debugger warns you if you accidentally type +running a program, the debugger warns you when you type @samp{q} or @samp{quit}, to make sure you really want to quit. @cindex debugger commands, @code{trace} @cindex @code{trace} debugger command @item @code{trace} [@code{on} | @code{off}] -Turn on or off a continuous printing of instructions which are about to -be executed, along with printing the @command{awk} line which they +Turn on or off continuous printing of the instructions that are about to +be executed, along with the @command{awk} lines they implement. The default is @code{off}. It is to be hoped that most of the ``opcodes'' in these instructions are @@ -30067,7 +30144,7 @@ fairly self-explanatory, and using @code{stepi} and @code{nexti} while If @command{gawk} is compiled with @uref{http://cnswww.cns.cwru.edu/php/chet/readline/readline.html, -the @code{readline} library}, you can take advantage of that library's +the GNU Readline library}, you can take advantage of that library's command completion and history expansion features. The following types of completion are available: @@ -30104,7 +30181,7 @@ and We hope you find the @command{gawk} debugger useful and enjoyable to work with, but as with any program, especially in its early releases, it still has -some limitations. A few which are worth being aware of are: +some limitations. A few that it's worth being aware of are: @itemize @value{BULLET} @item @@ -30120,13 +30197,13 @@ If you perused the dump of opcodes in @ref{Miscellaneous Debugger Commands} (or if you are already familiar with @command{gawk} internals), you will realize that much of the internal manipulation of data in @command{gawk}, as in many interpreters, is done on a stack. -@code{Op_push}, @code{Op_pop}, and the like, are the ``bread and butter'' of +@code{Op_push}, @code{Op_pop}, and the like are the ``bread and butter'' of most @command{gawk} code. Unfortunately, as of now, the @command{gawk} debugger does not allow you to examine the stack's contents. That is, the intermediate results of expression evaluation are on the -stack, but cannot be printed. Rather, only variables which are defined +stack, but cannot be printed. Rather, only variables that are defined in the program can be printed. Of course, a workaround for this is to use more explicit variables at the debugging stage and then change back to obscure, perhaps more optimal code later. @@ -30140,12 +30217,12 @@ programmer, you are expected to know the meaning of @item The @command{gawk} debugger is designed to be used by running a program (with all its parameters) on the command line, as described in @ref{Debugger Invocation}. -There is no way (as of now) to attach or ``break in'' to a running program. -This seems reasonable for a language which is used mainly for quickly +There is no way (as of now) to attach or ``break into'' a running program. +This seems reasonable for a language that is used mainly for quickly executing, short programs. @item -The @command{gawk} debugger only accepts source supplied with the @option{-f} option. +The @command{gawk} debugger only accepts source code supplied with the @option{-f} option. @end itemize @ignore @@ -30159,8 +30236,8 @@ be added, and of course feel free to try to add them yourself! @itemize @value{BULLET} @item Programs rarely work correctly the first time. Finding bugs -is @dfn{debugging} and a program that helps you find bugs is a -@dfn{debugger}. @command{gawk} has a built-in debugger that works very +is called debugging, and a program that helps you find bugs is a +debugger. @command{gawk} has a built-in debugger that works very similarly to the GNU Debugger, GDB. @item @@ -30180,7 +30257,7 @@ breakpoints, execution, viewing and changing data, working with the stack, getting information, and other tasks. @item -If the @code{readline} library is available when @command{gawk} is +If the GNU Readline library is available when @command{gawk} is compiled, it is used by the debugger to provide command-line history and editing. @@ -30244,7 +30321,7 @@ paper and pencil (and/or a calculator). In theory, numbers can have an arbitrary number of digits on either side (or both sides) of the decimal point, and the results of a computation are always exact. -Some modern system can do decimal arithmetic in hardware, but usually you +Some modern systems can do decimal arithmetic in hardware, but usually you need a special software library to provide access to these instructions. There are also libraries that do decimal arithmetic entirely in software. @@ -30262,8 +30339,8 @@ The disadvantage is that their range is limited. @cindex integers, unsigned In computers, integer values come in two flavors: @dfn{signed} and @dfn{unsigned}. Signed values may be negative or positive, whereas -unsigned values are always positive (i.e., greater than or equal -to zero). +unsigned values are always greater than or equal +to zero. In computer systems, integer arithmetic is exact, but the possible range of values is limited. Integer arithmetic is generally faster than @@ -30300,8 +30377,35 @@ signed. The possible ranges of values are shown in @ref{table-numeric-ranges}. @item 32-bit unsigned integer @tab 0 @tab 4,294,967,295 @item 64-bit signed integer @tab @minus{}9,223,372,036,854,775,808 @tab 9,223,372,036,854,775,807 @item 64-bit unsigned integer @tab 0 @tab 18,446,744,073,709,551,615 -@item Single-precision floating point (approximate) @tab @code{1.175494e-38} @tab @code{3.402823e+38} -@item Double-precision floating point (approximate) @tab @code{2.225074e-308} @tab @code{1.797693e+308} +@iftex +@item Single-precision floating point (approximate) @tab @math{1.175494^{-38}} @tab @math{3.402823^{38}} +@item Double-precision floating point (approximate) @tab @math{2.225074^{-308}} @tab @math{1.797693^{308}} +@end iftex +@ifnottex +@ifnotdocbook +@item Single-precision floating point (approximate) @tab 1.175494e-38 @tab 3.402823e38 +@item Double-precision floating point (approximate) @tab 2.225074e-308 @tab 1.797693e308 +@end ifnotdocbook +@end ifnottex +@ifdocbook +@item Single-precision floating point (approximate) @tab +@c FIXME: Use @sup here for superscript +@docbook +1.175494<superscript>-38</superscript> +@end docbook +@tab +@docbook +3.402823<superscript>38</superscript> +@end docbook +@item Double-precision floating point (approximate) @tab +@docbook +2.225074<superscript>-308</superscript> +@end docbook +@tab +@docbook +1.797693<superscript>308</superscript> +@end docbook +@end ifdocbook @end multitable @end float @@ -30310,7 +30414,7 @@ signed. The possible ranges of values are shown in @ref{table-numeric-ranges}. The rest of this @value{CHAPTER} uses a number of terms. Here are some informal definitions that should help you work your way through the material -here. +here: @table @dfn @item Accuracy @@ -30331,7 +30435,7 @@ A special value representing infinity. Operations involving another number and infinity produce infinity. @item NaN -``Not A Number.''@footnote{Thanks to Michael Brennan for this description, +``Not a number.''@footnote{Thanks to Michael Brennan for this description, which we have paraphrased, and for the examples.} A special value that results from attempting a calculation that has no answer as a real number. In such a case, programs can either receive a floating-point exception, @@ -30374,8 +30478,8 @@ formula: @end display @noindent -Here, @var{prec} denotes the binary precision -(measured in bits) and @var{dps} (short for decimal places) +Here, @emph{prec} denotes the binary precision +(measured in bits) and @emph{dps} (short for decimal places) is the decimal digits. @item Rounding mode @@ -30383,7 +30487,7 @@ How numbers are rounded up or down when necessary. More details are provided later. @item Significand -A floating-point value consists the significand multiplied by 10 +A floating-point value consists of the significand multiplied by 10 to the power of the exponent. For example, in @code{1.2345e67}, the significand is @code{1.2345}. @@ -30407,7 +30511,7 @@ to allow greater precisions and larger exponent ranges. (@command{awk} uses only the 64-bit double-precision format.) @ref{table-ieee-formats} lists the precision and exponent -field values for the basic IEEE 754 binary formats: +field values for the basic IEEE 754 binary formats. @float Table,table-ieee-formats @caption{Basic IEEE format values} @@ -30471,12 +30575,12 @@ for more information. @author Teen Talk Barbie, July 1992 @end quotation -This @value{SECTION} provides a high level overview of the issues +This @value{SECTION} provides a high-level overview of the issues involved when doing lots of floating-point arithmetic.@footnote{There is a very nice @uref{http://www.validlab.com/goldberg/paper.pdf, paper on floating-point arithmetic} by David Goldberg, ``What Every -Computer Scientist Should Know About Floating-point Arithmetic,'' -@cite{ACM Computing Surveys} @strong{23}, 1 (1991-03), 5-48. This is +Computer Scientist Should Know About Floating-Point Arithmetic,'' +@cite{ACM Computing Surveys} @strong{23}, 1 (1991-03): 5-48. This is worth reading if you are interested in the details, but it does require a background in computer science.} The discussion applies to both hardware and arbitrary-precision @@ -30545,7 +30649,7 @@ $ @kbd{gawk 'BEGIN @{ x = 0.875; y = 0.425} Often the error is so small you do not even notice it, and if you do, you can always specify how much precision you would like in your output. -Usually this is a format string like @code{"%.15g"}, which when +Usually this is a format string like @code{"%.15g"}, which, when used in the previous example, produces an output identical to the input. @node Comparing FP Values @@ -30584,7 +30688,7 @@ else The loss of accuracy during a single computation with floating-point numbers usually isn't enough to worry about. However, if you compute a -value which is the result of a sequence of floating-point operations, +value that is the result of a sequence of floating-point operations, the error can accumulate and greatly affect the computation itself. Here is an attempt to compute the value of @value{PI} using one of its many series representations: @@ -30637,7 +30741,7 @@ no easy answers. The standard rules of algebra often do not apply when using floating-point arithmetic. Among other things, the distributive and associative laws do not hold completely, and order of operation may be important -for your computation. Rounding error, cumulative precision loss +for your computation. Rounding error, cumulative precision loss, and underflow are often troublesome. When @command{gawk} tests the expressions @samp{0.1 + 12.2} and @@ -30677,7 +30781,8 @@ by our earlier attempt to compute the value of @value{PI}. Extra precision can greatly enhance the stability and the accuracy of your computation in such cases. -Repeated addition is not necessarily equivalent to multiplication +Additionally, you should understand that +repeated addition is not necessarily equivalent to multiplication in floating-point arithmetic. In the example in @ref{Errors accumulate}: @@ -30740,7 +30845,7 @@ to emulate an IEEE 754 binary format. @float Table,table-predefined-precision-strings @caption{Predefined precision strings for @code{PREC}} @multitable {@code{"double"}} {12345678901234567890123456789012345} -@headitem @code{PREC} @tab IEEE 754 Binary Format +@headitem @code{PREC} @tab IEEE 754 binary format @item @code{"half"} @tab 16-bit half-precision @item @code{"single"} @tab Basic 32-bit single precision @item @code{"double"} @tab Basic 64-bit double precision @@ -30772,7 +30877,6 @@ than the default and cannot use a command-line assignment to @code{PREC}, you should either specify the constant as a string, or as a rational number, whenever possible. The following example illustrates the differences among various ways to print a floating-point constant: -@end quotation @example $ @kbd{gawk -M 'BEGIN @{ PREC = 113; printf("%0.25f\n", 0.1) @}'} @@ -30784,22 +30888,23 @@ $ @kbd{gawk -M 'BEGIN @{ PREC = 113; printf("%0.25f\n", "0.1") @}'} $ @kbd{gawk -M 'BEGIN @{ PREC = 113; printf("%0.25f\n", 1/10) @}'} @print{} 0.1000000000000000000000000 @end example +@end quotation @node Setting the rounding mode @subsection Setting the Rounding Mode The @code{ROUNDMODE} variable provides -program level control over the rounding mode. +program-level control over the rounding mode. The correspondence between @code{ROUNDMODE} and the IEEE rounding modes is shown in @ref{table-gawk-rounding-modes}. @float Table,table-gawk-rounding-modes @caption{@command{gawk} rounding modes} @multitable @columnfractions .45 .30 .25 -@headitem Rounding Mode @tab IEEE Name @tab @code{ROUNDMODE} +@headitem Rounding mode @tab IEEE name @tab @code{ROUNDMODE} @item Round to nearest, ties to even @tab @code{roundTiesToEven} @tab @code{"N"} or @code{"n"} -@item Round toward plus Infinity @tab @code{roundTowardPositive} @tab @code{"U"} or @code{"u"} -@item Round toward negative Infinity @tab @code{roundTowardNegative} @tab @code{"D"} or @code{"d"} +@item Round toward positive infinity @tab @code{roundTowardPositive} @tab @code{"U"} or @code{"u"} +@item Round toward negative infinity @tab @code{roundTowardNegative} @tab @code{"D"} or @code{"d"} @item Round toward zero @tab @code{roundTowardZero} @tab @code{"Z"} or @code{"z"} @item Round to nearest, ties away from zero @tab @code{roundTiesToAway} @tab @code{"A"} or @code{"a"} @end multitable @@ -30860,8 +30965,8 @@ distributes upward and downward rounds of exact halves, which might cause any accumulating round-off error to cancel itself out. This is the default rounding mode for IEEE 754 computing functions and operators. -The other rounding modes are rarely used. Round toward positive infinity -(@code{roundTowardPositive}) and round toward negative infinity +The other rounding modes are rarely used. Rounding toward positive infinity +(@code{roundTowardPositive}) and toward negative infinity (@code{roundTowardNegative}) are often used to implement interval arithmetic, where you adjust the rounding mode to calculate upper and lower bounds for the range of output. The @code{roundTowardZero} mode can @@ -30903,6 +31008,7 @@ the following computes @end docbook the result of which is beyond the limits of ordinary hardware double-precision floating-point values: +@c FIXME: Use @sup here for superscript @example $ @kbd{gawk -M 'BEGIN @{} @@ -30918,17 +31024,17 @@ If instead you were to compute the same value using arbitrary-precision floating-point values, the precision needed for correct output (using the formula @iftex -@math{prec = 3.322 @cdot dps}), +@math{prec = 3.322 @cdot dps}) would be @math{3.322 @cdot 183231}, @end iftex @ifnottex @ifnotdocbook -@samp{prec = 3.322 * dps}), +@samp{prec = 3.322 * dps}) would be 3.322 x 183231, @end ifnotdocbook @end ifnottex @docbook -<emphasis>prec</emphasis> = 3.322 ⋅ <emphasis>dps</emphasis>), +<emphasis>prec</emphasis> = 3.322 ⋅ <emphasis>dps</emphasis>) would be <emphasis>prec</emphasis> = 3.322 ⋅ 183231, @c @end docbook @@ -30966,7 +31072,7 @@ interface to process arbitrary-precision integers or mixed-mode numbers as needed by an operation or function. In such a case, the precision is set to the minimum value necessary for exact conversion, and the working precision is not used for this purpose. If this is not what you need or -want, you can employ a subterfuge, and convert the integer to floating +want, you can employ a subterfuge and convert the integer to floating point first, like this: @example @@ -31103,7 +31209,7 @@ word sizes. See @node POSIX Floating Point Problems @section Standards Versus Existing Practice -Historically, @command{awk} has converted any non-numeric looking string +Historically, @command{awk} has converted any nonnumeric-looking string to the numeric value zero, when required. Furthermore, the original definition of the language and the original POSIX standards specified that @command{awk} only understands decimal numbers (base 10), and not octal @@ -31120,8 +31226,8 @@ notation (e.g., @code{0xDEADBEEF}). (Note: data values, @emph{not} source code constants.) @item -Support for the special IEEE 754 floating-point values ``Not A Number'' -(NaN), positive Infinity (``inf''), and negative Infinity (``@minus{}inf''). +Support for the special IEEE 754 floating-point values ``not a number'' +(NaN), positive infinity (``inf''), and negative infinity (``@minus{}inf''). In particular, the format for these values is as specified by the ISO 1999 C standard, which ignores case and can allow implementation-dependent additional characters after the @samp{nan} and allow either @samp{inf} or @samp{infinity}. @@ -31142,21 +31248,21 @@ values is also a very severe departure from historical practice. @end itemize The second problem is that the @command{gawk} maintainer feels that this -interpretation of the standard, which requires a certain amount of +interpretation of the standard, which required a certain amount of ``language lawyering'' to arrive at in the first place, was not even -intended by the standard developers. In other words, ``we see how you +intended by the standard developers. In other words, ``We see how you got where you are, but we don't think that that's where you want to be.'' Recognizing these issues, but attempting to provide compatibility with the earlier versions of the standard, the 2008 POSIX standard added explicit wording to allow, but not require, that @command{awk} support hexadecimal floating-point values and -special values for ``Not A Number'' and infinity. +special values for ``not a number'' and infinity. Although the @command{gawk} maintainer continues to feel that providing those features is inadvisable, nevertheless, on systems that support IEEE floating point, it seems -reasonable to provide @emph{some} way to support NaN and Infinity values. +reasonable to provide @emph{some} way to support NaN and infinity values. The solution implemented in @command{gawk} is as follows: @itemize @value{BULLET} @@ -31176,7 +31282,7 @@ $ @kbd{echo 0xDeadBeef | gawk --posix '@{ print $1 + 0 @}'} @end example @item -Without @option{--posix}, @command{gawk} interprets the four strings +Without @option{--posix}, @command{gawk} interprets the four string values @samp{+inf}, @samp{-inf}, @samp{+nan}, @@ -31198,7 +31304,7 @@ $ @kbd{echo 0xDeadBeef | gawk '@{ print $1 + 0 @}'} @end example @command{gawk} ignores case in the four special values. -Thus @samp{+nan} and @samp{+NaN} are the same. +Thus, @samp{+nan} and @samp{+NaN} are the same. @end itemize @node Floating point summary @@ -31211,9 +31317,9 @@ values. Standard @command{awk} uses double-precision floating-point values. @item -In the early 1990s, Barbie mistakenly said ``Math class is tough!'' +In the early 1990s Barbie mistakenly said, ``Math class is tough!'' Although math isn't tough, floating-point arithmetic isn't the same -as pencil and paper math, and care must be taken: +as pencil-and-paper math, and care must be taken: @c nested list @itemize @value{MINUS} @@ -31246,11 +31352,11 @@ arithmetic. Use @code{PREC} to set the precision in bits, and @item With @option{-M}, @command{gawk} performs arbitrary-precision integer arithmetic using the GMP library. -This is faster and more space efficient than using MPFR for +This is faster and more space-efficient than using MPFR for the same calculations. @item -There are several ``dark corners'' with respect to floating-point +There are several areas with respect to floating-point numbers where @command{gawk} disagrees with the POSIX standard. It pays to be aware of them. @@ -31258,7 +31364,7 @@ It pays to be aware of them. Overall, there is no need to be unduly suspicious about the results from floating-point arithmetic. The lesson to remember is that floating-point arithmetic is always more complex than arithmetic using pencil and -paper. In order to take advantage of the power of computer floating point, +paper. In order to take advantage of the power of floating-point arithmetic, you need to know its limitations and work within them. For most casual use of floating-point arithmetic, you will often get the expected result if you simply round the display of your final results to the correct number @@ -31319,7 +31425,7 @@ Extensions are useful because they allow you (of course) to extend @command{gawk}'s functionality. For example, they can provide access to system calls (such as @code{chdir()} to change directory) and to other C library routines that could be of use. As with most software, -``the sky is the limit;'' if you can imagine something that you might +``the sky is the limit''; if you can imagine something that you might want to do and can write in C or C++, you can write an extension to do it! Extensions are written in C or C++, using the @dfn{application programming @@ -31327,7 +31433,7 @@ interface} (API) defined for this purpose by the @command{gawk} developers. The rest of this @value{CHAPTER} explains the facilities that the API provides and how to use them, and presents a small example extension. In addition, it documents -the sample extensions included in the @command{gawk} distribution, +the sample extensions included in the @command{gawk} distribution and describes the @code{gawkextlib} project. @ifclear FOR_PRINT @xref{Extension Design}, for a discussion of the extension mechanism @@ -31480,7 +31586,7 @@ Some other bits and pieces: @itemize @value{BULLET} @item The API provides access to @command{gawk}'s @code{do_@var{xxx}} values, -reflecting command-line options, like @code{do_lint}, @code{do_profiling} +reflecting command-line options, like @code{do_lint}, @code{do_profiling}, and so on (@pxref{Extension API Variables}). These are informational: an extension cannot affect their values inside @command{gawk}. In addition, attempting to assign to them @@ -31525,7 +31631,7 @@ This (rather large) @value{SECTION} describes the API in detail. @node Extension API Functions Introduction @subsection Introduction -Access to facilities within @command{gawk} are made available +Access to facilities within @command{gawk} is achieved by calling through function pointers passed into your extension. API function pointers are provided for the following kinds of operations: @@ -31553,7 +31659,7 @@ Output wrappers Two-way processors @end itemize -All of these are discussed in detail, later in this @value{CHAPTER}. +All of these are discussed in detail later in this @value{CHAPTER}. @item Printing fatal, warning, and ``lint'' warning messages. @@ -31591,7 +31697,7 @@ Creating a new array Clearing an array @item -Flattening an array for easy C style looping over all its indices and elements +Flattening an array for easy C-style looping over all its indices and elements @end itemize @item @@ -31607,8 +31713,9 @@ The following types, macros, and/or functions are referenced in @file{gawkapi.h}. For correct use, you must therefore include the corresponding standard header file @emph{before} including @file{gawkapi.h}: +@c FIXME: Make this is a float at some point. @multitable {@code{memset()}, @code{memcpy()}} {@code{<sys/types.h>}} -@headitem C Entity @tab Header File +@headitem C entity @tab Header file @item @code{EOF} @tab @code{<stdio.h>} @item Values for @code{errno} @tab @code{<errno.h>} @item @code{FILE} @tab @code{<stdio.h>} @@ -31634,7 +31741,7 @@ Doing so, however, is poor coding practice. Although the API only uses ISO C 90 features, there is an exception; the ``constructor'' functions use the @code{inline} keyword. If your compiler does not support this keyword, you should either place -@samp{-Dinline=''} on your command line, or use the GNU Autotools and include a +@samp{-Dinline=''} on your command line or use the GNU Autotools and include a @file{config.h} file in your extensions. @item @@ -31642,7 +31749,7 @@ All pointers filled in by @command{gawk} point 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 calling one of -@code{gawk_malloc()}, @code{gawk_calloc()} or @code{gawk_realloc()}, +@code{gawk_malloc()}, @code{gawk_calloc()}, or @code{gawk_realloc()}, and is managed by @command{gawk} from then on. @item @@ -31656,7 +31763,7 @@ characters are allowed. By intent, strings are maintained using the current multibyte encoding (as defined by @env{LC_@var{xxx}} environment variables) and not using wide characters. This matches how @command{gawk} stores strings internally -and also how characters are likely to be input and output from files. +and also how characters are likely to be input into and output from files. @end quotation @item @@ -31701,6 +31808,8 @@ general-purpose use. Additional, more specialized, data structures are introduced in subsequent @value{SECTION}s, together with the functions that use them. +The general-purpose types and structures are as follows: + @table @code @item typedef void *awk_ext_id_t; A value of this type is received from @command{gawk} when an extension is loaded. @@ -31717,7 +31826,7 @@ while allowing @command{gawk} to use them as it needs to. @itemx @ @ @ @ awk_false = 0, @itemx @ @ @ @ awk_true @itemx @} awk_bool_t; -A simple boolean type. +A simple Boolean type. @item typedef struct awk_string @{ @itemx @ @ @ @ char *str;@ @ @ @ @ @ /* data */ @@ -31763,7 +31872,7 @@ The @code{val_type} member indicates what kind of value the @itemx #define array_cookie@ @ @ u.a @itemx #define scalar_cookie@ @ u.scl @itemx #define value_cookie@ @ @ u.vc -These macros make accessing the fields of the @code{awk_value_t} more +Using these macros makes accessing the fields of the @code{awk_value_t} more readable. @item typedef void *awk_scalar_t; @@ -31786,7 +31895,7 @@ indicates what is in the @code{union}. Representing numbers is easy---the API uses a C @code{double}. Strings require more work. Because @command{gawk} allows embedded @sc{nul} bytes in string values, a string must be represented as a pair containing a -data-pointer and length. This is the @code{awk_string_t} type. +data pointer and length. This is the @code{awk_string_t} type. Identifiers (i.e., the names of global variables) can be associated with either scalar values or with arrays. In addition, @command{gawk} @@ -31799,12 +31908,12 @@ of the @code{union} as if they were fields in a @code{struct}; this is a common coding practice in C. Such code is easier to write and to read, but it remains @emph{your} responsibility to make sure that the @code{val_type} member correctly reflects the type of the value in -the @code{awk_value_t}. +the @code{awk_value_t} struct. Conceptually, the first three members of the @code{union} (number, string, and array) are all that is needed for working with @command{awk} values. However, because the API provides routines for accessing and changing -the value of global scalar variables only by using the variable's name, +the value of a global scalar variable only by using the variable's name, there is a performance penalty: @command{gawk} must find the variable each time it is accessed and changed. This turns out to be a real issue, not just a theoretical one. @@ -31822,7 +31931,9 @@ See also the entry for ``Cookie'' in the @ref{Glossary}. object for that variable, and then use the cookie for getting the variable's value or for changing the variable's value. -This is the @code{awk_scalar_t} type and @code{scalar_cookie} macro. +The @code{awk_scalar_t} type holds a scalar cookie, and the +@code{scalar_cookie} macro provides access to the value of that type +in the @code{awk_value_t} struct. Given a scalar cookie, @command{gawk} can directly retrieve or modify the value, as required, without having to find it first. @@ -31831,8 +31942,8 @@ If you know that you wish to use the same numeric or string @emph{value} for one or more variables, you can create the value once, retaining a @dfn{value cookie} for it, and then pass in that value cookie whenever you wish to set the value of a -variable. This saves both storage space within the running @command{gawk} -process as well as the time needed to create the value. +variable. This saves storage space within the running @command{gawk} +process and reduces the time needed to create the value. @node Memory Allocation Functions @subsection Memory Allocation Functions and Convenience Macros @@ -31860,13 +31971,13 @@ be passed to @command{gawk}. @item void gawk_free(void *ptr); Call the correct version of @code{free()} to release storage that was -allocated with @code{gawk_malloc()}, @code{gawk_calloc()} or @code{gawk_realloc()}. +allocated with @code{gawk_malloc()}, @code{gawk_calloc()}, or @code{gawk_realloc()}. @end table 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 +executable.@footnote{This is more common on MS-Windows systems, but it 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 @@ -31876,7 +31987,7 @@ Two convenience macros may be used for allocating storage from @code{gawk_malloc()} and @code{gawk_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. +procedure calls that do not return a value: @table @code @item #define emalloc(pointer, type, size, message) @dots{} @@ -31913,7 +32024,7 @@ 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{gawk_realloc()}, +This is like @code{emalloc()}, but it calls @code{gawk_realloc()} instead of @code{gawk_malloc()}. The arguments are the same as for the @code{emalloc()} macro. @end table @@ -31928,28 +32039,28 @@ 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) +@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) +@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{gawk_malloc()}, @code{gawk_calloc()} or @code{gawk_realloc()}. The idea here +value pointing to data previously obtained from @code{gawk_malloc()}, @code{gawk_calloc()}, or @code{gawk_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) +@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) +@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 @@ -31989,7 +32100,7 @@ The fields are: @table @code @item const char *name; The name of the new function. -@command{awk} level code calls the function by this name. +@command{awk}-level code calls the function by this name. This is a regular C string. Function names must obey the rules for @command{awk} @@ -32003,7 +32114,7 @@ This is a pointer to the C function that provides the extension's functionality. The function must fill in @code{*result} with either a number or a string. @command{gawk} takes ownership of any string memory. -As mentioned earlier, string memory @strong{must} come from one of +As mentioned earlier, string memory @emph{must} come from one of @code{gawk_malloc()}, @code{gawk_calloc()}, or @code{gawk_realloc()}. The @code{num_actual_args} argument tells the C function how many @@ -32055,20 +32166,20 @@ The @code{exit_status} parameter is the exit status value that @command{gawk} intends to pass to the @code{exit()} system call. @item arg0 -A pointer to private data which @command{gawk} saves in order to pass to +A pointer to private data that @command{gawk} saves in order to pass to the function pointed to by @code{funcp}. @end table @end table -Exit callback functions are called in last-in-first-out (LIFO) +Exit callback functions are called in last-in, first-out (LIFO) order---that is, in the reverse order in which they are registered with @command{gawk}. @node Extension Version String @subsubsection Registering An Extension Version String -You can register a version string which indicates the name and -version of your extension, with @command{gawk}, as follows: +You can register a version string that indicates the name and +version of your extension with @command{gawk}, as follows: @table @code @item void register_ext_version(const char *version); @@ -32090,7 +32201,7 @@ of @code{RS} to find the end of the record, and then uses @code{FS} Additionally, it sets the value of @code{RT} (@pxref{Built-in Variables}). If you want, you can provide your own custom input parser. An input -parser's job is to return a record to the @command{gawk} record processing +parser's job is to return a record to the @command{gawk} record-processing code, along with indicators for the value and length of the data to be used for @code{RT}, if any. @@ -32108,9 +32219,9 @@ It should not change any state (variable values, etc.) within @command{gawk}. @item awk_bool_t @var{XXX}_take_control_of(awk_input_buf_t *iobuf); When @command{gawk} decides to hand control of the file over to the input parser, it calls this function. This function in turn must fill -in certain fields in the @code{awk_input_buf_t} structure, and ensure +in certain fields in the @code{awk_input_buf_t} structure and ensure that certain conditions are true. It should then return true. If an -error of some kind occurs, it should not fill in any fields, and should +error of some kind occurs, it should not fill in any fields and should return false; then @command{gawk} will not use the input parser. The details are presented shortly. @end table @@ -32203,7 +32314,7 @@ in the @code{struct stat}, or any combination of these factors. Once @code{@var{XXX}_can_take_file()} has returned true, and @command{gawk} has decided to use your input parser, it calls -@code{@var{XXX}_take_control_of()}. That function then fills one of +@code{@var{XXX}_take_control_of()}. That function then fills either the @code{get_record} field or the @code{read_func} field in the @code{awk_input_buf_t}. It must also ensure that @code{fd} is @emph{not} set to @code{INVALID_HANDLE}. The following list describes the fields that @@ -32225,21 +32336,21 @@ records. Said function is the core of the input parser. Its behavior is described in the text following this list. @item ssize_t (*read_func)(); -This function pointer should point to function that has the +This function pointer should point to a function that has the same behavior as the standard POSIX @code{read()} system call. It is an alternative to the @code{get_record} pointer. Its behavior is also described in the text following this list. @item void (*close_func)(struct awk_input *iobuf); This function pointer should point to a function that does -the ``tear down.'' It should release any resources allocated by +the ``teardown.'' It should release any resources allocated by @code{@var{XXX}_take_control_of()}. It may also close the file. If it does so, it should set the @code{fd} field to @code{INVALID_HANDLE}. If @code{fd} is still not @code{INVALID_HANDLE} after the call to this function, @command{gawk} calls the regular @code{close()} system call. -Having a ``tear down'' function is optional. If your input parser does +Having a ``teardown'' function is optional. If your input parser does not need it, do not set this field. Then, @command{gawk} calls the regular @code{close()} system call on the file descriptor, so it should be valid. @@ -32250,7 +32361,7 @@ input records. The parameters are as follows: @table @code @item char **out -This is a pointer to a @code{char *} variable which is set to point +This is a pointer to a @code{char *} variable that is set to point to the record. @command{gawk} makes its own copy of the data, so the extension must manage this storage. @@ -32303,17 +32414,17 @@ set this field explicitly. You must choose one method or the other: either a function that returns a record, or one that returns raw data. In particular, if you supply a function to get a record, @command{gawk} will -call it, and never call the raw read function. +call it, and will never call the raw read function. @end quotation @command{gawk} ships with a sample extension that reads directories, -returning records for each entry in the directory (@pxref{Extension +returning records for each entry in a directory (@pxref{Extension Sample Readdir}). You may wish to use that code as a guide for writing your own input parser. When writing an input parser, you should think about (and document) how it is expected to interact with @command{awk} code. You may want -it to always be called, and take effect as appropriate (as the +it to always be called, and to take effect as appropriate (as the @code{readdir} extension does). Or you may want it to take effect based upon the value of an @command{awk} variable, as the XML extension from the @code{gawkextlib} project does (@pxref{gawkextlib}). @@ -32423,7 +32534,7 @@ a pointer to any private data associated with the file. These pointers should be set to point to functions that perform the equivalent function as the @code{<stdio.h>} functions do, if appropriate. @command{gawk} uses these function pointers for all output. -@command{gawk} initializes the pointers to point to internal, ``pass through'' +@command{gawk} initializes the pointers to point to internal ``pass-through'' functions that just call the regular @code{<stdio.h>} functions, so an extension only needs to redefine those functions that are appropriate for what it does. @@ -32434,7 +32545,7 @@ upon the @code{name} and @code{mode} fields, and any additional state (such as @command{awk} variable values) that is appropriate. When @command{gawk} calls @code{@var{XXX}_take_control_of()}, that function should fill -in the other fields, as appropriate, except for @code{fp}, which it should just +in the other fields as appropriate, except for @code{fp}, which it should just use normally. You register your output wrapper with the following function: @@ -32474,14 +32585,14 @@ The fields are as follows: The name of the two-way processor. @item awk_bool_t (*can_take_two_way)(const char *name); -This function returns true if it wants to take over two-way I/O for this @value{FN}. +The function pointed to by this field should return true if it wants to take over two-way I/O for this @value{FN}. It should not change any state (variable values, etc.) within @command{gawk}. @item awk_bool_t (*take_control_of)(const char *name, @itemx @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ awk_input_buf_t *inbuf, @itemx @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ awk_output_buf_t *outbuf); -This function should fill in the @code{awk_input_buf_t} and +The function pointed to by this field should fill in the @code{awk_input_buf_t} and @code{awk_outut_buf_t} structures pointed to by @code{inbuf} and @code{outbuf}, respectively. These structures were described earlier. @@ -32510,7 +32621,7 @@ Register the two-way processor pointed to by @code{two_way_processor} with You can print different kinds of warning messages from your extension, as described here. Note that for these functions, -you must pass in the extension id received from @command{gawk} +you must pass in the extension ID received from @command{gawk} when the extension was loaded:@footnote{Because the API uses only ISO C 90 features, it cannot make use of the ISO C 99 variadic macro feature to hide that parameter. More's the pity.} @@ -32563,7 +32674,7 @@ matches what you requested, the function returns true and fills in the @code{awk_value_t} result. Otherwise, the function returns false, and the @code{val_type} member indicates the type of the actual value. You may then -print an error message, or reissue the request for the actual +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}. @@ -32596,32 +32707,32 @@ value type, as appropriate. This behavior is summarized in <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> + <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> + <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>False</para></entry> + <entry><para>False</para></entry> <entry><para>Array</para></entry> - <entry><para>false</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> + <entry><para>False</para></entry> + <entry><para>False</para></entry> </row> <row> <entry></entry> @@ -32633,11 +32744,11 @@ value type, as appropriate. This behavior is summarized in </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> + <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> @@ -32655,12 +32766,12 @@ value type, as appropriate. This behavior is summarized in @end tex @multitable @columnfractions .166 .166 .198 .15 .15 .166 @headitem @tab @tab String @tab Number @tab Array @tab Undefined -@item @tab @b{String} @tab String @tab String @tab false @tab false -@item @tab @b{Number} @tab Number if can be converted, else false @tab Number @tab false @tab false -@item @b{Type} @tab @b{Array} @tab false @tab false @tab Array @tab false -@item @b{Requested} @tab @b{Scalar} @tab Scalar @tab Scalar @tab false @tab false +@item @tab @b{String} @tab String @tab String @tab False @tab False +@item @tab @b{Number} @tab Number if can be converted, else false @tab Number @tab False @tab False +@item @b{Type} @tab @b{Array} @tab False @tab False @tab Array @tab False +@item @b{Requested} @tab @b{Scalar} @tab Scalar @tab Scalar @tab False @tab False @item @tab @b{Undefined} @tab String @tab Number @tab Array @tab Undefined -@item @tab @b{Value Cookie} @tab false @tab false @tab false @tab false +@item @tab @b{Value cookie} @tab False @tab False @tab False @tab False @end multitable @end ifnotdocbook @end ifnotplaintext @@ -32671,21 +32782,21 @@ value type, as appropriate. This behavior is summarized in +------------+------------+-----------+-----------+ | String | Number | Array | Undefined | +-----------+-----------+------------+------------+-----------+-----------+ -| | String | String | String | false | false | +| | String | String | String | False | False | | |-----------+------------+------------+-----------+-----------+ -| | Number | Number if | Number | false | false | +| | Number | Number if | Number | False | False | | | | can be | | | | | | | converted, | | | | | | | else false | | | | | |-----------+------------+------------+-----------+-----------+ -| Type | Array | false | false | Array | false | +| Type | Array | False | False | Array | False | | Requested |-----------+------------+------------+-----------+-----------+ -| | Scalar | Scalar | Scalar | false | false | +| | Scalar | Scalar | Scalar | False | False | | |-----------+------------+------------+-----------+-----------+ | | Undefined | String | Number | Array | Undefined | | |-----------+------------+------------+-----------+-----------+ -| | Value | false | false | false | false | -| | Cookie | | | | | +| | Value | False | False | False | False | +| | cookie | | | | | +-----------+-----------+------------+------------+-----------+-----------+ @end example @end ifplaintext @@ -32702,16 +32813,16 @@ passed to your extension function. They are: @itemx @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ awk_valtype_t wanted, @itemx @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ awk_value_t *result); Fill in the @code{awk_value_t} structure pointed to by @code{result} -with the @code{count}'th argument. Return true if the actual -type matches @code{wanted}, false otherwise. In the latter +with the @code{count}th argument. Return true if the actual +type matches @code{wanted}, and false otherwise. In the latter case, @code{result@w{->}val_type} indicates the actual type -(@pxref{table-value-types-returned}). Counts are zero based---the first +(@pxref{table-value-types-returned}). Counts are zero-based---the first argument is numbered zero, the second one, and so on. @code{wanted} indicates the type of value expected. @item awk_bool_t set_argument(size_t count, awk_array_t array); Convert a parameter that was undefined into an array; this provides -call-by-reference for arrays. Return false if @code{count} is too big, +call by reference for arrays. Return false if @code{count} is too big, or if the argument's type is not undefined. @DBXREF{Array Manipulation} for more information on creating arrays. @end table @@ -32735,8 +32846,9 @@ allows you to create and release cached values. The following routines provide the ability to access and update global @command{awk}-level variables by name. In compiler terminology, identifiers of different kinds are termed @dfn{symbols}, thus the ``sym'' -in the routines' names. The data structure which stores information +in the routines' names. The data structure that stores information about symbols is termed a @dfn{symbol table}. +The functions are as follows: @table @code @item awk_bool_t sym_lookup(const char *name, @@ -32745,14 +32857,14 @@ about symbols is termed a @dfn{symbol table}. Fill in the @code{awk_value_t} structure pointed to by @code{result} with the value of the variable named by the string @code{name}, which is a regular C string. @code{wanted} indicates the type of value expected. -Return true if the actual type matches @code{wanted}, false otherwise. +Return true if the actual type matches @code{wanted}, and false otherwise. In the latter case, @code{result->val_type} indicates the actual type (@pxref{table-value-types-returned}). @item awk_bool_t sym_update(const char *name, awk_value_t *value); Update the variable named by the string @code{name}, which is a regular C string. The variable is added to @command{gawk}'s symbol table -if it is not there. Return true if everything worked, false otherwise. +if it is not there. Return true if everything worked, and false otherwise. Changing types (scalar to array or vice versa) of an existing variable is @emph{not} allowed, nor may this routine be used to update an array. @@ -32777,7 +32889,7 @@ populate it. A @dfn{scalar cookie} is an opaque handle that provides access to a global variable or array. It is an optimization that avoids looking up variables in @command{gawk}'s symbol table every time -access is needed. This was discussed earlier in @ref{General Data Types}. +access is needed. This was discussed earlier, in @ref{General Data Types}. The following functions let you work with scalar cookies: @@ -32893,7 +33005,7 @@ and carefully check the return values from the API functions. @subsubsection 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 +cached values. Like scalar cookies, in theory, cached values are not necessary. You can create numbers and strings using the functions in @ref{Constructor Functions}. You can then assign those values to variables using @code{sym_update()} @@ -32971,7 +33083,7 @@ Using value cookies in this way saves considerable storage, as all of @code{VAR1} through @code{VAR100} share the same value. You might be wondering, ``Is this sharing problematic? -What happens if @command{awk} code assigns a new value to @code{VAR1}, +What happens if @command{awk} code assigns a new value to @code{VAR1}; are all the others changed too?'' That's a great question. The answer is that no, it's not a problem. @@ -33075,7 +33187,7 @@ modify them. @node Array Functions @subsubsection Array Functions -The following functions relate to individual array elements. +The following functions relate to individual array elements: @table @code @item awk_bool_t get_element_count(awk_array_t a_cookie, size_t *count); @@ -33094,13 +33206,13 @@ Return false if @code{wanted} does not match the actual type or if @code{index} is not in the array (@pxref{table-value-types-returned}). The value for @code{index} can be numeric, in which case @command{gawk} -converts it to a string. Using non-integral values is possible, but +converts it to a string. Using nonintegral values is possible, but requires that you understand how such values are converted to strings -(@pxref{Conversion}); thus using integral values is safest. +(@pxref{Conversion}); thus, using integral values is safest. As with @emph{all} strings passed into @command{gawk} from an extension, the string value of @code{index} must come from @code{gawk_malloc()}, -@code{gawk_calloc()} or @code{gawk_realloc()}, and +@code{gawk_calloc()}, or @code{gawk_realloc()}, and @command{gawk} releases the storage. @item awk_bool_t set_array_element(awk_array_t a_cookie, @@ -33156,7 +33268,7 @@ flatten an array and work with it. @item awk_bool_t release_flattened_array(awk_array_t a_cookie, @itemx @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ awk_flat_array_t *data); When done with a flattened array, release the storage using this function. -You must pass in both the original array cookie, and the address of +You must pass in both the original array cookie and the address of the created @code{awk_flat_array_t} structure. The function returns true upon success, false otherwise. @end table @@ -33166,7 +33278,7 @@ The function returns true upon success, false otherwise. To @dfn{flatten} an array is to create a structure that represents the full array in a fashion that makes it easy -for C code to traverse the entire array. Test code +for C code to traverse the entire array. Some of the code in @file{extension/testext.c} does this, and also serves as a nice example showing how to use the APIs. @@ -33223,9 +33335,9 @@ dump_array_and_delete(int nargs, awk_value_t *result) @end example The function then proceeds in steps, as follows. First, retrieve -the name of the array, passed as the first argument. Then -retrieve the array itself. If either operation fails, print -error messages and return: +the name of the array, passed as the first argument, followed by +the array itself. If either operation fails, print an +error message and return: @example /* get argument named array as flat array and print it */ @@ -33261,7 +33373,7 @@ and print it: @end example The third step is to actually flatten the array, and then -to double check that the count in the @code{awk_flat_array_t} +to double-check that the count in the @code{awk_flat_array_t} is the same as the count just retrieved: @example @@ -33282,7 +33394,7 @@ is the same as the count just retrieved: The fourth step is to retrieve the index of the element to be deleted, which was passed as the second argument. Remember that argument counts passed to @code{get_argument()} -are zero-based, thus the second argument is numbered one: +are zero-based, and thus the second argument is numbered one: @example if (! get_argument(1, AWK_STRING, & value3)) @{ @@ -33297,7 +33409,7 @@ element values. In addition, upon finding the element with the index that is supposed to be deleted, the function sets the @code{AWK_ELEMENT_DELETE} bit in the @code{flags} field of the element. When the array is released, @command{gawk} -traverses the flattened array, and deletes any elements which +traverses the flattened array, and deletes any elements that have this flag bit set: @example @@ -33641,10 +33753,10 @@ The API versions are available at compile time as constants: @table @code @item GAWK_API_MAJOR_VERSION -The major version of the API. +The major version of the API @item GAWK_API_MINOR_VERSION -The minor version of the API. +The minor version of the API @end table The minor version increases when new functions are added to the API. Such @@ -33662,14 +33774,14 @@ constant integers: @table @code @item api->major_version -The major version of the running @command{gawk}. +The major version of the running @command{gawk} @item api->minor_version -The minor version of the running @command{gawk}. +The minor version of the running @command{gawk} @end table It is up to the extension to decide if there are API incompatibilities. -Typically a check like this is enough: +Typically, a check like this is enough: @example if (api->major_version != GAWK_API_MAJOR_VERSION @@ -33683,7 +33795,7 @@ if (api->major_version != GAWK_API_MAJOR_VERSION @end example Such code is included in the boilerplate @code{dl_load_func()} macro -provided in @file{gawkapi.h} (discussed later, in +provided in @file{gawkapi.h} (discussed in @ref{Extension API Boilerplate}). @node Extension API Informational Variables @@ -33730,7 +33842,7 @@ as described here. The boilerplate needed is also provided in comments in the @file{gawkapi.h} header file: @example -/* Boiler plate code: */ +/* Boilerplate code: */ int plugin_is_GPL_compatible; static gawk_api_t *const api; @@ -33789,7 +33901,7 @@ to @code{NULL}, or to point to a string giving the name and version of your extension. @item static awk_ext_func_t func_table[] = @{ @dots{} @}; -This is an array of one or more @code{awk_ext_func_t} structures +This is an array of one or more @code{awk_ext_func_t} structures, as described earlier (@pxref{Extension Functions}). It can then be looped over for multiple calls to @code{add_ext_func()}. @@ -33920,7 +34032,7 @@ the @code{stat()} fails. It fills in the following elements: @table @code @item "name" -The name of the file that was @code{stat()}'ed. +The name of the file that was @code{stat()}ed. @item "dev" @itemx "ino" @@ -33976,7 +34088,7 @@ interprocess communications). The file is a directory. @item "fifo" -The file is a named-pipe (also known as a FIFO). +The file is a named pipe (also known as a FIFO). @item "file" The file is just a regular file. @@ -33999,7 +34111,7 @@ For some other systems, @dfn{a priori} knowledge is used to provide a value. Where no value can be determined, it defaults to 512. @end table -Several additional elements may be present depending upon the operating +Several additional elements may be present, depending upon the operating system and the type of the file. You can test for them in your @command{awk} program by using the @code{in} operator (@pxref{Reference to Elements}): @@ -34029,7 +34141,7 @@ edited slightly for presentation. See @file{extension/filefuncs.c} in the @command{gawk} distribution for the complete version.} The file includes a number of standard header files, and then includes -the @file{gawkapi.h} header file which provides the API definitions. +the @file{gawkapi.h} header file, which provides the API definitions. Those are followed by the necessary variable declarations to make use of the API macros and boilerplate code (@pxref{Extension API Boilerplate}): @@ -34070,9 +34182,9 @@ int plugin_is_GPL_compatible; @cindex programming conventions, @command{gawk} extensions By convention, for an @command{awk} function @code{foo()}, the C function that implements it is called @code{do_foo()}. The function should have -two arguments: the first is an @code{int} usually called @code{nargs}, +two arguments. The first is an @code{int}, usually called @code{nargs}, that represents the number of actual arguments for the function. -The second is a pointer to an @code{awk_value_t}, usually named +The second is a pointer to an @code{awk_value_t} structure, usually named @code{result}: @example @@ -34118,7 +34230,7 @@ Finally, the function returns the return value to the @command{awk} level: The @code{stat()} extension is more involved. First comes a function that turns a numeric mode into a printable representation -(e.g., 644 becomes @samp{-rw-r--r--}). This is omitted here for brevity: +(e.g., octal @code{0644} becomes @samp{-rw-r--r--}). This is omitted here for brevity: @example /* format_mode --- turn a stat mode field into something readable */ @@ -34174,9 +34286,9 @@ array_set_numeric(awk_array_t array, const char *sub, double num) The following function does most of the work to fill in the @code{awk_array_t} result array with values obtained -from a valid @code{struct stat}. It is done in a separate function +from a valid @code{struct stat}. This work is done in a separate function to support the @code{stat()} function for @command{gawk} and also -to support the @code{fts()} extension which is included in +to support the @code{fts()} extension, which is included in the same file but whose code is not shown here (@pxref{Extension Sample File Functions}). @@ -34297,8 +34409,8 @@ the @code{stat()} system call instead of the @code{lstat()} system call. This is done by using a function pointer: @code{statfunc}. @code{statfunc} is initialized to point to @code{lstat()} (instead of @code{stat()}) to get the file information, in case the file is a -symbolic link. However, if there were three arguments, @code{statfunc} -is set point to @code{stat()}, instead. +symbolic link. However, if the third argument is included, @code{statfunc} +is set to point to @code{stat()}, instead. Here is the @code{do_stat()} function, which starts with variable declarations and argument checking: @@ -34354,7 +34466,7 @@ Next, it gets the information for the file. If the called function /* always empty out the array */ clear_array(array); - /* stat the file, if error, set ERRNO and return */ + /* stat the file; if error, set ERRNO and return */ ret = statfunc(name, & sbuf); if (ret < 0) @{ update_ERRNO_int(errno); @@ -34376,7 +34488,9 @@ Finally, it's necessary to provide the ``glue'' that loads the new function(s) into @command{gawk}. The @code{filefuncs} extension also provides an @code{fts()} -function, which we omit here. For its sake there is an initialization +function, which we omit here +(@pxref{Extension Sample File Functions}). +For its sake, there is an initialization function: @example @@ -34501,9 +34615,9 @@ $ @kbd{AWKLIBPATH=$PWD gawk -f testff.awk} @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 +This @value{SECTION} provides a brief overview of the sample extensions that come in the @command{gawk} distribution. Some of them are intended -for production use (e.g., the @code{filefuncs}, @code{readdir} and +for production use (e.g., the @code{filefuncs}, @code{readdir}, and @code{inplace} extensions). Others mainly provide example code that shows how to use the extension API. @@ -34539,14 +34653,14 @@ This is how you load the extension. @item @code{result = chdir("/some/directory")} The @code{chdir()} function is a direct hook to the @code{chdir()} system call to change the current directory. It returns zero -upon success or less than zero upon error. In the latter case, it updates -@code{ERRNO}. +upon success or a value less than zero upon error. +In the latter case, it updates @code{ERRNO}. @cindex @code{stat()} extension function @item @code{result = stat("/some/path", statdata} [@code{, follow}]@code{)} The @code{stat()} function provides a hook into the @code{stat()} system call. -It returns zero upon success or less than zero upon error. +It returns zero upon success or a value less than zero upon error. In the latter case, it updates @code{ERRNO}. By default, it uses the @code{lstat()} system call. However, if passed @@ -34573,10 +34687,10 @@ array with information retrieved from the filesystem, as follows: @item @code{"major"} @tab @code{st_major} @tab Device files @item @code{"minor"} @tab @code{st_minor} @tab Device files @item @code{"blksize"} @tab @code{st_blksize} @tab All -@item @code{"pmode"} @tab A human-readable version of the mode value, such as printed by -@command{ls}. For example, @code{"-rwxr-xr-x"} @tab All +@item @code{"pmode"} @tab A human-readable version of the mode value, like that printed by +@command{ls} (for example, @code{"-rwxr-xr-x"}) @tab All @item @code{"linkval"} @tab The value of the symbolic link @tab Symbolic links -@item @code{"type"} @tab The type of the file as a string. One of +@item @code{"type"} @tab The type of the file as a string---one of @code{"file"}, @code{"blockdev"}, @code{"chardev"}, @@ -34586,15 +34700,15 @@ array with information retrieved from the filesystem, as follows: @code{"symlink"}, @code{"door"}, or -@code{"unknown"}. -Not all systems support all file types. @tab All +@code{"unknown"} +(not all systems support all file types) @tab All @end multitable @cindex @code{fts()} extension function @item @code{flags = or(FTS_PHYSICAL, ...)} @itemx @code{result = fts(pathlist, flags, filedata)} Walk the file trees provided in @code{pathlist} and fill in the -@code{filedata} array as described next. @code{flags} is the bitwise +@code{filedata} array, as described next. @code{flags} is the bitwise OR of several predefined values, also described in a moment. Return zero if there were no errors, otherwise return @minus{}1. @end table @@ -34650,7 +34764,8 @@ During a traversal, do not cross onto a different mounted filesystem. @end table @item filedata -The @code{filedata} array is first cleared. Then, @code{fts()} creates +The @code{filedata} array holds the results. +@code{fts()} first clears it. Then it creates an element in @code{filedata} for every element in @code{pathlist}. The index is the name of the directory or file given in @code{pathlist}. The element for this index is itself an array. There are two cases: @@ -34692,7 +34807,7 @@ for a file: @code{"path"}, @code{"stat"}, and @code{"error"}. @end table The @code{fts()} function returns zero if there were no errors. -Otherwise it returns @minus{}1. +Otherwise, it returns @minus{}1. @quotation NOTE The @code{fts()} extension does not exactly mimic the @@ -34734,14 +34849,14 @@ The arguments to @code{fnmatch()} are: @table @code @item pattern -The @value{FN} wildcard to match. +The @value{FN} wildcard to match @item string -The @value{FN} string. +The @value{FN} string @item flag Either zero, or the bitwise OR of one or more of the -flags in the @code{FNM} array. +flags in the @code{FNM} array @end table The flags are as follows: @@ -34778,14 +34893,14 @@ 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 zero in the -child and the process-ID number of the child in the parent, or @minus{}1 +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. @@ -34813,8 +34928,8 @@ else @subsection Enabling In-Place File Editing @cindex @code{inplace} extension -The @code{inplace} extension emulates GNU @command{sed}'s @option{-i} option -which performs ``in place'' editing of each input file. +The @code{inplace} extension emulates GNU @command{sed}'s @option{-i} option, +which performs ``in-place'' editing of each input file. It uses the bundled @file{inplace.awk} include file to invoke the extension properly: @@ -34828,11 +34943,16 @@ properly: # Please set INPLACE_SUFFIX to make a backup copy. For example, you may # want to set INPLACE_SUFFIX to .bak on the command line or in a BEGIN rule. +# N.B. We call inplace_end() in the BEGINFILE and END rules so that any +# actions in an ENDFILE rule will be redirected as expected. + BEGINFILE @{ - inplace_begin(FILENAME, INPLACE_SUFFIX) + if (_inplace_filename != "") + inplace_end(_inplace_filename, INPLACE_SUFFIX) + inplace_begin(_inplace_filename = FILENAME, INPLACE_SUFFIX) @} -ENDFILE @{ +END @{ inplace_end(FILENAME, INPLACE_SUFFIX) @} @end group @@ -34847,6 +34967,10 @@ If @code{INPLACE_SUFFIX} is not an empty string, the original file is linked to a backup @value{FN} created by appending that suffix. Finally, the temporary file is renamed to the original @value{FN}. +The @code{_inplace_filename} variable serves to keep track of the +current filename so as to not invoke @code{inplace_end()} before +processing the first file. + If any error occurs, the extension issues a fatal error to terminate processing immediately without damaging the original file. @@ -34910,14 +35034,14 @@ they are read, with each entry returned as a record. The record consists of three fields. The first two are the inode number and the @value{FN}, separated by a forward slash character. On systems where the directory entry contains the file type, the record -has a third field (also separated by a slash) which is a single letter +has a third field (also separated by a slash), which is a single letter indicating the type of the file. The letters and their corresponding file types are shown in @ref{table-readdir-file-types}. @float Table,table-readdir-file-types @caption{File types returned by the @code{readdir} extension} @multitable @columnfractions .1 .9 -@headitem Letter @tab File Type +@headitem Letter @tab File type @item @code{b} @tab Block device @item @code{c} @tab Character device @item @code{d} @tab Directory @@ -34945,7 +35069,7 @@ Here is an example: @@load "readdir" @dots{} BEGIN @{ FS = "/" @} -@{ print "file name is", $2 @} +@{ print "@value{FN} is", $2 @} @end example @node Extension Sample Revout @@ -34966,8 +35090,7 @@ BEGIN @{ @} @end example -The output from this program is: -@samp{cinap t'nod}. +The output from this program is @samp{cinap t'nod}. @node Extension Sample Rev2way @subsection Two-Way I/O Example @@ -35022,7 +35145,7 @@ success, or zero upon failure. @code{reada()} is the inverse of @code{writea()}; it reads the file named as its first argument, filling in the array named as the second argument. It clears the array first. -Here too, the return value is one on success and zero upon failure. +Here too, the return value is one on success, or zero upon failure. @end table The array created by @code{reada()} is identical to that written by @@ -35110,7 +35233,7 @@ it tries to use @code{GetSystemTimeAsFileTime()}. Attempt to sleep for @var{seconds} seconds. If @var{seconds} is negative, or the attempt to sleep fails, return @minus{}1 and set @code{ERRNO}. Otherwise, return zero after sleeping for the indicated amount of time. -Note that @var{seconds} may be a floating-point (non-integral) value. +Note that @var{seconds} may be a floating-point (nonintegral) value. Implementation details: depending on platform availability, this function tries to use @code{nanosleep()} or @code{select()} to implement the delay. @end table @@ -35137,10 +35260,13 @@ project provides a number of @command{gawk} extensions, including one for processing XML files. This is the evolution of the original @command{xgawk} (XML @command{gawk}) project. -As of this writing, there are six extensions: +As of this writing, there are seven extensions: @itemize @value{BULLET} @item +@code{errno} extension + +@item GD graphics library extension @item @@ -35151,7 +35277,7 @@ PostgreSQL extension @item MPFR library extension -(this provides access to a number of MPFR functions which @command{gawk}'s +(this provides access to a number of MPFR functions that @command{gawk}'s native MPFR support does not) @item @@ -35205,7 +35331,7 @@ make install @ii{Install the extensions} If you have installed @command{gawk} in the standard way, then you will likely not need the @option{--with-gawk} option when configuring -@code{gawkextlib}. You may also need to use the @command{sudo} utility +@code{gawkextlib}. You may need to use the @command{sudo} utility to install both @command{gawk} and @code{gawkextlib}, depending upon how your system works. @@ -35230,7 +35356,7 @@ named @code{plugin_is_GPL_compatible}. @item Communication between @command{gawk} and an extension is two-way. -@command{gawk} passes a @code{struct} to the extension which contains +@command{gawk} passes a @code{struct} to the extension that contains various data fields and function pointers. The extension can then call into @command{gawk} via the supplied function pointers to accomplish certain tasks. @@ -35243,7 +35369,7 @@ By convention, implementation functions are named @code{do_@var{XXXX}()} for some @command{awk}-level function @code{@var{XXXX}()}. @item -The API is defined in a header file named @file{gawkpi.h}. You must include +The API is defined in a header file named @file{gawkapi.h}. You must include a number of standard header files @emph{before} including it in your source file. @item @@ -35288,7 +35414,7 @@ getting the count of elements in an array; creating a new array; clearing an array; and -flattening an array for easy C style looping over all its indices and elements) +flattening an array for easy C-style looping over all its indices and elements) @end itemize @item @@ -35296,7 +35422,7 @@ The API defines a number of standard data types for representing @command{awk} values, array elements, and arrays. @item -The API provide convenience functions for constructing values. +The API provides convenience functions for constructing values. It also provides memory management functions to ensure compatibility between memory allocated by @command{gawk} and memory allocated by an extension. @@ -35322,8 +35448,8 @@ file make this easier to do. @item The @command{gawk} distribution includes a number of small but useful -sample extensions. The @code{gawkextlib} project includes several more, -larger, extensions. If you wish to write an extension and contribute it +sample extensions. The @code{gawkextlib} project includes several more +(larger) extensions. If you wish to write an extension and contribute it to the community of @command{gawk} users, the @code{gawkextlib} project is the place to do so. @@ -35451,81 +35577,81 @@ cross-references to further details: @itemize @value{BULLET} @item The requirement for @samp{;} to separate rules on a line -(@pxref{Statements/Lines}). +(@pxref{Statements/Lines}) @item User-defined functions and the @code{return} statement -(@pxref{User-defined}). +(@pxref{User-defined}) @item The @code{delete} statement (@pxref{Delete}). @item The @code{do}-@code{while} statement -(@pxref{Do Statement}). +(@pxref{Do Statement}) @item The built-in functions @code{atan2()}, @code{cos()}, @code{sin()}, @code{rand()}, and -@code{srand()} (@pxref{Numeric Functions}). +@code{srand()} (@pxref{Numeric Functions}) @item The built-in functions @code{gsub()}, @code{sub()}, and @code{match()} -(@pxref{String Functions}). +(@pxref{String Functions}) @item The built-in functions @code{close()} and @code{system()} -(@pxref{I/O Functions}). +(@pxref{I/O Functions}) @item The @code{ARGC}, @code{ARGV}, @code{FNR}, @code{RLENGTH}, @code{RSTART}, -and @code{SUBSEP} predefined variables (@pxref{Built-in Variables}). +and @code{SUBSEP} predefined variables (@pxref{Built-in Variables}) @item -Assignable @code{$0} (@pxref{Changing Fields}). +Assignable @code{$0} (@pxref{Changing Fields}) @item The conditional expression using the ternary operator @samp{?:} -(@pxref{Conditional Exp}). +(@pxref{Conditional Exp}) @item -The expression @samp{@var{index-variable} in @var{array}} outside of @code{for} -statements (@pxref{Reference to Elements}). +The expression @samp{@var{indx} in @var{array}} outside of @code{for} +statements (@pxref{Reference to Elements}) @item The exponentiation operator @samp{^} (@pxref{Arithmetic Ops}) and its assignment operator -form @samp{^=} (@pxref{Assignment Ops}). +form @samp{^=} (@pxref{Assignment Ops}) @item C-compatible operator precedence, which breaks some old @command{awk} -programs (@pxref{Precedence}). +programs (@pxref{Precedence}) @item Regexps as the value of @code{FS} (@pxref{Field Separators}) and as the third argument to the @code{split()} function (@pxref{String Functions}), rather than using only the first character -of @code{FS}. +of @code{FS} @item Dynamic regexps as operands of the @samp{~} and @samp{!~} operators -(@pxref{Computed Regexps}). +(@pxref{Computed Regexps}) @item The escape sequences @samp{\b}, @samp{\f}, and @samp{\r} -(@pxref{Escape Sequences}). +(@pxref{Escape Sequences}) @item Redirection of input for the @code{getline} function -(@pxref{Getline}). +(@pxref{Getline}) @item Multiple @code{BEGIN} and @code{END} rules -(@pxref{BEGIN/END}). +(@pxref{BEGIN/END}) @item Multidimensional arrays -(@pxref{Multidimensional}). +(@pxref{Multidimensional}) @end itemize @node SVR4 @@ -35537,54 +35663,54 @@ The System V Release 4 (1989) version of Unix @command{awk} added these features @itemize @value{BULLET} @item -The @code{ENVIRON} array (@pxref{Built-in Variables}). +The @code{ENVIRON} array (@pxref{Built-in Variables}) @c gawk and MKS awk @item Multiple @option{-f} options on the command line -(@pxref{Options}). +(@pxref{Options}) @c MKS awk @item The @option{-v} option for assigning variables before program execution begins -(@pxref{Options}). +(@pxref{Options}) @c GNU, Bell Laboratories & MKS together @item -The @option{--} signal for terminating command-line options. +The @option{--} signal for terminating command-line options @item The @samp{\a}, @samp{\v}, and @samp{\x} escape sequences -(@pxref{Escape Sequences}). +(@pxref{Escape Sequences}) @c GNU, for ANSI C compat @item A defined return value for the @code{srand()} built-in function -(@pxref{Numeric Functions}). +(@pxref{Numeric Functions}) @item The @code{toupper()} and @code{tolower()} built-in string functions for case translation -(@pxref{String Functions}). +(@pxref{String Functions}) @item A cleaner specification for the @samp{%c} format-control letter in the @code{printf} function -(@pxref{Control Letters}). +(@pxref{Control Letters}) @item The ability to dynamically pass the field width and precision (@code{"%*.*d"}) in the argument list of @code{printf} and @code{sprintf()} -(@pxref{Control Letters}). +(@pxref{Control Letters}) @item The use of regexp constants, such as @code{/foo/}, as expressions, where they are equivalent to using the matching operator, as in @samp{$0 ~ /foo/} -(@pxref{Using Constant Regexps}). +(@pxref{Using Constant Regexps}) @item Processing of escape sequences inside command-line variable assignments -(@pxref{Assignment Options}). +(@pxref{Assignment Options}) @end itemize @node POSIX @@ -35598,23 +35724,23 @@ introduced the following changes into the language: @itemize @value{BULLET} @item The use of @option{-W} for implementation-specific options -(@pxref{Options}). +(@pxref{Options}) @item The use of @code{CONVFMT} for controlling the conversion of numbers -to strings (@pxref{Conversion}). +to strings (@pxref{Conversion}) @item The concept of a numeric string and tighter comparison rules to go -with it (@pxref{Typing and Comparison}). +with it (@pxref{Typing and Comparison}) @item The use of predefined variables as function parameter names is forbidden -(@pxref{Definition Syntax}). +(@pxref{Definition Syntax}) @item More complete documentation of many of the previously undocumented -features of the language. +features of the language @end itemize In 2012, a number of extensions that had been commonly available for @@ -35623,15 +35749,15 @@ many years were finally added to POSIX. They are: @itemize @value{BULLET} @item The @code{fflush()} built-in function for flushing buffered output -(@pxref{I/O Functions}). +(@pxref{I/O Functions}) @item The @code{nextfile} statement -(@pxref{Nextfile Statement}). +(@pxref{Nextfile Statement}) @item The ability to delete all of an array at once with @samp{delete @var{array}} -(@pxref{Delete}). +(@pxref{Delete}) @end itemize @@ -35661,22 +35787,22 @@ originally appeared in his version of @command{awk}: The @samp{**} and @samp{**=} operators (@pxref{Arithmetic Ops} and -@ref{Assignment Ops}). +@ref{Assignment Ops}) @item The use of @code{func} as an abbreviation for @code{function} -(@pxref{Definition Syntax}). +(@pxref{Definition Syntax}) @item The @code{fflush()} built-in function for flushing buffered output -(@pxref{I/O Functions}). +(@pxref{I/O Functions}) @ignore @item The @code{SYMTAB} array, that allows access to @command{awk}'s internal symbol table. This feature was never documented for his @command{awk}, largely because it is somewhat shakily implemented. For instance, you cannot access arrays -or array elements through it. +or array elements through it @end ignore @end itemize @@ -35706,7 +35832,7 @@ Additional predefined variables: @itemize @value{MINUS} @item The -@code{ARGIND} +@code{ARGIND}, @code{BINMODE}, @code{ERRNO}, @code{FIELDWIDTHS}, @@ -35718,7 +35844,7 @@ The and @code{TEXTDOMAIN} variables -(@pxref{Built-in Variables}). +(@pxref{Built-in Variables}) @end itemize @item @@ -35726,15 +35852,15 @@ Special files in I/O redirections: @itemize @value{MINUS} @item -The @file{/dev/stdin}, @file{/dev/stdout}, @file{/dev/stderr} and +The @file{/dev/stdin}, @file{/dev/stdout}, @file{/dev/stderr}, and @file{/dev/fd/@var{N}} special @value{FN}s -(@pxref{Special Files}). +(@pxref{Special Files}) @item The @file{/inet}, @file{/inet4}, and @samp{/inet6} special files for TCP/IP networking using @samp{|&} to specify which version of the IP protocol to use -(@pxref{TCP/IP Networking}). +(@pxref{TCP/IP Networking}) @end itemize @item @@ -35743,37 +35869,41 @@ Changes and/or additions to the language: @itemize @value{MINUS} @item The @samp{\x} escape sequence -(@pxref{Escape Sequences}). +(@pxref{Escape Sequences}) @item Full support for both POSIX and GNU regexps -(@pxref{Regexp}). +(@pxref{Regexp}) @item The ability for @code{FS} and for the third argument to @code{split()} to be null strings -(@pxref{Single Character Fields}). +(@pxref{Single Character Fields}) @item The ability for @code{RS} to be a regexp -(@pxref{Records}). +(@pxref{Records}) @item The ability to use octal and hexadecimal constants in @command{awk} program source code -(@pxref{Nondecimal-numbers}). +(@pxref{Nondecimal-numbers}) @item The @samp{|&} operator for two-way I/O to a coprocess -(@pxref{Two-way I/O}). +(@pxref{Two-way I/O}) @item Indirect function calls -(@pxref{Indirect Calls}). +(@pxref{Indirect Calls}) @item Directories on the command line produce a warning and are skipped -(@pxref{Command-line directories}). +(@pxref{Command-line directories}) + +@item +Output with @code{print} and @code{printf} need not be fatal +(@pxref{Nonfatal}) @end itemize @item @@ -35782,11 +35912,11 @@ New keywords: @itemize @value{MINUS} @item The @code{BEGINFILE} and @code{ENDFILE} special patterns -(@pxref{BEGINFILE/ENDFILE}). +(@pxref{BEGINFILE/ENDFILE}) @item The @code{switch} statement -(@pxref{Switch Statement}). +(@pxref{Switch Statement}) @end itemize @item @@ -35796,30 +35926,30 @@ Changes to standard @command{awk} functions: @item The optional second argument to @code{close()} that allows closing one end of a two-way pipe to a coprocess -(@pxref{Two-way I/O}). +(@pxref{Two-way I/O}) @item -POSIX compliance for @code{gsub()} and @code{sub()} with @option{--posix}. +POSIX compliance for @code{gsub()} and @code{sub()} with @option{--posix} @item The @code{length()} function accepts an array argument and returns the number of elements in the array -(@pxref{String Functions}). +(@pxref{String Functions}) @item The optional third argument to the @code{match()} function for capturing text-matching subexpressions within a regexp -(@pxref{String Functions}). +(@pxref{String Functions}) @item Positional specifiers in @code{printf} formats for making translations easier -(@pxref{Printf Ordering}). +(@pxref{Printf Ordering}) @item The @code{split()} function's additional optional fourth -argument which is an array to hold the text of the field separators -(@pxref{String Functions}). +argument, which is an array to hold the text of the field separators +(@pxref{String Functions}) @end itemize @item @@ -35829,16 +35959,16 @@ Additional functions only in @command{gawk}: @item The @code{gensub()}, @code{patsplit()}, and @code{strtonum()} functions for more powerful text manipulation -(@pxref{String Functions}). +(@pxref{String Functions}) @item The @code{asort()} and @code{asorti()} functions for sorting arrays -(@pxref{Array Sorting}). +(@pxref{Array Sorting}) @item The @code{mktime()}, @code{systime()}, and @code{strftime()} functions for working with timestamps -(@pxref{Time Functions}). +(@pxref{Time Functions}) @item The @@ -35850,17 +35980,22 @@ The and @code{xor()} functions for bit manipulation -(@pxref{Bitwise Functions}). +(@pxref{Bitwise Functions}) @c In 4.1, and(), or() and xor() grew the ability to take > 2 arguments @item The @code{isarray()} function to check if a variable is an array or not -(@pxref{Type Functions}). +(@pxref{Type Functions}) @item -The @code{bindtextdomain()}, @code{dcgettext()} and @code{dcngettext()} +The @code{bindtextdomain()}, @code{dcgettext()}, and @code{dcngettext()} functions for internationalization -(@pxref{Programmer i18n}). +(@pxref{Programmer i18n}) + +@item +The @code{div()} function for doing integer +division and remainder +(@pxref{Numeric Functions}) @end itemize @item @@ -35870,12 +36005,12 @@ Changes and/or additions in the command-line options: @item The @env{AWKPATH} environment variable for specifying a path search for the @option{-f} command-line option -(@pxref{Options}). +(@pxref{Options}) @item The @env{AWKLIBPATH} environment variable for specifying a path search for the @option{-l} command-line option -(@pxref{Options}). +(@pxref{Options}) @item The @@ -35904,7 +36039,7 @@ The and @option{-V} short options. Also, the -ability to use GNU-style long-named options that start with @option{--} +ability to use GNU-style long-named options that start with @option{--}, and the @option{--assign}, @option{--bignum}, @@ -35984,7 +36119,7 @@ GCC for VAX and Alpha has not been tested for a while. @end itemize @item -Support for the following obsolete systems was removed from the code +Support for the following obsolete system was removed from the code for @command{gawk} @value{PVERSION} 4.1: @c nested table @@ -35994,8 +36129,14 @@ Ultrix @end itemize @item -@c FIXME: Verify the version here. -Support for MirBSD was removed at @command{gawk} @value{PVERSION} 4.2. +Support for the following systems was removed from the code +for @command{gawk} @value{PVERSION} 4.2: + +@c nested table +@itemize @value{MINUS} +@item +MirBSD +@end itemize @end itemize @@ -36609,6 +36750,44 @@ with a minimum of two The dynamic extension interface was completely redone (@pxref{Dynamic Extensions}). +@item +Support for Ultrix was removed. + +@end itemize + +Version 4.2 introduced the following changes: + +@itemize @bullet +@item +Changes to @code{ENVIRON} are reflected into @command{gawk}'s +environment and that of programs that it runs. +@xref{Auto-set}. + +@item +The @option{--pretty-print} option no longer runs the @command{awk} +program too. +@xref{Options}. + +@item +The @command{igawk} program and its manual page are no longer +installed when @command{gawk} is built. +@xref{Igawk Program}. + +@item +The @code{div()} function. +@xref{Numeric Functions}. + +@item +The maximum number of hexdecimal digits in @samp{\x} escapes +is now two. +@xref{Escape Sequences}. + +@item +Nonfatal output with @code{print} and @code{printf}. +@xref{Nonfatal}. + +@item +Support for MirBSD was removed. @end itemize @c XXX ADD MORE STUFF HERE @@ -36624,9 +36803,9 @@ by @command{gawk}, Brian Kernighan's @command{awk}, and @command{mawk}, the three most widely used freely available versions of @command{awk} (@pxref{Other Versions}). -@multitable {@file{/dev/stderr} special file} {BWK Awk} {Mawk} {GNU Awk} {Now standard} -@headitem Feature @tab BWK Awk @tab Mawk @tab GNU Awk @tab Now standard -@item @samp{\x} Escape sequence @tab X @tab X @tab X @tab +@multitable {@file{/dev/stderr} special file} {BWK @command{awk}} {@command{mawk}} {@command{gawk}} {Now standard} +@headitem Feature @tab BWK @command{awk} @tab @command{mawk} @tab @command{gawk} @tab Now standard +@item @samp{\x} escape sequence @tab X @tab X @tab X @tab @item @code{FS} as null string @tab X @tab X @tab X @tab @item @file{/dev/stdin} special file @tab X @tab X @tab X @tab @item @file{/dev/stdout} special file @tab X @tab X @tab X @tab @@ -36657,7 +36836,7 @@ in the machine's native character set. Thus, on ASCII-based systems, @samp{[a-z]} matched all the lowercase letters, and only the lowercase letters, as the numeric values for the letters from @samp{a} through @samp{z} were contiguous. (On an EBCDIC system, the range @samp{[a-z]} -includes additional, non-alphabetic characters as well.) +includes additional nonalphabetic characters as well.) Almost all introductory Unix literature explained range expressions as working in this fashion, and in particular, would teach that the @@ -36682,7 +36861,7 @@ What does that mean? In many locales, @samp{A} and @samp{a} are both less than @samp{B}. In other words, these locales sort characters in dictionary order, and @samp{[a-dx-z]} is typically not equivalent to @samp{[abcdxyz]}; -instead it might be equivalent to @samp{[ABCXYabcdxyz]}, for example. +instead, it might be equivalent to @samp{[ABCXYabcdxyz]}, for example. This point needs to be emphasized: much literature teaches that you should use @samp{[a-z]} to match a lowercase character. But on systems with @@ -36711,23 +36890,23 @@ is perfectly valid in ASCII, but is not valid in many Unicode locales, such as @code{en_US.UTF-8}. Early versions of @command{gawk} used regexp matching code that was not -locale aware, so ranges had their traditional interpretation. +locale-aware, so ranges had their traditional interpretation. When @command{gawk} switched to using locale-aware regexp matchers, the problems began; especially as both GNU/Linux and commercial Unix 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?!?'' +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 +@command{gawk} was being nicely standards-compliant, and that the issue was in the user's locale. During the development of @value{PVERSION} 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 Campaign for Rational Range Interpretation (or -RRI). A number of GNU tools have either implemented this change, +RRI). A number of GNU tools have already implemented this change, or will soon. Thanks to Karl Berry for coining the phrase ``Rational Range Interpretation.''} @@ -36741,9 +36920,10 @@ 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 -@option{--posix}; in all cases, @command{gawk} remains POSIX compliant. +The @command{gawk} maintainer chose to apply the pre-POSIX meaning +both with the default regexp matching and when @option{--traditional} or +@option{--posix} are used. +In all cases @command{gawk} remains POSIX-compliant. @node Contributors @appendixsec Major Contributors to @command{gawk} @@ -36789,7 +36969,7 @@ to around 90 pages. Richard Stallman helped finish the implementation and the initial draft of this @value{DOCUMENT}. -He is also the founder of the FSF and the GNU project. +He is also the founder of the FSF and the GNU Project. @item @cindex Woods, John @@ -36953,28 +37133,28 @@ John Haque made the following contributions: @itemize @value{MINUS} @item The modifications to convert @command{gawk} -into a byte-code interpreter, including the debugger. +into a byte-code interpreter, including the debugger @item -The addition of true arrays of arrays. +The addition of true arrays of arrays @item -The additional modifications for support of arbitrary-precision arithmetic. +The additional modifications for support of arbitrary-precision arithmetic @item The initial text of -@ref{Arbitrary Precision Arithmetic}. +@ref{Arbitrary Precision Arithmetic} @item The work to merge the three versions of @command{gawk} -into one, for the 4.1 release. +into one, for the 4.1 release @item -Improved array internals for arrays indexed by integers. +Improved array internals for arrays indexed by integers @item -The improved array sorting features were driven by John together -with Pat Rankin. +The improved array sorting features were also driven by John, together +with Pat Rankin @end itemize @cindex Papadopoulos, Panos @@ -37015,10 +37195,10 @@ helping David Trueman, and as the primary maintainer since around 1994. @itemize @value{BULLET} @item The @command{awk} language has evolved over time. The first release -was with V7 Unix circa 1978. In 1987, for System V Release 3.1, +was with V7 Unix, circa 1978. In 1987, for System V Release 3.1, major additions, including user-defined functions, were made to the language. Additional changes were made for System V Release 4, in 1989. -Since then, further minor changes happen under the auspices of the +Since then, further minor changes have happened under the auspices of the POSIX standard. @item @@ -37034,7 +37214,7 @@ options. The interaction of POSIX locales and regexp matching in @command{gawk} has been confusing over the years. Today, @command{gawk} implements Rational Range Interpretation, where ranges of the form @samp{[a-z]} match @emph{only} the characters numerically between -@samp{a} through @samp{z} in the machine's native character set. Usually this is ASCII +@samp{a} through @samp{z} in the machine's native character set. Usually this is ASCII, but it can be EBCDIC on IBM S/390 systems. @item @@ -37119,7 +37299,7 @@ will be less busy, and you can usually find one closer to your site. @command{gawk} is distributed as several @code{tar} files compressed with different compression programs: @command{gzip}, @command{bzip2}, and @command{xz}. For simplicity, the rest of these instructions assume -you are using the one compressed with the GNU Zip program, @code{gzip}. +you are using the one compressed with the GNU Gzip program (@command{gzip}). Once you have the distribution (e.g., @file{gawk-@value{VERSION}.@value{PATCHLEVEL}.tar.gz}), @@ -37170,12 +37350,12 @@ operating systems: @table @asis @item Various @samp{.c}, @samp{.y}, and @samp{.h} files -The actual @command{gawk} source code. +These files contain the actual @command{gawk} source code. @end table @table @file @item ABOUT-NLS -Information about GNU @command{gettext} and translations. +A file containing information about GNU @command{gettext} and translations. @item AUTHORS A file with some information about the authorship of @command{gawk}. @@ -37205,7 +37385,7 @@ An older list of changes to @command{gawk}. The GNU General Public License. @item POSIX.STD -A description of behaviors in the POSIX standard for @command{awk} which +A description of behaviors in the POSIX standard for @command{awk} that are left undefined, or where @command{gawk} may not comply fully, as well as a list of things that the POSIX standard should describe but does not. @@ -37256,10 +37436,10 @@ The generated Info file for this @value{DOCUMENT}. @item doc/gawkinet.texi The Texinfo source file for @ifinfo -@inforef{Top, , General Introduction, gawkinet, TCP/IP Internetworking with @command{gawk}}. +@inforef{Top, , General Introduction, gawkinet, @value{GAWKINETTITLE}}. @end ifinfo @ifnotinfo -@cite{TCP/IP Internetworking with @command{gawk}}. +@cite{@value{GAWKINETTITLE}}. @end ifnotinfo It should be processed with @TeX{} (via @command{texi2dvi} or @command{texi2pdf}) @@ -37268,7 +37448,7 @@ with @command{makeinfo} to produce an Info or HTML file. @item doc/gawkinet.info The generated Info file for -@cite{TCP/IP Internetworking with @command{gawk}}. +@cite{@value{GAWKINETTITLE}}. @item doc/igawk.1 The @command{troff} source for a manual page describing the @command{igawk} @@ -37515,14 +37695,17 @@ Similarly, setting the @code{LINT} variable (@pxref{User-modified}) has no effect on the running @command{awk} program. -When used with GCC's automatic dead-code-elimination, this option +When used with the GNU Compiler Collection's (GCC's) +automatic dead-code-elimination, this option cuts almost 23K bytes off the size of the @command{gawk} executable on GNU/Linux x86_64 systems. Results on other systems and with other compilers are likely to vary. Using this option may bring you some slight performance improvement. +@quotation CAUTION Using this option will cause some of the tests in the test suite to fail. This option may be removed at a later date. +@end quotation @cindex @option{--disable-nls} configuration option @cindex configuration option, @code{--disable-nls} @@ -37619,10 +37802,10 @@ running MS-DOS, any version of MS-Windows, or OS/2. running MS-DOS and any version of MS-Windows. @end ifset In this @value{SECTION}, the term ``Windows32'' -refers to any of Microsoft Windows-95/98/ME/NT/2000/XP/Vista/7/8. +refers to any of Microsoft Windows 95/98/ME/NT/2000/XP/Vista/7/8. The limitations of MS-DOS (and MS-DOS shells under the other operating -systems) has meant that various ``DOS extenders'' are often used with +systems) have meant that various ``DOS extenders'' are often used with programs such as @command{gawk}. The varying capabilities of Microsoft Windows 3.1 and Windows32 can add to the confusion. For an overview of the considerations, refer to @file{README_d/README.pc} in @@ -37881,7 +38064,7 @@ Under MS-Windows, OS/2 and MS-DOS, Under MS-Windows and MS-DOS, @end ifset @command{gawk} (and many other text programs) silently -translate end-of-line @samp{\r\n} to @samp{\n} on input and @samp{\n} +translates end-of-line @samp{\r\n} to @samp{\n} on input and @samp{\n} to @samp{\r\n} on output. A special @code{BINMODE} variable @value{COMMONEXT} allows control over these translations and is interpreted as follows: @@ -37915,7 +38098,7 @@ Setting @code{BINMODE} for standard input or standard output is accomplished by using an appropriate @samp{-v BINMODE=@var{N}} option on the command line. @code{BINMODE} is set at the time a file or pipe is opened and cannot be -changed mid-stream. +changed midstream. The name @code{BINMODE} was chosen to match @command{mawk} (@pxref{Other Versions}). @@ -37971,8 +38154,8 @@ 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 GNU/Linux, using the -GNU tools, such as Bash, the GNU Compiler Collection (GCC), GNU Make, +This environment provides an excellent simulation of GNU/Linux, using +Bash, GCC, GNU Make, and other GNU programs. Compilation and installation for Cygwin is the same as for a Unix system: @@ -37991,7 +38174,7 @@ and then the @samp{make} proceeds as usual. @appendixsubsubsec Using @command{gawk} In The MSYS Environment In the MSYS environment under MS-Windows, @command{gawk} automatically -uses binary mode for reading and writing files. Thus there is no +uses binary mode for reading and writing files. Thus, there is no need to use the @code{BINMODE} variable. This can cause problems with other Unix-like components that have @@ -38055,7 +38238,7 @@ With ODS-5 volumes and extended parsing enabled, the case of the target parameter may need to be exact. @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. +using Compaq C V6.4, and under 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.''} @@ -38103,7 +38286,7 @@ For VAX: /name=(as_is,short) @end example -Compile time macros need to be defined before the first VMS-supplied +Compile-time macros need to be defined before the first VMS-supplied header file is included, as follows: @example @@ -38150,7 +38333,7 @@ If your @command{gawk} was installed by a PCSI kit into the @file{GNV$GNU:[vms_help]gawk.hlp}. The PCSI kit also installs a @file{GNV$GNU:[vms_bin]gawk_verb.cld} file -which can be used to add @command{gawk} and @command{awk} as DCL commands. +that can be used to add @command{gawk} and @command{awk} as DCL commands. For just the current process you can use: @@ -38159,7 +38342,7 @@ $ @kbd{set command gnv$gnu:[vms_bin]gawk_verb.cld} @end example Or the system manager can use @file{GNV$GNU:[vms_bin]gawk_verb.cld} to -add the @command{gawk} and @command{awk} to the system wide @samp{DCLTABLES}. +add the @command{gawk} and @command{awk} to the system-wide @samp{DCLTABLES}. The DCL syntax is documented in the @file{gawk.hlp} file. @@ -38225,14 +38408,14 @@ The @code{exit} value is a Unix-style value and is encoded into a VMS exit status value when the program exits. The VMS severity bits will be set based on the @code{exit} value. -A failure is indicated by 1 and VMS sets the @code{ERROR} status. -A fatal error is indicated by 2 and VMS sets the @code{FATAL} status. +A failure is indicated by 1, and VMS sets the @code{ERROR} status. +A fatal error is indicated by 2, and VMS sets the @code{FATAL} status. All other values will have the @code{SUCCESS} status. The exit value is encoded to comply with VMS coding standards and will have the @code{C_FACILITY_NO} of @code{0x350000} with the constant @code{0xA000} added to the number shifted over by 3 bits to make room for the severity codes. -To extract the actual @command{gawk} exit code from the VMS status use: +To extract the actual @command{gawk} exit code from the VMS status, use: @example unix_status = (vms_status .and. &x7f8) / 8 @@ -38251,7 +38434,7 @@ VAX/VMS floating point uses unbiased rounding. @xref{Round Function}. VMS reports time values in GMT unless one of the @code{SYS$TIMEZONE_RULE} or @code{TZ} logical names is set. Older versions of VMS, such as VAX/VMS -7.3 do not set these logical names. +7.3, do not set these logical names. @c @cindex directory search @c @cindex path, search @@ -38269,7 +38452,7 @@ translation and not a multitranslation @code{RMS} searchlist. The VMS GNV package provides a build environment similar to POSIX with ports of a collection of open source tools. The @command{gawk} found in the GNV -base kit is an older port. Currently the GNV project is being reorganized +base kit is an older port. Currently, the GNV project is being reorganized to supply individual PCSI packages for each component. See @w{@uref{https://sourceforge.net/p/gnv/wiki/InstallingGNVPackages/}.} @@ -38342,7 +38525,7 @@ recommend compiling and using the current version. @cindex debugging @command{gawk}, bug reports @cindex troubleshooting, @command{gawk}, bug reports If you have problems with @command{gawk} or think that you have found a bug, -report it to the developers; we cannot promise to do anything +report it to the developers; we cannot promise to do anything, but we might well want to fix it. Before reporting a bug, make sure you have really found a genuine bug. @@ -38352,7 +38535,7 @@ to do something or not, report that too; it's a bug in the documentation! Before reporting a bug or trying to fix it yourself, try to isolate it to the smallest possible @command{awk} program and input @value{DF} that -reproduces the problem. Then send us the program and @value{DF}, +reproduce the problem. Then send us the program and @value{DF}, some idea of what kind of Unix system you're using, the compiler you used to compile @command{gawk}, and the exact results @command{gawk} gave you. Also say what you expected to occur; this helps @@ -38367,7 +38550,7 @@ You can get this information with the command @samp{gawk --version}. Once you have a precise problem description, send email to @EMAIL{bug-gawk@@gnu.org,bug-gawk at gnu dot org}. -The @command{gawk} maintainers subscribe to this address and +The @command{gawk} maintainers subscribe to this address, and thus they will receive your bug report. Although you can send mail to the maintainers directly, the bug reporting address is preferred because the @@ -38394,8 +38577,8 @@ bug reporting system, you should also send a copy to This is for two reasons. First, although some distributions forward bug reports ``upstream'' to the GNU mailing list, many don't, so there is a good chance that the @command{gawk} maintainers won't even see the bug report! Second, -mail to the GNU list is archived, and having everything at the GNU project -keeps things self-contained and not dependant on other organizations. +mail to the GNU list is archived, and having everything at the GNU Project +keeps things self-contained and not dependent on other organizations. @end quotation Non-bug suggestions are always welcome as well. If you have questions @@ -38404,7 +38587,7 @@ features, ask on the bug list; we will try to help you out if we can. If you find bugs in one of the non-Unix ports of @command{gawk}, send an email to the bug list, with a copy to the -person who maintains that port. They are named in the following list, +person who maintains that port. The maintainers are named in the following list, as well as in the @file{README} file in the @command{gawk} distribution. Information in the @file{README} file should be considered authoritative if it conflicts with this @value{DOCUMENT}. @@ -38419,19 +38602,19 @@ The people maintaining the various @command{gawk} ports are: @cindex Robbins, Arnold @cindex Zaretskii, Eli @multitable {MS-Windows with MinGW} {123456789012345678901234567890123456789001234567890} -@item Unix and POSIX systems @tab Arnold Robbins, @EMAIL{arnold@@skeeve.com,arnold at skeeve dot com}. +@item Unix and POSIX systems @tab Arnold Robbins, @EMAIL{arnold@@skeeve.com,arnold at skeeve dot com} -@item MS-DOS with DJGPP @tab Scott Deifik, @EMAIL{scottd.mail@@sbcglobal.net,scottd dot mail at sbcglobal dot net}. +@item MS-DOS with DJGPP @tab Scott Deifik, @EMAIL{scottd.mail@@sbcglobal.net,scottd dot mail at sbcglobal dot net} -@item MS-Windows with MinGW @tab Eli Zaretskii, @EMAIL{eliz@@gnu.org,eliz at gnu dot org}. +@item MS-Windows with MinGW @tab Eli Zaretskii, @EMAIL{eliz@@gnu.org,eliz at gnu dot org} @c Leave this in the print version on purpose. @c OS/2 is not mentioned anywhere else in the print version though. -@item OS/2 @tab Andreas Buening, @EMAIL{andreas.buening@@nexgo.de,andreas dot buening at nexgo dot de}. +@item OS/2 @tab Andreas Buening, @EMAIL{andreas.buening@@nexgo.de,andreas dot buening at nexgo dot de} -@item VMS @tab John Malmberg, @EMAIL{wb8tyw@@qsl.net,wb8tyw at qsl.net}. +@item VMS @tab John Malmberg, @EMAIL{wb8tyw@@qsl.net,wb8tyw at qsl.net} -@item z/OS (OS/390) @tab Dave Pitts, @EMAIL{dpitts@@cozx.com,dpitts at cozx dot com}. +@item z/OS (OS/390) @tab Dave Pitts, @EMAIL{dpitts@@cozx.com,dpitts at cozx dot com} @end multitable If your bug is also reproducible under Unix, send a copy of your @@ -38450,7 +38633,7 @@ Date: Wed, 4 Sep 1996 08:11:48 -0700 (PDT) @cindex Brennan, Michael @ifnotdocbook @quotation -@i{It's kind of fun to put comments like this in your awk code.}@* +@i{It's kind of fun to put comments like this in your awk code:}@* @ @ @ @ @ @ @code{// Do C++ comments work? answer: yes! of course} @author Michael Brennan @end quotation @@ -38491,7 +38674,7 @@ It is available in several archive formats: @end table @cindex @command{git} utility -You can also retrieve it from Git Hub: +You can also retrieve it from GitHub: @example git clone git://github.com/onetrueawk/awk bwkawk @@ -38551,7 +38734,7 @@ for a list of extensions in @command{mawk} that are not in POSIX @command{awk}. @item @command{awka} Written by Andrew Sumner, @command{awka} translates @command{awk} programs into C, compiles them, -and links them with a library of functions that provides the core +and links them with a library of functions that provide the core @command{awk} functionality. It also has a number of extensions. @@ -38572,17 +38755,17 @@ since approximately 2001. Nelson H.F.@: Beebe at the University of Utah has modified BWK @command{awk} to provide timing and profiling information. It is different from @command{gawk} with the @option{--profile} option -(@pxref{Profiling}), +(@pxref{Profiling}) in that it uses CPU-based profiling, not line-count profiling. You may find it at either @uref{ftp://ftp.math.utah.edu/pub/pawk/pawk-20030606.tar.gz} or @uref{http://www.math.utah.edu/pub/pawk/pawk-20030606.tar.gz}. -@item Busybox Awk -@cindex Busybox Awk -@cindex source code, Busybox Awk -Busybox is a GPL-licensed program providing small versions of many +@item BusyBox @command{awk} +@cindex BusyBox Awk +@cindex source code, BusyBox Awk +BusyBox is a GPL-licensed program providing small versions of many applications within a single executable. It is aimed at embedded systems. It includes a full implementation of POSIX @command{awk}. When building it, be careful not to do @samp{make install} as it will overwrite @@ -38594,7 +38777,7 @@ information, see the @uref{http://busybox.net, project's home page}. @cindex source code, Solaris @command{awk} @item The OpenSolaris POSIX @command{awk} The versions of @command{awk} in @file{/usr/xpg4/bin} and -@file{/usr/xpg6/bin} on Solaris are more-or-less POSIX-compliant. +@file{/usr/xpg6/bin} on Solaris are more or less POSIX-compliant. They are based on the @command{awk} from Mortice Kern Systems for PCs. We were able to make this code compile and work under GNU/Linux with 1--2 hours of work. Making it more generally portable (using @@ -38635,9 +38818,9 @@ features to Python. See @uref{https://github.com/alecthomas/pawk} for more information. (This is not related to Nelson Beebe's modified version of BWK @command{awk}, described earlier.) -@item @w{QSE Awk} -@cindex QSE Awk -@cindex source code, QSE Awk +@item @w{QSE @command{awk}} +@cindex QSE @command{awk} +@cindex source code, QSE @command{awk} This is an embeddable @command{awk} interpreter. For more information, see @uref{http://code.google.com/p/qse/} and @uref{http://awk.info/?tools/qse}. @@ -38656,7 +38839,7 @@ since approximately 2008. @item Other versions See also the ``Versions and implementations'' section of the @uref{http://en.wikipedia.org/wiki/Awk_language#Versions_and_implementations, -Wikipedia article} for information on additional versions. +Wikipedia article} on @command{awk} for information on additional versions. @end table @@ -38665,7 +38848,7 @@ Wikipedia article} for information on additional versions. @itemize @value{BULLET} @item -The @command{gawk} distribution is available from GNU project's main +The @command{gawk} distribution is available from the GNU Project's main distribution site, @code{ftp.gnu.org}. The canonical build recipe is: @example @@ -38677,22 +38860,22 @@ cd gawk-@value{VERSION}.@value{PATCHLEVEL} @item @command{gawk} may be built on non-POSIX systems as well. The currently -supported systems are MS-Windows using DJGPP, MSYS, MinGW and Cygwin, +supported systems are MS-Windows using DJGPP, MSYS, MinGW, and Cygwin, @ifclear FOR_PRINT OS/2 using EMX, @end ifclear and both Vax/VMS and OpenVMS. -Instructions for each system are included in this @value{CHAPTER}. +Instructions for each system are included in this @value{APPENDIX}. @item Bug reports should be sent via email to @email{bug-gawk@@gnu.org}. -Bug reports should be in English, and should include the version of @command{gawk}, -how it was compiled, and a short program and @value{DF} which demonstrate +Bug reports should be in English and should include the version of @command{gawk}, +how it was compiled, and a short program and @value{DF} that demonstrate the problem. @item There are a number of other freely available @command{awk} -implementations. Many are POSIX compliant; others are less so. +implementations. Many are POSIX-compliant; others are less so. @end itemize diff --git a/doc/gawktexi.in b/doc/gawktexi.in index b7134716..6991f8a8 100644 --- a/doc/gawktexi.in +++ b/doc/gawktexi.in @@ -46,10 +46,11 @@ @c applies to and all the info about who's publishing this edition @c These apply across the board. -@set UPDATE-MONTH September, 2014 +@set UPDATE-MONTH February, 2015 @set VERSION 4.1 @set PATCHLEVEL 2 +@set GAWKINETTITLE TCP/IP Internetworking with @command{gawk} @ifset FOR_PRINT @set TITLE Effective awk Programming @end ifset @@ -192,9 +193,9 @@ @ifclear FOR_PRINT @set FN file name -@set FFN File Name +@set FFN File name @set DF data file -@set DDF Data File +@set DDF Data file @set PVERSION version @end ifclear @ifset FOR_PRINT @@ -293,7 +294,7 @@ 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 +<literallayout class="normal">Copyright © 1989, 1991, 1992, 1993, 1996–2005, 2007, 2009–2015 Free Software Foundation, Inc. All Rights Reserved.</literallayout> @end docbook @@ -628,6 +629,7 @@ particular records in a file and perform operations upon them. * Special Caveats:: Things to watch out for. * Close Files And Pipes:: Closing Input and Output Files and Pipes. +* Nonfatal:: Enabling Nonfatal Output. * Output Summary:: Output summary. * Output Exercises:: Exercises. * Values:: Constants, Variables, and Regular @@ -1297,7 +1299,7 @@ October 2014 <affiliation><jobtitle>Nof Ayalon</jobtitle></affiliation> <affiliation><jobtitle>Israel</jobtitle></affiliation> </author> - <date>December 2014</date> + <date>February 2015</date> </prefaceinfo> @end docbook @@ -1465,7 +1467,7 @@ In May 1997, J@"urgen Kahrs felt the need for network access from @command{awk}, and with a little help from me, set about adding features to do this for @command{gawk}. At that time, he also wrote the bulk of -@cite{TCP/IP Internetworking with @command{gawk}} +@cite{@value{GAWKINETTITLE}} (a separate document, available as part of the @command{gawk} distribution). His code finally became part of the main @command{gawk} distribution with @command{gawk} @value{PVERSION} 3.1. @@ -1488,7 +1490,7 @@ is often referred to as ``new @command{awk}.'' By analogy, the original version of @command{awk} is referred to as ``old @command{awk}.'' -Today, on most systems, when you run the @command{awk} utility +On most current systems, when you run the @command{awk} utility you get some version of new @command{awk}.@footnote{Only Solaris systems still use an old @command{awk} for the default @command{awk} utility. A more modern @command{awk} lives in @@ -1719,15 +1721,39 @@ and how to compile and use it on different non-POSIX systems. It also describes how to report bugs in @command{gawk} and where to get other freely available @command{awk} implementations. -@end itemize @ifset FOR_PRINT -@itemize @value{MINUS} @item @ref{Copying}, presents the license that covers the @command{gawk} source code. +@end ifset + +@ifclear FOR_PRINT +@item +@ref{Notes}, +describes how to disable @command{gawk}'s extensions, as +well as how to contribute new code to @command{gawk}, +and some possible future directions for @command{gawk} development. + +@item +@ref{Basic Concepts}, +provides some very cursory background material for those who +are completely unfamiliar with computer programming. + +The @ref{Glossary}, defines most, if not all, of the significant terms used +throughout the @value{DOCUMENT}. If you find terms that you aren't familiar with, +try looking them up here. + +@item +@ref{Copying}, and +@ref{GNU Free Documentation License}, +present the licenses that cover the @command{gawk} source code +and this @value{DOCUMENT}, respectively. +@end ifclear +@end itemize @end itemize +@ifset FOR_PRINT The version of this @value{DOCUMENT} distributed with @command{gawk} contains additional appendices and other end material. To save space, we have omitted them from the @@ -1765,32 +1791,6 @@ Some of the chapters have exercise sections; these have also been omitted from the print edition but are available online. @end ifset -@ifclear FOR_PRINT -@itemize @value{MINUS} -@item -@ref{Notes}, -describes how to disable @command{gawk}'s extensions, as -well as how to contribute new code to @command{gawk}, -and some possible future directions for @command{gawk} development. - -@item -@ref{Basic Concepts}, -provides some very cursory background material for those who -are completely unfamiliar with computer programming. - -The @ref{Glossary}, defines most, if not all, of the significant terms used -throughout the @value{DOCUMENT}. If you find terms that you aren't familiar with, -try looking them up here. - -@item -@ref{Copying}, and -@ref{GNU Free Documentation License}, -present the licenses that cover the @command{gawk} source code -and this @value{DOCUMENT}, respectively. -@end itemize -@end ifclear -@end itemize - @c FULLXREF OFF @node Conventions @@ -1832,15 +1832,23 @@ $ @kbd{echo hello on stderr 1>&2} @end example @ifnotinfo -In the text, command names appear in @code{this font}, while code segments +In the text, almost anything related to programming, such as +command names, +variable and function names, and string, numeric and regexp constants +appear in @code{this font}. Code fragments appear in the same font and quoted, @samp{like this}. +Things that are replaced by the user or programmer +appear in @var{this font}. Options look like this: @option{-f}. +@value{FFN}s are indicated like this: @file{/path/to/ourfile}. +@ifclear FOR_PRINT Some things are emphasized @emph{like this}, and if a point needs to be made -strongly, it is done @strong{like this}. The first occurrence of +strongly, it is done @strong{like this}. +@end ifclear +The first occurrence of a new term is usually its @dfn{definition} and appears in the same font as the previous occurrence of ``definition'' in this sentence. -Finally, @value{FN}s are indicated like this: @file{/path/to/ourfile}. @end ifnotinfo Characters that you type at the keyboard look @kbd{like this}. In particular, @@ -2253,14 +2261,14 @@ which they raised and educated me. Finally, I also must acknowledge my gratitude to G-d, for the many opportunities He has sent my way, as well as for the gifts He has given me with which to take advantage of those opportunities. -@iftex +@ifnotdocbook @sp 2 @noindent Arnold Robbins @* Nof Ayalon @* Israel @* -December 2014 -@end iftex +February 2015 +@end ifnotdocbook @ifnotinfo @part @value{PART1}The @command{awk} Language @@ -4455,6 +4463,8 @@ wait for input before returning with an error. Controls the number of times @command{gawk} attempts to retry a two-way TCP/IP (socket) connection before giving up. @xref{TCP/IP Networking}. +Note that when nonfatal I/O is enabled (@pxref{Nonfatal}), +@command{gawk} only tries to open a TCP/IP socket once. @item POSIXLY_CORRECT Causes @command{gawk} to switch to POSIX-compatibility @@ -5091,13 +5101,12 @@ letters or numbers. @value{COMMONEXT} @quotation CAUTION In ISO C, the escape sequence continues until the first nonhexadecimal digit is seen. -@c FIXME: Add exact version here. For many years, @command{gawk} would continue incorporating hexadecimal digits into the value until a non-hexadecimal digit or the end of the string was encountered. However, using more than two hexadecimal digits produced undefined results. -As of @value{PVERSION} @strong{FIXME:} 4.3.0, only two digits +As of @value{PVERSION} 4.2, only two digits are processed. @end quotation @@ -7269,7 +7278,7 @@ variable @code{FIELDWIDTHS}. Each number specifies the width of the field, @emph{including} columns between fields. If you want to ignore the columns between fields, you can specify the width as a separate field that is subsequently ignored. -It is a fatal error to supply a field width that is not a positive number. +It is a fatal error to supply a field width that has a negative value. The following data is the output of the Unix @command{w} utility. It is useful to illustrate the use of @code{FIELDWIDTHS}: @@ -8567,6 +8576,7 @@ and discusses the @code{close()} built-in function. @command{gawk} allows access to inherited file descriptors. * Close Files And Pipes:: Closing Input and Output Files and Pipes. +* Nonfatal:: Enabling Nonfatal Output. * Output Summary:: Output summary. * Output Exercises:: Exercises. @end menu @@ -9045,12 +9055,12 @@ represent spaces in the output. Here are the possible modifiers, in the order in which they may appear: -@table @code +@table @asis @cindex differences in @command{awk} and @command{gawk}, @code{print}/@code{printf} statements @cindex @code{printf} statement, positional specifiers @c the code{} does NOT start a secondary @cindex positional specifiers, @code{printf} statement -@item @var{N}$ +@item @code{@var{N}$} An integer constant followed by a @samp{$} is a @dfn{positional specifier}. Normally, format specifications are applied to arguments in the order given in the format string. With a positional specifier, the format @@ -9073,7 +9083,7 @@ messages at runtime. which describes how and why to use positional specifiers. For now, we ignore them. -@item - @r{(Minus)} +@item @code{-} (Minus) The minus sign, used before the width modifier (see later on in this list), says to left-justify @@ -9091,13 +9101,13 @@ prints @samp{foo@bullet{}}. For numeric conversions, prefix positive values with a space and negative values with a minus sign. -@item + +@item @code{+} The plus sign, used before the width modifier (see later on in this list), says to always supply a sign for numeric conversions, even if the data to format is positive. The @samp{+} overrides the space modifier. -@item # +@item @code{#} Use an ``alternative form'' for certain control letters. For @samp{%o}, supply a leading zero. For @samp{%x} and @samp{%X}, supply a leading @samp{0x} or @samp{0X} for @@ -9106,14 +9116,14 @@ For @samp{%e}, @samp{%E}, @samp{%f}, and @samp{%F}, the result always contains a decimal point. For @samp{%g} and @samp{%G}, trailing zeros are not removed from the result. -@item 0 +@item @code{0} A leading @samp{0} (zero) acts as a flag indicating that output should be padded with zeros instead of spaces. This applies only to the numeric output formats. This flag only has an effect when the field width is wider than the value to print. -@item ' +@item @code{'} A single quote or apostrophe character is a POSIX extension to ISO C. It indicates that the integer part of a floating-point value, or the entire part of an integer decimal value, should have a thousands-separator @@ -9166,7 +9176,7 @@ prints @samp{foobar}. Preceding the @var{width} with a minus sign causes the output to be padded with spaces on the right, instead of on the left. -@item .@var{prec} +@item @code{.@var{prec}} A period followed by an integer constant specifies the precision to use when printing. The meaning of the precision varies by control letter: @@ -9969,6 +9979,71 @@ when closing a pipe. @end sidebar +@node Nonfatal +@section Enabling Nonfatal Output + +This @value{SECTION} describes a @command{gawk}-specific feature. + +In standard @command{awk}, output with @code{print} or @code{printf} +to a nonexistent file, or some other I/O error (such as filling up the +disk) is a fatal error. + +@example +$ @kbd{gawk 'BEGIN @{ print "hi" > "/no/such/file" @}'} +@error{} gawk: cmd. line:1: fatal: can't redirect to `/no/such/file' (No such file or directory) +@end example + +@command{gawk} makes it possible to detect that an error has +occurred, allowing you to possibly recover from the error, or +at least print an error message of your choosing before exiting. +You can do this in one of two ways: + +@itemize @bullet +@item +For all output files, by assigning any value to @code{PROCINFO["NONFATAL"]}. + +@item +On a per-file basis, by assigning any value to +@code{PROCINFO[@var{filename}, "NONFATAL"]}. +Here, @var{filename} is the name of the file to which +you wish output to be nonfatal. +@end itemize + +Once you have enabled nonfatal output, you must check @code{ERRNO} +after every relevant @code{print} or @code{printf} statement to +see if something went wrong. It is also a good idea to initialize +@code{ERRNO} to zero before attempting the output. For example: + +@example +$ @kbd{gawk '} +> @kbd{BEGIN @{} +> @kbd{ PROCINFO["NONFATAL"] = 1} +> @kbd{ ERRNO = 0} +> @kbd{ print "hi" > "/no/such/file"} +> @kbd{ if (ERRNO) @{} +> @kbd{ print("Output failed:", ERRNO) > "/dev/stderr"} +> @kbd{ exit 1} +> @kbd{ @}} +> @kbd{@}'} +@error{} Output failed: No such file or directory +@end example + +Here, @command{gawk} did not produce a fatal error; instead +it let the @command{awk} program code detect the problem and handle it. + +This mechanism works also for standard output and standard error. +For standard output, you may use @code{PROCINFO["-", "NONFATAL"]} +or @code{PROCINFO["/dev/stdout", "NONFATAL"]}. For standard error, use +@code{PROCINFO["/dev/stderr", "NONFATAL"]}. + +When attempting to open a TCP/IP socket (@pxref{TCP/IP Networking}), +@command{gawk} tries multiple times. The @env{GAWK_SOCK_RETRIES} +environment variable (@pxref{Other Environment Variables}) allows you to +override @command{gawk}'s builtin default number of attempts. However, +once nonfatal I/O is enabled for a given socket, @command{gawk} only +retries once, relying on @command{awk}-level code to notice that there +was a problem. + @node Output Summary @section Summary @@ -9997,6 +10072,12 @@ Use @code{close()} to close open file, pipe, and coprocess redirections. For coprocesses, it is possible to close only one direction of the communications. +@item +Normally errors with @code{print} or @code{printf} are fatal. +@command{gawk} lets you make output errors be nonfatal either for +all files or on a per-file basis. You must then check for errors +after every relevant output statement. + @end itemize @c EXCLUDE START @@ -11201,6 +11282,7 @@ has the value four, but it changes the value of @code{foo} to five. In other words, the operator returns the old value of the variable, but with the side effect of incrementing it. +@c FIXME: Use @sup here for superscript The post-increment @samp{foo++} is nearly the same as writing @samp{(foo += 1) - 1}. It is not perfectly equivalent because all numbers in @command{awk} are floating point---in floating point, @samp{foo + 1 - 1} does @@ -11363,6 +11445,9 @@ the string constant @code{"0"} is actually true, because it is non-null. @i{The Guide is definitive. Reality is frequently inaccurate.} @author Douglas Adams, @cite{The Hitchhiker's Guide to the Galaxy} @end quotation +@c 2/2015: Antonio Colombo points out that this is really from +@c The Restaurant at the End of the Universe. But I'm going to +@c leave it alone. @cindex comparison expressions @cindex expressions, comparison @@ -12533,6 +12618,7 @@ $ @kbd{awk '$1 ~ /li/ @{ print $2 @}' mail-list} @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{/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}. @@ -13484,12 +13570,12 @@ numbers: # find smallest divisor of num @{ num = $1 - for (div = 2; div * div <= num; div++) @{ - if (num % div == 0) + for (divisor = 2; divisor * divisor <= num; divisor++) @{ + if (num % divisor == 0) break @} - if (num % div == 0) - printf "Smallest divisor of %d is %d\n", num, div + if (num % divisor == 0) + printf "Smallest divisor of %d is %d\n", num, divisor else printf "%d is prime\n", num @} @@ -13510,12 +13596,12 @@ an @code{if}: # find smallest divisor of num @{ num = $1 - for (div = 2; ; div++) @{ - if (num % div == 0) @{ - printf "Smallest divisor of %d is %d\n", num, div + for (divisor = 2; ; divisor++) @{ + if (num % divisor == 0) @{ + printf "Smallest divisor of %d is %d\n", num, divisor break @} - if (div * div > num) @{ + if (divisor * divisor > num) @{ printf "%d is prime\n", num break @} @@ -13957,12 +14043,13 @@ is to simply say @samp{FS = FS}, perhaps with an explanatory comment. @cindex regular expressions, case sensitivity @item IGNORECASE # If @code{IGNORECASE} is nonzero or non-null, then all string comparisons -and all regular expression matching are case-independent. Thus, regexp -matching with @samp{~} and @samp{!~}, as well as the @code{gensub()}, -@code{gsub()}, @code{index()}, @code{match()}, @code{patsplit()}, -@code{split()}, and @code{sub()} -functions, record termination with @code{RS}, and field splitting with -@code{FS} and @code{FPAT}, all ignore case when doing their particular regexp operations. +and all regular expression matching are case-independent. +This applies to +regexp matching with @samp{~} and @samp{!~}, +the @code{gensub()}, @code{gsub()}, @code{index()}, @code{match()}, +@code{patsplit()}, @code{split()}, and @code{sub()} functions, +record termination with @code{RS}, and field splitting with +@code{FS} and @code{FPAT}. However, the value of @code{IGNORECASE} does @emph{not} affect array subscripting and it does not affect field splitting when using a single-character field separator. @@ -14833,7 +14920,7 @@ In most other languages, arrays must be @dfn{declared} before use, including a specification of how many elements or components they contain. In such languages, the declaration causes a contiguous block of memory to be allocated for that -many elements. Usually, an index in the array must be a positive integer. +many elements. Usually, an index in the array must be a nonnegative integer. For example, the index zero specifies the first element in the array, which is actually stored at the beginning of the block of memory. Index one specifies the second element, which is stored in memory right after the @@ -15013,7 +15100,7 @@ Now the array is @dfn{sparse}, which just means some indices are missing. It has elements 0--3 and 10, but doesn't have elements 4, 5, 6, 7, 8, or 9. Another consequence of associative arrays is that the indices don't -have to be positive integers. Any number, or even a string, can be +have to be nonnegative integers. Any number, or even a string, can be an index. For example, the following is an array that translates words from English to French: @@ -15276,7 +15363,7 @@ END @{ 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 -arrays are contiguous and indices are limited to positive integers, +arrays are contiguous and indices are limited to nonnegative integers, this is easy: all the valid indices can be found by counting from the lowest index up to the highest. This technique won't do the job in @command{awk}, because any number or string can be an array index. @@ -16398,7 +16485,7 @@ for generating random numbers to the value @var{x}. Each seed value leads to a particular sequence of random numbers.@footnote{Computer-generated random numbers really are not truly -random. They are technically known as ``pseudorandom.'' This means +random. They are technically known as @dfn{pseudorandom}. This means that although the numbers in a sequence appear to be random, you can in fact generate the same sequence of random numbers over and over again.} Thus, if the seed is set to the same value a second time, @@ -17755,6 +17842,7 @@ 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. +@c FIXME: Use @sup here for superscript @cindex @command{date} utility, GNU @cindex time, retrieving @@ -18378,15 +18466,16 @@ $ @kbd{gawk -f testbits.awk} @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, +Initializing @code{mask} to one creates +a binary value where the rightmost bit +is set to one. Using this mask, the function repeatedly checks the rightmost bit. ANDing the mask with the value indicates whether the -rightmost bit is 1 or not. If so, a @code{"1"} is concatenated onto the front +rightmost bit is one or not. If so, a @code{"1"} is concatenated onto the front of the string. Otherwise, a @code{"0"} is added. The value is then shifted right by one bit and the loop continues -until there are no more 1 bits. +until there are no more one bits. If the initial value is zero, it returns a simple @code{"0"}. Otherwise, at the end, it pads the value with zeros to represent multiples @@ -18410,7 +18499,7 @@ that traverses every element of an array of arrays @cindexgawkfunc{isarray} @cindex scalar or array @item isarray(@var{x}) -Return a true value if @var{x} is an array. Otherwise return false. +Return a true value if @var{x} is an array. Otherwise, return false. @end table @code{isarray()} is meant for use in two circumstances. The first is when @@ -18471,7 +18560,7 @@ The default value for @var{category} is @code{"LC_MESSAGES"}. Return the plural form used for @var{number} of the translation of @var{string1} and @var{string2} in text domain @var{domain} for locale category @var{category}. @var{string1} is the -English singular variant of a message, and @var{string2} the English plural +English singular variant of a message, and @var{string2} is the English plural variant of the same message. The default value for @var{domain} is the current value of @code{TEXTDOMAIN}. The default value for @var{category} is @code{"LC_MESSAGES"}. @@ -18500,7 +18589,7 @@ them (i.e., to tell @command{awk} what they should do). @subsection Function Definition Syntax @quotation -@i{It's entirely fair to say that the @command{awk} syntax for local +@i{It's entirely fair to say that the awk syntax for local variable definitions is appallingly awful.} @author Brian Kernighan @end quotation @@ -18558,7 +18647,7 @@ it also enforces the second restriction. Local variables act like the empty string if referenced where a string value is required, and like zero if referenced where a numeric value -is required. This is the same as regular variables that have never been +is required. This is the same as the behavior of regular variables that have never been assigned a value. (There is more to understand about local variables; @pxref{Dynamic Typing}.) @@ -18592,7 +18681,7 @@ 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 function definition, because there is no way to name them while their -names have been taken away for the local variables. All other variables +names have been taken away for the arguments and local variables. All other variables used in the @command{awk} program can be referenced or set normally in the function's body. @@ -18659,7 +18748,7 @@ function myprint(num) @end example @noindent -To illustrate, here is an @command{awk} rule that uses our @code{myprint} +To illustrate, here is an @command{awk} rule that uses our @code{myprint()} function: @example @@ -18700,13 +18789,13 @@ in an array and start over with a new list of elements (@pxref{Delete}). Instead of having to repeat this loop everywhere that you need to clear out -an array, your program can just call @code{delarray}. +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 relatively 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. +as an input parameter and returns the string in reverse order. Recursive functions must always have a test that stops the recursion. In this case, the recursion terminates when the input string is already empty: @@ -18803,7 +18892,7 @@ an error. @cindex local variables, in a function @cindex variables, local to a function -Unlike many languages, +Unlike in many languages, there is no way to make a variable local to a @code{@{} @dots{} @code{@}} 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 @@ -18812,7 +18901,7 @@ function. To make a variable local to a function, simply declare the variable as an argument after the actual function arguments (@pxref{Definition Syntax}). -Look at the following example where variable +Look at the following example, where variable @code{i} is a global variable used by both functions @code{foo()} and @code{bar()}: @@ -18853,7 +18942,7 @@ foo's i=3 top's i=3 @end example -If you want @code{i} to be local to both @code{foo()} and @code{bar()} do as +If you want @code{i} to be local to both @code{foo()} and @code{bar()}, do as follows (the extra space before @code{i} is a coding convention to indicate that @code{i} is a local variable, not an argument): @@ -18941,7 +19030,7 @@ declare explicitly whether the arguments are passed @dfn{by value} or @dfn{by reference}. Instead, the passing convention is determined at runtime when -the function is called according to the following rule: +the function is called, according to the following rule: if the argument is an array variable, then it is passed by reference. Otherwise, the argument is passed by value. @@ -19018,7 +19107,7 @@ prints @samp{a[1] = 1, a[2] = two, a[3] = 3}, because @cindex undefined functions @cindex functions, undefined Some @command{awk} implementations allow you to call a function that -has not been defined. They only report a problem at runtime when the +has not been defined. They only report a problem at runtime, when the program actually tries to call the function. For example: @example @@ -19077,15 +19166,15 @@ makes the returned value undefined, and therefore, unpredictable. In practice, though, all versions of @command{awk} simply return the null string, which acts like zero if used in a numeric context. -A @code{return} statement with no value expression is assumed at the end of -every function definition. So if control reaches the end of the function -body, then technically, the function returns an unpredictable value. +A @code{return} statement without an @var{expression} is assumed at the end of +every function definition. So, if control reaches the end of the function +body, then technically the function returns an unpredictable value. In practice, it returns the empty string. @command{awk} does @emph{not} warn you if you use the return value of such a function. Sometimes, you want to write a function for what it does, not for what it returns. Such a function corresponds to a @code{void} function -in C, C++ or Java, or to a @code{procedure} in Ada. Thus, it may be appropriate to not +in C, C++, or Java, or to a @code{procedure} in Ada. Thus, it may be appropriate to not return any value; simply bear in mind that you should not be using the return value of such a function. @@ -19204,13 +19293,15 @@ function calls, you can specify the name of the function to call as a string variable, and then call the function. Let's look at an example. Suppose you have a file with your test scores for the classes you -are taking. The first field is the class name. The following fields +are taking, and +you wish to get the sum and the average of +your test scores. +The first field is the class name. The following fields are the functions to call to process the data, up to a ``marker'' field @samp{data:}. Following the marker, to the end of the record, are the various numeric test scores. -Here is the initial file; you wish to get the sum and the average of -your test scores: +Here is the initial file: @example @c file eg/data/class_data1 @@ -19293,9 +19384,9 @@ function sum(first, last, ret, i) @c endfile @end example -These two functions expect to work on fields; thus the parameters +These two functions expect to work on fields; thus, the parameters @code{first} and @code{last} indicate where in the fields to start and end. -Otherwise they perform the expected computations and are not unusual: +Otherwise, they perform the expected computations and are not unusual: @example @c file eg/prog/indirectcall.awk @@ -19354,8 +19445,8 @@ The ability to use indirect function calls is more powerful than you may think at first. The C and C++ languages provide ``function pointers,'' which are a mechanism for calling a function chosen at runtime. One of the most well-known uses of this ability is the C @code{qsort()} function, which sorts -an array using the famous ``quick sort'' algorithm -(see @uref{http://en.wikipedia.org/wiki/Quick_sort, the Wikipedia article} +an array using the famous ``quicksort'' algorithm +(see @uref{http://en.wikipedia.org/wiki/Quicksort, the Wikipedia article} for more information). To use this function, you supply a pointer to a comparison function. This mechanism allows you to sort arbitrary data in an arbitrary fashion. @@ -19374,11 +19465,11 @@ We can do something similar using @command{gawk}, like this: # January 2009 @c endfile - @end ignore @c file eg/lib/quicksort.awk -# quicksort --- C.A.R. Hoare's quick sort algorithm. See Wikipedia -# or almost any algorithms or computer science text + +# quicksort --- C.A.R. Hoare's quicksort algorithm. See Wikipedia +# or almost any algorithms or computer science text. @c endfile @ignore @c file eg/lib/quicksort.awk @@ -19416,7 +19507,7 @@ function quicksort_swap(data, i, j, temp) The @code{quicksort()} function receives the @code{data} array, the starting and ending indices to sort (@code{left} and @code{right}), and the name of a function that -performs a ``less than'' comparison. It then implements the quick sort algorithm. +performs a ``less than'' comparison. It then implements the quicksort algorithm. To make use of the sorting function, we return to our previous example. The first thing to do is write some comparison functions: @@ -19527,67 +19618,7 @@ $ @kbd{gawk -f quicksort.awk -f indirectcall.awk class_data2} @end example Another example where indirect functions calls are useful can be found in -processing arrays. @DBREF{Walking Arrays} presented a simple function -for ``walking'' an array of arrays. That function simply printed the -name and value of each scalar array element. However, it is easy to -generalize that function, by passing in the name of a function to call -when walking an array. The modified function looks like this: - -@example -@c file eg/lib/processarray.awk -function process_array(arr, name, process, do_arrays, i, new_name) -@{ - for (i in arr) @{ - new_name = (name "[" i "]") - if (isarray(arr[i])) @{ - if (do_arrays) - @@process(new_name, arr[i]) - process_array(arr[i], new_name, process, do_arrays) - @} else - @@process(new_name, arr[i]) - @} -@} -@c endfile -@end example - -The arguments are as follows: - -@table @code -@item arr -The array. - -@item name -The name of the array (a string). - -@item process -The name of the function to call. - -@item do_arrays -If this is true, the function can handle elements that are subarrays. -@end table - -If subarrays are to be processed, that is done before walking them further. - -When run with the following scaffolding, the function produces the same -results as does the earlier @code{walk_array()} function: - -@example -BEGIN @{ - a[1] = 1 - a[2][1] = 21 - a[2][2] = 22 - a[3] = 3 - a[4][1][1] = 411 - a[4][2] = 42 - - process_array(a, "a", "do_print", 0) -@} - -function do_print(name, element) -@{ - printf "%s = %s\n", name, element -@} -@end example +processing arrays. This is described in @ref{Walking Arrays}. Remember that you must supply a leading @samp{@@} in front of an indirect function call. @@ -19703,7 +19734,7 @@ It contains the following chapters: your own @command{awk} functions. Writing functions is important, because 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. +manageable and making programs more readable. @cindex Kernighan, Brian @cindex Plauger, P.J.@: @@ -19832,7 +19863,7 @@ often use variable names like these for their own purposes. The example programs shown in this @value{CHAPTER} all start the names of their private variables with an underscore (@samp{_}). Users generally don't use leading underscores in their variable names, so this convention immediately -decreases the chances that the variable name will be accidentally shared +decreases the chances that the variable names will be accidentally shared with the user's program. @cindex @code{_} (underscore), in names of private variables @@ -19850,8 +19881,8 @@ show how our own @command{awk} programming style has evolved and to provide some basis for this discussion.} As a final note on variable naming, if a function makes global variables -available for use by a main program, it is a good convention to start that -variable's name with a capital letter---for +available for use by a main program, it is a good convention to start those +variables' names with a capital letter---for example, @code{getopt()}'s @code{Opterr} and @code{Optind} variables (@pxref{Getopt Function}). The leading capital letter indicates that it is global, while the fact that @@ -19862,7 +19893,7 @@ not one of @command{awk}'s predefined variables, such as @code{FS}. 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 -option is useful for verifying this.} If this is not done, the variable +option is useful for verifying this.} If this is not done, the variables could accidentally be used in the user's program, leading to bugs that are very difficult to track down: @@ -20060,7 +20091,7 @@ Following is the function: @example @c file eg/lib/assert.awk -# assert --- assert that a condition is true. Otherwise exit. +# assert --- assert that a condition is true. Otherwise, exit. @c endfile @ignore @@ -20096,7 +20127,7 @@ is false, it prints a message to standard error, using the @code{string} parameter to describe the failed condition. It then sets the variable @code{_assert_exit} to one and executes the @code{exit} statement. The @code{exit} statement jumps to the @code{END} rule. If the @code{END} -rules finds @code{_assert_exit} to be true, it exits immediately. +rule finds @code{_assert_exit} to be true, it exits immediately. The purpose of the test in the @code{END} rule is to keep any other @code{END} rules from running. When an assertion fails, the @@ -20388,7 +20419,7 @@ all the strings in an array into one long string. The following function, the application programs (@pxref{Sample Programs}). -Good function design is important; this function needs to be general but it +Good function design is important; this function needs to be general, but it should also have a reasonable default behavior. It is called with an array as well as the beginning and ending indices of the elements in the array to be merged. This assumes that the array indices are numeric---a reasonable @@ -20536,7 +20567,7 @@ allowed the user to supply an optional timestamp value to use instead of the current time. @node Readfile Function -@subsection Reading a Whole File At Once +@subsection Reading a Whole File at Once Often, it is convenient to have the entire contents of a file available in memory as a single string. A straightforward but naive way to @@ -20593,13 +20624,13 @@ function readfile(file, tmp, save_rs) It works by setting @code{RS} to @samp{^$}, a regular expression that will never match if the file has contents. @command{gawk} reads data from -the file into @code{tmp} attempting to match @code{RS}. The match fails +the file into @code{tmp}, attempting to match @code{RS}. The match fails after each read, but fails quickly, such that @command{gawk} fills @code{tmp} with the entire contents of the file. (@DBXREF{Records} for information on @code{RT} and @code{RS}.) In the case that @code{file} is empty, the return value is the null -string. Thus calling code may use something like: +string. Thus, calling code may use something like: @example contents = readfile("/some/path") @@ -20610,7 +20641,7 @@ if (length(contents) == 0) This tests the result to see if it is empty or not. An equivalent test would be @samp{contents == ""}. -@xref{Extension Sample Readfile}, for an extension function that +@DBXREF{Extension Sample Readfile} for an extension function that also reads an entire file into memory. @node Shell Quoting @@ -20717,8 +20748,8 @@ The @code{BEGIN} and @code{END} rules are each executed exactly once, at the beginning and end of your @command{awk} program, respectively (@pxref{BEGIN/END}). We (the @command{gawk} authors) once had a user who mistakenly thought that the -@code{BEGIN} rule is executed at the beginning of each @value{DF} and the -@code{END} rule is executed at the end of each @value{DF}. +@code{BEGIN} rules were executed at the beginning of each @value{DF} and the +@code{END} rules were executed at the end of each @value{DF}. When informed that this was not the case, the user requested that we add new special @@ -20758,7 +20789,7 @@ END @{ endfile(FILENAME) @} This file must be loaded before the user's ``main'' program, so that the rule it supplies is executed first. -This rule relies on @command{awk}'s @code{FILENAME} variable that +This rule relies on @command{awk}'s @code{FILENAME} variable, which automatically changes for each new @value{DF}. The current @value{FN} is saved in a private variable, @code{_oldfilename}. If @code{FILENAME} does not equal @code{_oldfilename}, then a new @value{DF} is being processed and @@ -20774,7 +20805,7 @@ first @value{DF}. The program also supplies an @code{END} rule to do the final processing for the last file. Because this @code{END} rule comes before any @code{END} rules supplied in the ``main'' program, @code{endfile()} is called first. Once -again the value of multiple @code{BEGIN} and @code{END} rules should be clear. +again, the value of multiple @code{BEGIN} and @code{END} rules should be clear. @cindex @code{beginfile()} user-defined function @cindex @code{endfile()} user-defined function @@ -20817,7 +20848,7 @@ how it simplifies writing the main program. You are probably wondering, if @code{beginfile()} and @code{endfile()} functions can do the job, why does @command{gawk} have -@code{BEGINFILE} and @code{ENDFILE} patterns (@pxref{BEGINFILE/ENDFILE})? +@code{BEGINFILE} and @code{ENDFILE} patterns? Good question. Normally, if @command{awk} cannot open a file, this causes an immediate fatal error. In this case, there is no way for a @@ -20826,13 +20857,14 @@ calling it relies on the file being open and at the first record. Thus, the main reason for @code{BEGINFILE} is to give you a ``hook'' to catch files that cannot be processed. @code{ENDFILE} exists for symmetry, and because it provides an easy way to do per-file cleanup processing. +For more information, refer to @ref{BEGINFILE/ENDFILE}. @end sidebar @node Rewind Function @subsection Rereading the Current File @cindex files, reading -Another request for a new built-in function was for a @code{rewind()} +Another request for a new built-in function was for a function that would make it possible to reread the current file. The requesting user didn't want to have to use @code{getline} (@pxref{Getline}) @@ -20841,7 +20873,7 @@ inside a loop. However, as long as you are not in the @code{END} rule, it is quite easy to arrange to immediately close the current input file and then start over with it from the top. -For lack of a better name, we'll call it @code{rewind()}: +For lack of a better name, we'll call the function @code{rewind()}: @cindex @code{rewind()} user-defined function @example @@ -20934,16 +20966,16 @@ See also @ref{ARGC and ARGV}. Because @command{awk} variable names only allow the English letters, the regular expression check purposely does not use character classes such as @samp{[:alpha:]} and @samp{[:alnum:]} -(@pxref{Bracket Expressions}) +(@pxref{Bracket Expressions}). @node Empty Files -@subsection Checking for Zero-length Files +@subsection Checking for Zero-Length Files All known @command{awk} implementations silently skip over zero-length files. This is a by-product of @command{awk}'s implicit read-a-record-and-match-against-the-rules loop: when @command{awk} tries to read a record from an empty file, it immediately receives an -end of file indication, closes the file, and proceeds on to the next +end-of-file indication, closes the file, and proceeds on to the next command-line @value{DF}, @emph{without} executing any user-level @command{awk} program code. @@ -21008,7 +21040,7 @@ Occasionally, you might not want @command{awk} to process command-line variable assignments (@pxref{Assignment Options}). In particular, if you have a @value{FN} that contains an @samp{=} character, -@command{awk} treats the @value{FN} as an assignment, and does not process it. +@command{awk} treats the @value{FN} as an assignment and does not process it. Some users have suggested an additional command-line option for @command{gawk} to disable command-line assignments. However, some simple programming with @@ -21370,8 +21402,8 @@ BEGIN @{ @c endfile @end example -The rest of the @code{BEGIN} rule is a simple test program. Here is the -result of two sample runs of the test program: +The rest of the @code{BEGIN} rule is a simple test program. Here are the +results of two sample runs of the test program: @example $ @kbd{awk -f getopt.awk -v _getopt_test=1 -- -a -cbARG bax -x} @@ -21429,7 +21461,7 @@ use @code{getopt()} to process their arguments. The @code{PROCINFO} array (@pxref{Built-in Variables}) provides access to the current user's real and effective user and group ID -numbers, and if available, the user's supplementary group set. +numbers, and, if available, the user's supplementary group set. However, because these are numbers, they do not provide very useful information to the average user. There needs to be some way to find the user information associated with the user and group ID numbers. This @@ -21449,7 +21481,7 @@ kept. Instead, it provides the @code{<pwd.h>} header file and several C language subroutines for obtaining user information. The primary function is @code{getpwent()}, for ``get password entry.'' The ``password'' comes from the original user database file, -@file{/etc/passwd}, which stores user information, along with the +@file{/etc/passwd}, which stores user information along with the encrypted passwords (hence the name). @cindex @command{pwcat} program @@ -21548,7 +21580,7 @@ The user's encrypted password. This may not be available on some systems. @item User-ID The user's numeric user ID number. -(On some systems, it's a C @code{long}, and not an @code{int}. Thus +(On some systems, it's a C @code{long}, and not an @code{int}. Thus, we cast it to @code{long} for all cases.) @item Group-ID @@ -21675,7 +21707,7 @@ The code that checks for using @code{FPAT}, using @code{using_fpat} 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. +the lines into fields, and then store the lines into each array as necessary. When the loop is done, @code{@w{_pw_init()}} cleans up by closing the pipeline, setting @code{@w{_pw_inited}} to one, and restoring @code{FS} (and @code{FIELDWIDTHS} or @code{FPAT} @@ -21892,7 +21924,7 @@ it is usually empty or set to @samp{*}. @item Group ID Number The group's numeric group ID number; the association of name to number must be unique within the file. -(On some systems it's a C @code{long}, and not an @code{int}. Thus +(On some systems it's a C @code{long}, and not an @code{int}. Thus, we cast it to @code{long} for all cases.) @item Group Member List @@ -22006,32 +22038,32 @@ The @code{@w{_gr_init()}} function first saves @code{FS}, @code{$0}, and then sets @code{FS} and @code{RS} to the correct values for scanning the group information. It also takes care to note whether @code{FIELDWIDTHS} or @code{FPAT} -is being used, and to restore the appropriate field splitting mechanism. +is being used, and to restore the appropriate field-splitting mechanism. -The group information is stored is several associative arrays. +The group information is stored in several associative arrays. The arrays are indexed by group name (@code{@w{_gr_byname}}), by group ID number (@code{@w{_gr_bygid}}), and by position in the database (@code{@w{_gr_bycount}}). There is an additional array indexed by username (@code{@w{_gr_groupsbyuser}}), which is a space-separated list of groups to which each user belongs. -Unlike the user database, it is possible to have multiple records in the +Unlike in the user database, it is possible to have multiple records in the database for the same group. This is common when a group has a large number of members. A pair of such entries might look like the following: @example -tvpeople:*:101:johny,jay,arsenio +tvpeople:*:101:johnny,jay,arsenio tvpeople:*:101:david,conan,tom,joan @end example For this reason, @code{_gr_init()} looks to see if a group name or -group ID number is already seen. If it is, the usernames are -simply concatenated onto the previous list of users.@footnote{There is actually a +group ID number is already seen. If so, the usernames are +simply concatenated onto the previous list of users.@footnote{There is a subtle problem with the code just presented. Suppose that the first time there were no names. This code adds the names with a leading comma. It also doesn't check that there is a @code{$4}.} Finally, @code{_gr_init()} closes the pipeline to @command{grcat}, restores -@code{FS} (and @code{FIELDWIDTHS} or @code{FPAT} if necessary), @code{RS}, and @code{$0}, +@code{FS} (and @code{FIELDWIDTHS} or @code{FPAT}, if necessary), @code{RS}, and @code{$0}, initializes @code{_gr_count} to zero (it is used later), and makes @code{_gr_inited} nonzero. @@ -22131,12 +22163,12 @@ uses these functions. @DBREF{Arrays of Arrays} described how @command{gawk} provides arrays of arrays. In particular, any element of -an array may be either a scalar, or another array. The +an array may be either a scalar or another array. The @code{isarray()} function (@pxref{Type Functions}) lets you distinguish an array from a scalar. The following function, @code{walk_array()}, recursively traverses -an array, printing each element's indices and value. +an array, printing the element indices and values. You call it with the array and a string representing the name of the array: @@ -22187,6 +22219,66 @@ $ @kbd{gawk -f walk_array.awk} @print{} a[4][2] = 42 @end example +The function just presented simply prints the +name and value of each scalar array element. However, it is easy to +generalize it, by passing in the name of a function to call +when walking an array. The modified function looks like this: + +@example +@c file eg/lib/processarray.awk +function process_array(arr, name, process, do_arrays, i, new_name) +@{ + for (i in arr) @{ + new_name = (name "[" i "]") + if (isarray(arr[i])) @{ + if (do_arrays) + @@process(new_name, arr[i]) + process_array(arr[i], new_name, process, do_arrays) + @} else + @@process(new_name, arr[i]) + @} +@} +@c endfile +@end example + +The arguments are as follows: + +@table @code +@item arr +The array. + +@item name +The name of the array (a string). + +@item process +The name of the function to call. + +@item do_arrays +If this is true, the function can handle elements that are subarrays. +@end table + +If subarrays are to be processed, that is done before walking them further. + +When run with the following scaffolding, the function produces the same +results as does the earlier version of @code{walk_array()}: + +@example +BEGIN @{ + a[1] = 1 + a[2][1] = 21 + a[2][2] = 22 + a[3] = 3 + a[4][1][1] = 411 + a[4][2] = 42 + + process_array(a, "a", "do_print", 0) +@} + +function do_print(name, element) +@{ + printf "%s = %s\n", name, element +@} +@end example @node Library Functions Summary @section Summary @@ -22208,24 +22300,24 @@ The functions presented here fit into the following categories: @c nested list @table @asis @item General problems -Number-to-string conversion, assertions, rounding, random number +Number-to-string conversion, testing assertions, rounding, random number generation, converting characters to numbers, joining strings, getting easily usable time-of-day information, and reading a whole file in -one shot. +one shot @item Managing @value{DF}s Noting @value{DF} boundaries, rereading the current file, checking for readable files, checking for zero-length files, and treating assignments -as @value{FN}s. +as @value{FN}s @item Processing command-line options -An @command{awk} version of the standard C @code{getopt()} function. +An @command{awk} version of the standard C @code{getopt()} function @item Reading the user and group databases -Two sets of routines that parallel the C library versions. +Two sets of routines that parallel the C library versions @item Traversing arrays of arrays -A simple function to traverse an array of arrays to any depth. +Two functions that traverse an array of arrays to any depth @end table @c end nested list @@ -22320,10 +22412,10 @@ in this @value{CHAPTER}. The second presents @command{awk} versions of several common POSIX utilities. These are programs that you are hopefully already familiar with, -and therefore, whose problems are understood. +and therefore whose problems are understood. By reimplementing these programs in @command{awk}, you can focus on the @command{awk}-related aspects of solving -the programming problem. +the programming problems. The third is a grab bag of interesting programs. These solve a number of different data-manipulation and management @@ -22383,7 +22475,7 @@ It should be noted that these programs are not necessarily intended to replace the installed versions on your system. Nor may all of these programs be fully compliant with the most recent POSIX standard. This is not a problem; their -purpose is to illustrate @command{awk} language programming for ``real world'' +purpose is to illustrate @command{awk} language programming for ``real-world'' tasks. The programs are presented in alphabetical order. @@ -22412,7 +22504,7 @@ but you may supply a command-line option to change the field @dfn{delimiter} (i.e., the field-separator character). @command{cut}'s definition of fields is less general than @command{awk}'s. -A common use of @command{cut} might be to pull out just the login name of +A common use of @command{cut} might be to pull out just the login names of logged-on users from the output of @command{who}. For example, the following pipeline generates a sorted, unique list of the logged-on users: @@ -22921,7 +23013,7 @@ successful or unsuccessful match. If the line does not match, the @code{next} statement just moves on to the next record. A number of additional tests are made, but they are only done if we -are not counting lines. First, if the user only wants exit status +are not counting lines. First, if the user only wants the exit status (@code{no_print} is true), then it is enough to know that @emph{one} line in this file matched, and we can skip on to the next file with @code{nextfile}. Similarly, if we are only printing @value{FN}s, we can @@ -22962,7 +23054,7 @@ if necessary: @end example The @code{END} rule takes care of producing the correct exit status. If -there are no matches, the exit status is one; otherwise it is zero: +there are no matches, the exit status is one; otherwise, it is zero: @example @c file eg/prog/egrep.awk @@ -23014,7 +23106,8 @@ Here is a simple version of @command{id} written in @command{awk}. It uses the user database library functions (@pxref{Passwd Functions}) and the group database library functions -(@pxref{Group Functions}): +(@pxref{Group Functions}) +from @ref{Library Functions}. The program is fairly straightforward. All the work is done in the @code{BEGIN} rule. The user and group ID numbers are obtained from @@ -23141,8 +23234,8 @@ By default, the output files are named @file{xaa}, @file{xab}, and so on. Each file has 1,000 lines in it, with the likely exception of the last file. To change the number of lines in each file, supply a number on the command line -preceded with a minus (e.g., @samp{-500} for files with 500 lines in them -instead of 1,000). To change the name of the output files to something like +preceded with a minus sign (e.g., @samp{-500} for files with 500 lines in them +instead of 1,000). To change the names of the output files to something like @file{myfileaa}, @file{myfileab}, and so on, supply an additional argument that specifies the @value{FN} prefix. @@ -23981,7 +24074,7 @@ checking and setting of defaults: the delay, the count, and the message to print. If the user supplied a message without the ASCII BEL character (known as the ``alert'' character, @code{"\a"}), then it is added to the message. (On many systems, printing the ASCII BEL generates an -audible alert. Thus when the alarm goes off, the system calls attention +audible alert. Thus, when the alarm goes off, the system calls attention to itself in case the user is not looking at the computer.) Just for a change, this program uses a @code{switch} statement (@pxref{Switch Statement}), but the processing could be done with a series of @@ -24150,7 +24243,7 @@ to @command{gawk}. @c at least theoretically The following program was written to prove that character transliteration could be done with a user-level -function. This program is not as complete as the system @command{tr} utility +function. This program is not as complete as the system @command{tr} utility, but it does most of the job. The @command{translate} program was written long before @command{gawk} @@ -24162,13 +24255,13 @@ takes three arguments: @table @code @item from -A list of characters from which to translate. +A list of characters from which to translate @item to -A list of characters to which to translate. +A list of characters to which to translate @item target -The string on which to do the translation. +The string on which to do the translation @end table Associative arrays make the translation part fairly easy. @code{t_ar} holds @@ -24177,7 +24270,7 @@ loop goes through @code{from}, one character at a time. For each character in @code{from}, if the character appears in @code{target}, it is replaced with the corresponding @code{to} character. -The @code{translate()} function calls @code{stranslate()} using @code{$0} +The @code{translate()} function calls @code{stranslate()}, using @code{$0} as the target. The main program sets two global variables, @code{FROM} and @code{TO}, from the command line, and then changes @code{ARGV} so that @command{awk} reads from the standard input. @@ -24199,7 +24292,7 @@ Finally, the processing rule simply calls @code{translate()} for each record: @c endfile @end ignore @c file eg/prog/translate.awk -# Bugs: does not handle things like: tr A-Z a-z, it has +# Bugs: does not handle things like tr A-Z a-z; it has # to be spelled out. However, if `to' is shorter than `from', # the last character in `to' is used for the rest of `from'. @@ -24275,7 +24368,7 @@ for inspiration. @cindex printing, mailing labels @cindex mailing labels@comma{} printing -Here is a ``real world''@footnote{``Real world'' is defined as +Here is a ``real-world''@footnote{``Real world'' is defined as ``a program actually used to get something done.''} program. This script reads lists of names and @@ -24284,7 +24377,7 @@ on it, two across and 10 down. The addresses are guaranteed to be no more than five lines of data. Each address is separated from the next by a blank line. -The basic idea is to read 20 labels worth of data. Each line of each label +The basic idea is to read 20 labels' worth of data. Each line of each label is stored in the @code{line} array. The single rule takes care of filling the @code{line} array and printing the page when 20 labels have been read. @@ -24307,12 +24400,12 @@ of lines on the page Most of the work is done in the @code{printpage()} function. The label lines are stored sequentially in the @code{line} array. But they -have to print horizontally; @code{line[1]} next to @code{line[6]}, +have to print horizontally: @code{line[1]} next to @code{line[6]}, @code{line[2]} next to @code{line[7]}, and so on. Two loops accomplish this. The outer loop, controlled by @code{i}, steps through every 10 lines of data; this is each row of labels. The inner loop, controlled by @code{j}, goes through the lines within the row. -As @code{j} goes from 0 to 4, @samp{i+j} is the @code{j}-th line in +As @code{j} goes from 0 to 4, @samp{i+j} is the @code{j}th line in the row, and @samp{i+j+5} is the entry next to it. The output ends up looking something like this: @@ -24430,8 +24523,8 @@ END @{ @} @end example -The program relies on @command{awk}'s default field splitting -mechanism to break each line up into ``words,'' and uses an +The program relies on @command{awk}'s default field-splitting +mechanism to break each line up into ``words'' and uses an associative array named @code{freq}, indexed by each word, to count the number of times the word occurs. In the @code{END} rule, it prints the counts. @@ -24536,7 +24629,7 @@ to use the @command{sort} program. @cindex lines, duplicate@comma{} removing The @command{uniq} program -(@pxref{Uniq Program}), +(@pxref{Uniq Program}) removes duplicate lines from @emph{sorted} data. Suppose, however, you need to remove duplicate lines from a @value{DF} but @@ -24623,7 +24716,7 @@ Texinfo input file into separate files. @cindex Texinfo This @value{DOCUMENT} is written in @uref{http://www.gnu.org/software/texinfo/, Texinfo}, -the GNU project's document formatting language. +the GNU Project's document formatting language. A single Texinfo source file can be used to produce both printed documentation, with @TeX{}, and online documentation. @ifnotinfo @@ -24682,7 +24775,7 @@ The Texinfo file looks something like this: @example @dots{} -This program has a @@code@{BEGIN@} rule, +This program has a @@code@{BEGIN@} rule that prints a nice message: @@example @@ -24711,7 +24804,7 @@ exits with a zero exit status, signifying OK: @cindex @code{extract.awk} program @example @c file eg/prog/extract.awk -# extract.awk --- extract files and run programs from texinfo files +# extract.awk --- extract files and run programs from Texinfo files @c endfile @ignore @c file eg/prog/extract.awk @@ -24752,12 +24845,12 @@ The second rule handles moving data into files. It verifies that a @value{FN} is given in the directive. If the file named is not the current file, then the current file is closed. Keeping the current file open until a new file is encountered allows the use of the @samp{>} -redirection for printing the contents, keeping open file management +redirection for printing the contents, keeping open-file management simple. The @code{for} loop does the work. It reads lines using @code{getline} (@pxref{Getline}). -For an unexpected end of file, it calls the @code{@w{unexpected_eof()}} +For an unexpected end-of-file, it calls the @code{@w{unexpected_eof()}} function. If the line is an ``endfile'' line, then it breaks out of the loop. If the line is an @samp{@@group} or @samp{@@end group} line, then it @@ -24859,7 +24952,7 @@ END @{ @cindex @command{sed} utility @cindex stream editors -The @command{sed} utility is a stream editor, a program that reads a +The @command{sed} utility is a @dfn{stream editor}, a program that reads a stream of data, makes changes to it, and passes it on. It is often used to make global changes to a large file or to a stream of data generated by a pipeline of commands. @@ -25004,7 +25097,7 @@ includes don't accidentally include a library function twice. @command{igawk} should behave just like @command{gawk} externally. This means it should accept all of @command{gawk}'s command-line arguments, including the ability to have multiple source files specified via -@option{-f}, and the ability to mix command-line and library source files. +@option{-f} and the ability to mix command-line and library source files. The program is written using the POSIX Shell (@command{sh}) command language.@footnote{Fully explaining the @command{sh} language is beyond @@ -25043,7 +25136,7 @@ Run the expanded program with @command{gawk} and any other original command-line arguments that the user supplied (such as the @value{DF} names). @end enumerate -This program uses shell variables extensively: for storing command-line arguments, +This program uses shell variables extensively: for storing command-line arguments and the text of the @command{awk} program that will expand the user's program, for the user's original program, and for the expanded program. Doing so removes some potential problems that might arise were we to use temporary files instead, @@ -25360,22 +25453,7 @@ Save the results of this processing in the shell variable The last step is to call @command{gawk} with the expanded program, along with the original -options and command-line arguments that the user supplied. - -@c this causes more problems than it solves, so leave it out. -@ignore -The special file @file{/dev/null} is passed as a @value{DF} to @command{gawk} -to handle an interesting case. Suppose that the user's program only has -a @code{BEGIN} rule and there are no @value{DF}s to read. -The program should exit without reading any @value{DF}s. -However, suppose that an included library file defines an @code{END} -rule of its own. In this case, @command{gawk} will hang, reading standard -input. In order to avoid this, @file{/dev/null} is explicitly added to the -command line. Reading from @file{/dev/null} always returns an immediate -end of file indication. - -@c Hmm. Add /dev/null if $# is 0? Still messes up ARGV. Sigh. -@end ignore +options and command-line arguments that the user supplied: @example @c file eg/prog/igawk.sh @@ -25441,8 +25519,8 @@ the same letters Column 2, Problem C, of Jon Bentley's @cite{Programming Pearls}, Second Edition, presents an elegant algorithm. The idea is to give words that are anagrams a common signature, sort all the words together by their -signature, and then print them. Dr.@: Bentley observes that taking the -letters in each word and sorting them produces that common signature. +signatures, and then print them. Dr.@: Bentley observes that taking the +letters in each word and sorting them produces those common signatures. The following program uses arrays of arrays to bring together words with the same signature and array sorting to print the words @@ -25451,8 +25529,8 @@ in sorted order: @cindex @code{anagram.awk} program @example @c file eg/prog/anagram.awk -# anagram.awk --- An implementation of the anagram finding algorithm -# from Jon Bentley's "Programming Pearls", 2nd edition. +# anagram.awk --- An implementation of the anagram-finding algorithm +# from Jon Bentley's "Programming Pearls," 2nd edition. # Addison Wesley, 2000, ISBN 0-201-65788-0. # Column 2, Problem C, section 2.8, pp 18-20. @c endfile @@ -25500,7 +25578,7 @@ sorts the letters, and then joins them back together: @example @c file eg/prog/anagram.awk -# word2key --- split word apart into letters, sort, joining back together +# word2key --- split word apart into letters, sort, and join back together function word2key(word, a, i, n, result) @{ @@ -25695,12 +25773,13 @@ characters. The ability to use @code{split()} with the empty string as the separator can considerably simplify such tasks. @item -The library functions from @ref{Library Functions}, proved their -usefulness for a number of real (if small) programs. +The examples here demonstrate the usefulness of the library +functions from @DBREF{Library Functions} +for a number of real (if small) programs. @item Besides reinventing POSIX wheels, other programs solved a selection of -interesting problems, such as finding duplicates words in text, printing +interesting problems, such as finding duplicate words in text, printing mailing labels, and finding anagrams. @end itemize @@ -25896,18 +25975,18 @@ a violent psychopath who knows where you live.} This @value{CHAPTER} discusses advanced features in @command{gawk}. It's a bit of a ``grab bag'' of items that are otherwise unrelated to each other. -First, a command-line option allows @command{gawk} to recognize +First, we look at a command-line option that allows @command{gawk} to recognize nondecimal numbers in input data, not just in @command{awk} programs. Then, @command{gawk}'s special features for sorting arrays are presented. Next, two-way I/O, discussed briefly in earlier parts of this @value{DOCUMENT}, is described in full detail, along with the basics -of TCP/IP networking. Finally, @command{gawk} +of TCP/IP networking. Finally, we see how @command{gawk} can @dfn{profile} an @command{awk} program, making it possible to tune it for performance. @c FULLXREF ON -A number of advanced features require separate @value{CHAPTER}s of their +Additional advanced features are discussed in separate @value{CHAPTER}s of their own: @itemize @value{BULLET} @@ -26001,7 +26080,8 @@ This option may disappear in a future version of @command{gawk}. @node Array Sorting @section Controlling Array Traversal and Array Sorting -@command{gawk} lets you control the order in which a @samp{for (i in array)} +@command{gawk} lets you control the order in which a +@samp{for (@var{indx} in @var{array})} loop traverses an array. In addition, two built-in functions, @code{asort()} and @code{asorti()}, @@ -26017,7 +26097,7 @@ to order the elements during sorting. @node Controlling Array Traversal @subsection Controlling Array Traversal -By default, the order in which a @samp{for (i in array)} loop +By default, the order in which a @samp{for (@var{indx} in @var{array})} loop scans an array is not defined; it is generally based upon the internal implementation of arrays inside @command{awk}. @@ -26046,23 +26126,23 @@ function comp_func(i1, v1, i2, v2) @} @end example -Here, @var{i1} and @var{i2} are the indices, and @var{v1} and @var{v2} +Here, @code{i1} and @code{i2} are the indices, and @code{v1} and @code{v2} are the corresponding values of the two elements being compared. -Either @var{v1} or @var{v2}, or both, can be arrays if the array being +Either @code{v1} or @code{v2}, or both, can be arrays if the array being traversed contains subarrays as values. (@DBXREF{Arrays of Arrays} for more information about subarrays.) The three possible return values are interpreted as follows: @table @code @item comp_func(i1, v1, i2, v2) < 0 -Index @var{i1} comes before index @var{i2} during loop traversal. +Index @code{i1} comes before index @code{i2} during loop traversal. @item comp_func(i1, v1, i2, v2) == 0 -Indices @var{i1} and @var{i2} -come together but the relative order with respect to each other is undefined. +Indices @code{i1} and @code{i2} +come together, but the relative order with respect to each other is undefined. @item comp_func(i1, v1, i2, v2) > 0 -Index @var{i1} comes after index @var{i2} during loop traversal. +Index @code{i1} comes after index @code{i2} during loop traversal. @end table Our first comparison function can be used to scan an array in @@ -26223,7 +26303,7 @@ As already mentioned, the order of the indices is arbitrary if two elements compare equal. This is usually not a problem, but letting the tied elements come out in arbitrary order can be an issue, especially when comparing item values. The partial ordering of the equal elements -may change the next time the array is traversed, if other elements are added or +may change the next time the array is traversed, if other elements are added to or removed from the array. One way to resolve ties when comparing elements with otherwise equal values is to include the indices in the comparison rules. Note that doing this may make the loop traversal less efficient, @@ -26266,7 +26346,7 @@ equivalent or distinct. Another point to keep in mind is that in the case of subarrays, the element values can themselves be arrays; a production comparison function should use the @code{isarray()} function -(@pxref{Type Functions}), +(@pxref{Type Functions}) to check for this, and choose a defined sorting order for subarrays. All sorting based on @code{PROCINFO["sorted_in"]} @@ -26274,7 +26354,7 @@ is disabled in POSIX mode, because the @code{PROCINFO} array is not special in that case. As a side note, sorting the array indices before traversing -the array has been reported to add 15% to 20% overhead to the +the array has been reported to add a 15% to 20% overhead to the execution time of @command{awk} programs. For this reason, sorted array traversal is not the default. @@ -26333,7 +26413,7 @@ However, the @code{source} array is not affected. Often, what's needed is to sort on the values of the @emph{indices} instead of the values of the elements. To do that, use the @code{asorti()} function. The interface and behavior are identical to -that of @code{asort()}, except that the index values are used for sorting, +that of @code{asort()}, except that the index values are used for sorting and become the values of the result array: @example @@ -26368,8 +26448,8 @@ it chooses}, taking into account just the indices, just the values, or both. This is extremely powerful. Once the array is sorted, @code{asort()} takes the @emph{values} in -their final order, and uses them to fill in the result array, whereas -@code{asorti()} takes the @emph{indices} in their final order, and uses +their final order and uses them to fill in the result array, whereas +@code{asorti()} takes the @emph{indices} in their final order and uses them to fill in the result array. @cindex reference counting, sorting arrays @@ -26666,7 +26746,7 @@ service name. @cindex @command{gawk}, @code{ERRNO} variable in @cindex @code{ERRNO} variable @quotation NOTE -Failure in opening a two-way socket will result in a non-fatal error +Failure in opening a two-way socket will result in a nonfatal error being returned to the calling code. The value of @code{ERRNO} indicates the error (@pxref{Auto-set}). @end quotation @@ -26683,19 +26763,19 @@ BEGIN @{ @end example This program reads the current date and time from the local system's -TCP @samp{daytime} server. +TCP @code{daytime} server. It then prints the results and closes the connection. Because this topic is extensive, the use of @command{gawk} for TCP/IP programming is documented separately. @ifinfo See -@inforef{Top, , General Introduction, gawkinet, TCP/IP Internetworking with @command{gawk}}, +@inforef{Top, , General Introduction, gawkinet, @value{GAWKINETTITLE}}, @end ifinfo @ifnotinfo See @uref{http://www.gnu.org/software/gawk/manual/gawkinet/, -@cite{TCP/IP Internetworking with @command{gawk}}}, +@cite{@value{GAWKINETTITLE}}}, which comes as part of the @command{gawk} distribution, @end ifnotinfo for a much more complete introduction and discussion, as well as @@ -26771,9 +26851,9 @@ 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 +@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.) +in the morning to work): @cindex @code{BEGIN} pattern, and profiling @cindex @code{END} pattern, and profiling @@ -26833,8 +26913,8 @@ They are as follows: @item The program is printed in the order @code{BEGIN} rules, @code{BEGINFILE} rules, -pattern/action rules, -@code{ENDFILE} rules, @code{END} rules and functions, listed +pattern--action rules, +@code{ENDFILE} rules, @code{END} rules, and functions, listed alphabetically. Multiple @code{BEGIN} and @code{END} rules retain their separate identities, as do @@ -26842,7 +26922,7 @@ multiple @code{BEGINFILE} and @code{ENDFILE} rules. @cindex patterns, counts, in a profile @item -Pattern-action rules have two counts. +Pattern--action rules have two counts. The first count, to the left of the rule, shows how many times the rule's pattern was @emph{tested}. The second count, to the right of the rule's opening left brace @@ -26909,13 +26989,13 @@ the target of a redirection isn't a scalar, it gets parenthesized. @command{gawk} supplies leading comments in front of the @code{BEGIN} and @code{END} rules, the @code{BEGINFILE} and @code{ENDFILE} rules, -the pattern/action rules, and the functions. +the pattern--action rules, and the functions. @end itemize The profiled version of your program may not look exactly like what you typed when you wrote it. This is because @command{gawk} creates the -profiled version by ``pretty printing'' its internal representation of +profiled version by ``pretty-printing'' its internal representation of the program. The advantage to this is that @command{gawk} can produce a standard representation. Also, things such as: @@ -26998,16 +27078,16 @@ If you use the @code{HUP} signal instead of the @code{USR1} signal, @cindex @code{SIGQUIT} signal (MS-Windows) @cindex signals, @code{QUIT}/@code{SIGQUIT} (MS-Windows) When @command{gawk} runs on MS-Windows systems, it uses the -@code{INT} and @code{QUIT} signals for producing the profile and, in +@code{INT} and @code{QUIT} signals for producing the profile, and in the case of the @code{INT} signal, @command{gawk} exits. This is because these systems don't support the @command{kill} command, so the only signals you can deliver to a program are those generated by the keyboard. The @code{INT} signal is generated by the -@kbd{Ctrl-@key{C}} or @kbd{Ctrl-@key{BREAK}} key, while the -@code{QUIT} signal is generated by the @kbd{Ctrl-@key{\}} key. +@kbd{Ctrl-c} or @kbd{Ctrl-BREAK} key, while the +@code{QUIT} signal is generated by the @kbd{Ctrl-\} key. Finally, @command{gawk} also accepts another option, @option{--pretty-print}. -When called this way, @command{gawk} ``pretty prints'' the program into +When called this way, @command{gawk} ``pretty-prints'' the program into @file{awkprof.out}, without any execution counts. @quotation NOTE @@ -27061,7 +27141,7 @@ optionally, close off one side of the two-way communications. @item By using special @value{FN}s with the @samp{|&} operator, you can open a -TCP/IP (or UDP/IP) connection to remote hosts in the Internet. @command{gawk} +TCP/IP (or UDP/IP) connection to remote hosts on the Internet. @command{gawk} supports both IPv4 and IPv6. @item @@ -27071,7 +27151,7 @@ you tune them more easily. Sending the @code{USR1} signal while profiling cause @command{gawk} to dump the profile and keep going, including a function call stack. @item -You can also just ``pretty print'' the program. This currently also runs +You can also just ``pretty-print'' the program. This currently also runs the program, but that will change in the next major release. @end itemize @@ -27120,7 +27200,7 @@ a requirement. @cindex localization @dfn{Internationalization} means writing (or modifying) a program once, in such a way that it can use multiple languages without requiring -further source-code changes. +further source code changes. @dfn{Localization} means providing the data necessary for an internationalized program to work in a particular language. Most typically, these terms refer to features such as the language @@ -27135,7 +27215,7 @@ monetary values are printed and read. @cindex @command{gettext} library @command{gawk} uses GNU @command{gettext} to provide its internationalization features. -The facilities in GNU @command{gettext} focus on messages; strings printed +The facilities in GNU @command{gettext} focus on messages: strings printed by a program, either directly or via formatting with @code{printf} or @code{sprintf()}.@footnote{For some operating systems, the @command{gawk} port doesn't support GNU @command{gettext}. @@ -27326,7 +27406,7 @@ All of the above. (Not too useful in the context of @command{gettext}.) @section Internationalizing @command{awk} Programs @cindex @command{awk} programs, internationalizing -@command{gawk} provides the following variables and functions for +@command{gawk} provides the following variables for internationalization: @table @code @@ -27342,7 +27422,12 @@ value is @code{"messages"}. String constants marked with a leading underscore are candidates for translation at runtime. String constants without a leading underscore are not translated. +@end table + +@command{gawk} provides the following functions for +internationalization: +@table @code @cindexgawkfunc{dcgettext} @item @code{dcgettext(@var{string}} [@code{,} @var{domain} [@code{,} @var{category}]]@code{)} Return the translation of @var{string} in @@ -27399,15 +27484,7 @@ If @var{directory} is the null string (@code{""}), then given @var{domain}. @end table -To use these facilities in your @command{awk} program, follow the steps -outlined in -@ifnotinfo -the previous @value{SECTION}, -@end ifnotinfo -@ifinfo -@ref{Explaining gettext}, -@end ifinfo -like so: +To use these facilities in your @command{awk} program, follow these steps: @enumerate @cindex @code{BEGIN} pattern, @code{TEXTDOMAIN} variable and @@ -27690,7 +27767,7 @@ the null string (@code{""}) as its value, leaving the original string constant a the result. @item -By defining ``dummy'' functions to replace @code{dcgettext()}, @code{dcngettext()} +By defining ``dummy'' functions to replace @code{dcgettext()}, @code{dcngettext()}, and @code{bindtextdomain()}, the @command{awk} program can be made to run, but all the messages are output in the original language. For example: @@ -27874,11 +27951,11 @@ using the GNU @command{gettext} package. (GNU @command{gettext} is described in complete detail in @ifinfo -@inforef{Top, , GNU @command{gettext} utilities, gettext, GNU gettext tools}.) +@inforef{Top, , GNU @command{gettext} utilities, gettext, GNU @command{gettext} utilities}.) @end ifinfo @ifnotinfo @uref{http://www.gnu.org/software/gettext/manual/, -@cite{GNU gettext tools}}.) +@cite{GNU @command{gettext} utilities}}.) @end ifnotinfo As of this writing, the latest version of GNU @command{gettext} is @uref{ftp://ftp.gnu.org/gnu/gettext/gettext-0.19.4.tar.gz, @@ -27894,7 +27971,7 @@ and fatal errors in the local language. @itemize @value{BULLET} @item Internationalization means writing a program such that it can use multiple -languages without requiring source-code changes. Localization means +languages without requiring source code changes. Localization means providing the data necessary for an internationalized program to work in a particular language. @@ -27911,9 +27988,9 @@ file, and the @file{.po} files are compiled into @file{.gmo} files for use at runtime. @item -You can use position specifications with @code{sprintf()} and +You can use positional specifications with @code{sprintf()} and @code{printf} to rearrange the placement of argument values in formatted -strings and output. This is useful for the translations of format +strings and output. This is useful for the translation of format control strings. @item @@ -27969,8 +28046,7 @@ the discussion of debugging in @command{gawk}. @subsection Debugging in General (If you have used debuggers in other languages, you may want to skip -ahead to the next section on the specific features of the @command{gawk} -debugger.) +ahead to @ref{Awk Debugging}.) Of course, a debugging program cannot remove bugs for you, because it has no way of knowing what you or your users consider a ``bug'' versus a @@ -28061,10 +28137,10 @@ and usually find the errant code quite quickly. @end table @node Awk Debugging -@subsection Awk Debugging +@subsection @command{awk} Debugging Debugging an @command{awk} program has some specific aspects that are -not shared with other programming languages. +not shared with programs written in other languages. First of all, the fact that @command{awk} programs usually take input line by line from a file or files and operate on those lines using specific @@ -28080,7 +28156,7 @@ to look at the individual primitive instructions carried out by the higher-level @command{awk} commands. @node Sample Debugging Session -@section Sample Debugging Session +@section Sample @command{gawk} Debugging Session @cindex sample debugging session In order to illustrate the use of @command{gawk} as a debugger, let's look at a sample @@ -28099,8 +28175,8 @@ as our example. @cindex debugger, how to start Starting the debugger is almost exactly like running @command{gawk} normally, -except you have to pass an additional option @option{--debug}, or the -corresponding short option @option{-D}. The file(s) containing the +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.) @@ -28113,7 +28189,7 @@ $ @kbd{gawk -D -f getopt.awk -f join.awk -f uniq.awk -1 inputfile} @noindent where both @file{getopt.awk} and @file{uniq.awk} are in @env{$AWKPATH}. (Experienced users of GDB or similar debuggers should note that -this syntax is slightly different from what they are used to. +this syntax is slightly different from what you are used to. With the @command{gawk} debugger, you give the arguments for running the program in the command line to the debugger rather than as part of the @code{run} command at the debugger prompt.) @@ -28267,10 +28343,10 @@ gawk> @kbd{n} @end example This tells us that @command{gawk} is now ready to execute line 66, which -decides whether to give the lines the special ``field skipping'' treatment +decides whether to give the lines the special ``field-skipping'' treatment indicated by the @option{-1} command-line option. (Notice that we skipped -from where we were before at line 63 to here, because the condition in line 63 -@samp{if (fcount == 0 && charcount == 0)} was false.) +from where we were before, at line 63, to here, because the condition +in line 63, @samp{if (fcount == 0 && charcount == 0)}, was false.) Continuing to step, we now get to the splitting of the current and last records: @@ -28344,7 +28420,7 @@ gawk> @kbd{n} Well, here we are at our error (sorry to spoil the suspense). What we had in mind was to join the fields starting from the second one to make -the virtual record to compare, and if the first field was numbered zero, +the virtual record to compare, and if the first field were numbered zero, this would work. Let's look at what we've got: @example @@ -28353,7 +28429,7 @@ gawk> @kbd{p cline clast} @print{} clast = "awk is a wonderful program!" @end example -Hey, those look pretty familiar! They're just our original, unaltered, +Hey, those look pretty familiar! They're just our original, unaltered input records. A little thinking (the human brain is still the best debugging tool), and we realize that we were off by one! @@ -28403,11 +28479,11 @@ Miscellaneous @end itemize Each of these are discussed in the following subsections. -In the following descriptions, commands which may be abbreviated +In the following descriptions, commands that may be abbreviated show the abbreviation on a second description line. A debugger command name may also be truncated if that partial name is unambiguous. The debugger has the built-in capability to -automatically repeat the previous command just by hitting @key{Enter}. +automatically repeat the previous command just by hitting @kbd{Enter}. This works for the commands @code{list}, @code{next}, @code{nexti}, @code{step}, @code{stepi}, and @code{continue} executed without any argument. @@ -28457,7 +28533,7 @@ Set a breakpoint at entry to (the first instruction of) function @var{function}. @end table -Each breakpoint is assigned a number which can be used to delete it from +Each breakpoint is assigned a number that can be used to delete it from the breakpoint list using the @code{delete} command. With a breakpoint, you may also supply a condition. This is an @@ -28509,7 +28585,7 @@ watchpoint is made unconditional). @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 +Delete specified breakpoints or a range of breakpoints. Delete all defined breakpoints if no argument is supplied. @cindex debugger commands, @code{disable} @@ -28518,7 +28594,7 @@ all defined breakpoints if no argument is supplied. @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. +any argument, disable all breakpoints. @cindex debugger commands, @code{e} (@code{enable}) @cindex debugger commands, @code{enable} @@ -28528,18 +28604,18 @@ any argument, disables all breakpoints. @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 -any argument, enables all breakpoints. -Optionally, you can specify how to enable the breakpoint: +any argument, enable all breakpoints. +Optionally, you can specify how to enable the breakpoints: @c nested table @table @code @item del -Enable the breakpoint(s) temporarily, then delete it when -the program stops at the breakpoint. +Enable the breakpoints temporarily, then delete each one when +the program stops at it. @item once -Enable the breakpoint(s) temporarily, then disable it when -the program stops at the breakpoint. +Enable the breakpoints temporarily, then disable each one when +the program stops at it. @end table @cindex debugger commands, @code{ignore} @@ -28607,7 +28683,7 @@ gawk> @item @code{continue} [@var{count}] @itemx @code{c} [@var{count}] Resume program execution. If continued from a breakpoint and @var{count} is -specified, ignores the breakpoint at that location the next @var{count} times +specified, ignore the breakpoint at that location the next @var{count} times before stopping. @cindex debugger commands, @code{finish} @@ -28661,7 +28737,7 @@ automatic display variables, and debugger options. @item @code{step} [@var{count}] @itemx @code{s} [@var{count}] Continue execution until control reaches a different source line in the -current stack frame. @code{step} steps inside any function called within +current stack frame, stepping inside any function called within the line. If the argument @var{count} is supplied, steps that many times before stopping, unless it encounters a breakpoint or watchpoint. @@ -28774,7 +28850,7 @@ or field. String values must be enclosed between double quotes (@code{"}@dots{}@code{"}). You can also set special @command{awk} variables, such as @code{FS}, -@code{NF}, @code{NR}, and son on. +@code{NF}, @code{NR}, and so on. @cindex debugger commands, @code{w} (@code{watch}) @cindex debugger commands, @code{watch} @@ -28786,7 +28862,7 @@ You can also set special @command{awk} variables, such as @code{FS}, Add variable @var{var} (or field @code{$@var{n}}) to the watch list. The debugger then stops whenever the value of the variable or field changes. Each watched item is assigned a -number which can be used to delete it from the watch list using the +number that can be used to delete it from the watch list using the @code{unwatch} command. With a watchpoint, you may also supply a condition. This is an @@ -28814,11 +28890,11 @@ watch list. @node Execution Stack @subsection Working with the Stack -Whenever you run a program which contains any function calls, +Whenever you run a program that contains any function calls, @command{gawk} maintains a stack of all of the function calls leading up to where the program is right now. You can see how you got to where you are, and also move around in the stack to see what the state of things was in the -functions which called the one you are in. The commands for doing this are: +functions that called the one you are in. The commands for doing this are: @table @asis @cindex debugger commands, @code{bt} (@code{backtrace}) @@ -28853,8 +28929,8 @@ Then select and print the frame. @item @code{frame} [@var{n}] @itemx @code{f} [@var{n}] Select and print stack frame @var{n}. Frame 0 is the currently executing, -or @dfn{innermost}, frame (function call), frame 1 is the frame that -called the innermost one. The highest numbered frame is the one for the +or @dfn{innermost}, frame (function call); frame 1 is the frame that +called the innermost one. The highest-numbered frame is the one for the main program. The printed information consists of the frame number, function and argument names, source file, and the source line. @@ -28870,7 +28946,7 @@ Then select and print the frame. Besides looking at the values of variables, there is often a need to get other sorts of information about the state of your program and of the -debugging environment itself. The @command{gawk} debugger has one command which +debugging environment itself. The @command{gawk} debugger has one command that provides this information, appropriately called @code{info}. @code{info} is used with one of a number of arguments that tell it exactly what you want to know: @@ -28958,12 +29034,12 @@ The available options are: @table @asis @item @code{history_size} @cindex debugger history size -The maximum number of lines to keep in the history file @file{./.gawk_history}. -The default is 100. +Set the maximum number of lines to keep in the history file +@file{./.gawk_history}. The default is 100. @item @code{listsize} @cindex debugger default list amount -The number of lines that @code{list} prints. The default is 15. +Specify the number of lines that @code{list} prints. The default is 15. @item @code{outfile} @cindex redirect @command{gawk} output, in debugger @@ -28973,7 +29049,7 @@ standard output. @item @code{prompt} @cindex debugger prompt -The debugger prompt. The default is @samp{@w{gawk> }}. +Change the debugger prompt. The default is @samp{@w{gawk> }}. @item @code{save_history} [@code{on} | @code{off}] @cindex debugger history file @@ -28984,7 +29060,7 @@ The default is @code{on}. @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. +Options are read back into the next session upon startup. @item @code{trace} [@code{on} | @code{off}] @cindex instruction tracing, in debugger @@ -29007,7 +29083,7 @@ command in the file. Also, the list of commands may include additional @code{source} commands; however, the @command{gawk} debugger will not source the same file more than once in order to avoid infinite recursion. -In addition to, or instead of the @code{source} command, you can use +In addition to, or instead of, the @code{source} command, you can use the @option{-D @var{file}} or @option{--debug=@var{file}} command-line options to execute commands from a file non-interactively (@pxref{Options}). @@ -29016,16 +29092,16 @@ options to execute commands from a file non-interactively @node Miscellaneous Debugger Commands @subsection Miscellaneous Commands -There are a few more commands which do not fit into the +There are a few more commands that do not fit into the previous categories, as follows: @table @asis @cindex debugger commands, @code{dump} @cindex @code{dump} debugger command @item @code{dump} [@var{filename}] -Dump bytecode of the program to standard output or to the file +Dump byte code of the program to standard output or to the file named in @var{filename}. This prints a representation of the internal -instructions which @command{gawk} executes to implement the @command{awk} +instructions that @command{gawk} executes to implement the @command{awk} commands in a program. This can be very enlightening, as the following partial dump of Davide Brini's obfuscated code (@pxref{Signature Program}) demonstrates: @@ -29122,7 +29198,7 @@ Print lines centered around line number @var{n} in source file @var{filename}. This command may change the current source file. @item @var{function} -Print lines centered around beginning of the +Print lines centered around the beginning of the function @var{function}. This command may change the current source file. @end table @@ -29134,16 +29210,16 @@ function @var{function}. This command may change the current source file. @item @code{quit} @itemx @code{q} Exit the debugger. Debugging is great fun, but sometimes we all have -to tend to other obligations in life, and sometimes we find the bug, +to tend to other obligations in life, and sometimes we find the bug and are free to go on to the next one! As we saw earlier, if you are -running a program, the debugger warns you if you accidentally type +running a program, the debugger warns you when you type @samp{q} or @samp{quit}, to make sure you really want to quit. @cindex debugger commands, @code{trace} @cindex @code{trace} debugger command @item @code{trace} [@code{on} | @code{off}] -Turn on or off a continuous printing of instructions which are about to -be executed, along with printing the @command{awk} line which they +Turn on or off continuous printing of the instructions that are about to +be executed, along with the @command{awk} lines they implement. The default is @code{off}. It is to be hoped that most of the ``opcodes'' in these instructions are @@ -29159,7 +29235,7 @@ fairly self-explanatory, and using @code{stepi} and @code{nexti} while If @command{gawk} is compiled with @uref{http://cnswww.cns.cwru.edu/php/chet/readline/readline.html, -the @code{readline} library}, you can take advantage of that library's +the GNU Readline library}, you can take advantage of that library's command completion and history expansion features. The following types of completion are available: @@ -29196,7 +29272,7 @@ and We hope you find the @command{gawk} debugger useful and enjoyable to work with, but as with any program, especially in its early releases, it still has -some limitations. A few which are worth being aware of are: +some limitations. A few that it's worth being aware of are: @itemize @value{BULLET} @item @@ -29212,13 +29288,13 @@ If you perused the dump of opcodes in @ref{Miscellaneous Debugger Commands} (or if you are already familiar with @command{gawk} internals), you will realize that much of the internal manipulation of data in @command{gawk}, as in many interpreters, is done on a stack. -@code{Op_push}, @code{Op_pop}, and the like, are the ``bread and butter'' of +@code{Op_push}, @code{Op_pop}, and the like are the ``bread and butter'' of most @command{gawk} code. Unfortunately, as of now, the @command{gawk} debugger does not allow you to examine the stack's contents. That is, the intermediate results of expression evaluation are on the -stack, but cannot be printed. Rather, only variables which are defined +stack, but cannot be printed. Rather, only variables that are defined in the program can be printed. Of course, a workaround for this is to use more explicit variables at the debugging stage and then change back to obscure, perhaps more optimal code later. @@ -29232,12 +29308,12 @@ programmer, you are expected to know the meaning of @item The @command{gawk} debugger is designed to be used by running a program (with all its parameters) on the command line, as described in @ref{Debugger Invocation}. -There is no way (as of now) to attach or ``break in'' to a running program. -This seems reasonable for a language which is used mainly for quickly +There is no way (as of now) to attach or ``break into'' a running program. +This seems reasonable for a language that is used mainly for quickly executing, short programs. @item -The @command{gawk} debugger only accepts source supplied with the @option{-f} option. +The @command{gawk} debugger only accepts source code supplied with the @option{-f} option. @end itemize @ignore @@ -29251,8 +29327,8 @@ be added, and of course feel free to try to add them yourself! @itemize @value{BULLET} @item Programs rarely work correctly the first time. Finding bugs -is @dfn{debugging} and a program that helps you find bugs is a -@dfn{debugger}. @command{gawk} has a built-in debugger that works very +is called debugging, and a program that helps you find bugs is a +debugger. @command{gawk} has a built-in debugger that works very similarly to the GNU Debugger, GDB. @item @@ -29272,7 +29348,7 @@ breakpoints, execution, viewing and changing data, working with the stack, getting information, and other tasks. @item -If the @code{readline} library is available when @command{gawk} is +If the GNU Readline library is available when @command{gawk} is compiled, it is used by the debugger to provide command-line history and editing. @@ -29336,7 +29412,7 @@ paper and pencil (and/or a calculator). In theory, numbers can have an arbitrary number of digits on either side (or both sides) of the decimal point, and the results of a computation are always exact. -Some modern system can do decimal arithmetic in hardware, but usually you +Some modern systems can do decimal arithmetic in hardware, but usually you need a special software library to provide access to these instructions. There are also libraries that do decimal arithmetic entirely in software. @@ -29354,8 +29430,8 @@ The disadvantage is that their range is limited. @cindex integers, unsigned In computers, integer values come in two flavors: @dfn{signed} and @dfn{unsigned}. Signed values may be negative or positive, whereas -unsigned values are always positive (i.e., greater than or equal -to zero). +unsigned values are always greater than or equal +to zero. In computer systems, integer arithmetic is exact, but the possible range of values is limited. Integer arithmetic is generally faster than @@ -29392,8 +29468,35 @@ signed. The possible ranges of values are shown in @ref{table-numeric-ranges}. @item 32-bit unsigned integer @tab 0 @tab 4,294,967,295 @item 64-bit signed integer @tab @minus{}9,223,372,036,854,775,808 @tab 9,223,372,036,854,775,807 @item 64-bit unsigned integer @tab 0 @tab 18,446,744,073,709,551,615 -@item Single-precision floating point (approximate) @tab @code{1.175494e-38} @tab @code{3.402823e+38} -@item Double-precision floating point (approximate) @tab @code{2.225074e-308} @tab @code{1.797693e+308} +@iftex +@item Single-precision floating point (approximate) @tab @math{1.175494^{-38}} @tab @math{3.402823^{38}} +@item Double-precision floating point (approximate) @tab @math{2.225074^{-308}} @tab @math{1.797693^{308}} +@end iftex +@ifnottex +@ifnotdocbook +@item Single-precision floating point (approximate) @tab 1.175494e-38 @tab 3.402823e38 +@item Double-precision floating point (approximate) @tab 2.225074e-308 @tab 1.797693e308 +@end ifnotdocbook +@end ifnottex +@ifdocbook +@item Single-precision floating point (approximate) @tab +@c FIXME: Use @sup here for superscript +@docbook +1.175494<superscript>-38</superscript> +@end docbook +@tab +@docbook +3.402823<superscript>38</superscript> +@end docbook +@item Double-precision floating point (approximate) @tab +@docbook +2.225074<superscript>-308</superscript> +@end docbook +@tab +@docbook +1.797693<superscript>308</superscript> +@end docbook +@end ifdocbook @end multitable @end float @@ -29402,7 +29505,7 @@ signed. The possible ranges of values are shown in @ref{table-numeric-ranges}. The rest of this @value{CHAPTER} uses a number of terms. Here are some informal definitions that should help you work your way through the material -here. +here: @table @dfn @item Accuracy @@ -29423,7 +29526,7 @@ A special value representing infinity. Operations involving another number and infinity produce infinity. @item NaN -``Not A Number.''@footnote{Thanks to Michael Brennan for this description, +``Not a number.''@footnote{Thanks to Michael Brennan for this description, which we have paraphrased, and for the examples.} A special value that results from attempting a calculation that has no answer as a real number. In such a case, programs can either receive a floating-point exception, @@ -29466,8 +29569,8 @@ formula: @end display @noindent -Here, @var{prec} denotes the binary precision -(measured in bits) and @var{dps} (short for decimal places) +Here, @emph{prec} denotes the binary precision +(measured in bits) and @emph{dps} (short for decimal places) is the decimal digits. @item Rounding mode @@ -29475,7 +29578,7 @@ How numbers are rounded up or down when necessary. More details are provided later. @item Significand -A floating-point value consists the significand multiplied by 10 +A floating-point value consists of the significand multiplied by 10 to the power of the exponent. For example, in @code{1.2345e67}, the significand is @code{1.2345}. @@ -29499,7 +29602,7 @@ to allow greater precisions and larger exponent ranges. (@command{awk} uses only the 64-bit double-precision format.) @ref{table-ieee-formats} lists the precision and exponent -field values for the basic IEEE 754 binary formats: +field values for the basic IEEE 754 binary formats. @float Table,table-ieee-formats @caption{Basic IEEE format values} @@ -29563,12 +29666,12 @@ for more information. @author Teen Talk Barbie, July 1992 @end quotation -This @value{SECTION} provides a high level overview of the issues +This @value{SECTION} provides a high-level overview of the issues involved when doing lots of floating-point arithmetic.@footnote{There is a very nice @uref{http://www.validlab.com/goldberg/paper.pdf, paper on floating-point arithmetic} by David Goldberg, ``What Every -Computer Scientist Should Know About Floating-point Arithmetic,'' -@cite{ACM Computing Surveys} @strong{23}, 1 (1991-03), 5-48. This is +Computer Scientist Should Know About Floating-Point Arithmetic,'' +@cite{ACM Computing Surveys} @strong{23}, 1 (1991-03): 5-48. This is worth reading if you are interested in the details, but it does require a background in computer science.} The discussion applies to both hardware and arbitrary-precision @@ -29637,7 +29740,7 @@ $ @kbd{gawk 'BEGIN @{ x = 0.875; y = 0.425} Often the error is so small you do not even notice it, and if you do, you can always specify how much precision you would like in your output. -Usually this is a format string like @code{"%.15g"}, which when +Usually this is a format string like @code{"%.15g"}, which, when used in the previous example, produces an output identical to the input. @node Comparing FP Values @@ -29676,7 +29779,7 @@ else The loss of accuracy during a single computation with floating-point numbers usually isn't enough to worry about. However, if you compute a -value which is the result of a sequence of floating-point operations, +value that is the result of a sequence of floating-point operations, the error can accumulate and greatly affect the computation itself. Here is an attempt to compute the value of @value{PI} using one of its many series representations: @@ -29729,7 +29832,7 @@ no easy answers. The standard rules of algebra often do not apply when using floating-point arithmetic. Among other things, the distributive and associative laws do not hold completely, and order of operation may be important -for your computation. Rounding error, cumulative precision loss +for your computation. Rounding error, cumulative precision loss, and underflow are often troublesome. When @command{gawk} tests the expressions @samp{0.1 + 12.2} and @@ -29769,7 +29872,8 @@ by our earlier attempt to compute the value of @value{PI}. Extra precision can greatly enhance the stability and the accuracy of your computation in such cases. -Repeated addition is not necessarily equivalent to multiplication +Additionally, you should understand that +repeated addition is not necessarily equivalent to multiplication in floating-point arithmetic. In the example in @ref{Errors accumulate}: @@ -29832,7 +29936,7 @@ to emulate an IEEE 754 binary format. @float Table,table-predefined-precision-strings @caption{Predefined precision strings for @code{PREC}} @multitable {@code{"double"}} {12345678901234567890123456789012345} -@headitem @code{PREC} @tab IEEE 754 Binary Format +@headitem @code{PREC} @tab IEEE 754 binary format @item @code{"half"} @tab 16-bit half-precision @item @code{"single"} @tab Basic 32-bit single precision @item @code{"double"} @tab Basic 64-bit double precision @@ -29864,7 +29968,6 @@ than the default and cannot use a command-line assignment to @code{PREC}, you should either specify the constant as a string, or as a rational number, whenever possible. The following example illustrates the differences among various ways to print a floating-point constant: -@end quotation @example $ @kbd{gawk -M 'BEGIN @{ PREC = 113; printf("%0.25f\n", 0.1) @}'} @@ -29876,22 +29979,23 @@ $ @kbd{gawk -M 'BEGIN @{ PREC = 113; printf("%0.25f\n", "0.1") @}'} $ @kbd{gawk -M 'BEGIN @{ PREC = 113; printf("%0.25f\n", 1/10) @}'} @print{} 0.1000000000000000000000000 @end example +@end quotation @node Setting the rounding mode @subsection Setting the Rounding Mode The @code{ROUNDMODE} variable provides -program level control over the rounding mode. +program-level control over the rounding mode. The correspondence between @code{ROUNDMODE} and the IEEE rounding modes is shown in @ref{table-gawk-rounding-modes}. @float Table,table-gawk-rounding-modes @caption{@command{gawk} rounding modes} @multitable @columnfractions .45 .30 .25 -@headitem Rounding Mode @tab IEEE Name @tab @code{ROUNDMODE} +@headitem Rounding mode @tab IEEE name @tab @code{ROUNDMODE} @item Round to nearest, ties to even @tab @code{roundTiesToEven} @tab @code{"N"} or @code{"n"} -@item Round toward plus Infinity @tab @code{roundTowardPositive} @tab @code{"U"} or @code{"u"} -@item Round toward negative Infinity @tab @code{roundTowardNegative} @tab @code{"D"} or @code{"d"} +@item Round toward positive infinity @tab @code{roundTowardPositive} @tab @code{"U"} or @code{"u"} +@item Round toward negative infinity @tab @code{roundTowardNegative} @tab @code{"D"} or @code{"d"} @item Round toward zero @tab @code{roundTowardZero} @tab @code{"Z"} or @code{"z"} @item Round to nearest, ties away from zero @tab @code{roundTiesToAway} @tab @code{"A"} or @code{"a"} @end multitable @@ -29952,8 +30056,8 @@ distributes upward and downward rounds of exact halves, which might cause any accumulating round-off error to cancel itself out. This is the default rounding mode for IEEE 754 computing functions and operators. -The other rounding modes are rarely used. Round toward positive infinity -(@code{roundTowardPositive}) and round toward negative infinity +The other rounding modes are rarely used. Rounding toward positive infinity +(@code{roundTowardPositive}) and toward negative infinity (@code{roundTowardNegative}) are often used to implement interval arithmetic, where you adjust the rounding mode to calculate upper and lower bounds for the range of output. The @code{roundTowardZero} mode can @@ -29995,6 +30099,7 @@ the following computes @end docbook the result of which is beyond the limits of ordinary hardware double-precision floating-point values: +@c FIXME: Use @sup here for superscript @example $ @kbd{gawk -M 'BEGIN @{} @@ -30010,17 +30115,17 @@ If instead you were to compute the same value using arbitrary-precision floating-point values, the precision needed for correct output (using the formula @iftex -@math{prec = 3.322 @cdot dps}), +@math{prec = 3.322 @cdot dps}) would be @math{3.322 @cdot 183231}, @end iftex @ifnottex @ifnotdocbook -@samp{prec = 3.322 * dps}), +@samp{prec = 3.322 * dps}) would be 3.322 x 183231, @end ifnotdocbook @end ifnottex @docbook -<emphasis>prec</emphasis> = 3.322 ⋅ <emphasis>dps</emphasis>), +<emphasis>prec</emphasis> = 3.322 ⋅ <emphasis>dps</emphasis>) would be <emphasis>prec</emphasis> = 3.322 ⋅ 183231, @c @end docbook @@ -30058,7 +30163,7 @@ interface to process arbitrary-precision integers or mixed-mode numbers as needed by an operation or function. In such a case, the precision is set to the minimum value necessary for exact conversion, and the working precision is not used for this purpose. If this is not what you need or -want, you can employ a subterfuge, and convert the integer to floating +want, you can employ a subterfuge and convert the integer to floating point first, like this: @example @@ -30195,7 +30300,7 @@ word sizes. See @node POSIX Floating Point Problems @section Standards Versus Existing Practice -Historically, @command{awk} has converted any non-numeric looking string +Historically, @command{awk} has converted any nonnumeric-looking string to the numeric value zero, when required. Furthermore, the original definition of the language and the original POSIX standards specified that @command{awk} only understands decimal numbers (base 10), and not octal @@ -30212,8 +30317,8 @@ notation (e.g., @code{0xDEADBEEF}). (Note: data values, @emph{not} source code constants.) @item -Support for the special IEEE 754 floating-point values ``Not A Number'' -(NaN), positive Infinity (``inf''), and negative Infinity (``@minus{}inf''). +Support for the special IEEE 754 floating-point values ``not a number'' +(NaN), positive infinity (``inf''), and negative infinity (``@minus{}inf''). In particular, the format for these values is as specified by the ISO 1999 C standard, which ignores case and can allow implementation-dependent additional characters after the @samp{nan} and allow either @samp{inf} or @samp{infinity}. @@ -30234,21 +30339,21 @@ values is also a very severe departure from historical practice. @end itemize The second problem is that the @command{gawk} maintainer feels that this -interpretation of the standard, which requires a certain amount of +interpretation of the standard, which required a certain amount of ``language lawyering'' to arrive at in the first place, was not even -intended by the standard developers. In other words, ``we see how you +intended by the standard developers. In other words, ``We see how you got where you are, but we don't think that that's where you want to be.'' Recognizing these issues, but attempting to provide compatibility with the earlier versions of the standard, the 2008 POSIX standard added explicit wording to allow, but not require, that @command{awk} support hexadecimal floating-point values and -special values for ``Not A Number'' and infinity. +special values for ``not a number'' and infinity. Although the @command{gawk} maintainer continues to feel that providing those features is inadvisable, nevertheless, on systems that support IEEE floating point, it seems -reasonable to provide @emph{some} way to support NaN and Infinity values. +reasonable to provide @emph{some} way to support NaN and infinity values. The solution implemented in @command{gawk} is as follows: @itemize @value{BULLET} @@ -30268,7 +30373,7 @@ $ @kbd{echo 0xDeadBeef | gawk --posix '@{ print $1 + 0 @}'} @end example @item -Without @option{--posix}, @command{gawk} interprets the four strings +Without @option{--posix}, @command{gawk} interprets the four string values @samp{+inf}, @samp{-inf}, @samp{+nan}, @@ -30290,7 +30395,7 @@ $ @kbd{echo 0xDeadBeef | gawk '@{ print $1 + 0 @}'} @end example @command{gawk} ignores case in the four special values. -Thus @samp{+nan} and @samp{+NaN} are the same. +Thus, @samp{+nan} and @samp{+NaN} are the same. @end itemize @node Floating point summary @@ -30303,9 +30408,9 @@ values. Standard @command{awk} uses double-precision floating-point values. @item -In the early 1990s, Barbie mistakenly said ``Math class is tough!'' +In the early 1990s Barbie mistakenly said, ``Math class is tough!'' Although math isn't tough, floating-point arithmetic isn't the same -as pencil and paper math, and care must be taken: +as pencil-and-paper math, and care must be taken: @c nested list @itemize @value{MINUS} @@ -30338,11 +30443,11 @@ arithmetic. Use @code{PREC} to set the precision in bits, and @item With @option{-M}, @command{gawk} performs arbitrary-precision integer arithmetic using the GMP library. -This is faster and more space efficient than using MPFR for +This is faster and more space-efficient than using MPFR for the same calculations. @item -There are several ``dark corners'' with respect to floating-point +There are several areas with respect to floating-point numbers where @command{gawk} disagrees with the POSIX standard. It pays to be aware of them. @@ -30350,7 +30455,7 @@ It pays to be aware of them. Overall, there is no need to be unduly suspicious about the results from floating-point arithmetic. The lesson to remember is that floating-point arithmetic is always more complex than arithmetic using pencil and -paper. In order to take advantage of the power of computer floating point, +paper. In order to take advantage of the power of floating-point arithmetic, you need to know its limitations and work within them. For most casual use of floating-point arithmetic, you will often get the expected result if you simply round the display of your final results to the correct number @@ -30411,7 +30516,7 @@ Extensions are useful because they allow you (of course) to extend @command{gawk}'s functionality. For example, they can provide access to system calls (such as @code{chdir()} to change directory) and to other C library routines that could be of use. As with most software, -``the sky is the limit;'' if you can imagine something that you might +``the sky is the limit''; if you can imagine something that you might want to do and can write in C or C++, you can write an extension to do it! Extensions are written in C or C++, using the @dfn{application programming @@ -30419,7 +30524,7 @@ interface} (API) defined for this purpose by the @command{gawk} developers. The rest of this @value{CHAPTER} explains the facilities that the API provides and how to use them, and presents a small example extension. In addition, it documents -the sample extensions included in the @command{gawk} distribution, +the sample extensions included in the @command{gawk} distribution and describes the @code{gawkextlib} project. @ifclear FOR_PRINT @xref{Extension Design}, for a discussion of the extension mechanism @@ -30572,7 +30677,7 @@ Some other bits and pieces: @itemize @value{BULLET} @item The API provides access to @command{gawk}'s @code{do_@var{xxx}} values, -reflecting command-line options, like @code{do_lint}, @code{do_profiling} +reflecting command-line options, like @code{do_lint}, @code{do_profiling}, and so on (@pxref{Extension API Variables}). These are informational: an extension cannot affect their values inside @command{gawk}. In addition, attempting to assign to them @@ -30617,7 +30722,7 @@ This (rather large) @value{SECTION} describes the API in detail. @node Extension API Functions Introduction @subsection Introduction -Access to facilities within @command{gawk} are made available +Access to facilities within @command{gawk} is achieved by calling through function pointers passed into your extension. API function pointers are provided for the following kinds of operations: @@ -30645,7 +30750,7 @@ Output wrappers Two-way processors @end itemize -All of these are discussed in detail, later in this @value{CHAPTER}. +All of these are discussed in detail later in this @value{CHAPTER}. @item Printing fatal, warning, and ``lint'' warning messages. @@ -30683,7 +30788,7 @@ Creating a new array Clearing an array @item -Flattening an array for easy C style looping over all its indices and elements +Flattening an array for easy C-style looping over all its indices and elements @end itemize @item @@ -30699,8 +30804,9 @@ The following types, macros, and/or functions are referenced in @file{gawkapi.h}. For correct use, you must therefore include the corresponding standard header file @emph{before} including @file{gawkapi.h}: +@c FIXME: Make this is a float at some point. @multitable {@code{memset()}, @code{memcpy()}} {@code{<sys/types.h>}} -@headitem C Entity @tab Header File +@headitem C entity @tab Header file @item @code{EOF} @tab @code{<stdio.h>} @item Values for @code{errno} @tab @code{<errno.h>} @item @code{FILE} @tab @code{<stdio.h>} @@ -30726,7 +30832,7 @@ Doing so, however, is poor coding practice. Although the API only uses ISO C 90 features, there is an exception; the ``constructor'' functions use the @code{inline} keyword. If your compiler does not support this keyword, you should either place -@samp{-Dinline=''} on your command line, or use the GNU Autotools and include a +@samp{-Dinline=''} on your command line or use the GNU Autotools and include a @file{config.h} file in your extensions. @item @@ -30734,7 +30840,7 @@ All pointers filled in by @command{gawk} point 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 calling one of -@code{gawk_malloc()}, @code{gawk_calloc()} or @code{gawk_realloc()}, +@code{gawk_malloc()}, @code{gawk_calloc()}, or @code{gawk_realloc()}, and is managed by @command{gawk} from then on. @item @@ -30748,7 +30854,7 @@ characters are allowed. By intent, strings are maintained using the current multibyte encoding (as defined by @env{LC_@var{xxx}} environment variables) and not using wide characters. This matches how @command{gawk} stores strings internally -and also how characters are likely to be input and output from files. +and also how characters are likely to be input into and output from files. @end quotation @item @@ -30793,6 +30899,8 @@ general-purpose use. Additional, more specialized, data structures are introduced in subsequent @value{SECTION}s, together with the functions that use them. +The general-purpose types and structures are as follows: + @table @code @item typedef void *awk_ext_id_t; A value of this type is received from @command{gawk} when an extension is loaded. @@ -30809,7 +30917,7 @@ while allowing @command{gawk} to use them as it needs to. @itemx @ @ @ @ awk_false = 0, @itemx @ @ @ @ awk_true @itemx @} awk_bool_t; -A simple boolean type. +A simple Boolean type. @item typedef struct awk_string @{ @itemx @ @ @ @ char *str;@ @ @ @ @ @ /* data */ @@ -30855,7 +30963,7 @@ The @code{val_type} member indicates what kind of value the @itemx #define array_cookie@ @ @ u.a @itemx #define scalar_cookie@ @ u.scl @itemx #define value_cookie@ @ @ u.vc -These macros make accessing the fields of the @code{awk_value_t} more +Using these macros makes accessing the fields of the @code{awk_value_t} more readable. @item typedef void *awk_scalar_t; @@ -30878,7 +30986,7 @@ indicates what is in the @code{union}. Representing numbers is easy---the API uses a C @code{double}. Strings require more work. Because @command{gawk} allows embedded @sc{nul} bytes in string values, a string must be represented as a pair containing a -data-pointer and length. This is the @code{awk_string_t} type. +data pointer and length. This is the @code{awk_string_t} type. Identifiers (i.e., the names of global variables) can be associated with either scalar values or with arrays. In addition, @command{gawk} @@ -30891,12 +30999,12 @@ of the @code{union} as if they were fields in a @code{struct}; this is a common coding practice in C. Such code is easier to write and to read, but it remains @emph{your} responsibility to make sure that the @code{val_type} member correctly reflects the type of the value in -the @code{awk_value_t}. +the @code{awk_value_t} struct. Conceptually, the first three members of the @code{union} (number, string, and array) are all that is needed for working with @command{awk} values. However, because the API provides routines for accessing and changing -the value of global scalar variables only by using the variable's name, +the value of a global scalar variable only by using the variable's name, there is a performance penalty: @command{gawk} must find the variable each time it is accessed and changed. This turns out to be a real issue, not just a theoretical one. @@ -30914,7 +31022,9 @@ See also the entry for ``Cookie'' in the @ref{Glossary}. object for that variable, and then use the cookie for getting the variable's value or for changing the variable's value. -This is the @code{awk_scalar_t} type and @code{scalar_cookie} macro. +The @code{awk_scalar_t} type holds a scalar cookie, and the +@code{scalar_cookie} macro provides access to the value of that type +in the @code{awk_value_t} struct. Given a scalar cookie, @command{gawk} can directly retrieve or modify the value, as required, without having to find it first. @@ -30923,8 +31033,8 @@ If you know that you wish to use the same numeric or string @emph{value} for one or more variables, you can create the value once, retaining a @dfn{value cookie} for it, and then pass in that value cookie whenever you wish to set the value of a -variable. This saves both storage space within the running @command{gawk} -process as well as the time needed to create the value. +variable. This saves storage space within the running @command{gawk} +process and reduces the time needed to create the value. @node Memory Allocation Functions @subsection Memory Allocation Functions and Convenience Macros @@ -30952,13 +31062,13 @@ be passed to @command{gawk}. @item void gawk_free(void *ptr); Call the correct version of @code{free()} to release storage that was -allocated with @code{gawk_malloc()}, @code{gawk_calloc()} or @code{gawk_realloc()}. +allocated with @code{gawk_malloc()}, @code{gawk_calloc()}, or @code{gawk_realloc()}. @end table 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 +executable.@footnote{This is more common on MS-Windows systems, but it 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 @@ -30968,7 +31078,7 @@ Two convenience macros may be used for allocating storage from @code{gawk_malloc()} and @code{gawk_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. +procedure calls that do not return a value: @table @code @item #define emalloc(pointer, type, size, message) @dots{} @@ -31005,7 +31115,7 @@ 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{gawk_realloc()}, +This is like @code{emalloc()}, but it calls @code{gawk_realloc()} instead of @code{gawk_malloc()}. The arguments are the same as for the @code{emalloc()} macro. @end table @@ -31020,28 +31130,28 @@ 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) +@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) +@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{gawk_malloc()}, @code{gawk_calloc()} or @code{gawk_realloc()}. The idea here +value pointing to data previously obtained from @code{gawk_malloc()}, @code{gawk_calloc()}, or @code{gawk_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) +@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) +@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 @@ -31081,7 +31191,7 @@ The fields are: @table @code @item const char *name; The name of the new function. -@command{awk} level code calls the function by this name. +@command{awk}-level code calls the function by this name. This is a regular C string. Function names must obey the rules for @command{awk} @@ -31095,7 +31205,7 @@ This is a pointer to the C function that provides the extension's functionality. The function must fill in @code{*result} with either a number or a string. @command{gawk} takes ownership of any string memory. -As mentioned earlier, string memory @strong{must} come from one of +As mentioned earlier, string memory @emph{must} come from one of @code{gawk_malloc()}, @code{gawk_calloc()}, or @code{gawk_realloc()}. The @code{num_actual_args} argument tells the C function how many @@ -31147,20 +31257,20 @@ The @code{exit_status} parameter is the exit status value that @command{gawk} intends to pass to the @code{exit()} system call. @item arg0 -A pointer to private data which @command{gawk} saves in order to pass to +A pointer to private data that @command{gawk} saves in order to pass to the function pointed to by @code{funcp}. @end table @end table -Exit callback functions are called in last-in-first-out (LIFO) +Exit callback functions are called in last-in, first-out (LIFO) order---that is, in the reverse order in which they are registered with @command{gawk}. @node Extension Version String @subsubsection Registering An Extension Version String -You can register a version string which indicates the name and -version of your extension, with @command{gawk}, as follows: +You can register a version string that indicates the name and +version of your extension with @command{gawk}, as follows: @table @code @item void register_ext_version(const char *version); @@ -31182,7 +31292,7 @@ of @code{RS} to find the end of the record, and then uses @code{FS} Additionally, it sets the value of @code{RT} (@pxref{Built-in Variables}). If you want, you can provide your own custom input parser. An input -parser's job is to return a record to the @command{gawk} record processing +parser's job is to return a record to the @command{gawk} record-processing code, along with indicators for the value and length of the data to be used for @code{RT}, if any. @@ -31200,9 +31310,9 @@ It should not change any state (variable values, etc.) within @command{gawk}. @item awk_bool_t @var{XXX}_take_control_of(awk_input_buf_t *iobuf); When @command{gawk} decides to hand control of the file over to the input parser, it calls this function. This function in turn must fill -in certain fields in the @code{awk_input_buf_t} structure, and ensure +in certain fields in the @code{awk_input_buf_t} structure and ensure that certain conditions are true. It should then return true. If an -error of some kind occurs, it should not fill in any fields, and should +error of some kind occurs, it should not fill in any fields and should return false; then @command{gawk} will not use the input parser. The details are presented shortly. @end table @@ -31295,7 +31405,7 @@ in the @code{struct stat}, or any combination of these factors. Once @code{@var{XXX}_can_take_file()} has returned true, and @command{gawk} has decided to use your input parser, it calls -@code{@var{XXX}_take_control_of()}. That function then fills one of +@code{@var{XXX}_take_control_of()}. That function then fills either the @code{get_record} field or the @code{read_func} field in the @code{awk_input_buf_t}. It must also ensure that @code{fd} is @emph{not} set to @code{INVALID_HANDLE}. The following list describes the fields that @@ -31317,21 +31427,21 @@ records. Said function is the core of the input parser. Its behavior is described in the text following this list. @item ssize_t (*read_func)(); -This function pointer should point to function that has the +This function pointer should point to a function that has the same behavior as the standard POSIX @code{read()} system call. It is an alternative to the @code{get_record} pointer. Its behavior is also described in the text following this list. @item void (*close_func)(struct awk_input *iobuf); This function pointer should point to a function that does -the ``tear down.'' It should release any resources allocated by +the ``teardown.'' It should release any resources allocated by @code{@var{XXX}_take_control_of()}. It may also close the file. If it does so, it should set the @code{fd} field to @code{INVALID_HANDLE}. If @code{fd} is still not @code{INVALID_HANDLE} after the call to this function, @command{gawk} calls the regular @code{close()} system call. -Having a ``tear down'' function is optional. If your input parser does +Having a ``teardown'' function is optional. If your input parser does not need it, do not set this field. Then, @command{gawk} calls the regular @code{close()} system call on the file descriptor, so it should be valid. @@ -31342,7 +31452,7 @@ input records. The parameters are as follows: @table @code @item char **out -This is a pointer to a @code{char *} variable which is set to point +This is a pointer to a @code{char *} variable that is set to point to the record. @command{gawk} makes its own copy of the data, so the extension must manage this storage. @@ -31395,17 +31505,17 @@ set this field explicitly. You must choose one method or the other: either a function that returns a record, or one that returns raw data. In particular, if you supply a function to get a record, @command{gawk} will -call it, and never call the raw read function. +call it, and will never call the raw read function. @end quotation @command{gawk} ships with a sample extension that reads directories, -returning records for each entry in the directory (@pxref{Extension +returning records for each entry in a directory (@pxref{Extension Sample Readdir}). You may wish to use that code as a guide for writing your own input parser. When writing an input parser, you should think about (and document) how it is expected to interact with @command{awk} code. You may want -it to always be called, and take effect as appropriate (as the +it to always be called, and to take effect as appropriate (as the @code{readdir} extension does). Or you may want it to take effect based upon the value of an @command{awk} variable, as the XML extension from the @code{gawkextlib} project does (@pxref{gawkextlib}). @@ -31515,7 +31625,7 @@ a pointer to any private data associated with the file. These pointers should be set to point to functions that perform the equivalent function as the @code{<stdio.h>} functions do, if appropriate. @command{gawk} uses these function pointers for all output. -@command{gawk} initializes the pointers to point to internal, ``pass through'' +@command{gawk} initializes the pointers to point to internal ``pass-through'' functions that just call the regular @code{<stdio.h>} functions, so an extension only needs to redefine those functions that are appropriate for what it does. @@ -31526,7 +31636,7 @@ upon the @code{name} and @code{mode} fields, and any additional state (such as @command{awk} variable values) that is appropriate. When @command{gawk} calls @code{@var{XXX}_take_control_of()}, that function should fill -in the other fields, as appropriate, except for @code{fp}, which it should just +in the other fields as appropriate, except for @code{fp}, which it should just use normally. You register your output wrapper with the following function: @@ -31566,14 +31676,14 @@ The fields are as follows: The name of the two-way processor. @item awk_bool_t (*can_take_two_way)(const char *name); -This function returns true if it wants to take over two-way I/O for this @value{FN}. +The function pointed to by this field should return true if it wants to take over two-way I/O for this @value{FN}. It should not change any state (variable values, etc.) within @command{gawk}. @item awk_bool_t (*take_control_of)(const char *name, @itemx @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ awk_input_buf_t *inbuf, @itemx @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ awk_output_buf_t *outbuf); -This function should fill in the @code{awk_input_buf_t} and +The function pointed to by this field should fill in the @code{awk_input_buf_t} and @code{awk_outut_buf_t} structures pointed to by @code{inbuf} and @code{outbuf}, respectively. These structures were described earlier. @@ -31602,7 +31712,7 @@ Register the two-way processor pointed to by @code{two_way_processor} with You can print different kinds of warning messages from your extension, as described here. Note that for these functions, -you must pass in the extension id received from @command{gawk} +you must pass in the extension ID received from @command{gawk} when the extension was loaded:@footnote{Because the API uses only ISO C 90 features, it cannot make use of the ISO C 99 variadic macro feature to hide that parameter. More's the pity.} @@ -31655,7 +31765,7 @@ matches what you requested, the function returns true and fills in the @code{awk_value_t} result. Otherwise, the function returns false, and the @code{val_type} member indicates the type of the actual value. You may then -print an error message, or reissue the request for the actual +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}. @@ -31688,32 +31798,32 @@ value type, as appropriate. This behavior is summarized in <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> + <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> + <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>False</para></entry> + <entry><para>False</para></entry> <entry><para>Array</para></entry> - <entry><para>false</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> + <entry><para>False</para></entry> + <entry><para>False</para></entry> </row> <row> <entry></entry> @@ -31725,11 +31835,11 @@ value type, as appropriate. This behavior is summarized in </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> + <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> @@ -31747,12 +31857,12 @@ value type, as appropriate. This behavior is summarized in @end tex @multitable @columnfractions .166 .166 .198 .15 .15 .166 @headitem @tab @tab String @tab Number @tab Array @tab Undefined -@item @tab @b{String} @tab String @tab String @tab false @tab false -@item @tab @b{Number} @tab Number if can be converted, else false @tab Number @tab false @tab false -@item @b{Type} @tab @b{Array} @tab false @tab false @tab Array @tab false -@item @b{Requested} @tab @b{Scalar} @tab Scalar @tab Scalar @tab false @tab false +@item @tab @b{String} @tab String @tab String @tab False @tab False +@item @tab @b{Number} @tab Number if can be converted, else false @tab Number @tab False @tab False +@item @b{Type} @tab @b{Array} @tab False @tab False @tab Array @tab False +@item @b{Requested} @tab @b{Scalar} @tab Scalar @tab Scalar @tab False @tab False @item @tab @b{Undefined} @tab String @tab Number @tab Array @tab Undefined -@item @tab @b{Value Cookie} @tab false @tab false @tab false @tab false +@item @tab @b{Value cookie} @tab False @tab False @tab False @tab False @end multitable @end ifnotdocbook @end ifnotplaintext @@ -31763,21 +31873,21 @@ value type, as appropriate. This behavior is summarized in +------------+------------+-----------+-----------+ | String | Number | Array | Undefined | +-----------+-----------+------------+------------+-----------+-----------+ -| | String | String | String | false | false | +| | String | String | String | False | False | | |-----------+------------+------------+-----------+-----------+ -| | Number | Number if | Number | false | false | +| | Number | Number if | Number | False | False | | | | can be | | | | | | | converted, | | | | | | | else false | | | | | |-----------+------------+------------+-----------+-----------+ -| Type | Array | false | false | Array | false | +| Type | Array | False | False | Array | False | | Requested |-----------+------------+------------+-----------+-----------+ -| | Scalar | Scalar | Scalar | false | false | +| | Scalar | Scalar | Scalar | False | False | | |-----------+------------+------------+-----------+-----------+ | | Undefined | String | Number | Array | Undefined | | |-----------+------------+------------+-----------+-----------+ -| | Value | false | false | false | false | -| | Cookie | | | | | +| | Value | False | False | False | False | +| | cookie | | | | | +-----------+-----------+------------+------------+-----------+-----------+ @end example @end ifplaintext @@ -31794,16 +31904,16 @@ passed to your extension function. They are: @itemx @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ awk_valtype_t wanted, @itemx @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ awk_value_t *result); Fill in the @code{awk_value_t} structure pointed to by @code{result} -with the @code{count}'th argument. Return true if the actual -type matches @code{wanted}, false otherwise. In the latter +with the @code{count}th argument. Return true if the actual +type matches @code{wanted}, and false otherwise. In the latter case, @code{result@w{->}val_type} indicates the actual type -(@pxref{table-value-types-returned}). Counts are zero based---the first +(@pxref{table-value-types-returned}). Counts are zero-based---the first argument is numbered zero, the second one, and so on. @code{wanted} indicates the type of value expected. @item awk_bool_t set_argument(size_t count, awk_array_t array); Convert a parameter that was undefined into an array; this provides -call-by-reference for arrays. Return false if @code{count} is too big, +call by reference for arrays. Return false if @code{count} is too big, or if the argument's type is not undefined. @DBXREF{Array Manipulation} for more information on creating arrays. @end table @@ -31827,8 +31937,9 @@ allows you to create and release cached values. The following routines provide the ability to access and update global @command{awk}-level variables by name. In compiler terminology, identifiers of different kinds are termed @dfn{symbols}, thus the ``sym'' -in the routines' names. The data structure which stores information +in the routines' names. The data structure that stores information about symbols is termed a @dfn{symbol table}. +The functions are as follows: @table @code @item awk_bool_t sym_lookup(const char *name, @@ -31837,14 +31948,14 @@ about symbols is termed a @dfn{symbol table}. Fill in the @code{awk_value_t} structure pointed to by @code{result} with the value of the variable named by the string @code{name}, which is a regular C string. @code{wanted} indicates the type of value expected. -Return true if the actual type matches @code{wanted}, false otherwise. +Return true if the actual type matches @code{wanted}, and false otherwise. In the latter case, @code{result->val_type} indicates the actual type (@pxref{table-value-types-returned}). @item awk_bool_t sym_update(const char *name, awk_value_t *value); Update the variable named by the string @code{name}, which is a regular C string. The variable is added to @command{gawk}'s symbol table -if it is not there. Return true if everything worked, false otherwise. +if it is not there. Return true if everything worked, and false otherwise. Changing types (scalar to array or vice versa) of an existing variable is @emph{not} allowed, nor may this routine be used to update an array. @@ -31869,7 +31980,7 @@ populate it. A @dfn{scalar cookie} is an opaque handle that provides access to a global variable or array. It is an optimization that avoids looking up variables in @command{gawk}'s symbol table every time -access is needed. This was discussed earlier in @ref{General Data Types}. +access is needed. This was discussed earlier, in @ref{General Data Types}. The following functions let you work with scalar cookies: @@ -31985,7 +32096,7 @@ and carefully check the return values from the API functions. @subsubsection 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 +cached values. Like scalar cookies, in theory, cached values are not necessary. You can create numbers and strings using the functions in @ref{Constructor Functions}. You can then assign those values to variables using @code{sym_update()} @@ -32063,7 +32174,7 @@ Using value cookies in this way saves considerable storage, as all of @code{VAR1} through @code{VAR100} share the same value. You might be wondering, ``Is this sharing problematic? -What happens if @command{awk} code assigns a new value to @code{VAR1}, +What happens if @command{awk} code assigns a new value to @code{VAR1}; are all the others changed too?'' That's a great question. The answer is that no, it's not a problem. @@ -32167,7 +32278,7 @@ modify them. @node Array Functions @subsubsection Array Functions -The following functions relate to individual array elements. +The following functions relate to individual array elements: @table @code @item awk_bool_t get_element_count(awk_array_t a_cookie, size_t *count); @@ -32186,13 +32297,13 @@ Return false if @code{wanted} does not match the actual type or if @code{index} is not in the array (@pxref{table-value-types-returned}). The value for @code{index} can be numeric, in which case @command{gawk} -converts it to a string. Using non-integral values is possible, but +converts it to a string. Using nonintegral values is possible, but requires that you understand how such values are converted to strings -(@pxref{Conversion}); thus using integral values is safest. +(@pxref{Conversion}); thus, using integral values is safest. As with @emph{all} strings passed into @command{gawk} from an extension, the string value of @code{index} must come from @code{gawk_malloc()}, -@code{gawk_calloc()} or @code{gawk_realloc()}, and +@code{gawk_calloc()}, or @code{gawk_realloc()}, and @command{gawk} releases the storage. @item awk_bool_t set_array_element(awk_array_t a_cookie, @@ -32248,7 +32359,7 @@ flatten an array and work with it. @item awk_bool_t release_flattened_array(awk_array_t a_cookie, @itemx @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ awk_flat_array_t *data); When done with a flattened array, release the storage using this function. -You must pass in both the original array cookie, and the address of +You must pass in both the original array cookie and the address of the created @code{awk_flat_array_t} structure. The function returns true upon success, false otherwise. @end table @@ -32258,7 +32369,7 @@ The function returns true upon success, false otherwise. To @dfn{flatten} an array is to create a structure that represents the full array in a fashion that makes it easy -for C code to traverse the entire array. Test code +for C code to traverse the entire array. Some of the code in @file{extension/testext.c} does this, and also serves as a nice example showing how to use the APIs. @@ -32315,9 +32426,9 @@ dump_array_and_delete(int nargs, awk_value_t *result) @end example The function then proceeds in steps, as follows. First, retrieve -the name of the array, passed as the first argument. Then -retrieve the array itself. If either operation fails, print -error messages and return: +the name of the array, passed as the first argument, followed by +the array itself. If either operation fails, print an +error message and return: @example /* get argument named array as flat array and print it */ @@ -32353,7 +32464,7 @@ and print it: @end example The third step is to actually flatten the array, and then -to double check that the count in the @code{awk_flat_array_t} +to double-check that the count in the @code{awk_flat_array_t} is the same as the count just retrieved: @example @@ -32374,7 +32485,7 @@ is the same as the count just retrieved: The fourth step is to retrieve the index of the element to be deleted, which was passed as the second argument. Remember that argument counts passed to @code{get_argument()} -are zero-based, thus the second argument is numbered one: +are zero-based, and thus the second argument is numbered one: @example if (! get_argument(1, AWK_STRING, & value3)) @{ @@ -32389,7 +32500,7 @@ element values. In addition, upon finding the element with the index that is supposed to be deleted, the function sets the @code{AWK_ELEMENT_DELETE} bit in the @code{flags} field of the element. When the array is released, @command{gawk} -traverses the flattened array, and deletes any elements which +traverses the flattened array, and deletes any elements that have this flag bit set: @example @@ -32733,10 +32844,10 @@ The API versions are available at compile time as constants: @table @code @item GAWK_API_MAJOR_VERSION -The major version of the API. +The major version of the API @item GAWK_API_MINOR_VERSION -The minor version of the API. +The minor version of the API @end table The minor version increases when new functions are added to the API. Such @@ -32754,14 +32865,14 @@ constant integers: @table @code @item api->major_version -The major version of the running @command{gawk}. +The major version of the running @command{gawk} @item api->minor_version -The minor version of the running @command{gawk}. +The minor version of the running @command{gawk} @end table It is up to the extension to decide if there are API incompatibilities. -Typically a check like this is enough: +Typically, a check like this is enough: @example if (api->major_version != GAWK_API_MAJOR_VERSION @@ -32775,7 +32886,7 @@ if (api->major_version != GAWK_API_MAJOR_VERSION @end example Such code is included in the boilerplate @code{dl_load_func()} macro -provided in @file{gawkapi.h} (discussed later, in +provided in @file{gawkapi.h} (discussed in @ref{Extension API Boilerplate}). @node Extension API Informational Variables @@ -32822,7 +32933,7 @@ as described here. The boilerplate needed is also provided in comments in the @file{gawkapi.h} header file: @example -/* Boiler plate code: */ +/* Boilerplate code: */ int plugin_is_GPL_compatible; static gawk_api_t *const api; @@ -32881,7 +32992,7 @@ to @code{NULL}, or to point to a string giving the name and version of your extension. @item static awk_ext_func_t func_table[] = @{ @dots{} @}; -This is an array of one or more @code{awk_ext_func_t} structures +This is an array of one or more @code{awk_ext_func_t} structures, as described earlier (@pxref{Extension Functions}). It can then be looped over for multiple calls to @code{add_ext_func()}. @@ -33012,7 +33123,7 @@ the @code{stat()} fails. It fills in the following elements: @table @code @item "name" -The name of the file that was @code{stat()}'ed. +The name of the file that was @code{stat()}ed. @item "dev" @itemx "ino" @@ -33068,7 +33179,7 @@ interprocess communications). The file is a directory. @item "fifo" -The file is a named-pipe (also known as a FIFO). +The file is a named pipe (also known as a FIFO). @item "file" The file is just a regular file. @@ -33091,7 +33202,7 @@ For some other systems, @dfn{a priori} knowledge is used to provide a value. Where no value can be determined, it defaults to 512. @end table -Several additional elements may be present depending upon the operating +Several additional elements may be present, depending upon the operating system and the type of the file. You can test for them in your @command{awk} program by using the @code{in} operator (@pxref{Reference to Elements}): @@ -33121,7 +33232,7 @@ edited slightly for presentation. See @file{extension/filefuncs.c} in the @command{gawk} distribution for the complete version.} The file includes a number of standard header files, and then includes -the @file{gawkapi.h} header file which provides the API definitions. +the @file{gawkapi.h} header file, which provides the API definitions. Those are followed by the necessary variable declarations to make use of the API macros and boilerplate code (@pxref{Extension API Boilerplate}): @@ -33162,9 +33273,9 @@ int plugin_is_GPL_compatible; @cindex programming conventions, @command{gawk} extensions By convention, for an @command{awk} function @code{foo()}, the C function that implements it is called @code{do_foo()}. The function should have -two arguments: the first is an @code{int} usually called @code{nargs}, +two arguments. The first is an @code{int}, usually called @code{nargs}, that represents the number of actual arguments for the function. -The second is a pointer to an @code{awk_value_t}, usually named +The second is a pointer to an @code{awk_value_t} structure, usually named @code{result}: @example @@ -33210,7 +33321,7 @@ Finally, the function returns the return value to the @command{awk} level: The @code{stat()} extension is more involved. First comes a function that turns a numeric mode into a printable representation -(e.g., 644 becomes @samp{-rw-r--r--}). This is omitted here for brevity: +(e.g., octal @code{0644} becomes @samp{-rw-r--r--}). This is omitted here for brevity: @example /* format_mode --- turn a stat mode field into something readable */ @@ -33266,9 +33377,9 @@ array_set_numeric(awk_array_t array, const char *sub, double num) The following function does most of the work to fill in the @code{awk_array_t} result array with values obtained -from a valid @code{struct stat}. It is done in a separate function +from a valid @code{struct stat}. This work is done in a separate function to support the @code{stat()} function for @command{gawk} and also -to support the @code{fts()} extension which is included in +to support the @code{fts()} extension, which is included in the same file but whose code is not shown here (@pxref{Extension Sample File Functions}). @@ -33389,8 +33500,8 @@ the @code{stat()} system call instead of the @code{lstat()} system call. This is done by using a function pointer: @code{statfunc}. @code{statfunc} is initialized to point to @code{lstat()} (instead of @code{stat()}) to get the file information, in case the file is a -symbolic link. However, if there were three arguments, @code{statfunc} -is set point to @code{stat()}, instead. +symbolic link. However, if the third argument is included, @code{statfunc} +is set to point to @code{stat()}, instead. Here is the @code{do_stat()} function, which starts with variable declarations and argument checking: @@ -33446,7 +33557,7 @@ Next, it gets the information for the file. If the called function /* always empty out the array */ clear_array(array); - /* stat the file, if error, set ERRNO and return */ + /* stat the file; if error, set ERRNO and return */ ret = statfunc(name, & sbuf); if (ret < 0) @{ update_ERRNO_int(errno); @@ -33468,7 +33579,9 @@ Finally, it's necessary to provide the ``glue'' that loads the new function(s) into @command{gawk}. The @code{filefuncs} extension also provides an @code{fts()} -function, which we omit here. For its sake there is an initialization +function, which we omit here +(@pxref{Extension Sample File Functions}). +For its sake, there is an initialization function: @example @@ -33593,9 +33706,9 @@ $ @kbd{AWKLIBPATH=$PWD gawk -f testff.awk} @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 +This @value{SECTION} provides a brief overview of the sample extensions that come in the @command{gawk} distribution. Some of them are intended -for production use (e.g., the @code{filefuncs}, @code{readdir} and +for production use (e.g., the @code{filefuncs}, @code{readdir}, and @code{inplace} extensions). Others mainly provide example code that shows how to use the extension API. @@ -33631,14 +33744,14 @@ This is how you load the extension. @item @code{result = chdir("/some/directory")} The @code{chdir()} function is a direct hook to the @code{chdir()} system call to change the current directory. It returns zero -upon success or less than zero upon error. In the latter case, it updates -@code{ERRNO}. +upon success or a value less than zero upon error. +In the latter case, it updates @code{ERRNO}. @cindex @code{stat()} extension function @item @code{result = stat("/some/path", statdata} [@code{, follow}]@code{)} The @code{stat()} function provides a hook into the @code{stat()} system call. -It returns zero upon success or less than zero upon error. +It returns zero upon success or a value less than zero upon error. In the latter case, it updates @code{ERRNO}. By default, it uses the @code{lstat()} system call. However, if passed @@ -33665,10 +33778,10 @@ array with information retrieved from the filesystem, as follows: @item @code{"major"} @tab @code{st_major} @tab Device files @item @code{"minor"} @tab @code{st_minor} @tab Device files @item @code{"blksize"} @tab @code{st_blksize} @tab All -@item @code{"pmode"} @tab A human-readable version of the mode value, such as printed by -@command{ls}. For example, @code{"-rwxr-xr-x"} @tab All +@item @code{"pmode"} @tab A human-readable version of the mode value, like that printed by +@command{ls} (for example, @code{"-rwxr-xr-x"}) @tab All @item @code{"linkval"} @tab The value of the symbolic link @tab Symbolic links -@item @code{"type"} @tab The type of the file as a string. One of +@item @code{"type"} @tab The type of the file as a string---one of @code{"file"}, @code{"blockdev"}, @code{"chardev"}, @@ -33678,15 +33791,15 @@ array with information retrieved from the filesystem, as follows: @code{"symlink"}, @code{"door"}, or -@code{"unknown"}. -Not all systems support all file types. @tab All +@code{"unknown"} +(not all systems support all file types) @tab All @end multitable @cindex @code{fts()} extension function @item @code{flags = or(FTS_PHYSICAL, ...)} @itemx @code{result = fts(pathlist, flags, filedata)} Walk the file trees provided in @code{pathlist} and fill in the -@code{filedata} array as described next. @code{flags} is the bitwise +@code{filedata} array, as described next. @code{flags} is the bitwise OR of several predefined values, also described in a moment. Return zero if there were no errors, otherwise return @minus{}1. @end table @@ -33742,7 +33855,8 @@ During a traversal, do not cross onto a different mounted filesystem. @end table @item filedata -The @code{filedata} array is first cleared. Then, @code{fts()} creates +The @code{filedata} array holds the results. +@code{fts()} first clears it. Then it creates an element in @code{filedata} for every element in @code{pathlist}. The index is the name of the directory or file given in @code{pathlist}. The element for this index is itself an array. There are two cases: @@ -33784,7 +33898,7 @@ for a file: @code{"path"}, @code{"stat"}, and @code{"error"}. @end table The @code{fts()} function returns zero if there were no errors. -Otherwise it returns @minus{}1. +Otherwise, it returns @minus{}1. @quotation NOTE The @code{fts()} extension does not exactly mimic the @@ -33826,14 +33940,14 @@ The arguments to @code{fnmatch()} are: @table @code @item pattern -The @value{FN} wildcard to match. +The @value{FN} wildcard to match @item string -The @value{FN} string. +The @value{FN} string @item flag Either zero, or the bitwise OR of one or more of the -flags in the @code{FNM} array. +flags in the @code{FNM} array @end table The flags are as follows: @@ -33870,14 +33984,14 @@ 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 zero in the -child and the process-ID number of the child in the parent, or @minus{}1 +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. @@ -33905,8 +34019,8 @@ else @subsection Enabling In-Place File Editing @cindex @code{inplace} extension -The @code{inplace} extension emulates GNU @command{sed}'s @option{-i} option -which performs ``in place'' editing of each input file. +The @code{inplace} extension emulates GNU @command{sed}'s @option{-i} option, +which performs ``in-place'' editing of each input file. It uses the bundled @file{inplace.awk} include file to invoke the extension properly: @@ -33920,11 +34034,16 @@ properly: # Please set INPLACE_SUFFIX to make a backup copy. For example, you may # want to set INPLACE_SUFFIX to .bak on the command line or in a BEGIN rule. +# N.B. We call inplace_end() in the BEGINFILE and END rules so that any +# actions in an ENDFILE rule will be redirected as expected. + BEGINFILE @{ - inplace_begin(FILENAME, INPLACE_SUFFIX) + if (_inplace_filename != "") + inplace_end(_inplace_filename, INPLACE_SUFFIX) + inplace_begin(_inplace_filename = FILENAME, INPLACE_SUFFIX) @} -ENDFILE @{ +END @{ inplace_end(FILENAME, INPLACE_SUFFIX) @} @end group @@ -33939,6 +34058,10 @@ If @code{INPLACE_SUFFIX} is not an empty string, the original file is linked to a backup @value{FN} created by appending that suffix. Finally, the temporary file is renamed to the original @value{FN}. +The @code{_inplace_filename} variable serves to keep track of the +current filename so as to not invoke @code{inplace_end()} before +processing the first file. + If any error occurs, the extension issues a fatal error to terminate processing immediately without damaging the original file. @@ -34002,14 +34125,14 @@ they are read, with each entry returned as a record. The record consists of three fields. The first two are the inode number and the @value{FN}, separated by a forward slash character. On systems where the directory entry contains the file type, the record -has a third field (also separated by a slash) which is a single letter +has a third field (also separated by a slash), which is a single letter indicating the type of the file. The letters and their corresponding file types are shown in @ref{table-readdir-file-types}. @float Table,table-readdir-file-types @caption{File types returned by the @code{readdir} extension} @multitable @columnfractions .1 .9 -@headitem Letter @tab File Type +@headitem Letter @tab File type @item @code{b} @tab Block device @item @code{c} @tab Character device @item @code{d} @tab Directory @@ -34037,7 +34160,7 @@ Here is an example: @@load "readdir" @dots{} BEGIN @{ FS = "/" @} -@{ print "file name is", $2 @} +@{ print "@value{FN} is", $2 @} @end example @node Extension Sample Revout @@ -34058,8 +34181,7 @@ BEGIN @{ @} @end example -The output from this program is: -@samp{cinap t'nod}. +The output from this program is @samp{cinap t'nod}. @node Extension Sample Rev2way @subsection Two-Way I/O Example @@ -34114,7 +34236,7 @@ success, or zero upon failure. @code{reada()} is the inverse of @code{writea()}; it reads the file named as its first argument, filling in the array named as the second argument. It clears the array first. -Here too, the return value is one on success and zero upon failure. +Here too, the return value is one on success, or zero upon failure. @end table The array created by @code{reada()} is identical to that written by @@ -34202,7 +34324,7 @@ it tries to use @code{GetSystemTimeAsFileTime()}. Attempt to sleep for @var{seconds} seconds. If @var{seconds} is negative, or the attempt to sleep fails, return @minus{}1 and set @code{ERRNO}. Otherwise, return zero after sleeping for the indicated amount of time. -Note that @var{seconds} may be a floating-point (non-integral) value. +Note that @var{seconds} may be a floating-point (nonintegral) value. Implementation details: depending on platform availability, this function tries to use @code{nanosleep()} or @code{select()} to implement the delay. @end table @@ -34229,10 +34351,13 @@ project provides a number of @command{gawk} extensions, including one for processing XML files. This is the evolution of the original @command{xgawk} (XML @command{gawk}) project. -As of this writing, there are six extensions: +As of this writing, there are seven extensions: @itemize @value{BULLET} @item +@code{errno} extension + +@item GD graphics library extension @item @@ -34243,7 +34368,7 @@ PostgreSQL extension @item MPFR library extension -(this provides access to a number of MPFR functions which @command{gawk}'s +(this provides access to a number of MPFR functions that @command{gawk}'s native MPFR support does not) @item @@ -34297,7 +34422,7 @@ make install @ii{Install the extensions} If you have installed @command{gawk} in the standard way, then you will likely not need the @option{--with-gawk} option when configuring -@code{gawkextlib}. You may also need to use the @command{sudo} utility +@code{gawkextlib}. You may need to use the @command{sudo} utility to install both @command{gawk} and @code{gawkextlib}, depending upon how your system works. @@ -34322,7 +34447,7 @@ named @code{plugin_is_GPL_compatible}. @item Communication between @command{gawk} and an extension is two-way. -@command{gawk} passes a @code{struct} to the extension which contains +@command{gawk} passes a @code{struct} to the extension that contains various data fields and function pointers. The extension can then call into @command{gawk} via the supplied function pointers to accomplish certain tasks. @@ -34335,7 +34460,7 @@ By convention, implementation functions are named @code{do_@var{XXXX}()} for some @command{awk}-level function @code{@var{XXXX}()}. @item -The API is defined in a header file named @file{gawkpi.h}. You must include +The API is defined in a header file named @file{gawkapi.h}. You must include a number of standard header files @emph{before} including it in your source file. @item @@ -34380,7 +34505,7 @@ getting the count of elements in an array; creating a new array; clearing an array; and -flattening an array for easy C style looping over all its indices and elements) +flattening an array for easy C-style looping over all its indices and elements) @end itemize @item @@ -34388,7 +34513,7 @@ The API defines a number of standard data types for representing @command{awk} values, array elements, and arrays. @item -The API provide convenience functions for constructing values. +The API provides convenience functions for constructing values. It also provides memory management functions to ensure compatibility between memory allocated by @command{gawk} and memory allocated by an extension. @@ -34414,8 +34539,8 @@ file make this easier to do. @item The @command{gawk} distribution includes a number of small but useful -sample extensions. The @code{gawkextlib} project includes several more, -larger, extensions. If you wish to write an extension and contribute it +sample extensions. The @code{gawkextlib} project includes several more +(larger) extensions. If you wish to write an extension and contribute it to the community of @command{gawk} users, the @code{gawkextlib} project is the place to do so. @@ -34543,81 +34668,81 @@ cross-references to further details: @itemize @value{BULLET} @item The requirement for @samp{;} to separate rules on a line -(@pxref{Statements/Lines}). +(@pxref{Statements/Lines}) @item User-defined functions and the @code{return} statement -(@pxref{User-defined}). +(@pxref{User-defined}) @item The @code{delete} statement (@pxref{Delete}). @item The @code{do}-@code{while} statement -(@pxref{Do Statement}). +(@pxref{Do Statement}) @item The built-in functions @code{atan2()}, @code{cos()}, @code{sin()}, @code{rand()}, and -@code{srand()} (@pxref{Numeric Functions}). +@code{srand()} (@pxref{Numeric Functions}) @item The built-in functions @code{gsub()}, @code{sub()}, and @code{match()} -(@pxref{String Functions}). +(@pxref{String Functions}) @item The built-in functions @code{close()} and @code{system()} -(@pxref{I/O Functions}). +(@pxref{I/O Functions}) @item The @code{ARGC}, @code{ARGV}, @code{FNR}, @code{RLENGTH}, @code{RSTART}, -and @code{SUBSEP} predefined variables (@pxref{Built-in Variables}). +and @code{SUBSEP} predefined variables (@pxref{Built-in Variables}) @item -Assignable @code{$0} (@pxref{Changing Fields}). +Assignable @code{$0} (@pxref{Changing Fields}) @item The conditional expression using the ternary operator @samp{?:} -(@pxref{Conditional Exp}). +(@pxref{Conditional Exp}) @item -The expression @samp{@var{index-variable} in @var{array}} outside of @code{for} -statements (@pxref{Reference to Elements}). +The expression @samp{@var{indx} in @var{array}} outside of @code{for} +statements (@pxref{Reference to Elements}) @item The exponentiation operator @samp{^} (@pxref{Arithmetic Ops}) and its assignment operator -form @samp{^=} (@pxref{Assignment Ops}). +form @samp{^=} (@pxref{Assignment Ops}) @item C-compatible operator precedence, which breaks some old @command{awk} -programs (@pxref{Precedence}). +programs (@pxref{Precedence}) @item Regexps as the value of @code{FS} (@pxref{Field Separators}) and as the third argument to the @code{split()} function (@pxref{String Functions}), rather than using only the first character -of @code{FS}. +of @code{FS} @item Dynamic regexps as operands of the @samp{~} and @samp{!~} operators -(@pxref{Computed Regexps}). +(@pxref{Computed Regexps}) @item The escape sequences @samp{\b}, @samp{\f}, and @samp{\r} -(@pxref{Escape Sequences}). +(@pxref{Escape Sequences}) @item Redirection of input for the @code{getline} function -(@pxref{Getline}). +(@pxref{Getline}) @item Multiple @code{BEGIN} and @code{END} rules -(@pxref{BEGIN/END}). +(@pxref{BEGIN/END}) @item Multidimensional arrays -(@pxref{Multidimensional}). +(@pxref{Multidimensional}) @end itemize @node SVR4 @@ -34629,54 +34754,54 @@ The System V Release 4 (1989) version of Unix @command{awk} added these features @itemize @value{BULLET} @item -The @code{ENVIRON} array (@pxref{Built-in Variables}). +The @code{ENVIRON} array (@pxref{Built-in Variables}) @c gawk and MKS awk @item Multiple @option{-f} options on the command line -(@pxref{Options}). +(@pxref{Options}) @c MKS awk @item The @option{-v} option for assigning variables before program execution begins -(@pxref{Options}). +(@pxref{Options}) @c GNU, Bell Laboratories & MKS together @item -The @option{--} signal for terminating command-line options. +The @option{--} signal for terminating command-line options @item The @samp{\a}, @samp{\v}, and @samp{\x} escape sequences -(@pxref{Escape Sequences}). +(@pxref{Escape Sequences}) @c GNU, for ANSI C compat @item A defined return value for the @code{srand()} built-in function -(@pxref{Numeric Functions}). +(@pxref{Numeric Functions}) @item The @code{toupper()} and @code{tolower()} built-in string functions for case translation -(@pxref{String Functions}). +(@pxref{String Functions}) @item A cleaner specification for the @samp{%c} format-control letter in the @code{printf} function -(@pxref{Control Letters}). +(@pxref{Control Letters}) @item The ability to dynamically pass the field width and precision (@code{"%*.*d"}) in the argument list of @code{printf} and @code{sprintf()} -(@pxref{Control Letters}). +(@pxref{Control Letters}) @item The use of regexp constants, such as @code{/foo/}, as expressions, where they are equivalent to using the matching operator, as in @samp{$0 ~ /foo/} -(@pxref{Using Constant Regexps}). +(@pxref{Using Constant Regexps}) @item Processing of escape sequences inside command-line variable assignments -(@pxref{Assignment Options}). +(@pxref{Assignment Options}) @end itemize @node POSIX @@ -34690,23 +34815,23 @@ introduced the following changes into the language: @itemize @value{BULLET} @item The use of @option{-W} for implementation-specific options -(@pxref{Options}). +(@pxref{Options}) @item The use of @code{CONVFMT} for controlling the conversion of numbers -to strings (@pxref{Conversion}). +to strings (@pxref{Conversion}) @item The concept of a numeric string and tighter comparison rules to go -with it (@pxref{Typing and Comparison}). +with it (@pxref{Typing and Comparison}) @item The use of predefined variables as function parameter names is forbidden -(@pxref{Definition Syntax}). +(@pxref{Definition Syntax}) @item More complete documentation of many of the previously undocumented -features of the language. +features of the language @end itemize In 2012, a number of extensions that had been commonly available for @@ -34715,15 +34840,15 @@ many years were finally added to POSIX. They are: @itemize @value{BULLET} @item The @code{fflush()} built-in function for flushing buffered output -(@pxref{I/O Functions}). +(@pxref{I/O Functions}) @item The @code{nextfile} statement -(@pxref{Nextfile Statement}). +(@pxref{Nextfile Statement}) @item The ability to delete all of an array at once with @samp{delete @var{array}} -(@pxref{Delete}). +(@pxref{Delete}) @end itemize @@ -34753,22 +34878,22 @@ originally appeared in his version of @command{awk}: The @samp{**} and @samp{**=} operators (@pxref{Arithmetic Ops} and -@ref{Assignment Ops}). +@ref{Assignment Ops}) @item The use of @code{func} as an abbreviation for @code{function} -(@pxref{Definition Syntax}). +(@pxref{Definition Syntax}) @item The @code{fflush()} built-in function for flushing buffered output -(@pxref{I/O Functions}). +(@pxref{I/O Functions}) @ignore @item The @code{SYMTAB} array, that allows access to @command{awk}'s internal symbol table. This feature was never documented for his @command{awk}, largely because it is somewhat shakily implemented. For instance, you cannot access arrays -or array elements through it. +or array elements through it @end ignore @end itemize @@ -34798,7 +34923,7 @@ Additional predefined variables: @itemize @value{MINUS} @item The -@code{ARGIND} +@code{ARGIND}, @code{BINMODE}, @code{ERRNO}, @code{FIELDWIDTHS}, @@ -34810,7 +34935,7 @@ The and @code{TEXTDOMAIN} variables -(@pxref{Built-in Variables}). +(@pxref{Built-in Variables}) @end itemize @item @@ -34818,15 +34943,15 @@ Special files in I/O redirections: @itemize @value{MINUS} @item -The @file{/dev/stdin}, @file{/dev/stdout}, @file{/dev/stderr} and +The @file{/dev/stdin}, @file{/dev/stdout}, @file{/dev/stderr}, and @file{/dev/fd/@var{N}} special @value{FN}s -(@pxref{Special Files}). +(@pxref{Special Files}) @item The @file{/inet}, @file{/inet4}, and @samp{/inet6} special files for TCP/IP networking using @samp{|&} to specify which version of the IP protocol to use -(@pxref{TCP/IP Networking}). +(@pxref{TCP/IP Networking}) @end itemize @item @@ -34835,37 +34960,41 @@ Changes and/or additions to the language: @itemize @value{MINUS} @item The @samp{\x} escape sequence -(@pxref{Escape Sequences}). +(@pxref{Escape Sequences}) @item Full support for both POSIX and GNU regexps -(@pxref{Regexp}). +(@pxref{Regexp}) @item The ability for @code{FS} and for the third argument to @code{split()} to be null strings -(@pxref{Single Character Fields}). +(@pxref{Single Character Fields}) @item The ability for @code{RS} to be a regexp -(@pxref{Records}). +(@pxref{Records}) @item The ability to use octal and hexadecimal constants in @command{awk} program source code -(@pxref{Nondecimal-numbers}). +(@pxref{Nondecimal-numbers}) @item The @samp{|&} operator for two-way I/O to a coprocess -(@pxref{Two-way I/O}). +(@pxref{Two-way I/O}) @item Indirect function calls -(@pxref{Indirect Calls}). +(@pxref{Indirect Calls}) @item Directories on the command line produce a warning and are skipped -(@pxref{Command-line directories}). +(@pxref{Command-line directories}) + +@item +Output with @code{print} and @code{printf} need not be fatal +(@pxref{Nonfatal}) @end itemize @item @@ -34874,11 +35003,11 @@ New keywords: @itemize @value{MINUS} @item The @code{BEGINFILE} and @code{ENDFILE} special patterns -(@pxref{BEGINFILE/ENDFILE}). +(@pxref{BEGINFILE/ENDFILE}) @item The @code{switch} statement -(@pxref{Switch Statement}). +(@pxref{Switch Statement}) @end itemize @item @@ -34888,30 +35017,30 @@ Changes to standard @command{awk} functions: @item The optional second argument to @code{close()} that allows closing one end of a two-way pipe to a coprocess -(@pxref{Two-way I/O}). +(@pxref{Two-way I/O}) @item -POSIX compliance for @code{gsub()} and @code{sub()} with @option{--posix}. +POSIX compliance for @code{gsub()} and @code{sub()} with @option{--posix} @item The @code{length()} function accepts an array argument and returns the number of elements in the array -(@pxref{String Functions}). +(@pxref{String Functions}) @item The optional third argument to the @code{match()} function for capturing text-matching subexpressions within a regexp -(@pxref{String Functions}). +(@pxref{String Functions}) @item Positional specifiers in @code{printf} formats for making translations easier -(@pxref{Printf Ordering}). +(@pxref{Printf Ordering}) @item The @code{split()} function's additional optional fourth -argument which is an array to hold the text of the field separators -(@pxref{String Functions}). +argument, which is an array to hold the text of the field separators +(@pxref{String Functions}) @end itemize @item @@ -34921,16 +35050,16 @@ Additional functions only in @command{gawk}: @item The @code{gensub()}, @code{patsplit()}, and @code{strtonum()} functions for more powerful text manipulation -(@pxref{String Functions}). +(@pxref{String Functions}) @item The @code{asort()} and @code{asorti()} functions for sorting arrays -(@pxref{Array Sorting}). +(@pxref{Array Sorting}) @item The @code{mktime()}, @code{systime()}, and @code{strftime()} functions for working with timestamps -(@pxref{Time Functions}). +(@pxref{Time Functions}) @item The @@ -34942,17 +35071,22 @@ The and @code{xor()} functions for bit manipulation -(@pxref{Bitwise Functions}). +(@pxref{Bitwise Functions}) @c In 4.1, and(), or() and xor() grew the ability to take > 2 arguments @item The @code{isarray()} function to check if a variable is an array or not -(@pxref{Type Functions}). +(@pxref{Type Functions}) @item -The @code{bindtextdomain()}, @code{dcgettext()} and @code{dcngettext()} +The @code{bindtextdomain()}, @code{dcgettext()}, and @code{dcngettext()} functions for internationalization -(@pxref{Programmer i18n}). +(@pxref{Programmer i18n}) + +@item +The @code{div()} function for doing integer +division and remainder +(@pxref{Numeric Functions}) @end itemize @item @@ -34962,12 +35096,12 @@ Changes and/or additions in the command-line options: @item The @env{AWKPATH} environment variable for specifying a path search for the @option{-f} command-line option -(@pxref{Options}). +(@pxref{Options}) @item The @env{AWKLIBPATH} environment variable for specifying a path search for the @option{-l} command-line option -(@pxref{Options}). +(@pxref{Options}) @item The @@ -34996,7 +35130,7 @@ The and @option{-V} short options. Also, the -ability to use GNU-style long-named options that start with @option{--} +ability to use GNU-style long-named options that start with @option{--}, and the @option{--assign}, @option{--bignum}, @@ -35076,7 +35210,7 @@ GCC for VAX and Alpha has not been tested for a while. @end itemize @item -Support for the following obsolete systems was removed from the code +Support for the following obsolete system was removed from the code for @command{gawk} @value{PVERSION} 4.1: @c nested table @@ -35086,8 +35220,14 @@ Ultrix @end itemize @item -@c FIXME: Verify the version here. -Support for MirBSD was removed at @command{gawk} @value{PVERSION} 4.2. +Support for the following systems was removed from the code +for @command{gawk} @value{PVERSION} 4.2: + +@c nested table +@itemize @value{MINUS} +@item +MirBSD +@end itemize @end itemize @@ -35701,6 +35841,44 @@ with a minimum of two The dynamic extension interface was completely redone (@pxref{Dynamic Extensions}). +@item +Support for Ultrix was removed. + +@end itemize + +Version 4.2 introduced the following changes: + +@itemize @bullet +@item +Changes to @code{ENVIRON} are reflected into @command{gawk}'s +environment and that of programs that it runs. +@xref{Auto-set}. + +@item +The @option{--pretty-print} option no longer runs the @command{awk} +program too. +@xref{Options}. + +@item +The @command{igawk} program and its manual page are no longer +installed when @command{gawk} is built. +@xref{Igawk Program}. + +@item +The @code{div()} function. +@xref{Numeric Functions}. + +@item +The maximum number of hexdecimal digits in @samp{\x} escapes +is now two. +@xref{Escape Sequences}. + +@item +Nonfatal output with @code{print} and @code{printf}. +@xref{Nonfatal}. + +@item +Support for MirBSD was removed. @end itemize @c XXX ADD MORE STUFF HERE @@ -35716,9 +35894,9 @@ by @command{gawk}, Brian Kernighan's @command{awk}, and @command{mawk}, the three most widely used freely available versions of @command{awk} (@pxref{Other Versions}). -@multitable {@file{/dev/stderr} special file} {BWK Awk} {Mawk} {GNU Awk} {Now standard} -@headitem Feature @tab BWK Awk @tab Mawk @tab GNU Awk @tab Now standard -@item @samp{\x} Escape sequence @tab X @tab X @tab X @tab +@multitable {@file{/dev/stderr} special file} {BWK @command{awk}} {@command{mawk}} {@command{gawk}} {Now standard} +@headitem Feature @tab BWK @command{awk} @tab @command{mawk} @tab @command{gawk} @tab Now standard +@item @samp{\x} escape sequence @tab X @tab X @tab X @tab @item @code{FS} as null string @tab X @tab X @tab X @tab @item @file{/dev/stdin} special file @tab X @tab X @tab X @tab @item @file{/dev/stdout} special file @tab X @tab X @tab X @tab @@ -35749,7 +35927,7 @@ in the machine's native character set. Thus, on ASCII-based systems, @samp{[a-z]} matched all the lowercase letters, and only the lowercase letters, as the numeric values for the letters from @samp{a} through @samp{z} were contiguous. (On an EBCDIC system, the range @samp{[a-z]} -includes additional, non-alphabetic characters as well.) +includes additional nonalphabetic characters as well.) Almost all introductory Unix literature explained range expressions as working in this fashion, and in particular, would teach that the @@ -35774,7 +35952,7 @@ What does that mean? In many locales, @samp{A} and @samp{a} are both less than @samp{B}. In other words, these locales sort characters in dictionary order, and @samp{[a-dx-z]} is typically not equivalent to @samp{[abcdxyz]}; -instead it might be equivalent to @samp{[ABCXYabcdxyz]}, for example. +instead, it might be equivalent to @samp{[ABCXYabcdxyz]}, for example. This point needs to be emphasized: much literature teaches that you should use @samp{[a-z]} to match a lowercase character. But on systems with @@ -35803,23 +35981,23 @@ is perfectly valid in ASCII, but is not valid in many Unicode locales, such as @code{en_US.UTF-8}. Early versions of @command{gawk} used regexp matching code that was not -locale aware, so ranges had their traditional interpretation. +locale-aware, so ranges had their traditional interpretation. When @command{gawk} switched to using locale-aware regexp matchers, the problems began; especially as both GNU/Linux and commercial Unix 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?!?'' +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 +@command{gawk} was being nicely standards-compliant, and that the issue was in the user's locale. During the development of @value{PVERSION} 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 Campaign for Rational Range Interpretation (or -RRI). A number of GNU tools have either implemented this change, +RRI). A number of GNU tools have already implemented this change, or will soon. Thanks to Karl Berry for coining the phrase ``Rational Range Interpretation.''} @@ -35833,9 +36011,10 @@ 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 -@option{--posix}; in all cases, @command{gawk} remains POSIX compliant. +The @command{gawk} maintainer chose to apply the pre-POSIX meaning +both with the default regexp matching and when @option{--traditional} or +@option{--posix} are used. +In all cases @command{gawk} remains POSIX-compliant. @node Contributors @appendixsec Major Contributors to @command{gawk} @@ -35881,7 +36060,7 @@ to around 90 pages. Richard Stallman helped finish the implementation and the initial draft of this @value{DOCUMENT}. -He is also the founder of the FSF and the GNU project. +He is also the founder of the FSF and the GNU Project. @item @cindex Woods, John @@ -36045,28 +36224,28 @@ John Haque made the following contributions: @itemize @value{MINUS} @item The modifications to convert @command{gawk} -into a byte-code interpreter, including the debugger. +into a byte-code interpreter, including the debugger @item -The addition of true arrays of arrays. +The addition of true arrays of arrays @item -The additional modifications for support of arbitrary-precision arithmetic. +The additional modifications for support of arbitrary-precision arithmetic @item The initial text of -@ref{Arbitrary Precision Arithmetic}. +@ref{Arbitrary Precision Arithmetic} @item The work to merge the three versions of @command{gawk} -into one, for the 4.1 release. +into one, for the 4.1 release @item -Improved array internals for arrays indexed by integers. +Improved array internals for arrays indexed by integers @item -The improved array sorting features were driven by John together -with Pat Rankin. +The improved array sorting features were also driven by John, together +with Pat Rankin @end itemize @cindex Papadopoulos, Panos @@ -36107,10 +36286,10 @@ helping David Trueman, and as the primary maintainer since around 1994. @itemize @value{BULLET} @item The @command{awk} language has evolved over time. The first release -was with V7 Unix circa 1978. In 1987, for System V Release 3.1, +was with V7 Unix, circa 1978. In 1987, for System V Release 3.1, major additions, including user-defined functions, were made to the language. Additional changes were made for System V Release 4, in 1989. -Since then, further minor changes happen under the auspices of the +Since then, further minor changes have happened under the auspices of the POSIX standard. @item @@ -36126,7 +36305,7 @@ options. The interaction of POSIX locales and regexp matching in @command{gawk} has been confusing over the years. Today, @command{gawk} implements Rational Range Interpretation, where ranges of the form @samp{[a-z]} match @emph{only} the characters numerically between -@samp{a} through @samp{z} in the machine's native character set. Usually this is ASCII +@samp{a} through @samp{z} in the machine's native character set. Usually this is ASCII, but it can be EBCDIC on IBM S/390 systems. @item @@ -36211,7 +36390,7 @@ will be less busy, and you can usually find one closer to your site. @command{gawk} is distributed as several @code{tar} files compressed with different compression programs: @command{gzip}, @command{bzip2}, and @command{xz}. For simplicity, the rest of these instructions assume -you are using the one compressed with the GNU Zip program, @code{gzip}. +you are using the one compressed with the GNU Gzip program (@command{gzip}). Once you have the distribution (e.g., @file{gawk-@value{VERSION}.@value{PATCHLEVEL}.tar.gz}), @@ -36262,12 +36441,12 @@ operating systems: @table @asis @item Various @samp{.c}, @samp{.y}, and @samp{.h} files -The actual @command{gawk} source code. +These files contain the actual @command{gawk} source code. @end table @table @file @item ABOUT-NLS -Information about GNU @command{gettext} and translations. +A file containing information about GNU @command{gettext} and translations. @item AUTHORS A file with some information about the authorship of @command{gawk}. @@ -36297,7 +36476,7 @@ An older list of changes to @command{gawk}. The GNU General Public License. @item POSIX.STD -A description of behaviors in the POSIX standard for @command{awk} which +A description of behaviors in the POSIX standard for @command{awk} that are left undefined, or where @command{gawk} may not comply fully, as well as a list of things that the POSIX standard should describe but does not. @@ -36348,10 +36527,10 @@ The generated Info file for this @value{DOCUMENT}. @item doc/gawkinet.texi The Texinfo source file for @ifinfo -@inforef{Top, , General Introduction, gawkinet, TCP/IP Internetworking with @command{gawk}}. +@inforef{Top, , General Introduction, gawkinet, @value{GAWKINETTITLE}}. @end ifinfo @ifnotinfo -@cite{TCP/IP Internetworking with @command{gawk}}. +@cite{@value{GAWKINETTITLE}}. @end ifnotinfo It should be processed with @TeX{} (via @command{texi2dvi} or @command{texi2pdf}) @@ -36360,7 +36539,7 @@ with @command{makeinfo} to produce an Info or HTML file. @item doc/gawkinet.info The generated Info file for -@cite{TCP/IP Internetworking with @command{gawk}}. +@cite{@value{GAWKINETTITLE}}. @item doc/igawk.1 The @command{troff} source for a manual page describing the @command{igawk} @@ -36607,14 +36786,17 @@ Similarly, setting the @code{LINT} variable (@pxref{User-modified}) has no effect on the running @command{awk} program. -When used with GCC's automatic dead-code-elimination, this option +When used with the GNU Compiler Collection's (GCC's) +automatic dead-code-elimination, this option cuts almost 23K bytes off the size of the @command{gawk} executable on GNU/Linux x86_64 systems. Results on other systems and with other compilers are likely to vary. Using this option may bring you some slight performance improvement. +@quotation CAUTION Using this option will cause some of the tests in the test suite to fail. This option may be removed at a later date. +@end quotation @cindex @option{--disable-nls} configuration option @cindex configuration option, @code{--disable-nls} @@ -36711,10 +36893,10 @@ running MS-DOS, any version of MS-Windows, or OS/2. running MS-DOS and any version of MS-Windows. @end ifset In this @value{SECTION}, the term ``Windows32'' -refers to any of Microsoft Windows-95/98/ME/NT/2000/XP/Vista/7/8. +refers to any of Microsoft Windows 95/98/ME/NT/2000/XP/Vista/7/8. The limitations of MS-DOS (and MS-DOS shells under the other operating -systems) has meant that various ``DOS extenders'' are often used with +systems) have meant that various ``DOS extenders'' are often used with programs such as @command{gawk}. The varying capabilities of Microsoft Windows 3.1 and Windows32 can add to the confusion. For an overview of the considerations, refer to @file{README_d/README.pc} in @@ -36973,7 +37155,7 @@ Under MS-Windows, OS/2 and MS-DOS, Under MS-Windows and MS-DOS, @end ifset @command{gawk} (and many other text programs) silently -translate end-of-line @samp{\r\n} to @samp{\n} on input and @samp{\n} +translates end-of-line @samp{\r\n} to @samp{\n} on input and @samp{\n} to @samp{\r\n} on output. A special @code{BINMODE} variable @value{COMMONEXT} allows control over these translations and is interpreted as follows: @@ -37007,7 +37189,7 @@ Setting @code{BINMODE} for standard input or standard output is accomplished by using an appropriate @samp{-v BINMODE=@var{N}} option on the command line. @code{BINMODE} is set at the time a file or pipe is opened and cannot be -changed mid-stream. +changed midstream. The name @code{BINMODE} was chosen to match @command{mawk} (@pxref{Other Versions}). @@ -37063,8 +37245,8 @@ 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 GNU/Linux, using the -GNU tools, such as Bash, the GNU Compiler Collection (GCC), GNU Make, +This environment provides an excellent simulation of GNU/Linux, using +Bash, GCC, GNU Make, and other GNU programs. Compilation and installation for Cygwin is the same as for a Unix system: @@ -37083,7 +37265,7 @@ and then the @samp{make} proceeds as usual. @appendixsubsubsec Using @command{gawk} In The MSYS Environment In the MSYS environment under MS-Windows, @command{gawk} automatically -uses binary mode for reading and writing files. Thus there is no +uses binary mode for reading and writing files. Thus, there is no need to use the @code{BINMODE} variable. This can cause problems with other Unix-like components that have @@ -37147,7 +37329,7 @@ With ODS-5 volumes and extended parsing enabled, the case of the target parameter may need to be exact. @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. +using Compaq C V6.4, and under 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.''} @@ -37195,7 +37377,7 @@ For VAX: /name=(as_is,short) @end example -Compile time macros need to be defined before the first VMS-supplied +Compile-time macros need to be defined before the first VMS-supplied header file is included, as follows: @example @@ -37242,7 +37424,7 @@ If your @command{gawk} was installed by a PCSI kit into the @file{GNV$GNU:[vms_help]gawk.hlp}. The PCSI kit also installs a @file{GNV$GNU:[vms_bin]gawk_verb.cld} file -which can be used to add @command{gawk} and @command{awk} as DCL commands. +that can be used to add @command{gawk} and @command{awk} as DCL commands. For just the current process you can use: @@ -37251,7 +37433,7 @@ $ @kbd{set command gnv$gnu:[vms_bin]gawk_verb.cld} @end example Or the system manager can use @file{GNV$GNU:[vms_bin]gawk_verb.cld} to -add the @command{gawk} and @command{awk} to the system wide @samp{DCLTABLES}. +add the @command{gawk} and @command{awk} to the system-wide @samp{DCLTABLES}. The DCL syntax is documented in the @file{gawk.hlp} file. @@ -37317,14 +37499,14 @@ The @code{exit} value is a Unix-style value and is encoded into a VMS exit status value when the program exits. The VMS severity bits will be set based on the @code{exit} value. -A failure is indicated by 1 and VMS sets the @code{ERROR} status. -A fatal error is indicated by 2 and VMS sets the @code{FATAL} status. +A failure is indicated by 1, and VMS sets the @code{ERROR} status. +A fatal error is indicated by 2, and VMS sets the @code{FATAL} status. All other values will have the @code{SUCCESS} status. The exit value is encoded to comply with VMS coding standards and will have the @code{C_FACILITY_NO} of @code{0x350000} with the constant @code{0xA000} added to the number shifted over by 3 bits to make room for the severity codes. -To extract the actual @command{gawk} exit code from the VMS status use: +To extract the actual @command{gawk} exit code from the VMS status, use: @example unix_status = (vms_status .and. &x7f8) / 8 @@ -37343,7 +37525,7 @@ VAX/VMS floating point uses unbiased rounding. @xref{Round Function}. VMS reports time values in GMT unless one of the @code{SYS$TIMEZONE_RULE} or @code{TZ} logical names is set. Older versions of VMS, such as VAX/VMS -7.3 do not set these logical names. +7.3, do not set these logical names. @c @cindex directory search @c @cindex path, search @@ -37361,7 +37543,7 @@ translation and not a multitranslation @code{RMS} searchlist. The VMS GNV package provides a build environment similar to POSIX with ports of a collection of open source tools. The @command{gawk} found in the GNV -base kit is an older port. Currently the GNV project is being reorganized +base kit is an older port. Currently, the GNV project is being reorganized to supply individual PCSI packages for each component. See @w{@uref{https://sourceforge.net/p/gnv/wiki/InstallingGNVPackages/}.} @@ -37434,7 +37616,7 @@ recommend compiling and using the current version. @cindex debugging @command{gawk}, bug reports @cindex troubleshooting, @command{gawk}, bug reports If you have problems with @command{gawk} or think that you have found a bug, -report it to the developers; we cannot promise to do anything +report it to the developers; we cannot promise to do anything, but we might well want to fix it. Before reporting a bug, make sure you have really found a genuine bug. @@ -37444,7 +37626,7 @@ to do something or not, report that too; it's a bug in the documentation! Before reporting a bug or trying to fix it yourself, try to isolate it to the smallest possible @command{awk} program and input @value{DF} that -reproduces the problem. Then send us the program and @value{DF}, +reproduce the problem. Then send us the program and @value{DF}, some idea of what kind of Unix system you're using, the compiler you used to compile @command{gawk}, and the exact results @command{gawk} gave you. Also say what you expected to occur; this helps @@ -37459,7 +37641,7 @@ You can get this information with the command @samp{gawk --version}. Once you have a precise problem description, send email to @EMAIL{bug-gawk@@gnu.org,bug-gawk at gnu dot org}. -The @command{gawk} maintainers subscribe to this address and +The @command{gawk} maintainers subscribe to this address, and thus they will receive your bug report. Although you can send mail to the maintainers directly, the bug reporting address is preferred because the @@ -37486,8 +37668,8 @@ bug reporting system, you should also send a copy to This is for two reasons. First, although some distributions forward bug reports ``upstream'' to the GNU mailing list, many don't, so there is a good chance that the @command{gawk} maintainers won't even see the bug report! Second, -mail to the GNU list is archived, and having everything at the GNU project -keeps things self-contained and not dependant on other organizations. +mail to the GNU list is archived, and having everything at the GNU Project +keeps things self-contained and not dependent on other organizations. @end quotation Non-bug suggestions are always welcome as well. If you have questions @@ -37496,7 +37678,7 @@ features, ask on the bug list; we will try to help you out if we can. If you find bugs in one of the non-Unix ports of @command{gawk}, send an email to the bug list, with a copy to the -person who maintains that port. They are named in the following list, +person who maintains that port. The maintainers are named in the following list, as well as in the @file{README} file in the @command{gawk} distribution. Information in the @file{README} file should be considered authoritative if it conflicts with this @value{DOCUMENT}. @@ -37511,19 +37693,19 @@ The people maintaining the various @command{gawk} ports are: @cindex Robbins, Arnold @cindex Zaretskii, Eli @multitable {MS-Windows with MinGW} {123456789012345678901234567890123456789001234567890} -@item Unix and POSIX systems @tab Arnold Robbins, @EMAIL{arnold@@skeeve.com,arnold at skeeve dot com}. +@item Unix and POSIX systems @tab Arnold Robbins, @EMAIL{arnold@@skeeve.com,arnold at skeeve dot com} -@item MS-DOS with DJGPP @tab Scott Deifik, @EMAIL{scottd.mail@@sbcglobal.net,scottd dot mail at sbcglobal dot net}. +@item MS-DOS with DJGPP @tab Scott Deifik, @EMAIL{scottd.mail@@sbcglobal.net,scottd dot mail at sbcglobal dot net} -@item MS-Windows with MinGW @tab Eli Zaretskii, @EMAIL{eliz@@gnu.org,eliz at gnu dot org}. +@item MS-Windows with MinGW @tab Eli Zaretskii, @EMAIL{eliz@@gnu.org,eliz at gnu dot org} @c Leave this in the print version on purpose. @c OS/2 is not mentioned anywhere else in the print version though. -@item OS/2 @tab Andreas Buening, @EMAIL{andreas.buening@@nexgo.de,andreas dot buening at nexgo dot de}. +@item OS/2 @tab Andreas Buening, @EMAIL{andreas.buening@@nexgo.de,andreas dot buening at nexgo dot de} -@item VMS @tab John Malmberg, @EMAIL{wb8tyw@@qsl.net,wb8tyw at qsl.net}. +@item VMS @tab John Malmberg, @EMAIL{wb8tyw@@qsl.net,wb8tyw at qsl.net} -@item z/OS (OS/390) @tab Dave Pitts, @EMAIL{dpitts@@cozx.com,dpitts at cozx dot com}. +@item z/OS (OS/390) @tab Dave Pitts, @EMAIL{dpitts@@cozx.com,dpitts at cozx dot com} @end multitable If your bug is also reproducible under Unix, send a copy of your @@ -37542,7 +37724,7 @@ Date: Wed, 4 Sep 1996 08:11:48 -0700 (PDT) @cindex Brennan, Michael @ifnotdocbook @quotation -@i{It's kind of fun to put comments like this in your awk code.}@* +@i{It's kind of fun to put comments like this in your awk code:}@* @ @ @ @ @ @ @code{// Do C++ comments work? answer: yes! of course} @author Michael Brennan @end quotation @@ -37583,7 +37765,7 @@ It is available in several archive formats: @end table @cindex @command{git} utility -You can also retrieve it from Git Hub: +You can also retrieve it from GitHub: @example git clone git://github.com/onetrueawk/awk bwkawk @@ -37643,7 +37825,7 @@ for a list of extensions in @command{mawk} that are not in POSIX @command{awk}. @item @command{awka} Written by Andrew Sumner, @command{awka} translates @command{awk} programs into C, compiles them, -and links them with a library of functions that provides the core +and links them with a library of functions that provide the core @command{awk} functionality. It also has a number of extensions. @@ -37664,17 +37846,17 @@ since approximately 2001. Nelson H.F.@: Beebe at the University of Utah has modified BWK @command{awk} to provide timing and profiling information. It is different from @command{gawk} with the @option{--profile} option -(@pxref{Profiling}), +(@pxref{Profiling}) in that it uses CPU-based profiling, not line-count profiling. You may find it at either @uref{ftp://ftp.math.utah.edu/pub/pawk/pawk-20030606.tar.gz} or @uref{http://www.math.utah.edu/pub/pawk/pawk-20030606.tar.gz}. -@item Busybox Awk -@cindex Busybox Awk -@cindex source code, Busybox Awk -Busybox is a GPL-licensed program providing small versions of many +@item BusyBox @command{awk} +@cindex BusyBox Awk +@cindex source code, BusyBox Awk +BusyBox is a GPL-licensed program providing small versions of many applications within a single executable. It is aimed at embedded systems. It includes a full implementation of POSIX @command{awk}. When building it, be careful not to do @samp{make install} as it will overwrite @@ -37686,7 +37868,7 @@ information, see the @uref{http://busybox.net, project's home page}. @cindex source code, Solaris @command{awk} @item The OpenSolaris POSIX @command{awk} The versions of @command{awk} in @file{/usr/xpg4/bin} and -@file{/usr/xpg6/bin} on Solaris are more-or-less POSIX-compliant. +@file{/usr/xpg6/bin} on Solaris are more or less POSIX-compliant. They are based on the @command{awk} from Mortice Kern Systems for PCs. We were able to make this code compile and work under GNU/Linux with 1--2 hours of work. Making it more generally portable (using @@ -37727,9 +37909,9 @@ features to Python. See @uref{https://github.com/alecthomas/pawk} for more information. (This is not related to Nelson Beebe's modified version of BWK @command{awk}, described earlier.) -@item @w{QSE Awk} -@cindex QSE Awk -@cindex source code, QSE Awk +@item @w{QSE @command{awk}} +@cindex QSE @command{awk} +@cindex source code, QSE @command{awk} This is an embeddable @command{awk} interpreter. For more information, see @uref{http://code.google.com/p/qse/} and @uref{http://awk.info/?tools/qse}. @@ -37748,7 +37930,7 @@ since approximately 2008. @item Other versions See also the ``Versions and implementations'' section of the @uref{http://en.wikipedia.org/wiki/Awk_language#Versions_and_implementations, -Wikipedia article} for information on additional versions. +Wikipedia article} on @command{awk} for information on additional versions. @end table @@ -37757,7 +37939,7 @@ Wikipedia article} for information on additional versions. @itemize @value{BULLET} @item -The @command{gawk} distribution is available from GNU project's main +The @command{gawk} distribution is available from the GNU Project's main distribution site, @code{ftp.gnu.org}. The canonical build recipe is: @example @@ -37769,22 +37951,22 @@ cd gawk-@value{VERSION}.@value{PATCHLEVEL} @item @command{gawk} may be built on non-POSIX systems as well. The currently -supported systems are MS-Windows using DJGPP, MSYS, MinGW and Cygwin, +supported systems are MS-Windows using DJGPP, MSYS, MinGW, and Cygwin, @ifclear FOR_PRINT OS/2 using EMX, @end ifclear and both Vax/VMS and OpenVMS. -Instructions for each system are included in this @value{CHAPTER}. +Instructions for each system are included in this @value{APPENDIX}. @item Bug reports should be sent via email to @email{bug-gawk@@gnu.org}. -Bug reports should be in English, and should include the version of @command{gawk}, -how it was compiled, and a short program and @value{DF} which demonstrate +Bug reports should be in English and should include the version of @command{gawk}, +how it was compiled, and a short program and @value{DF} that demonstrate the problem. @item There are a number of other freely available @command{awk} -implementations. Many are POSIX compliant; others are less so. +implementations. Many are POSIX-compliant; others are less so. @end itemize diff --git a/doc/texinfo.tex b/doc/texinfo.tex index 370d4505..8236d7d2 100644 --- a/doc/texinfo.tex +++ b/doc/texinfo.tex @@ -3,11 +3,12 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2014-12-03.16} +\def\texinfoversion{2015-02-05.16} % % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, -% 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc. +% 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 +% Free Software Foundation, Inc. % % This texinfo.tex file is free software: you can redistribute it and/or % modify it under the terms of the GNU General Public License as @@ -4488,7 +4489,6 @@ end % Called from \indexdummies and \atdummies. % \def\commondummies{% - % % \definedummyword defines \#1 as \string\#1\space, thus effectively % preventing its expansion. This is used only for control words, % not control letters, because the \space would be incorrect for @@ -4565,6 +4565,7 @@ end \definedummyword\guilsinglright \definedummyword\lbracechar \definedummyword\leq + \definedummyword\mathopsup \definedummyword\minus \definedummyword\ogonek \definedummyword\pounds @@ -4578,6 +4579,8 @@ end \definedummyword\quotesinglbase \definedummyword\rbracechar \definedummyword\result + \definedummyword\sub + \definedummyword\sup \definedummyword\textdegree % % We want to disable all macros so that they are not expanded by \write. @@ -4652,6 +4655,7 @@ end \definedummyword\samp \definedummyword\strong \definedummyword\tie + \definedummyword\U \definedummyword\uref \definedummyword\url \definedummyword\var @@ -8334,14 +8338,7 @@ end \catcode`\\=\other % % Make the characters 128-255 be printing characters. - {% - \count1=128 - \def\loop{% - \catcode\count1=\other - \advance\count1 by 1 - \ifnum \count1<256 \loop \fi - }% - }% + {\setnonasciicharscatcodenonglobal\other}% % % @ is our escape character in .aux files, and we need braces. \catcode`\{=1 @@ -8952,6 +8949,7 @@ directory should work if nowhere else does.} \catcode\count255=#1\relax \advance\count255 by 1 \repeat + } % @documentencoding sets the definition of non-ASCII characters @@ -8986,10 +8984,12 @@ directory should work if nowhere else does.} % \else \ifx \declaredencoding \utfeight \setnonasciicharscatcode\active - \utfeightchardefs + % since we already invoked \utfeightchardefs at the top level + % (below), do not re-invoke it, then our check for duplicated + % definitions triggers. Making non-ascii chars active is enough. % \else - \message{Unknown document encoding #1, ignoring.}% + \message{Ignoring unknown document encoding: #1.}% % \fi % utfeight \fi % latnine @@ -8998,10 +8998,11 @@ directory should work if nowhere else does.} \fi % ascii } +% emacs-page % A message to be logged when using a character that isn't available % the default font encoding (OT1). % -\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}} +\def\missingcharmsg#1{\message{Character missing, sorry: #1.}} % Take account of \c (plain) vs. \, (Texinfo) difference. \def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi} @@ -9037,12 +9038,10 @@ directory should work if nowhere else does.} \gdef^^b4{\'{}} \gdef^^b5{$\mu$} \gdef^^b6{\P} - % - \gdef^^b7{$^.$} + \gdef^^b7{\ifmmode\cdot\else $\cdot$\fi} \gdef^^b8{\cedilla\ } \gdef^^b9{$^1$} \gdef^^ba{\ordm} - % \gdef^^bb{\guillemetright} \gdef^^bc{$1\over4$} \gdef^^bd{$1\over2$} @@ -9331,6 +9330,11 @@ directory should work if nowhere else does.} \expandafter\expandafter\expandafter\expandafter \expandafter\expandafter\expandafter \gdef\UTFviiiTmp{#2}% + % + \expandafter\ifx\csname uni:#1\endcsname \relax \else + \errmessage{Internal error, already defined: #1}% + \fi + % % define an additional control sequence for this code point. \expandafter\globallet\csname uni:#1\endcsname \UTFviiiTmp \endgroup} @@ -9370,23 +9374,49 @@ directory should work if nowhere else does.} \uppercase{\gdef\UTFviiiTmp{#2#3#4}}} \endgroup +% https://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_M +% U+0000..U+007F = https://en.wikipedia.org/wiki/Basic_Latin_(Unicode_block) +% U+0080..U+00FF = https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block) +% U+0100..U+017F = https://en.wikipedia.org/wiki/Latin_Extended-A +% U+0180..U+024F = https://en.wikipedia.org/wiki/Latin_Extended-B +% +% Many of our renditions are less than wonderful, and all the missing +% characters are available somewhere. Loading the necessary fonts +% awaits user request. We can't truly support Unicode without +% reimplementing everything that's been done in LaTeX for many years, +% plus probably using luatex or xetex, and who knows what else. +% We won't be doing that here in this simple file. But we can try to at +% least make most of the characters not bomb out. +% \def\utfeightchardefs{% \DeclareUnicodeCharacter{00A0}{\tie} \DeclareUnicodeCharacter{00A1}{\exclamdown} \DeclareUnicodeCharacter{00A3}{\pounds} + \DeclareUnicodeCharacter{00A7}{\S} \DeclareUnicodeCharacter{00A8}{\"{ }} \DeclareUnicodeCharacter{00A9}{\copyright} \DeclareUnicodeCharacter{00AA}{\ordf} \DeclareUnicodeCharacter{00AB}{\guillemetleft} + \DeclareUnicodeCharacter{00AC}{\ifmmode\lnot\else $\lnot$\fi} \DeclareUnicodeCharacter{00AD}{\-} \DeclareUnicodeCharacter{00AE}{\registeredsymbol} \DeclareUnicodeCharacter{00AF}{\={ }} \DeclareUnicodeCharacter{00B0}{\ringaccent{ }} + \DeclareUnicodeCharacter{00B1}{\ifmmode\pm\else $\pm$\fi} + \DeclareUnicodeCharacter{00B2}{$^2$} + \DeclareUnicodeCharacter{00B3}{$^3$} \DeclareUnicodeCharacter{00B4}{\'{ }} + \DeclareUnicodeCharacter{00B5}{$\mu$} + \DeclareUnicodeCharacter{00B6}{\P} + \DeclareUnicodeCharacter{00B7}{\ifmmode\cdot\else $\cdot$\fi} \DeclareUnicodeCharacter{00B8}{\cedilla{ }} + \DeclareUnicodeCharacter{00B9}{$^1$} \DeclareUnicodeCharacter{00BA}{\ordm} \DeclareUnicodeCharacter{00BB}{\guillemetright} + \DeclareUnicodeCharacter{00BC}{$1\over4$} + \DeclareUnicodeCharacter{00BD}{$1\over2$} + \DeclareUnicodeCharacter{00BE}{$3\over4$} \DeclareUnicodeCharacter{00BF}{\questiondown} \DeclareUnicodeCharacter{00C0}{\`A} @@ -9413,6 +9443,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{00D4}{\^O} \DeclareUnicodeCharacter{00D5}{\~O} \DeclareUnicodeCharacter{00D6}{\"O} + \DeclareUnicodeCharacter{00D7}{\ifmmode\times\else $\times$\fi} \DeclareUnicodeCharacter{00D8}{\O} \DeclareUnicodeCharacter{00D9}{\`U} \DeclareUnicodeCharacter{00DA}{\'U} @@ -9446,6 +9477,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{00F4}{\^o} \DeclareUnicodeCharacter{00F5}{\~o} \DeclareUnicodeCharacter{00F6}{\"o} + \DeclareUnicodeCharacter{00F7}{\ifmmode\div\else $\div$\fi} \DeclareUnicodeCharacter{00F8}{\o} \DeclareUnicodeCharacter{00F9}{\`u} \DeclareUnicodeCharacter{00FA}{\'u} @@ -9465,20 +9497,23 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{0107}{\'c} \DeclareUnicodeCharacter{0108}{\^C} \DeclareUnicodeCharacter{0109}{\^c} - \DeclareUnicodeCharacter{0118}{\ogonek{E}} - \DeclareUnicodeCharacter{0119}{\ogonek{e}} \DeclareUnicodeCharacter{010A}{\dotaccent{C}} \DeclareUnicodeCharacter{010B}{\dotaccent{c}} \DeclareUnicodeCharacter{010C}{\v{C}} \DeclareUnicodeCharacter{010D}{\v{c}} \DeclareUnicodeCharacter{010E}{\v{D}} + \DeclareUnicodeCharacter{010F}{d'} + \DeclareUnicodeCharacter{0110}{\DH} + \DeclareUnicodeCharacter{0111}{\dh} \DeclareUnicodeCharacter{0112}{\=E} \DeclareUnicodeCharacter{0113}{\=e} \DeclareUnicodeCharacter{0114}{\u{E}} \DeclareUnicodeCharacter{0115}{\u{e}} \DeclareUnicodeCharacter{0116}{\dotaccent{E}} \DeclareUnicodeCharacter{0117}{\dotaccent{e}} + \DeclareUnicodeCharacter{0118}{\ogonek{E}} + \DeclareUnicodeCharacter{0119}{\ogonek{e}} \DeclareUnicodeCharacter{011A}{\v{E}} \DeclareUnicodeCharacter{011B}{\v{e}} \DeclareUnicodeCharacter{011C}{\^G} @@ -9488,14 +9523,20 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{0120}{\dotaccent{G}} \DeclareUnicodeCharacter{0121}{\dotaccent{g}} + \DeclareUnicodeCharacter{0122}{\cedilla{G}} + \DeclareUnicodeCharacter{0123}{\cedilla{g}} \DeclareUnicodeCharacter{0124}{\^H} \DeclareUnicodeCharacter{0125}{\^h} + \DeclareUnicodeCharacter{0126}{\missingcharmsg{H WITH STROKE}} + \DeclareUnicodeCharacter{0127}{\missingcharmsg{h WITH STROKE}} \DeclareUnicodeCharacter{0128}{\~I} \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}} \DeclareUnicodeCharacter{012A}{\=I} \DeclareUnicodeCharacter{012B}{\={\dotless{i}}} \DeclareUnicodeCharacter{012C}{\u{I}} \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}} + \DeclareUnicodeCharacter{012E}{\ogonek{I}} + \DeclareUnicodeCharacter{012F}{\ogonek{i}} \DeclareUnicodeCharacter{0130}{\dotaccent{I}} \DeclareUnicodeCharacter{0131}{\dotless{i}} @@ -9503,15 +9544,29 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{0133}{ij} \DeclareUnicodeCharacter{0134}{\^J} \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}} + \DeclareUnicodeCharacter{0136}{\cedilla{K}} + \DeclareUnicodeCharacter{0137}{\cedilla{k}} + \DeclareUnicodeCharacter{0138}{\ifmmode\kappa\else $\kappa$\fi} \DeclareUnicodeCharacter{0139}{\'L} \DeclareUnicodeCharacter{013A}{\'l} + \DeclareUnicodeCharacter{013B}{\cedilla{L}} + \DeclareUnicodeCharacter{013C}{\cedilla{l}} + \DeclareUnicodeCharacter{013D}{L'}% should kern + \DeclareUnicodeCharacter{013E}{l'}% should kern + \DeclareUnicodeCharacter{013F}{L\U{00B7}} + \DeclareUnicodeCharacter{0140}{l\U{00B7}} \DeclareUnicodeCharacter{0141}{\L} \DeclareUnicodeCharacter{0142}{\l} \DeclareUnicodeCharacter{0143}{\'N} \DeclareUnicodeCharacter{0144}{\'n} + \DeclareUnicodeCharacter{0145}{\cedilla{N}} + \DeclareUnicodeCharacter{0146}{\cedilla{n}} \DeclareUnicodeCharacter{0147}{\v{N}} \DeclareUnicodeCharacter{0148}{\v{n}} + \DeclareUnicodeCharacter{0149}{'n} + \DeclareUnicodeCharacter{014A}{\missingcharmsg{ENG}} + \DeclareUnicodeCharacter{014B}{\missingcharmsg{eng}} \DeclareUnicodeCharacter{014C}{\=O} \DeclareUnicodeCharacter{014D}{\=o} \DeclareUnicodeCharacter{014E}{\u{O}} @@ -9523,6 +9578,8 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{0153}{\oe} \DeclareUnicodeCharacter{0154}{\'R} \DeclareUnicodeCharacter{0155}{\'r} + \DeclareUnicodeCharacter{0156}{\cedilla{R}} + \DeclareUnicodeCharacter{0157}{\cedilla{r}} \DeclareUnicodeCharacter{0158}{\v{R}} \DeclareUnicodeCharacter{0159}{\v{r}} \DeclareUnicodeCharacter{015A}{\'S} @@ -9534,10 +9591,12 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{0160}{\v{S}} \DeclareUnicodeCharacter{0161}{\v{s}} - \DeclareUnicodeCharacter{0162}{\cedilla{t}} - \DeclareUnicodeCharacter{0163}{\cedilla{T}} + \DeclareUnicodeCharacter{0162}{\cedilla{T}} + \DeclareUnicodeCharacter{0163}{\cedilla{t}} \DeclareUnicodeCharacter{0164}{\v{T}} - + \DeclareUnicodeCharacter{0165}{\v{t}} + \DeclareUnicodeCharacter{0166}{\missingcharmsg{H WITH STROKE}} + \DeclareUnicodeCharacter{0167}{\missingcharmsg{h WITH STROKE}} \DeclareUnicodeCharacter{0168}{\~U} \DeclareUnicodeCharacter{0169}{\~u} \DeclareUnicodeCharacter{016A}{\=U} @@ -9549,6 +9608,8 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{0170}{\H{U}} \DeclareUnicodeCharacter{0171}{\H{u}} + \DeclareUnicodeCharacter{0172}{\ogonek{U}} + \DeclareUnicodeCharacter{0173}{\ogonek{u}} \DeclareUnicodeCharacter{0174}{\^W} \DeclareUnicodeCharacter{0175}{\^w} \DeclareUnicodeCharacter{0176}{\^Y} @@ -9560,6 +9621,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{017C}{\dotaccent{z}} \DeclareUnicodeCharacter{017D}{\v{Z}} \DeclareUnicodeCharacter{017E}{\v{z}} + \DeclareUnicodeCharacter{017F}{\missingcharmsg{LONG S}} \DeclareUnicodeCharacter{01C4}{D\v{Z}} \DeclareUnicodeCharacter{01C5}{D\v{z}} @@ -9765,12 +9827,51 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{2261}{\equiv} }% end of \utfeightchardefs - % US-ASCII character definitions. \def\asciichardefs{% nothing need be done \relax } +% Latin1 (ISO-8859-1) character definitions. +\def\nonasciistringdefs{% + \setnonasciicharscatcode\active + \def\defstringchar##1{\def##1{\string##1}}% + \defstringchar^^a0\defstringchar^^a1\defstringchar^^a2\defstringchar^^a3% + \defstringchar^^a4\defstringchar^^a5\defstringchar^^a6\defstringchar^^a7% + \defstringchar^^a8\defstringchar^^a9\defstringchar^^aa\defstringchar^^ab% + \defstringchar^^ac\defstringchar^^ad\defstringchar^^ae\defstringchar^^af% + % + \defstringchar^^b0\defstringchar^^b1\defstringchar^^b2\defstringchar^^b3% + \defstringchar^^b4\defstringchar^^b5\defstringchar^^b6\defstringchar^^b7% + \defstringchar^^b8\defstringchar^^b9\defstringchar^^ba\defstringchar^^bb% + \defstringchar^^bc\defstringchar^^bd\defstringchar^^be\defstringchar^^bf% + % + \defstringchar^^c0\defstringchar^^c1\defstringchar^^c2\defstringchar^^c3% + \defstringchar^^c4\defstringchar^^c5\defstringchar^^c6\defstringchar^^c7% + \defstringchar^^c8\defstringchar^^c9\defstringchar^^ca\defstringchar^^cb% + \defstringchar^^cc\defstringchar^^cd\defstringchar^^ce\defstringchar^^cf% + % + \defstringchar^^d0\defstringchar^^d1\defstringchar^^d2\defstringchar^^d3% + \defstringchar^^d4\defstringchar^^d5\defstringchar^^d6\defstringchar^^d7% + \defstringchar^^d8\defstringchar^^d9\defstringchar^^da\defstringchar^^db% + \defstringchar^^dc\defstringchar^^dd\defstringchar^^de\defstringchar^^df% + % + \defstringchar^^e0\defstringchar^^e1\defstringchar^^e2\defstringchar^^e3% + \defstringchar^^e4\defstringchar^^e5\defstringchar^^e6\defstringchar^^e7% + \defstringchar^^e8\defstringchar^^e9\defstringchar^^ea\defstringchar^^eb% + \defstringchar^^ec\defstringchar^^ed\defstringchar^^ee\defstringchar^^ef% + % + \defstringchar^^f0\defstringchar^^f1\defstringchar^^f2\defstringchar^^f3% + \defstringchar^^f4\defstringchar^^f5\defstringchar^^f6\defstringchar^^f7% + \defstringchar^^f8\defstringchar^^f9\defstringchar^^fa\defstringchar^^fb% + \defstringchar^^fc\defstringchar^^fd\defstringchar^^fe\defstringchar^^ff% +} + + +% define all the unicode characters we know about, for the sake of @U. +\utfeightchardefs + + % Make non-ASCII characters printable again for compatibility with % existing Texinfo documents that may use them, even without declaring a % document encoding. @@ -10124,6 +10225,7 @@ directory should work if nowhere else does.} % {@catcode`- = @active @gdef@normalturnoffactive{% + @nonasciistringdefs @let-=@normaldash @let"=@normaldoublequote @let$=@normaldollar %$ font-lock fix @@ -10192,7 +10294,7 @@ directory should work if nowhere else does.} @c Local variables: @c eval: (add-hook 'write-file-hooks 'time-stamp) -@c page-delimiter: "^\\\\message" +@c page-delimiter: "^\\\\message\\|emacs-page" @c time-stamp-start: "def\\\\texinfoversion{" @c time-stamp-format: "%:y-%02m-%02d.%02H" @c time-stamp-end: "}" @@ -707,6 +707,8 @@ set_IGNORECASE() load_casetable(); if (do_traditional) IGNORECASE = false; + else if ((n->flags & (NUMCUR|NUMBER)) != 0) + IGNORECASE = ! iszero(n); else if ((n->flags & (STRING|STRCUR)) != 0) { if ((n->flags & MAYBE_NUM) == 0) { (void) force_string(n); @@ -715,9 +717,7 @@ set_IGNORECASE() (void) force_number(n); IGNORECASE = ! iszero(n); } - } else if ((n->flags & (NUMCUR|NUMBER)) != 0) - IGNORECASE = ! iszero(n); - else + } else IGNORECASE = false; /* shouldn't happen */ set_RS(); /* set_RS() calls set_FS() if need be, for us */ diff --git a/extension/ChangeLog b/extension/ChangeLog index 9ecd2697..334c97af 100644 --- a/extension/ChangeLog +++ b/extension/ChangeLog @@ -1,3 +1,27 @@ +2015-03-18 Arnold D. Robbins <arnold@skeeve.com> + + * configure: Updated to libtool 2.4.6. + +2015-03-18 Arnold D. Robbins <arnold@skeeve.com> + + * inplace.3am (SYNOPSIS): Updated to not show the contents + of the extension. + (BUGS): Removed. + +2015-03-17 Arnold D. Robbins <arnold@skeeve.com> + + * inplace.c (do_inplace_begin): Jump through more hoops to satisfy + a newer version of clang. + * inplace.3am (BUGS): Add new section and documentation. + +2015-02-26 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (EXTRA_DIST): Add rwarray0.c to the list. + +2015-02-11 Arnold D. Robbins <arnold@skeeve.com> + + * filefuncs.c: Punctuation fix. + 2015-01-24 Arnold D. Robbins <arnold@skeeve.com> Infrastructure updates. diff --git a/extension/Makefile.am b/extension/Makefile.am index b9dabfe2..3e64bc9b 100644 --- a/extension/Makefile.am +++ b/extension/Makefile.am @@ -119,7 +119,8 @@ EXTRA_DIST = build-aux/config.rpath \ ChangeLog \ ChangeLog.0 \ fts.3 \ - README.fts + README.fts \ + rwarray0.c dist_man_MANS = \ filefuncs.3am fnmatch.3am fork.3am inplace.3am \ diff --git a/extension/Makefile.in b/extension/Makefile.in index 2a6ef5e0..cda5020b 100644 --- a/extension/Makefile.in +++ b/extension/Makefile.in @@ -564,7 +564,8 @@ EXTRA_DIST = build-aux/config.rpath \ ChangeLog \ ChangeLog.0 \ fts.3 \ - README.fts + README.fts \ + rwarray0.c dist_man_MANS = \ filefuncs.3am fnmatch.3am fork.3am inplace.3am \ diff --git a/extension/build-aux/ChangeLog b/extension/build-aux/ChangeLog index 697db607..589d20cc 100644 --- a/extension/build-aux/ChangeLog +++ b/extension/build-aux/ChangeLog @@ -1,3 +1,7 @@ +2015-03-18 Arnold D. Robbins <arnold@skeeve.com> + + * config.guess, config.sub, ltmain.sh: Updated, from libtool 2.4.6. + 2014-04-08 Arnold D. Robbins <arnold@skeeve.com> * 4.1.1: Release tar ball made. diff --git a/extension/build-aux/config.guess b/extension/build-aux/config.guess index 6c32c864..dbfb9786 100755 --- a/extension/build-aux/config.guess +++ b/extension/build-aux/config.guess @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2014 Free Software Foundation, Inc. +# Copyright 1992-2015 Free Software Foundation, Inc. -timestamp='2014-11-04' +timestamp='2015-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -50,7 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2014 Free Software Foundation, Inc. +Copyright 1992-2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." diff --git a/extension/build-aux/config.sub b/extension/build-aux/config.sub index 7ffe3737..6d2e94c8 100755 --- a/extension/build-aux/config.sub +++ b/extension/build-aux/config.sub @@ -1,8 +1,8 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2014 Free Software Foundation, Inc. +# Copyright 1992-2015 Free Software Foundation, Inc. -timestamp='2014-12-03' +timestamp='2015-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -68,7 +68,7 @@ Report bugs and patches to <config-patches@gnu.org>." version="\ GNU config.sub ($timestamp) -Copyright 1992-2014 Free Software Foundation, Inc. +Copyright 1992-2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -260,7 +260,7 @@ case $basic_machine in | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ - | fido | fr30 | frv \ + | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ diff --git a/extension/build-aux/ltmain.sh b/extension/build-aux/ltmain.sh index b8915268..0f0a2da3 100644 --- a/extension/build-aux/ltmain.sh +++ b/extension/build-aux/ltmain.sh @@ -2,7 +2,7 @@ ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2014-01-03.01 -# libtool (GNU libtool) 2.4.5 +# libtool (GNU libtool) 2.4.6 # Provide generalized library-building support services. # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 @@ -31,8 +31,8 @@ PROGRAM=libtool PACKAGE=libtool -VERSION=2.4.5 -package_revision=2.4.5 +VERSION=2.4.6 +package_revision=2.4.6 ## ------ ## @@ -64,7 +64,7 @@ package_revision=2.4.5 # libraries, which are installed to $pkgauxdir. # Set a version string for this script. -scriptversion=2014-01-03.01; # UTC +scriptversion=2015-01-20.17; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 @@ -192,7 +192,7 @@ func_path_progs () _G_path_prog_max=0 _G_path_prog_found=false - _G_save_IFS=$IFS; IFS=$PATH_SEPARATOR + _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} for _G_dir in $_G_PATH; do IFS=$_G_save_IFS test -z "$_G_dir" && _G_dir=. @@ -1977,7 +1977,7 @@ func_version () # End: # Set a version string. -scriptversion='(GNU libtool) 2.4.5' +scriptversion='(GNU libtool) 2.4.6' # func_echo ARG... @@ -2039,7 +2039,12 @@ usage_message="Options: " # Additional text appended to 'usage_message' in response to '--help'. -long_help_message=$long_help_message" +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message MODE must be one of the following: @@ -2063,13 +2068,15 @@ include the following information: compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) - version: $progname (GNU libtool) 2.4.5 + version: $progname (GNU libtool) 2.4.6 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to <bug-libtool@gnu.org>. GNU libtool home page: <http://www.gnu.org/software/libtool/>. General help using GNU software: <http://www.gnu.org/gethelp/>." + exit 0 +} # func_lo2o OBJECT-NAME diff --git a/extension/configure b/extension/configure index 6818958b..199833f7 100755 --- a/extension/configure +++ b/extension/configure @@ -4852,8 +4852,8 @@ esac -macro_version='2.4.5' -macro_revision='2.4.5' +macro_version='2.4.6' +macro_revision='2.4.6' @@ -8187,7 +8187,7 @@ func_munge_path_list () x) ;; *:) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \S|@1\" + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" @@ -11693,13 +11693,20 @@ if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi -# lt_cv_sys_lib... is unaugmented for libtool script decls... -lt_cv_sys_lib_dlsearch_path_spec=$sys_lib_dlsearch_path_spec +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec -# ..but sys_lib_... needs LT_SYS_LIBRARY_PATH munging for -# LT_SYS_DLSEARCH_PATH macro in ltdl.m4 to work with the correct paths: +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + @@ -13791,7 +13798,8 @@ finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_lib_dlsearch_path_spec='`$ECHO "$lt_cv_sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' +configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' +configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' @@ -13909,7 +13917,8 @@ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ -lt_cv_sys_lib_dlsearch_path_spec; do +configure_time_dlsearch_path \ +configure_time_lt_sys_library_path; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes @@ -14685,7 +14694,7 @@ $as_echo X"$file" | available_tags='' # Configured defaults for sys_lib_dlsearch_path munging. -: \${LT_SYS_LIBRARY_PATH="$LT_SYS_LIBRARY_PATH"} +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG @@ -14936,8 +14945,11 @@ hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec -# Run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_lt_cv_sys_lib_dlsearch_path_spec +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # Whether dlopen is supported. dlopen_support=$enable_dlopen @@ -15089,9 +15101,8 @@ hardcode_action=$hardcode_action _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" -## -------------------------------------- ## -## Shell functions shared with configure. ## -## -------------------------------------- ## + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # func_munge_path_list VARIABLE PATH # ----------------------------------- @@ -15113,7 +15124,7 @@ func_munge_path_list () x) ;; *:) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \S|@1\" + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" @@ -15144,6 +15155,8 @@ func_cc_basename () } +# ### END FUNCTIONS SHARED WITH CONFIGURE + _LT_EOF case $host_os in diff --git a/extension/filefuncs.c b/extension/filefuncs.c index a20e9ff7..ddb1ecda 100644 --- a/extension/filefuncs.c +++ b/extension/filefuncs.c @@ -490,7 +490,7 @@ do_stat(int nargs, awk_value_t *result) /* always empty out the array */ clear_array(array); - /* stat the file, if error, set ERRNO and return */ + /* stat the file; if error, set ERRNO and return */ ret = statfunc(name, & sbuf); if (ret < 0) { update_ERRNO_int(errno); diff --git a/extension/inplace.3am b/extension/inplace.3am index 5ca04be2..f8fc098f 100644 --- a/extension/inplace.3am +++ b/extension/inplace.3am @@ -1,21 +1,10 @@ -.TH INPLACE 3am "Jan 15 2013" "Free Software Foundation" "GNU Awk Extension Modules" +.TH INPLACE 3am "Mar 18 2015" "Free Software Foundation" "GNU Awk Extension Modules" .SH NAME inplace \- emulate sed/perl/ruby in-place editing .SH SYNOPSIS .ft CW .nf -@load "inplace" - -# Please set INPLACE_SUFFIX to make a backup copy. For example, you may -# want to set INPLACE_SUFFIX to .bak on the command line or in a BEGIN rule. - -BEGINFILE { - inplace_begin(FILENAME, INPLACE_SUFFIX) -} - -ENDFILE { - inplace_end(FILENAME, INPLACE_SUFFIX) -} +gawk -i inplace ... .fi .ft R .SH DESCRIPTION @@ -27,8 +16,7 @@ and .BR inplace_end() . These functions are meant to be invoked from the .I inplace.awk -wrapper (whose contents are displayed above) -which is installed when +wrapper which is installed when .I gawk is. .PP diff --git a/extension/inplace.c b/extension/inplace.c index 0693ad92..e3685e30 100644 --- a/extension/inplace.c +++ b/extension/inplace.c @@ -171,10 +171,10 @@ do_inplace_begin(int nargs, awk_value_t *result) /* N.B. chown/chmod should be more portable than fchown/fchmod */ if (chown(state.tname, sbuf.st_uid, sbuf.st_gid) < 0) { - /* jumping through hoops to silence gcc. :-( */ + /* jumping through hoops to silence gcc and clang. :-( */ int junk; junk = chown(state.tname, -1, sbuf.st_gid); - junk = junk; + ++junk; } if (chmod(state.tname, sbuf.st_mode) < 0) diff --git a/extension/m4/ChangeLog b/extension/m4/ChangeLog index f991eac3..6895c6b6 100644 --- a/extension/m4/ChangeLog +++ b/extension/m4/ChangeLog @@ -1,3 +1,7 @@ +2015-03-18 Arnold D. Robbins <arnold@skeeve.com> + + * libtoolm4, ltversion.m4: Updated to libtool 2.4.6. + 2015-01-24 Arnold D. Robbins <arnold@skeeve.com> * gettext.m4, iconv.m4, intlmacosx.m4, po.m4: Removed. diff --git a/extension/m4/libtool.m4 b/extension/m4/libtool.m4 index f796d7bc..a3bc337b 100644 --- a/extension/m4/libtool.m4 +++ b/extension/m4/libtool.m4 @@ -738,7 +738,7 @@ _LT_COPYING _LT_LIBTOOL_TAGS # Configured defaults for sys_lib_dlsearch_path munging. -: \${LT_SYS_LIBRARY_PATH="$LT_SYS_LIBRARY_PATH"} +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS @@ -748,13 +748,14 @@ _LT_LIBTOOL_TAG_VARS _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" -## -------------------------------------- ## -## Shell functions shared with configure. ## -## -------------------------------------- ## + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE _LT_PREPARE_MUNGE_PATH_LIST _LT_PREPARE_CC_BASENAME +# ### END FUNCTIONS SHARED WITH CONFIGURE + _LT_EOF case $host_os in @@ -2256,7 +2257,7 @@ func_munge_path_list () x) ;; *:) - eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \$@S|@1\" + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" ;; x:*) eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" @@ -3100,13 +3101,15 @@ if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi -# lt_cv_sys_lib... is unaugmented for libtool script decls... -lt_cv_sys_lib_dlsearch_path_spec=$sys_lib_dlsearch_path_spec +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec -# ..but sys_lib_... needs LT_SYS_LIBRARY_PATH munging for -# LT_SYS_DLSEARCH_PATH macro in ltdl.m4 to work with the correct paths: +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) @@ -3139,8 +3142,10 @@ _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) -_LT_DECL([sys_lib_dlsearch_path_spec], [lt_cv_sys_lib_dlsearch_path_spec], [2], - [Run-time system search path for libraries]) +_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], + [Detected run-time system search path for libraries]) +_LT_DECL([], [configure_time_lt_sys_library_path], [2], + [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) ])# _LT_SYS_DYNAMIC_LINKER diff --git a/extension/m4/ltversion.m4 b/extension/m4/ltversion.m4 index a4c5ed43..fa04b52a 100644 --- a/extension/m4/ltversion.m4 +++ b/extension/m4/ltversion.m4 @@ -9,15 +9,15 @@ # @configure_input@ -# serial 4171 ltversion.m4 +# serial 4179 ltversion.m4 # This file is part of GNU Libtool -m4_define([LT_PACKAGE_VERSION], [2.4.5]) -m4_define([LT_PACKAGE_REVISION], [2.4.5]) +m4_define([LT_PACKAGE_VERSION], [2.4.6]) +m4_define([LT_PACKAGE_REVISION], [2.4.6]) AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4.5' -macro_revision='2.4.5' +[macro_version='2.4.6' +macro_revision='2.4.6' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2012-2014 the Free Software Foundation, Inc. + * Copyright (C) 2012-2015 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -1118,7 +1118,7 @@ api_get_file(awk_ext_id_t id, const char *name, size_t namelen, const char *file filetype, name); return awk_false; } - if ((f = redirect_string(name, namelen, 0, redirtype, &flag, fd)) == NULL) + if ((f = redirect_string(name, namelen, 0, redirtype, &flag, fd, false)) == NULL) return awk_false; *ibufp = f->iop ? & f->iop->public : NULL; *obufp = f->output.fp ? & f->output : NULL; @@ -882,7 +882,7 @@ make_number(double num, awk_value_t *result) extern int dl_load(const gawk_api_t *const api_p, awk_ext_id_t id); #if 0 -/* Boiler plate code: */ +/* Boilerplate code: */ int plugin_is_GPL_compatible; static gawk_api_t *const api; @@ -261,7 +261,6 @@ struct recmatch { static int iop_close(IOBUF *iop); -struct redirect *redirect(NODE *redir_exp, int redirtype, int *errflg); static void close_one(void); static int close_redir(struct redirect *rp, bool exitwarn, two_way_close_type how); #ifndef PIPES_SIMULATED @@ -728,7 +727,8 @@ redflags2str(int flags) /* redirect --- Redirection for printf and print commands */ struct redirect * -redirect_string(const char *str, size_t explen, int not_string, int redirtype, int *errflg, int extfd) +redirect_string(const char *str, size_t explen, bool not_string, + int redirtype, int *errflg, int extfd, bool failure_fatal) { struct redirect *rp; int tflag = 0; @@ -896,6 +896,12 @@ redirect_string(const char *str, size_t explen, int not_string, int redirtype, i (void) flush_io(); os_restore_mode(fileno(stdin)); + /* + * Don't check failure_fatal; see input pipe below. + * Note that the failure happens upon failure to fork, + * using a non-existant program will still succeed the + * popen(). + */ if ((rp->output.fp = popen(str, binmode("w"))) == NULL) fatal(_("can't open pipe `%s' for output (%s)"), str, strerror(errno)); @@ -941,13 +947,11 @@ redirect_string(const char *str, size_t explen, int not_string, int redirtype, i #endif direction = "to/from"; if (! two_way_open(str, rp, extfd)) { -#ifdef HAVE_SOCKETS - if (inetfile(str, NULL)) { + if (! failure_fatal || is_non_fatal_redirect(str)) { *errflg = errno; /* do not free rp, saving it for reuse (save_rp = rp) */ return NULL; } else -#endif fatal(_("can't open two way pipe `%s' for input/output (%s)"), str, strerror(errno)); } @@ -1023,11 +1027,14 @@ redirect_string(const char *str, size_t explen, int not_string, int redirtype, i * can return -1. For output to file, * complain. The shell will complain on * a bad command to a pipe. + * + * 12/2014: Take nonfatal settings in PROCINFO into account. */ if (errflg != NULL) *errflg = errno; - if ( redirtype == redirect_output - || redirtype == redirect_append) { + if (failure_fatal && ! is_non_fatal_redirect(str) && + (redirtype == redirect_output + || redirtype == redirect_append)) { /* multiple messages make life easier for translators */ if (*direction == 'f') fatal(_("can't redirect from `%s' (%s)"), @@ -1059,12 +1066,12 @@ redirect_string(const char *str, size_t explen, int not_string, int redirtype, i } struct redirect * -redirect(NODE *redir_exp, int redirtype, int *errflg) +redirect(NODE *redir_exp, int redirtype, int *errflg, bool failure_fatal) { int not_string = ((redir_exp->flags & STRCUR) == 0); redir_exp = force_string(redir_exp); return redirect_string(redir_exp->stptr, redir_exp->stlen, not_string, - redirtype, errflg, -1); + redirtype, errflg, -1, failure_fatal); } /* getredirect --- find the struct redirect for this file or pipe */ @@ -1081,6 +1088,36 @@ getredirect(const char *str, int len) return NULL; } +/* is_non_fatal_std --- return true if fp is stdout/stderr and nonfatal */ + +bool +is_non_fatal_std(FILE *fp) +{ + static const char nonfatal[] = "NONFATAL"; + + if (in_PROCINFO(nonfatal, NULL, NULL)) + return true; + + /* yucky logic. sigh. */ + if (fp == stdout) { + return ( in_PROCINFO("-", nonfatal, NULL) != NULL + || in_PROCINFO("/dev/stdout", nonfatal, NULL) != NULL); + } else if (fp == stderr) { + return (in_PROCINFO("/dev/stderr", nonfatal, NULL) != NULL); + } + + return false; +} + +/* is_non_fatal_redirect --- return true if redirected I/O should be nonfatal */ + +bool +is_non_fatal_redirect(const char *str) +{ + return in_PROCINFO("NONFATAL", NULL, NULL) != NULL + || in_PROCINFO(str, "NONFATAL", NULL) != NULL; +} + /* close_one --- temporarily close an open file to re-use the fd */ static void @@ -1453,7 +1490,7 @@ str2mode(const char *mode) static int socketopen(int family, int type, const char *localpname, - const char *remotepname, const char *remotehostname) + const char *remotepname, const char *remotehostname, bool *hard_error) { struct addrinfo *lres, *lres0; struct addrinfo lhints; @@ -1472,8 +1509,11 @@ socketopen(int family, int type, const char *localpname, lerror = getaddrinfo(NULL, localpname, & lhints, & lres); if (lerror) { - if (strcmp(localpname, "0") != 0) - fatal(_("local port %s invalid in `/inet'"), localpname); + if (strcmp(localpname, "0") != 0) { + warning(_("local port %s invalid in `/inet'"), localpname); + *hard_error = true; + return INVALID_HANDLE; + } lres0 = NULL; lres = & lhints; } else @@ -1491,7 +1531,9 @@ socketopen(int family, int type, const char *localpname, if (rerror) { if (lres0 != NULL) freeaddrinfo(lres0); - fatal(_("remote host and port information (%s, %s) invalid"), remotehostname, remotepname); + warning(_("remote host and port information (%s, %s) invalid"), remotehostname, remotepname); + *hard_error = true; + return INVALID_HANDLE; } rres0 = rres; socket_fd = INVALID_HANDLE; @@ -1600,6 +1642,7 @@ devopen(const char *name, const char *mode) char *ptr; int flag = 0; struct inet_socket_info isi; + int save_errno = 0; if (strcmp(name, "-") == 0) return fileno(stdin); @@ -1642,6 +1685,14 @@ devopen(const char *name, const char *mode) goto strictopen; } else if (inetfile(name, & isi)) { #ifdef HAVE_SOCKETS +#define DEFAULT_RETRIES 20 + static unsigned long def_retries = DEFAULT_RETRIES; + static bool first_time = true; + unsigned long retries = 0; + static long msleep = 1000; + bool hard_error = false; + bool non_fatal = is_non_fatal_redirect(name); + cp = (char *) name; /* socketopen requires NUL-terminated strings */ @@ -1649,13 +1700,6 @@ devopen(const char *name, const char *mode) cp[isi.remotehost.offset+isi.remotehost.len] = '\0'; /* remoteport comes last, so already NUL-terminated */ - { -#define DEFAULT_RETRIES 20 - static unsigned long def_retries = DEFAULT_RETRIES; - static bool first_time = true; - unsigned long retries = 0; - static long msleep = 1000; - if (first_time) { char *cp, *end; unsigned long count = 0; @@ -1681,25 +1725,41 @@ devopen(const char *name, const char *mode) msleep *= 1000; } } - retries = def_retries; + /* + * PROCINFO["NONFATAL"] or PROCINFO[name, "NONFATAL"] overrrides + * GAWK_SOCK_RETRIES. The explicit code in the program carries + * a bigger stick than the environment variable does. + */ + retries = non_fatal ? 1 : def_retries; + errno = 0; do { - openfd = socketopen(isi.family, isi.protocol, name+isi.localport.offset, name+isi.remoteport.offset, name+isi.remotehost.offset); + openfd = socketopen(isi.family, isi.protocol, name+isi.localport.offset, + name+isi.remoteport.offset, name+isi.remotehost.offset, + & hard_error); retries--; - } while (openfd == INVALID_HANDLE && retries > 0 && usleep(msleep) == 0); - } + } while (openfd == INVALID_HANDLE && ! hard_error && retries > 0 && usleep(msleep) == 0); + save_errno = errno; - /* restore original name string */ - cp[isi.localport.offset+isi.localport.len] = '/'; - cp[isi.remotehost.offset+isi.remotehost.len] = '/'; + /* restore original name string */ + cp[isi.localport.offset+isi.localport.len] = '/'; + cp[isi.remotehost.offset+isi.remotehost.len] = '/'; #else /* ! HAVE_SOCKETS */ - fatal(_("TCP/IP communications are not supported")); + fatal(_("TCP/IP communications are not supported")); #endif /* HAVE_SOCKETS */ } strictopen: - if (openfd == INVALID_HANDLE) + if (openfd == INVALID_HANDLE) { openfd = open(name, flag, 0666); + /* + * ENOENT means there is no such name in the filesystem. + * Therefore it's ok to propagate up the error from + * getaddrinfo() that's in save_errno. + */ + if (openfd == INVALID_HANDLE && errno == ENOENT && save_errno) + errno = save_errno; + } #if defined(__EMX__) || defined(__MINGW32__) if (openfd == INVALID_HANDLE && errno == EACCES) { /* On OS/2 and Windows directory access via open() is @@ -2487,7 +2547,7 @@ do_getline_redir(int into_variable, enum redirval redirtype) assert(redirtype != redirect_none); redir_exp = TOP(); - rp = redirect(redir_exp, redirtype, & redir_error); + rp = redirect(redir_exp, redirtype, & redir_error, false); DEREF(redir_exp); decr_sp(); if (rp == NULL) { @@ -3760,8 +3820,10 @@ pty_vs_pipe(const char *command) #ifdef HAVE_TERMIOS_H NODE *val; - if (PROCINFO_node == NULL) - return false; + /* + * N.B. No need to check for NULL PROCINFO_node, since the + * in_PROCINFO function now checks that for us. + */ val = in_PROCINFO(command, "pty", NULL); if (val) { if ((val->flags & MAYBE_NUM) != 0) @@ -3903,12 +3965,21 @@ in_PROCINFO(const char *pidx1, const char *pidx2, NODE **full_idx) NODE *r, *sub = NULL; NODE *subsep = SUBSEP_node->var_value; + if (PROCINFO_node == NULL || (pidx1 == NULL && pidx2 == NULL)) + return NULL; + /* full_idx is in+out parameter */ if (full_idx) sub = *full_idx; - str_len = strlen(pidx1) + subsep->stlen + strlen(pidx2); + if (pidx1 != NULL && pidx2 == NULL) + str_len = strlen(pidx1); + else if (pidx1 == NULL && pidx2 != NULL) + str_len = strlen(pidx2); + else + str_len = strlen(pidx1) + subsep->stlen + strlen(pidx2); + if (sub == NULL) { emalloc(str, char *, str_len + 1, "in_PROCINFO"); sub = make_str_node(str, str_len, ALREADY_MALLOCED); @@ -3922,8 +3993,14 @@ in_PROCINFO(const char *pidx1, const char *pidx2, NODE **full_idx) sub->stlen = str_len; } - sprintf(sub->stptr, "%s%.*s%s", pidx1, (int)subsep->stlen, - subsep->stptr, pidx2); + if (pidx1 != NULL && pidx2 == NULL) + strcpy(sub->stptr, pidx1); + else if (pidx1 == NULL && pidx2 != NULL) + strcpy(sub->stptr, pidx2); + else + sprintf(sub->stptr, "%s%.*s%s", pidx1, (int)subsep->stlen, + subsep->stptr, pidx2); + r = in_array(PROCINFO_node, sub); if (! full_idx) unref(sub); @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2014 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991-2015 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 2014 +#define UPDATE_YEAR 2015 #include "awk.h" #include "getopt.h" diff --git a/missing_d/ChangeLog b/missing_d/ChangeLog index 70fbde64..89dbdb4d 100644 --- a/missing_d/ChangeLog +++ b/missing_d/ChangeLog @@ -1,3 +1,9 @@ +2015-02-27 Arnold D. Robbins <arnold@skeeve.com> + + * getaddrinfo.h (gai_strerror): Add declaration. + * getaddrinfo.c (gai_strerror): New function. + (getaddrinfo): Return errno values instead of just -1. + 2014-04-08 Arnold D. Robbins <arnold@skeeve.com> * 4.1.1: Release tar ball made. diff --git a/missing_d/getaddrinfo.c b/missing_d/getaddrinfo.c index 677f27d0..f24ac598 100644 --- a/missing_d/getaddrinfo.c +++ b/missing_d/getaddrinfo.c @@ -12,6 +12,8 @@ #ifdef HAVE_ARPA_INET_H #include <arpa/inet.h> #endif +#include <errno.h> +#include <string.h> /* strerror */ #include "getaddrinfo.h" @@ -29,12 +31,12 @@ getaddrinfo(const char *hostname, const char *portname, { struct addrinfo *out; if (res == NULL) - return -1; + return EINVAL; out = (struct addrinfo *) malloc(sizeof(*out)); if (out == NULL) { *res = NULL; - return -1; + return ENOMEM; } memset(out, '\0', sizeof(*out)); @@ -42,7 +44,7 @@ getaddrinfo(const char *hostname, const char *portname, if (out->ai_addr == NULL) { free(out); *res = NULL; - return -1; + return ENOMEM; } out->ai_socktype = SOCK_STREAM; @@ -78,7 +80,7 @@ getaddrinfo(const char *hostname, const char *portname, = ((struct in_addr *)he->h_addr_list[0])->s_addr; } else { freeaddrinfo(out); - return -1; + return EADDRNOTAVAIL; } } else { if (!(out->ai_flags & AI_PASSIVE)) @@ -109,4 +111,10 @@ getaddrinfo(const char *hostname, const char *portname, return 0; } + +const char * +gai_strerror(int errcode) +{ + return strerror(errcode); +} #endif diff --git a/missing_d/getaddrinfo.h b/missing_d/getaddrinfo.h index 3d816c93..873d67df 100644 --- a/missing_d/getaddrinfo.h +++ b/missing_d/getaddrinfo.h @@ -29,3 +29,5 @@ void freeaddrinfo(struct xaddrinfo * res); int getaddrinfo(const char * hostname, const char * portname, struct xaddrinfo * hints, struct xaddrinfo ** res); + +const char *gai_strerror(int errcode); Binary files differ@@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.1.0b\n" -"Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2014-04-08 19:23+0300\n" +"Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" +"POT-Creation-Date: 2015-02-26 20:05+0200\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" @@ -36,9 +36,9 @@ 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:1615 builtin.c:1661 -#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126 -#: eval.c:1531 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 +#: builtin.c:1665 builtin.c:2092 builtin.c:2106 eval.c:1149 eval.c:1153 +#: eval.c:1558 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "s'ha intentat usar la matriu `%s' en un context escalar" @@ -97,415 +97,420 @@ msgstr "" "asorti: no es pot usar una submatriu com a segon argument per al primer " "argument" -#: array.c:1314 +#: array.c:1313 #, c-format msgid "`%s' is invalid as a function name" msgstr "`%s' no s vlid com a nom de funci" -#: array.c:1318 +#: array.c:1317 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "la funci de comparaci d'ordenaci `%s' no est definida" -#: awkgram.y:233 +#: awkgram.y:226 #, c-format msgid "%s blocks must have an action part" msgstr "%s blocs han de tenir una part d'acci" -#: awkgram.y:236 +#: awkgram.y:229 msgid "each rule must have a pattern or an action part" msgstr "cada regla ha de tenir un patr o una part d'acci" -#: awkgram.y:325 awkgram.y:336 +#: awkgram.y:320 awkgram.y:331 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "l'antic awk no suporta mltiples regles `BEGIN' i `END'" -#: awkgram.y:373 +#: awkgram.y:368 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "`%s' s una funci interna, no pot ser redefinida" -#: awkgram.y:419 +#: awkgram.y:417 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" -#: awkgram.y:423 +#: awkgram.y:421 #, 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" -#: awkgram.y:515 +#: awkgram.y:513 #, c-format msgid "duplicate case values in switch body: %s" msgstr "valors duplicats de casos al cos de l'expressi switch: %s" -#: awkgram.y:536 +#: awkgram.y:534 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:3723 +#: awkgram.y:794 awkgram.y:3751 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:3715 +#: awkgram.y:803 awkgram.y:3743 msgid "`continue' is not allowed outside a loop" msgstr "no es permet `continue' a fora d'un bucle" -#: awkgram.y:815 +#: awkgram.y:813 #, c-format msgid "`next' used in %s action" msgstr "`next' usat a l'acci %s" -#: awkgram.y:824 +#: awkgram.y:822 #, c-format msgid "`nextfile' used in %s action" msgstr "`nextfile' usat a l'acci %s" -#: awkgram.y:848 +#: awkgram.y:846 msgid "`return' used outside function context" msgstr "`return' s usat fora del context d'una funci" -#: awkgram.y:922 +#: awkgram.y:920 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 " "\"\"'" -#: awkgram.y:988 awkgram.y:1037 +#: awkgram.y:986 awkgram.y:1035 msgid "`delete' is not allowed with SYMTAB" msgstr "no es permet `delete' amb SYMTAB" -#: awkgram.y:990 awkgram.y:1039 +#: awkgram.y:988 awkgram.y:1037 msgid "`delete' is not allowed with FUNCTAB" msgstr "no es permet `delete' a FUNCTAB" -#: awkgram.y:1024 awkgram.y:1028 +#: awkgram.y:1022 awkgram.y:1026 msgid "`delete(array)' is a non-portable tawk extension" msgstr "`delete(array)' s una extensi tawk no portable" -#: awkgram.y:1149 +#: awkgram.y:1147 msgid "multistage two-way pipelines don't work" msgstr "les canonades bidireccionals multi-etapes no funcionen" -#: awkgram.y:1264 +#: awkgram.y:1262 msgid "regular expression on right of assignment" msgstr "expressi regular a la dreta d'una assignaci" -#: awkgram.y:1275 +#: awkgram.y:1273 msgid "regular expression on left of `~' or `!~' operator" msgstr "expressi regular a l'esquerra de l'operador `~' o `!~'" -#: awkgram.y:1291 awkgram.y:1442 +#: awkgram.y:1289 awkgram.y:1431 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'" -#: awkgram.y:1301 +#: awkgram.y:1299 msgid "regular expression on right of comparison" msgstr "expressi regular a la dreta de la comparaci" -#: awkgram.y:1417 -#, c-format -msgid "`getline var' invalid inside `%s' rule" -msgstr "`getline var' no s vlid a dins de la regla `%s'" - -#: awkgram.y:1420 -#, c-format -msgid "`getline' invalid inside `%s' rule" +#: awkgram.y:1411 +#, fuzzy, c-format +msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "`getline' no s vlid a dins de la regla `%s'" -#: awkgram.y:1425 +#: awkgram.y:1414 msgid "non-redirected `getline' undefined inside END action" msgstr "`getline' no redirigit sense definir dintre de l'acci FINAL" -#: awkgram.y:1444 +#: awkgram.y:1433 msgid "old awk does not support multidimensional arrays" msgstr "l'antic awk no suporta matrius multidimensionals" -#: awkgram.y:1541 +#: awkgram.y:1530 msgid "call of `length' without parentheses is not portable" msgstr "la crida de `length' sense parntesis no s portable" -#: awkgram.y:1607 +#: awkgram.y:1596 msgid "indirect function calls are a gawk extension" msgstr "les crides a funcions indirectes sn una extensi gawk" -#: awkgram.y:1620 +#: awkgram.y:1609 #, 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 +#: awkgram.y:1635 +#, fuzzy, c-format +msgid "attempt to use non-function `%s' in function call" +msgstr "s'ha intentat usar la funci %s com a una matriu" + +#: awkgram.y:1699 msgid "invalid subscript expression" msgstr "expressi de subndex no vlida" -#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2045 awkgram.y:2065 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "advertiment: " -#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 +#: awkgram.y:2063 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "fatal: " -#: awkgram.y:2116 +#: awkgram.y:2113 msgid "unexpected newline or end of string" msgstr "nova lnia inesperada o final d'una cadena de carcters" -#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 +#: awkgram.y:2392 awkgram.y:2468 awkgram.y:2691 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:2384 awkgram.y:2509 +#: awkgram.y:2393 awkgram.y:2518 #, 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:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 +#: awkgram.y:2395 awkgram.y:2469 awkgram.y:2519 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "motiu desconegut" -#: awkgram.y:2395 awkgram.y:2419 +#: awkgram.y:2404 awkgram.y:2428 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "no es pot incloure `%s' i usar-lo com un fitxer de programa" -#: awkgram.y:2408 +#: awkgram.y:2417 #, c-format msgid "already included source file `%s'" msgstr "ja s'ha incls el fitxer font `%s'" -#: awkgram.y:2409 +#: awkgram.y:2418 #, c-format msgid "already loaded shared library `%s'" msgstr "ja s'ha carregat la biblioteca compartida `%s'" -#: awkgram.y:2444 +#: awkgram.y:2453 msgid "@include is a gawk extension" msgstr "@include s una extensi de gawk" -#: awkgram.y:2450 +#: awkgram.y:2459 msgid "empty filename after @include" msgstr "nom de fitxer buit desprs de @include" -#: awkgram.y:2494 +#: awkgram.y:2503 msgid "@load is a gawk extension" msgstr "@load s una extensi de gawk" -#: awkgram.y:2500 +#: awkgram.y:2509 msgid "empty filename after @load" msgstr "fitxer buit desprs de @load" -#: awkgram.y:2634 +#: awkgram.y:2643 msgid "empty program text on command line" msgstr "el text del programa en la lnia de comandaments est buit" -#: awkgram.y:2749 +#: awkgram.y:2758 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "no es pot llegir el fitxer font `%s' (%s)" -#: awkgram.y:2760 +#: awkgram.y:2769 #, c-format msgid "source file `%s' is empty" msgstr "el fitxer font `%s' est buit" -#: awkgram.y:2937 +#: awkgram.y:2828 +#, c-format +msgid "PEBKAC error: invalid character '\\%03o' in source code" +msgstr "" + +#: awkgram.y:2959 msgid "source file does not end in newline" msgstr "el fitxer font no finalitza amb un retorn de carro" -#: awkgram.y:3042 +#: awkgram.y:3062 msgid "unterminated regexp ends with `\\' at end of file" msgstr "expressi regular sense finalitzar acaba amb `\\' al final del fitxer" -#: awkgram.y:3066 +#: awkgram.y:3089 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "%s: %d: el modificador regex tawk `/.../%c' no funciona a gawk" -#: awkgram.y:3070 +#: awkgram.y:3093 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "el modificador regex tawk `/.../%c' no funciona a gawk" -#: awkgram.y:3077 +#: awkgram.y:3100 msgid "unterminated regexp" msgstr "expressi regular sense finalitzar" -#: awkgram.y:3081 +#: awkgram.y:3104 msgid "unterminated regexp at end of file" msgstr "expressi regular sense finalitzar al final del fitxer" -#: awkgram.y:3140 +#: awkgram.y:3162 msgid "use of `\\ #...' line continuation is not portable" msgstr "l's de `\\ #...' com a continuaci de lnia no s portable" -#: awkgram.y:3156 +#: awkgram.y:3178 msgid "backslash not last character on line" msgstr "la barra invertida no s l'ltim carcter en la lnia" -#: awkgram.y:3217 +#: awkgram.y:3239 msgid "POSIX does not allow operator `**='" msgstr "POSIX no permet l'operador `**='" -#: awkgram.y:3219 +#: awkgram.y:3241 msgid "old awk does not support operator `**='" msgstr "l'antic awk no suporta l'operador `**='" -#: awkgram.y:3228 +#: awkgram.y:3250 msgid "POSIX does not allow operator `**'" msgstr "POSIX no permet l'operador `**'" -#: awkgram.y:3230 +#: awkgram.y:3252 msgid "old awk does not support operator `**'" msgstr "l'antic awk no suporta l'operador `**='" -#: awkgram.y:3265 +#: awkgram.y:3287 msgid "operator `^=' is not supported in old awk" msgstr "l'operador `^=' no est suportat en l'antic awk" -#: awkgram.y:3273 +#: awkgram.y:3295 msgid "operator `^' is not supported in old awk" msgstr "l'operador `^' no est suportat en l'antic awk" -#: awkgram.y:3366 awkgram.y:3382 command.y:1178 +#: awkgram.y:3392 awkgram.y:3410 command.y:1180 msgid "unterminated string" msgstr "cadena sense finalitzar" -#: awkgram.y:3603 +#: awkgram.y:3631 #, c-format msgid "invalid char '%c' in expression" msgstr "carcter `%c' no vlid en l'expressi" -#: awkgram.y:3650 +#: awkgram.y:3678 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s' s una extensi de gawk" -#: awkgram.y:3655 +#: awkgram.y:3683 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX no permet %s" -#: awkgram.y:3663 +#: awkgram.y:3691 #, c-format msgid "`%s' is not supported in old awk" msgstr "`%s' no est suportat en l'antic awk" -#: awkgram.y:3753 +#: awkgram.y:3781 msgid "`goto' considered harmful!\n" msgstr "`goto' es considera perjudicial!\n" -#: awkgram.y:3787 +#: awkgram.y:3815 #, 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:3822 +#: awkgram.y:3850 #, 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:3827 +#: awkgram.y:3855 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s el tercer parmetre no s un objecte intercanviable" -#: awkgram.y:3910 awkgram.y:3913 +#: awkgram.y:3938 awkgram.y:3941 msgid "match: third argument is a gawk extension" msgstr "match: el tercer argument s una extensi de gawk" -#: awkgram.y:3967 awkgram.y:3970 +#: awkgram.y:3995 awkgram.y:3998 msgid "close: second argument is a gawk extension" msgstr "close: el segon argument s una extensi de gawk" -#: awkgram.y:3982 +#: awkgram.y:4010 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "l's de dcgettext(_\"...\") no s correcte: elimineu el gui baix inicial" -#: awkgram.y:3997 +#: awkgram.y:4025 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "l's de dcgettext(_\"...\") no s correcte: elimineu el gui baix inicial" -#: awkgram.y:4016 +#: awkgram.y:4044 msgid "index: regexp constant as second argument is not allowed" msgstr "ndex: no es permet una constant regexp com a segon argument" -#: awkgram.y:4069 +#: awkgram.y:4097 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funci `%s': parmetre `%s' ofusca la variable global" -#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4154 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:4127 +#: awkgram.y:4155 msgid "sending variable list to standard error" msgstr "s'est enviant la llista de variables a l'eixida d'error estndard" -#: awkgram.y:4135 +#: awkgram.y:4163 #, c-format msgid "%s: close failed (%s)" msgstr "%s: tancament erroni (%s)" -#: awkgram.y:4160 +#: awkgram.y:4188 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() s'ha cridat dues vegades!" -#: awkgram.y:4168 +#: awkgram.y:4196 msgid "there were shadowed variables." msgstr "hi ha hagut variables a l'ombra" -#: awkgram.y:4239 +#: awkgram.y:4267 #, c-format msgid "function name `%s' previously defined" msgstr "nom de la funci `%s' definida prviament" -#: awkgram.y:4285 +#: awkgram.y:4313 #, 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:4288 +#: awkgram.y:4316 #, 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" -#: awkgram.y:4296 +#: awkgram.y:4324 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funci `%s': parmetre #%d, `%s', duplica al parmetre #%d" -#: awkgram.y:4383 awkgram.y:4389 +#: awkgram.y:4411 awkgram.y:4417 #, c-format msgid "function `%s' called but never defined" msgstr "es crida a la funci `%s' per no s'ha definit" -#: awkgram.y:4393 +#: awkgram.y:4421 #, 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:4425 +#: awkgram.y:4453 #, 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" -#: awkgram.y:4484 +#: awkgram.y:4468 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -514,23 +519,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:4720 +#: awkgram.y:4674 msgid "division by zero attempted" msgstr "s'ha intentat una divisi per zero" -#: awkgram.y:4729 +#: awkgram.y:4683 #, c-format msgid "division by zero attempted in `%%'" msgstr "s'ha intentat una divisi per zero en `%%'" -#: awkgram.y:5049 +#: awkgram.y:5003 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:5052 +#: awkgram.y:5006 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "dest no vlid d'assignaci (opcode %s)" @@ -572,193 +577,203 @@ msgstr "" msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "fflush: `%s' no s un fitxer obert, canonada o co-procs" -#: builtin.c:362 +#: builtin.c:351 msgid "index: received non-string first argument" msgstr "ndex: el primer argument rebut no s una cadena" -#: builtin.c:364 +#: builtin.c:353 msgid "index: received non-string second argument" msgstr "ndex: el segon argument rebut no s una cadena" -#: builtin.c:488 mpfr.c:757 +#: builtin.c:466 mpfr.c:777 msgid "int: received non-numeric argument" msgstr "int: s'ha rebut un argument no numric" -#: builtin.c:525 +#: builtin.c:503 msgid "length: received array argument" msgstr "length: s'ha rebut un argument de matriu" -#: builtin.c:528 +#: builtin.c:506 msgid "`length(array)' is a gawk extension" msgstr "`length(array)' s una extensi de gawk" -#: builtin.c:544 +#: builtin.c:525 msgid "length: received non-string argument" msgstr "length: s'ha rebut un argument que no s una cadena" -#: builtin.c:575 +#: builtin.c:554 msgid "log: received non-numeric argument" msgstr "log: s'ha rebut un argument no numric" -#: builtin.c:578 +#: builtin.c:557 #, c-format msgid "log: received negative argument %g" msgstr "log: s'ha rebut l'argument negatiu %g" -#: builtin.c:776 builtin.c:781 +#: builtin.c:755 builtin.c:760 builtin.c:911 msgid "fatal: must use `count$' on all formats or none" msgstr "fatal: s'ha d'usar `count$' a tots els format o a cap" -#: builtin.c:851 +#: builtin.c:830 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "l'amplada de camp s'ignorar per a l'especificador `%%'" -#: builtin.c:853 +#: builtin.c:832 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "la precisi s'ignorar per a l'especificador `%%'" -#: builtin.c:855 +#: builtin.c:834 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "l'amplada de camp i la precisi s'ignoraran per a l'especificador `%%'" -#: builtin.c:906 +#: builtin.c:885 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal: no es permeten `$' en els formats awk" -#: builtin.c:915 +#: builtin.c:894 msgid "fatal: arg count with `$' must be > 0" msgstr "fatal: el recompte d'arguments amb `$' ha de ser > 0" -#: builtin.c:919 +#: builtin.c:898 #, 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" -#: builtin.c:923 +#: builtin.c:902 msgid "fatal: `$' not permitted after period in format" msgstr "fatal: no es permet `$' desprs d'un punt en el format" -#: builtin.c:939 +#: builtin.c:921 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" -#: builtin.c:1009 +#: builtin.c:991 msgid "`l' is meaningless in awk formats; ignored" msgstr "`l' manca de significat en els formats awk; ser ignorat" -#: builtin.c:1013 +#: builtin.c:995 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fatal: `l' no est perms en els formats POSIX de awk" -#: builtin.c:1026 +#: builtin.c:1008 msgid "`L' is meaningless in awk formats; ignored" msgstr "`L' manca de significat en els formats awk; ser ignorat" -#: builtin.c:1030 +#: builtin.c:1012 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "fatal: `L' no est perms en els formats POSIX de awk" -#: builtin.c:1043 +#: builtin.c:1025 msgid "`h' is meaningless in awk formats; ignored" msgstr "`h' manca de significat en els formats awk; ser ignorat" -#: builtin.c:1047 +#: builtin.c:1029 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fatal: `h' no est perms en els formats POSIX de awk" -#: builtin.c:1463 +#: builtin.c:1055 +#, fuzzy, c-format +msgid "[s]printf: value %g is too big for %%c format" +msgstr "[s]printf: el valor %g est fora de rang per al format `%%%c'" + +#: builtin.c:1068 +#, fuzzy, c-format +msgid "[s]printf: value %g is not a valid wide character" +msgstr "[s]printf: el valor %g est fora de rang per al format `%%%c'" + +#: builtin.c:1454 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: el valor %g est fora de rang per al format `%%%c'" -#: builtin.c:1561 +#: builtin.c:1552 #, 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:1566 +#: builtin.c:1557 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:1568 +#: builtin.c:1559 msgid "^ ran out for this one" msgstr "^ desbordament per a aquest" -#: builtin.c:1575 +#: builtin.c:1566 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: l'especificador de format no cont lletra de control" -#: builtin.c:1578 +#: builtin.c:1569 msgid "too many arguments supplied for format string" msgstr "s'han proporcionat masses arguments per a la cadena de format" -#: builtin.c:1634 +#: builtin.c:1625 msgid "sprintf: no arguments" msgstr "sprintf: sense arguments" -#: builtin.c:1657 builtin.c:1668 +#: builtin.c:1648 builtin.c:1659 msgid "printf: no arguments" msgstr "printf: sense arguments" -#: builtin.c:1711 +#: builtin.c:1702 msgid "sqrt: received non-numeric argument" msgstr "sqrt: s'ha rebut un argument no numric" -#: builtin.c:1715 +#: builtin.c:1706 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: cridat amb l'argument negatiu %g" -#: builtin.c:1746 +#: builtin.c:1737 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: la longitud %g no s >= 1" -#: builtin.c:1748 +#: builtin.c:1739 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: la longitud %g no s >= 0" -#: builtin.c:1755 +#: builtin.c:1753 #, 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:1760 +#: builtin.c:1758 #, 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:1772 +#: builtin.c:1770 #, 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:1777 +#: builtin.c:1775 #, 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:1802 +#: builtin.c:1798 msgid "substr: source string is zero length" msgstr "substr: la cadena font s de longitud zero" -#: builtin.c:1818 +#: builtin.c:1812 #, 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:1826 +#: builtin.c:1820 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -766,189 +781,195 @@ msgstr "" "substr: la longitud %g a l'ndex d'inici %g excedeix la longitud del primer " "argument (%lu)" -#: builtin.c:1900 +#: builtin.c:1890 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: el valor de format a PROCINFO[\"strftime\"] t tipus numric" -#: builtin.c:1923 +#: builtin.c:1913 msgid "strftime: received non-numeric second argument" msgstr "strftime: s'ha rebut un segon argument no numric" -#: builtin.c:1927 +#: builtin.c:1917 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:1934 +#: builtin.c:1924 msgid "strftime: received non-string first argument" msgstr "strftime: el primer argument rebut no s una cadena" -#: builtin.c:1941 +#: builtin.c:1931 msgid "strftime: received empty format string" msgstr "strftime: s'ha rebut una cadena de format buida" -#: builtin.c:2007 +#: builtin.c:1997 msgid "mktime: received non-string argument" msgstr "mktime: s'ha rebut un argument que no s una cadena" -#: builtin.c:2024 +#: builtin.c:2014 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: almenys un dels valors est forra del rang predeterminat" -#: builtin.c:2059 +#: builtin.c:2049 msgid "'system' function not allowed in sandbox mode" msgstr "la funci 'system' no es permet fora del mode entorn de proves" -#: builtin.c:2064 +#: builtin.c:2054 msgid "system: received non-string argument" msgstr "system: s'ha rebut un argument que no s una cadena" -#: builtin.c:2184 +#: builtin.c:2174 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "referncia a una variable sense inicialitzar `$%d'" -#: builtin.c:2271 +#: builtin.c:2259 msgid "tolower: received non-string argument" msgstr "tolower: s'ha rebut un argument que no s una cadena" -#: builtin.c:2305 +#: builtin.c:2290 msgid "toupper: received non-string argument" msgstr "toupper: s'ha rebut un argument que no s una cadena" -#: builtin.c:2341 mpfr.c:672 +#: builtin.c:2323 mpfr.c:679 msgid "atan2: received non-numeric first argument" msgstr "atan2: el primer argument rebut no s numric" -#: builtin.c:2343 mpfr.c:674 +#: builtin.c:2325 mpfr.c:681 msgid "atan2: received non-numeric second argument" msgstr "atan2: el segon argument rebut no s numric" -#: builtin.c:2362 +#: builtin.c:2344 msgid "sin: received non-numeric argument" msgstr "sin: s'ha rebut un argument que no s numric" -#: builtin.c:2378 +#: builtin.c:2360 msgid "cos: received non-numeric argument" msgstr "cos: s'ha rebut un argument que no s numric" -#: builtin.c:2431 mpfr.c:1156 +#: builtin.c:2413 mpfr.c:1176 msgid "srand: received non-numeric argument" msgstr "srand: s'ha rebut un argument que no s numric" -#: builtin.c:2462 +#: builtin.c:2444 msgid "match: third argument is not an array" msgstr "match: el tercer argument no s una matriu" -#: builtin.c:2734 -msgid "gensub: third argument of 0 treated as 1" +#: builtin.c:2705 +#, fuzzy, c-format +msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: el tercer argument de 0 s tractat com a 1" -#: builtin.c:3030 +#: builtin.c:2720 +#, fuzzy, c-format +msgid "gensub: third argument %g treated as 1" +msgstr "gensub: el tercer argument de 0 s tractat com a 1" + +#: builtin.c:3020 msgid "lshift: received non-numeric first argument" msgstr "lshift: el primer argument rebut no s numric" -#: builtin.c:3032 +#: builtin.c:3022 msgid "lshift: received non-numeric second argument" msgstr "lshift: el segon argument rebut no s numric" -#: builtin.c:3038 +#: builtin.c:3028 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%f, %f): els valors negatius donaran resultats estranys" -#: builtin.c:3040 +#: builtin.c:3030 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): els valors fraccionaris sernn truncats" -#: builtin.c:3042 +#: builtin.c:3032 #, 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" -#: builtin.c:3067 +#: builtin.c:3057 msgid "rshift: received non-numeric first argument" msgstr "rshift: el primer argument rebut no s numric" -#: builtin.c:3069 +#: builtin.c:3059 msgid "rshift: received non-numeric second argument" msgstr "rshift: el segon argument rebut no s numric" -#: builtin.c:3075 +#: builtin.c:3065 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%f, %f): els valors negatius donaran resultats estranys" -#: builtin.c:3077 +#: builtin.c:3067 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): els valors fraccionaris seran truncats" -#: builtin.c:3079 +#: builtin.c:3069 #, 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" -#: builtin.c:3104 mpfr.c:968 +#: builtin.c:3094 mpfr.c:988 msgid "and: called with less than two arguments" msgstr "and: cridat amb menys de dos arguments" -#: builtin.c:3109 +#: builtin.c:3099 #, c-format msgid "and: argument %d is non-numeric" msgstr "exp: l'argument %d no s numric" -#: builtin.c:3113 +#: builtin.c:3103 #, 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:3136 mpfr.c:1000 +#: builtin.c:3126 mpfr.c:1020 msgid "or: called with less than two arguments" msgstr "or: cridat amb menys de dos arguments" -#: builtin.c:3141 +#: builtin.c:3131 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: l'argument %d no s numric" -#: builtin.c:3145 +#: builtin.c:3135 #, 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:3167 mpfr.c:1031 +#: builtin.c:3157 mpfr.c:1051 msgid "xor: called with less than two arguments" msgstr "xort: cridat amb menys de dos arguments" -#: builtin.c:3173 +#: builtin.c:3163 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: l'argument %d no s numric" -#: builtin.c:3177 +#: builtin.c:3167 #, 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:3202 mpfr.c:787 +#: builtin.c:3192 mpfr.c:807 msgid "compl: received non-numeric argument" msgstr "compl: s'ha rebut un argument que no s numric" -#: builtin.c:3208 +#: builtin.c:3198 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): el valor negatiu donar resultats estranys" -#: builtin.c:3210 +#: builtin.c:3200 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): el valor fraccionari ser truncat" -#: builtin.c:3379 +#: builtin.c:3369 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s' no s una categoria local vlida" @@ -1272,40 +1293,49 @@ msgstr "up [N] - mou-te N marcs cap a dalt de la pila." msgid "watch var - set a watchpoint for a variable." msgstr "watch var - estableix un punt d'inspecci per a una variable." -#: command.y:1011 debug.c:401 msg.c:135 +#: command.y:901 +#, fuzzy +msgid "" +"where [N] - (same as backtrace) 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:1013 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "error: " -#: command.y:1051 +#: command.y:1053 #, c-format msgid "can't read command (%s)\n" msgstr "no es pot llegir l'ordre (%s)\n" -#: command.y:1065 +#: command.y:1067 #, c-format msgid "can't read command (%s)" msgstr "no es pot llegir l'ordre (%s)" -#: command.y:1116 +#: command.y:1118 msgid "invalid character in command" msgstr "carcter no vlida en la instucci" -#: command.y:1152 +#: command.y:1154 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "ordre desconeguda - \"%.*s\", prova l'ajuda" -#: command.y:1222 +#: command.y:1224 #, c-format msgid "%s" msgstr "%s" -#: command.y:1284 +#: command.y:1286 msgid "invalid character" msgstr "carcter no vlid" -#: command.y:1455 +#: command.y:1457 #, c-format msgid "undefined command: %s\n" msgstr "ordre no definida: %s\n" @@ -1846,68 +1876,70 @@ msgstr "`%s' no est perms al context actual; s'ignorar la declaraci" msgid "`return' not allowed in current context; statement ignored" msgstr "`return' no est perms al context actual; s'ignorar la declaraci" -#: debug.c:5590 +#: debug.c:5604 #, c-format msgid "No symbol `%s' in current context" msgstr "No hi ha un smbol `%s' al context actual" -#: 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 +#: dfa.c:1063 dfa.c:1066 dfa.c:1085 dfa.c:1095 dfa.c:1107 dfa.c:1143 +#: dfa.c:1152 dfa.c:1155 dfa.c:1160 dfa.c:1174 dfa.c:1222 msgid "unbalanced [" msgstr "[ sense aparellar" -#: dfa.c:1174 +#: dfa.c:1119 msgid "invalid character class" msgstr "classe no vlida de carcters" -#: dfa.c:1316 +#: dfa.c:1265 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "la sintaxi de la classe de carcters s [[:espai:]], no [:espai:]" -#: dfa.c:1366 +#: dfa.c:1327 msgid "unfinished \\ escape" msgstr "seqncia d'escapada \\ sense finalitzar" -#: dfa.c:1513 regcomp.c:161 -msgid "Invalid content of \\{\\}" +#: dfa.c:1474 +#, fuzzy +msgid "invalid content of \\{\\}" msgstr "Contingut no vlid de \\{\\}" -#: dfa.c:1516 regcomp.c:176 -msgid "Regular expression too big" +#: dfa.c:1477 +#, fuzzy +msgid "regular expression too big" msgstr "L'expressi regular s massa gran" -#: dfa.c:1936 +#: dfa.c:1912 msgid "unbalanced (" msgstr "( sense aparellar" -#: dfa.c:2062 +#: dfa.c:2038 msgid "no syntax specified" msgstr "no s'ha especificat una sintaxi" -#: dfa.c:2070 +#: dfa.c:2046 msgid "unbalanced )" msgstr ") sense aparellar" -#: eval.c:394 +#: eval.c:396 #, c-format msgid "unknown nodetype %d" msgstr "tipus de node %d desconegut" -#: eval.c:405 eval.c:419 +#: eval.c:407 eval.c:421 #, c-format msgid "unknown opcode %d" msgstr "opcode %d desconegut" -#: eval.c:416 +#: eval.c:418 #, c-format msgid "opcode %s not an operator or keyword" msgstr "l'opcode %s no s un operador o una paraula clau" -#: eval.c:472 +#: eval.c:474 msgid "buffer overflow in genflags2str" msgstr "desbordament del cau temporal en genflags2str" -#: eval.c:675 +#: eval.c:676 #, c-format msgid "" "\n" @@ -1918,217 +1950,217 @@ msgstr "" "\t# Pila de crida a les funcions:\n" "\n" -#: eval.c:704 +#: eval.c:705 msgid "`IGNORECASE' is a gawk extension" msgstr "`IGNORECASE' s una extensi de gawk" -#: eval.c:736 +#: eval.c:737 msgid "`BINMODE' is a gawk extension" msgstr "`BINMODE' s una extensi de gawk" -#: eval.c:794 +#: eval.c:795 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "El valor BINMODE `%s' no s vlid, es tractar com 3" -#: eval.c:885 +#: eval.c:912 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "`%sFMT' especificaci errnia `%s'" -#: eval.c:969 +#: eval.c:996 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "desactivant `--lint' degut a una assignaci a `LINT'" -#: eval.c:1147 +#: eval.c:1174 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "referncia a un argument sense inicialitzar `%s'" -#: eval.c:1148 +#: eval.c:1175 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "referncia a una variable sense inicialitzar `%s'" -#: eval.c:1166 +#: eval.c:1193 msgid "attempt to field reference from non-numeric value" msgstr "s'ha intentat una referncia de camp a partir d'un valor no numric" -#: eval.c:1168 +#: eval.c:1195 msgid "attempt to field reference from null string" msgstr "s'ha intentat entrar una referncia a partir d'una cadena nulla" -#: eval.c:1176 +#: eval.c:1203 #, c-format msgid "attempt to access field %ld" msgstr "s'ha intentat accedir al camp %ld" -#: eval.c:1185 +#: eval.c:1212 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "referncia a una variable sense inicialitzar `$%ld'" -#: eval.c:1272 +#: eval.c:1299 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "s'ha cridat a la funci `%s' amb ms arguments dels declarats" -#: eval.c:1473 +#: eval.c:1500 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: tipus no esperat `%s'" -#: eval.c:1569 +#: eval.c:1596 msgid "division by zero attempted in `/='" msgstr "s'ha intentat una divisi per zero en `/='" -#: eval.c:1576 +#: eval.c:1603 #, c-format msgid "division by zero attempted in `%%='" msgstr "s'ha intentat una divisi per zero en `%%='" -#: ext.c:89 ext.c:171 +#: ext.c:65 ext.c:147 msgid "extensions are not allowed in sandbox mode" msgstr "les extensions no estan permeses en mode de proves" -#: ext.c:92 +#: ext.c:68 msgid "-l / @load are gawk extensions" msgstr "-l / @load sn extensions gawk" -#: ext.c:95 +#: ext.c:71 msgid "load_ext: received NULL lib_name" msgstr "load_ext: s'ha rebut lib_name nul" -#: ext.c:98 +#: ext.c:74 #, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "load_ext: no es pot obrir la llibreria `%s' (%s)\n" -#: ext.c:104 +#: ext.c:80 #, c-format 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 +#: ext.c:86 #, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "load_ext: biblioteca `%s': no es pot cridar a la funci `%s' (%s)\n" -#: ext.c:114 +#: ext.c:90 #, 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 +#: ext.c:150 msgid "`extension' is a gawk extension" msgstr "`extension' s una extensi gawk" -#: ext.c:177 +#: ext.c:153 msgid "extension: received NULL lib_name" msgstr "extension: s'ha rebut lib_name nul" -#: ext.c:180 +#: ext.c:156 #, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "extension: no es pot obrir la biblioteca `%s' (%s)" -#: ext.c:186 +#: ext.c:162 #, 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)" -#: ext.c:190 +#: ext.c:166 #, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "extension: biblioteca `%s': no es pot cridar a la funci `%s' (%s)" -#: ext.c:221 +#: ext.c:197 msgid "make_builtin: missing function name" msgstr "make_builtin: nom absent de funci" -#: ext.c:236 +#: ext.c:212 #, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "make_builtin: no es pot redefinir la funci `%s'" -#: ext.c:240 +#: ext.c:216 #, c-format msgid "make_builtin: function `%s' already defined" msgstr "make_builtin: la funci `%s' ja est definida" -#: ext.c:244 +#: ext.c:220 #, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "make_builtin: nom de la funci `%s' definida prviament" -#: ext.c:246 +#: ext.c:222 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "make_builtin: no es pot usar el nom intern `%s' com a nom de funci" -#: ext.c:249 ext.c:304 +#: ext.c:225 ext.c:280 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: recompte negatiu d'arguments per a la funci `%s'" -#: ext.c:276 +#: ext.c:252 msgid "extension: missing function name" msgstr "extension: nom absent de funci" -#: ext.c:279 ext.c:283 +#: ext.c:255 ext.c:259 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: carcter `%c' illegal al nom de funci `%s'" -#: ext.c:291 +#: ext.c:267 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: no es pot redefinir la funci `%s'" -#: ext.c:295 +#: ext.c:271 #, c-format msgid "extension: function `%s' already defined" msgstr "extension: la funci `%s' ja est definida" -#: ext.c:299 +#: ext.c:275 #, c-format msgid "extension: function name `%s' previously defined" msgstr "extension: nom de la funci `%s' definida prviament" -#: ext.c:301 +#: ext.c:277 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" msgstr "extension: no es pot usar el nom intern `%s' com a nom de funci" -#: ext.c:375 +#: ext.c:351 #, c-format msgid "function `%s' defined to take no more than %d argument(s)" msgstr "la funci `%s' est definida per agafar no ms de %d argument(s)" -#: ext.c:378 +#: ext.c:354 #, c-format msgid "function `%s': missing argument #%d" msgstr "funci `%s': falta l'argument #%d" -#: ext.c:395 +#: ext.c:371 #, 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" -#: ext.c:399 +#: ext.c:375 #, 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 +#: ext.c:389 msgid "dynamic loading of library not supported" msgstr "no est suportada la crrega dinmica de la biblioteca" @@ -2272,7 +2304,7 @@ msgstr "wait: s'ha cridat amb massa arguments" msgid "inplace_begin: in-place editing already active" msgstr "inplace_begin: l'edici in situ ja est activa" -#: extension/inplace.c:133 extension/inplace.c:207 +#: extension/inplace.c:133 extension/inplace.c:210 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "inplace_begin: s'esperaven 2 arguments per s'ha cridat amb %d" @@ -2305,57 +2337,57 @@ msgstr "inplace_begin: `%s' no s un fitxer regular" msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "inplace_begin: mkstemp(`%s') ha fallat (%s)" -#: extension/inplace.c:178 +#: extension/inplace.c:181 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "inplace_begin: ha fallat chmod (%s)" -#: extension/inplace.c:185 +#: extension/inplace.c:188 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "inplace_begin: dup(stdout) ha fallat(%s)" -#: extension/inplace.c:188 +#: extension/inplace.c:191 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "inplace_begin: dup2(%d, stdout) ha fallat (%s)" -#: extension/inplace.c:191 +#: extension/inplace.c:194 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "inplace begin: close(%d) ha fallat (%s)" -#: extension/inplace.c:210 +#: extension/inplace.c:213 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 +#: extension/inplace.c:220 msgid "inplace_end: in-place editing not active" msgstr "inplace_end: no est activa l'edici in situ" -#: extension/inplace.c:223 +#: extension/inplace.c:226 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "inplace_end: dup2(%d, stdout) ha fallat (%s)" -#: extension/inplace.c:226 +#: extension/inplace.c:229 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "inplace_end: close(%d) ha fallat (%s)" -#: extension/inplace.c:230 +#: extension/inplace.c:233 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "inplace_end: fsetpos(stdout) ha fallat (%s)" -#: extension/inplace.c:243 +#: extension/inplace.c:246 #, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "inplace_end: link(`%s', `%s') ha fallat (%s)" -#: extension/inplace.c:253 +#: extension/inplace.c:256 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "inplace_end: rename(`%s', `%s') ha fallat (%s)" @@ -2397,50 +2429,54 @@ msgstr "readfile: s'ha cridat amb massa arguments" msgid "readfile: called with no arguments" msgstr "readfile: s'ha cridat amb cap argument" -#: extension/rwarray.c:124 +#: extension/revoutput.c:125 +msgid "revoutput: could not initialize REVOUT variable" +msgstr "" + +#: extension/rwarray.c:124 extension/rwarray0.c:109 msgid "writea: called with too many arguments" msgstr "writea: s'ha cridat amb massa arguments" -#: extension/rwarray.c:131 +#: extension/rwarray.c:131 extension/rwarray0.c:116 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "do_writea: l'argument 0 no s una cadena de carcters\n" -#: extension/rwarray.c:137 +#: extension/rwarray.c:137 extension/rwarray0.c:122 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "do_writea: l'argument 1 no s una matriu\n" -#: extension/rwarray.c:184 +#: extension/rwarray.c:184 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "write_array: no s'ha pogut aplanar la matriu\n" -#: extension/rwarray.c:198 +#: extension/rwarray.c:198 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "write_array: no s'ha pogut alliberar la matriu aplanada\n" -#: extension/rwarray.c:280 +#: extension/rwarray.c:280 extension/rwarray0.c:265 msgid "reada: called with too many arguments" msgstr "reada: s'ha cridat amb massa arguments" -#: extension/rwarray.c:287 +#: extension/rwarray.c:287 extension/rwarray0.c:272 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "do_reada: l'argument 0 no s una cadena de carcters\n" -#: extension/rwarray.c:293 +#: extension/rwarray.c:293 extension/rwarray0.c:278 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "do_reada: l'argument 1 no s una matriu\n" -#: extension/rwarray.c:337 +#: extension/rwarray.c:337 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "do_reada: clear_array ha fallat\n" -#: extension/rwarray.c:374 +#: extension/rwarray.c:374 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "read_array: set_array_element ha fallat\n" @@ -2469,86 +2505,86 @@ msgstr "sleep: l'argument s negatiu" msgid "sleep: not supported on this platform" msgstr "sleep: no est suportat en aquesta plataforma" -#: field.c:345 +#: field.c:346 msgid "NF set to negative value" msgstr "NF s'inicialitza sobre un valor negatiu" -#: field.c:971 field.c:978 field.c:982 +#: field.c:958 field.c:965 field.c:969 msgid "split: fourth argument is a gawk extension" msgstr "split: el quart argument s una extensi gawk" -#: field.c:975 +#: field.c:962 msgid "split: fourth argument is not an array" msgstr "split: el quart argument no s una matriu" -#: field.c:989 +#: field.c:976 msgid "split: second argument is not an array" msgstr "split: el segon argument no s una matriu" -#: field.c:993 +#: field.c:980 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 +#: field.c:985 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 +#: field.c:988 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 +#: field.c:1019 msgid "split: null string for third arg is a gawk extension" msgstr "split: la cadena nulla per al tercer argument s una extensi de gawk" -#: field.c:1072 +#: field.c:1059 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: el quart argument no s una matriu" -#: field.c:1077 +#: field.c:1064 msgid "patsplit: second argument is not an array" msgstr "patsplit: el tercer argument no s una matriu" -#: field.c:1083 +#: field.c:1070 msgid "patsplit: third argument must be non-null" msgstr "patsplit: el segon argument no s una matriu" -#: field.c:1087 +#: field.c:1074 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 +#: field.c:1079 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 +#: field.c:1082 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 +#: field.c:1120 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "`FIELDWIDTHS' s una extensi de gawk" -#: field.c:1197 +#: field.c:1184 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "valor FIELDWIDTHS no vlid, a prop de `%s'" -#: field.c:1270 +#: field.c:1257 msgid "null string for `FS' is a gawk extension" msgstr "la cadena nulla per a `FS' s una extensi de gawk" -#: field.c:1274 +#: field.c:1261 msgid "old awk does not support regexps as value of `FS'" msgstr "l'antic awk no suporta expressions regulars com a valor de `FS'" -#: field.c:1393 +#: field.c:1380 msgid "`FPAT' is a gawk extension" msgstr "`FPAT' s una extensi gawk" @@ -2564,20 +2600,20 @@ msgstr "node_to_awk_value: s'ha rebut un node nul" msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: s'ha rebut un valor nul" -#: gawkapi.c:807 +#: gawkapi.c:809 msgid "remove_element: received null array" msgstr "remove_element: s'ha rebut una matriu nulla" -#: gawkapi.c:810 +#: gawkapi.c:812 msgid "remove_element: received null subscript" msgstr "remove_element: s'ha rebut un subndex nul" -#: gawkapi.c:947 +#: gawkapi.c:949 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "api_flatten_array: no s'ha pogut convertir l'ndex %d\n" -#: gawkapi.c:952 +#: gawkapi.c:954 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "api_flatten_array: no s'ha pogut convertir el valor %d\n" @@ -2637,299 +2673,281 @@ msgstr "%s: l'opci `-W %s' no admet cap argument\n" msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: l'opci `-W %s' requereix un argument\n" -#: io.c:392 +#: io.c:423 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "l'argument `%s' de lnia d'ordres s un directori: s'ignorar" -#: io.c:395 io.c:513 +#: io.c:426 io.c:544 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "no es pot obrir el fitxer `%s' per a lectura (%s)" -#: io.c:640 +#: io.c:671 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "la finalitzaci del descriptor fd %d (`%s') ha fallat (%s)" -#: io.c:716 +#: io.c:749 msgid "redirection not allowed in sandbox mode" msgstr "no est permeten redireccions en mode de proves" -#: io.c:750 +#: io.c:783 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "l'expressi en la redirecci `%s' solt t un valor numric" -#: io.c:756 +#: io.c:789 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "l'expressi per a la redirecci `%s' t un valor de cadena nulla" -#: io.c:761 +#: io.c:794 #, 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" -#: io.c:809 +#: io.c:842 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "mescla innecessria de `>' i `>>' per al fitxer `%.*s'" -#: io.c:863 +#: io.c:896 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "no es pot obrir la canonada `%s' per a l'eixida (%s)" -#: io.c:873 +#: io.c:906 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "no es pot obrir la canonada `%s' per a l'entrada (%s)" -#: io.c:904 +#: io.c:937 #, 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)" -#: io.c:986 +#: io.c:1019 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "no es pot redirigir des de `%s' (%s)" -#: io.c:989 +#: io.c:1022 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "no es pot redirigir cap a `%s' (%s)" -#: io.c:1040 +#: io.c:1073 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 +#: io.c:1089 #, c-format msgid "close of `%s' failed (%s)." msgstr "la finalitzaci de `%s' ha fallat (%s)" -#: io.c:1064 +#: io.c:1097 msgid "too many pipes or input files open" msgstr "masses canonades o fitxers d'entrada oberts" -#: io.c:1086 +#: io.c:1119 msgid "close: second argument must be `to' or `from'" msgstr "close: el segon argument hauria de ser `to' o `from'" -#: io.c:1103 +#: io.c:1136 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: `%.*s' no s un fitxer obert, canonada o co-procs" -#: io.c:1108 +#: io.c:1141 msgid "close of redirection that was never opened" msgstr "finalitzaci d'una redirecci que no s'ha obert" -#: io.c:1205 +#: io.c:1238 #, 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" -#: io.c:1222 +#: io.c:1255 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "estat de fallada (%d) en la finalitzaci de la canonada `%s' (%s)" -#: io.c:1225 +#: io.c:1258 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "estat de falla (%d) en la finalitzaci del fitxer `%s' (%s)" -#: io.c:1245 +#: io.c:1278 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "no s'aporta la finalitzaci explcita del socket `%s'" -#: io.c:1248 +#: io.c:1281 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "no s'aporta la finalitzaci explcita del co-procs `%s'" -#: io.c:1251 +#: io.c:1284 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "no s'aporta la finalitzaci explcita de la canonada `%s'" -#: io.c:1254 +#: io.c:1287 #, c-format msgid "no explicit close of file `%s' provided" msgstr "no s'aporta la finalitzaci explcita del fitxer `%s'" -#: io.c:1284 io.c:1342 main.c:864 main.c:906 +#: io.c:1317 io.c:1375 main.c:628 main.c:670 #, c-format msgid "error writing standard output (%s)" msgstr "error en escriure a la sortida estndard (%s)" -#: io.c:1289 io.c:1348 main.c:866 +#: io.c:1322 io.c:1381 main.c:630 #, c-format msgid "error writing standard error (%s)" msgstr "error en escriure a la sortida d'error estndard (%s)" -#: io.c:1297 +#: io.c:1330 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "la neteja de la canonada de `%sx' ha fallat (%s)." -#: io.c:1300 +#: io.c:1333 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "la neteja de la canonada per al co-procs de `%sx' ha fallat (%s)." -#: io.c:1303 +#: io.c:1336 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "la neteja del fitxer `%s' ha fallat (%s)." -#: io.c:1420 +#: io.c:1453 #, c-format msgid "local port %s invalid in `/inet'" msgstr "port local %s no vlid a `/inet'" -#: io.c:1438 +#: io.c:1471 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "amfitri remot i informaci de port (%s, %s) no vlids" -#: io.c:1590 -#, c-format -msgid "no (known) protocol supplied in special filename `%s'" -msgstr "no s'aporta cap protocol (conegut) en el nom del fitxer especial `%s'" - -#: io.c:1604 -#, c-format -msgid "special file name `%s' is incomplete" -msgstr "el nom del fitxer especial `%s' est incomplet" - -#: io.c:1621 -msgid "must supply a remote hostname to `/inet'" -msgstr "s'ha de subministrar un nom de sistema remot a `/inet'" - -#: io.c:1639 -msgid "must supply a remote port to `/inet'" -msgstr "s'ha de subministrar un port remot a `/inet'" - -#: io.c:1685 +#: io.c:1673 msgid "TCP/IP communications are not supported" msgstr "les comunicacions TCP/IP no estan suportades" -#: io.c:1867 +#: io.c:1854 #, c-format msgid "could not open `%s', mode `%s'" msgstr "no es pot obrir `%s', mode `%s'" -#: io.c:1917 +#: io.c:1904 #, c-format msgid "close of master pty failed (%s)" msgstr "ha fallat el tancament del pty mestre (%s)" -#: io.c:1919 io.c:2105 io.c:2305 +#: io.c:1906 io.c:2092 io.c:2293 #, c-format msgid "close of stdout in child failed (%s)" msgstr "" "ha fallat la finalitzaci de la sortida estndard en els processos fills (%s)" -#: io.c:1922 +#: io.c:1909 #, c-format msgid "moving slave pty to stdout in child failed (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 +#: io.c:1911 io.c:2097 #, c-format msgid "close of stdin in child failed (%s)" msgstr "" "ha fallat la finalitzaci de l'entrada estndard en els processos fills (%s)" -#: io.c:1927 +#: io.c:1914 #, c-format msgid "moving slave pty to stdin in child failed (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 +#: io.c:1916 io.c:1938 #, c-format msgid "close of slave pty failed (%s)" msgstr "ha fallat el tancament del pty esclau (%s)" -#: io.c:2040 io.c:2108 io.c:2276 io.c:2308 +#: io.c:2027 io.c:2095 io.c:2264 io.c:2296 #, 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)" -#: io.c:2047 io.c:2113 +#: io.c:2034 io.c:2100 #, 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)" -#: io.c:2073 io.c:2298 +#: io.c:2060 io.c:2286 msgid "restoring stdout in parent process failed\n" msgstr "ha fallat la restauraci de l'eixida estndard en el procs pare\n" -#: io.c:2081 +#: io.c:2068 msgid "restoring stdin in parent process failed\n" msgstr "ha fallat la restauraci de l'entrada estndard en el procs pare\n" -#: io.c:2116 io.c:2310 io.c:2324 +#: io.c:2103 io.c:2298 io.c:2313 #, c-format msgid "close of pipe failed (%s)" msgstr "ha fallat la finalitzaci de la canonada (%s)" -#: io.c:2174 +#: io.c:2162 msgid "`|&' not supported" msgstr "`|&' no est suportat" -#: io.c:2261 +#: io.c:2249 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "no es pot obrir la canonada `%s' (%s)" -#: io.c:2318 +#: io.c:2307 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "no es pot crear el procs fill per a `%s' (fork: %s)" -#: io.c:2790 +#: io.c:2734 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: s'ha rebut un punter nul" -#: io.c:2818 +#: io.c:2762 #, 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 +#: io.c:2769 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "l'analitzador d'entrada `%s' no ha pogut obrir `%s'" -#: io.c:2845 +#: io.c:2789 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: s'ha rebut un punter nul" -#: io.c:2873 +#: io.c:2817 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" @@ -2937,16 +2955,16 @@ msgstr "" "l'embolcall de sortida `%s' est en conflicte amb l'embolcall de sortida `" "%s' installat prviament" -#: io.c:2880 +#: io.c:2824 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "l'embolcall de sortida `%s' no ha pogut obrir `%s'" -#: io.c:2901 +#: io.c:2845 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: s'ha rebut un punter nul" -#: io.c:2930 +#: io.c:2874 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2955,210 +2973,197 @@ msgstr "" "el processsador de dues vies `%s' est en conflicte amb el processador de " "dues vies `%s' installat prviament" -#: io.c:2939 +#: io.c:2883 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "el processador de dues vies `%s' no ha pogut obrir `%s'" -#: io.c:3064 +#: io.c:3008 #, c-format msgid "data file `%s' is empty" msgstr "el fitxer de dades `%s' est buit" -#: io.c:3106 io.c:3114 +#: io.c:3050 io.c:3058 msgid "could not allocate more input memory" msgstr "no s'ha pogut assignar ms memria d'entrada" -#: io.c:3682 +#: io.c:3636 msgid "multicharacter value of `RS' is a gawk extension" msgstr "el valor multicarcter de `RS' s una extensi de gawk" -#: io.c:3771 +#: io.c:3783 msgid "IPv6 communication is not supported" msgstr "la comunicaci IPv6 no est suportada" -#: main.c:405 -msgid "empty argument to `-e/--source' ignored" -msgstr "s'ignonar l'argument buit de `-e/--source'" - -#: main.c:495 -#, c-format -msgid "%s: option `-W %s' unrecognized, ignored\n" -msgstr "%s: no es reconeix l'opci `-W %s', ser ignorada\n" - -#: main.c:541 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: l'opci requereix un argument -- %c\n" - -#: main.c:562 +#: main.c:321 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "la variable d'entorn `POSIXLY_CORRECT' est establerta: usant `--posix'" -#: main.c:568 +#: main.c:327 msgid "`--posix' overrides `--traditional'" msgstr "`--posix' solapa a `--traditional'" -#: main.c:579 +#: main.c:338 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "`--posix' i `--traditional' solapen a `--non-decimal-data'" -#: main.c:583 +#: main.c:342 #, 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 +#: main.c:346 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "`--posix' anulla a `--characters-as-bytes'" -#: main.c:647 +#: main.c:404 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "no es pot establir el mode binari en l'entrada estndard (%s)" -#: main.c:650 +#: main.c:407 #, 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 +#: main.c:409 #, 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)" -#: main.c:710 +#: main.c:469 msgid "no program text at all!" msgstr "no hi ha cap text per al programa!" -#: main.c:799 +#: main.c:563 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "s: %s [opcions d'estil POSIX o GNU] -f fitx_prog [--] fitxer ...\n" -#: main.c:801 +#: main.c:565 #, c-format 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 +#: main.c:570 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Opcions POSIX:\t\tOpcions llargues GNU: (estndard)\n" -#: main.c:807 +#: main.c:571 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f fitx_prog\t\t--file=fitx_prog\n" -#: main.c:808 +#: main.c:572 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs (fs=sep_camp)\n" -#: main.c:809 +#: main.c:573 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 +#: main.c:574 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Opcions curtes:\t\tOpcions llargues GNU: (extensions)\n" -#: main.c:811 +#: main.c:575 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:812 +#: main.c:576 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:813 +#: main.c:577 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:814 +#: main.c:578 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[file]\t\t--dump-variables[=file]\n" -#: main.c:815 +#: main.c:579 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[file]\t\t--debug[=file]\n" -#: main.c:816 +#: main.c:580 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'program-text'\t--source='program-text'\n" -#: main.c:817 +#: main.c:581 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E file\t\t\t--exec=file\n" -#: main.c:818 +#: main.c:582 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:819 +#: main.c:583 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:820 +#: main.c:584 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i includefile\t\t--include=fitxer a incloure\n" -#: main.c:821 +#: main.c:585 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l library\t\t--load=biblioteca\n" -#: main.c:822 -msgid "\t-L [fatal]\t\t--lint[=fatal]\n" +#: main.c:586 +#, fuzzy +msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: 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:824 +#: main.c:587 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:825 +#: main.c:588 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:826 +#: main.c:589 +msgid "\t-n\t\t\t--non-decimal-data\n" +msgstr "\t-n\t\t\t--non-decimal-data\n" + +#: main.c:590 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[file]\t\t--pretty-print[=file]\n" -#: main.c:827 +#: main.c:591 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:828 +#: main.c:592 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[file]\t\t--profile[=file]\n" -#: main.c:829 +#: main.c:593 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:830 +#: main.c:594 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:831 +#: main.c:595 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:832 +#: main.c:596 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:833 +#: main.c:597 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:835 +#: main.c:599 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:838 +#: main.c:602 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3167,7 +3172,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:847 +#: main.c:611 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3179,7 +3184,7 @@ msgstr "" "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 +#: main.c:615 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3189,7 +3194,7 @@ msgstr "" "De forma predeterminada llegeix l'entrada estndard i escriu a la sortida " "estndar.\n" -#: main.c:855 +#: main.c:619 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3199,7 +3204,7 @@ msgstr "" "\tgawk '{ sum += $1 }; END { print sum }' fitxer\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:880 +#: main.c:644 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3218,7 +3223,7 @@ msgstr "" "Llicncia, o (a la vostra elecci) qualsevol versi posterior.\n" "\n" -#: main.c:888 +#: main.c:652 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" @@ -3232,7 +3237,7 @@ msgstr "" "Per a ms detalls consulteu la Llicncia Pblica General de GNU.\n" "\n" -#: main.c:894 +#: main.c:658 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" @@ -3240,16 +3245,16 @@ msgstr "" "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 +#: main.c:695 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft no permet inicialitzar FS a un tabulador en la versi POSIX de awk" -#: main.c:1208 +#: main.c:982 #, c-format msgid "unknown value for field spec: %d\n" msgstr "valor desconegut per a l'especificaci de camp: %d\n" -#: main.c:1306 +#: main.c:1080 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3258,99 +3263,117 @@ msgstr "" "%s: `%s' l'argument per a `-v' no est en forma `var=valor'\n" "\n" -#: main.c:1332 +#: main.c:1106 #, c-format msgid "`%s' is not a legal variable name" msgstr "`%s' no s nom legal de variable" -#: main.c:1335 +#: main.c:1109 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "`%s' no s un valor de variable, s'esperava fitxer `%s=%s'" -#: main.c:1339 +#: main.c:1113 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "" "no es pot usar el nom de la funci integrada `%s' com a nom de variable" -#: main.c:1344 +#: main.c:1118 #, c-format msgid "cannot use function `%s' as variable name" msgstr "no es pot usar el nom de la funci interna `%s' com nom de variable" -#: main.c:1397 +#: main.c:1171 msgid "floating point exception" msgstr "excepci de coma flotant" -#: main.c:1404 +#: main.c:1178 msgid "fatal error: internal error" msgstr "error fatal: error intern" -#: main.c:1419 +#: main.c:1193 msgid "fatal error: internal error: segfault" msgstr "error fatal: error intern: segfault" -#: main.c:1431 +#: main.c:1205 msgid "fatal error: internal error: stack overflow" msgstr "error fatal: error intern: sobreeiximent de pila" -#: main.c:1490 +#: main.c:1264 #, c-format msgid "no pre-opened fd %d" msgstr "no s'ha pre-obert el descriptor fd per a %d" -#: main.c:1497 +#: main.c:1271 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "no es pot pre-obrir /dev/null per al descriptor fd %d" -#: mpfr.c:550 +#: main.c:1485 +msgid "empty argument to `-e/--source' ignored" +msgstr "s'ignonar l'argument buit de `-e/--source'" + +#: main.c:1556 +msgid "-M ignored: MPFR/GMP support not compiled in" +msgstr "" + +#: main.c:1577 +#, c-format +msgid "%s: option `-W %s' unrecognized, ignored\n" +msgstr "%s: no es reconeix l'opci `-W %s', ser ignorada\n" + +#: main.c:1630 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: l'opci requereix un argument -- %c\n" + +#: mpfr.c:557 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "Valor PREC `%.*s' no s vlid" -#: mpfr.c:608 +#: mpfr.c:615 #, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "Valor RNDMODE `%.*s' no s vlid" -#: mpfr.c:698 +#: mpfr.c:711 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: s'ha rebut un argument que no s numric" -#: mpfr.c:800 +#: mpfr.c:820 msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%Rg): el valor negatiu donar resultats estranys" -#: mpfr.c:804 +#: mpfr.c:824 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg): el valor fraccionari ser truncat" -#: mpfr.c:816 +#: mpfr.c:836 #, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "cmpl(%Zd): els valors negatius donaran resultats estranys" -#: mpfr.c:835 +#: mpfr.c:855 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: s'ha rebut un argument no numric #%d" -#: mpfr.c:845 +#: mpfr.c:865 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: l'argument #%d t valor no vlid %Rg, s'usar 0" -#: mpfr.c:857 +#: mpfr.c:877 msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "%s: l'argument #%d amb valor negatiu %Rg donar resultats estranys" -#: mpfr.c:863 +#: mpfr.c:883 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: l'argument #%d amb valor fraccional %Rg ser truncat" -#: mpfr.c:878 +#: mpfr.c:898 #, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "%s: l'argument #%d amb valor negatiu %Zd donar resultats estranys" @@ -3360,24 +3383,24 @@ msgstr "%s: l'argument #%d amb valor negatiu %Zd donar resultats estranys" msgid "cmd. line:" msgstr "lnia cmd.:" -#: node.c:421 +#: node.c:409 msgid "backslash at end of string" msgstr "barra invertida al final de la cadena" -#: node.c:500 +#: node.c:488 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "l'antic awk no dna suport a la seqencia d'escapada `\\%c'" -#: node.c:551 +#: node.c:539 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX no permet seqncies d'escapada `\\x'" -#: node.c:557 +#: node.c:545 msgid "no hex digits in `\\x' escape sequence" msgstr "no hi ha dgits hexadecimals en la seqncia d'escapada `\\x'" -#: node.c:579 +#: node.c:567 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3386,12 +3409,12 @@ msgstr "" "probablement no s'han interpretat els carcters hex escape \\x%.*s of %d de " "la manera que esperveu" -#: node.c:594 +#: node.c:582 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "la seqncia d'escapada `\\%c' s tractada com a una simple `%c'" -#: node.c:739 +#: node.c:726 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3420,12 +3443,12 @@ msgid "sending profile to standard error" msgstr "enviant el perfil a l'eixida d'error estndard" #: profile.c:193 -#, c-format +#, fuzzy, c-format msgid "" -"\t# %s block(s)\n" +"\t# %s rule(s)\n" "\n" msgstr "" -"\t# %s bloc(s)\n" +"\t# Regla(es)\n" "\n" #: profile.c:198 @@ -3442,11 +3465,11 @@ msgstr "" msgid "internal error: %s with null vname" msgstr "error intern: %s amb vname nul" -#: profile.c:537 +#: profile.c:538 msgid "internal error: builtin with null fname" msgstr "error intern: funci integrada amb fname nul" -#: profile.c:949 +#: profile.c:958 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" @@ -3455,12 +3478,12 @@ msgstr "" "\t# Extensions carregades (-l i/o @load)\n" "\n" -#: profile.c:972 +#: profile.c:981 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# perfil gawk, creat %s\n" -#: profile.c:1475 +#: profile.c:1521 #, c-format msgid "" "\n" @@ -3469,7 +3492,7 @@ msgstr "" "\n" "\t# Funcions, llistades alfabticament\n" -#: profile.c:1513 +#: profile.c:1559 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: tipus desconegut de redireccionament %d" @@ -3479,74 +3502,111 @@ msgstr "redir2str: tipus desconegut de redireccionament %d" msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "el component regexp `%.*s' probablement hauria de ser `[%.*s]'" -#: regcomp.c:131 +#: regcomp.c:139 msgid "Success" msgstr "xit" -#: regcomp.c:134 +#: regcomp.c:142 msgid "No match" msgstr "No hi ha concordana" -#: regcomp.c:137 +#: regcomp.c:145 msgid "Invalid regular expression" msgstr "Expressi regular no vlida" -#: regcomp.c:140 +#: regcomp.c:148 msgid "Invalid collation character" msgstr "Carcter de comparaci no vlid" -#: regcomp.c:143 +#: regcomp.c:151 msgid "Invalid character class name" msgstr "Nom de classe de carcters no vlid" -#: regcomp.c:146 +#: regcomp.c:154 msgid "Trailing backslash" msgstr "Barra invertida extra al final" -#: regcomp.c:149 +#: regcomp.c:157 msgid "Invalid back reference" msgstr "Referncia cap endarrere no vlida" -#: regcomp.c:152 -msgid "Unmatched [ or [^" +#: regcomp.c:160 +#, fuzzy +msgid "Unmatched [, [^, [:, [., or [=" msgstr "[ o [^ desemparellats" -#: regcomp.c:155 +#: regcomp.c:163 msgid "Unmatched ( or \\(" msgstr "( o \\( desemparellats" -#: regcomp.c:158 +#: regcomp.c:166 msgid "Unmatched \\{" msgstr "\\{ desemparellat" -#: regcomp.c:164 +#: regcomp.c:169 +msgid "Invalid content of \\{\\}" +msgstr "Contingut no vlid de \\{\\}" + +#: regcomp.c:172 msgid "Invalid range end" msgstr "Final de rang no vlid" -#: regcomp.c:167 +#: regcomp.c:175 msgid "Memory exhausted" msgstr "Memria exhaurida" -#: regcomp.c:170 +#: regcomp.c:178 msgid "Invalid preceding regular expression" msgstr "Expressi regular precedent no vlida" -#: regcomp.c:173 +#: regcomp.c:181 msgid "Premature end of regular expression" msgstr "F prematura de l'expressi regular" -#: regcomp.c:179 +#: regcomp.c:184 +msgid "Regular expression too big" +msgstr "L'expressi regular s massa gran" + +#: regcomp.c:187 msgid "Unmatched ) or \\)" msgstr ") o \\) desemparellats" -#: regcomp.c:704 +#: regcomp.c:712 msgid "No previous regular expression" msgstr "No hi ha una expressi regular prvia" -#: symbol.c:741 +#: symbol.c:677 +#, fuzzy, c-format +msgid "function `%s': can't use function `%s' as a parameter name" +msgstr "funci `%s: no pot usar el nom de la funci com a parmetre" + +#: symbol.c:809 msgid "can not pop main context" msgstr "no es pot mostrar el context principal" +#~ msgid "`getline var' invalid inside `%s' rule" +#~ msgstr "`getline var' no s vlid a dins de la regla `%s'" + +#~ msgid "no (known) protocol supplied in special filename `%s'" +#~ msgstr "" +#~ "no s'aporta cap protocol (conegut) en el nom del fitxer especial `%s'" + +#~ msgid "special file name `%s' is incomplete" +#~ msgstr "el nom del fitxer especial `%s' est incomplet" + +#~ msgid "must supply a remote hostname to `/inet'" +#~ msgstr "s'ha de subministrar un nom de sistema remot a `/inet'" + +#~ msgid "must supply a remote port to `/inet'" +#~ msgstr "s'ha de subministrar un port remot a `/inet'" + +#~ msgid "" +#~ "\t# %s block(s)\n" +#~ "\n" +#~ msgstr "" +#~ "\t# %s bloc(s)\n" +#~ "\n" + #~ msgid "reference to uninitialized element `%s[\"%s\"]'" #~ msgstr "referncia a un element sense valor inicial `%s[\"%s\"]'" @@ -3633,9 +3693,6 @@ msgstr "no es pot mostrar el context principal" #~ msgid "illegal type (%s) in tree_eval" #~ msgstr "tipus illegal (%s) en tree_eval" -#~ msgid "attempt to use function `%s' as array" -#~ msgstr "s'ha intentat usar la funci %s com a una matriu" - #~ msgid "`%s' is a function, assignment is not allowed" #~ msgstr "%s s una funci, l'assignaci no s permesa" @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.0.0h\n" -"Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2014-04-08 19:23+0300\n" +"Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" +"POT-Creation-Date: 2015-02-26 20:05+0200\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" @@ -40,9 +40,9 @@ msgstr "forsg p at bruge skalarparameteren '%s' som et array" msgid "attempt to use scalar `%s' as an array" msgstr "forsg p at bruge skalar '%s' som et array" -#: 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 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 +#: builtin.c:1665 builtin.c:2092 builtin.c:2106 eval.c:1149 eval.c:1153 +#: eval.c:1558 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "forsg p at bruge array '%s' i skalarsammenhng" @@ -98,415 +98,420 @@ 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:1314 +#: array.c:1313 #, c-format msgid "`%s' is invalid as a function name" msgstr "'%s' er ugyldigt som funktionsnavn" -#: array.c:1318 +#: array.c:1317 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "funktionen for sorteringssammenligning '%s' er ikke defineret" -#: awkgram.y:233 +#: awkgram.y:226 #, c-format msgid "%s blocks must have an action part" msgstr "%s-blokke skal have en handlingsdel" -#: awkgram.y:236 +#: awkgram.y:229 msgid "each rule must have a pattern or an action part" msgstr "hver regel skal have et mnster eller en handlingsdel" -#: awkgram.y:325 awkgram.y:336 +#: awkgram.y:320 awkgram.y:331 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "" "gamle versioner af awk understtter ikke flere 'BEGIN'- eller 'END'-regler" -#: awkgram.y:373 +#: awkgram.y:368 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "'%s' er en indbygget funktion, den kan ikke omdefineres" -#: awkgram.y:419 +#: awkgram.y:417 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "regexp-konstanten '//' ser ud som en C++-kommentar, men er det ikke" -#: awkgram.y:423 +#: awkgram.y:421 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "regexp-konstanten '/%s/' ser ud som en C-kommentar, men er det ikke" -#: awkgram.y:515 +#: awkgram.y:513 #, c-format msgid "duplicate case values in switch body: %s" msgstr "dublet case-vrdier i switch-krop %s" -#: awkgram.y:536 +#: awkgram.y:534 msgid "duplicate `default' detected in switch body" msgstr "dublet 'default' opdaget i switch-krop" -#: awkgram.y:796 awkgram.y:3723 +#: awkgram.y:794 awkgram.y:3751 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:3715 +#: awkgram.y:803 awkgram.y:3743 msgid "`continue' is not allowed outside a loop" msgstr "'continue' uden for en lkke er ikke tilladt" -#: awkgram.y:815 +#: awkgram.y:813 #, c-format msgid "`next' used in %s action" msgstr "'next' brugt i %s-handling" -#: awkgram.y:824 +#: awkgram.y:822 #, c-format msgid "`nextfile' used in %s action" msgstr "'nextfile' brugt i %s-handling" -#: awkgram.y:848 +#: awkgram.y:846 msgid "`return' used outside function context" msgstr "'return' brugt uden for funktion" -#: awkgram.y:922 +#: awkgram.y:920 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" "alenestende 'print' i BEGIN eller END-regel skulle muligvis vre 'print " "\"\"'" -#: awkgram.y:988 awkgram.y:1037 +#: awkgram.y:986 awkgram.y:1035 msgid "`delete' is not allowed with SYMTAB" msgstr "" -#: awkgram.y:990 awkgram.y:1039 +#: awkgram.y:988 awkgram.y:1037 msgid "`delete' is not allowed with FUNCTAB" msgstr "" -#: awkgram.y:1024 awkgram.y:1028 +#: awkgram.y:1022 awkgram.y:1026 msgid "`delete(array)' is a non-portable tawk extension" msgstr "'delete array' er en ikke-portabel udvidelse fra tawk" -#: awkgram.y:1149 +#: awkgram.y:1147 msgid "multistage two-way pipelines don't work" msgstr "flertrins dobbeltrettede datakanaler fungerer ikke" -#: awkgram.y:1264 +#: awkgram.y:1262 msgid "regular expression on right of assignment" msgstr "regulrt udtryk i hjreleddet af en tildeling" -#: awkgram.y:1275 +#: awkgram.y:1273 msgid "regular expression on left of `~' or `!~' operator" msgstr "regulrt udtryk p venstre side af en '~'- eller '!~'-operator" -#: awkgram.y:1291 awkgram.y:1442 +#: awkgram.y:1289 awkgram.y:1431 msgid "old awk does not support the keyword `in' except after `for'" msgstr "" "gamle versioner af awk understtter ikke ngleordet 'in' undtagen efter 'for'" -#: awkgram.y:1301 +#: awkgram.y:1299 msgid "regular expression on right of comparison" msgstr "regulrt udtryk i hjreleddet af en sammenligning" -#: awkgram.y:1417 -#, c-format -msgid "`getline var' invalid inside `%s' rule" -msgstr "'getline var' ugyldig inden i '%s' regel" - -#: awkgram.y:1420 +#: awkgram.y:1411 #, c-format -msgid "`getline' invalid inside `%s' rule" -msgstr "'getline' ugyldig inden i '%s' regel" +msgid "non-redirected `getline' invalid inside `%s' rule" +msgstr "ikke-omdirigeret 'getline' ugyldig inden i '%s'-regel" -#: awkgram.y:1425 +#: awkgram.y:1414 msgid "non-redirected `getline' undefined inside END action" msgstr "ikke-omdirigeret 'getline' udefineret inden i END-handling" -#: awkgram.y:1444 +#: awkgram.y:1433 msgid "old awk does not support multidimensional arrays" msgstr "gamle versioner af awk understtter ikke flerdimensionale array" -#: awkgram.y:1541 +#: awkgram.y:1530 msgid "call of `length' without parentheses is not portable" msgstr "kald af 'length' uden parenteser er ikke portabelt" -#: awkgram.y:1607 +#: awkgram.y:1596 msgid "indirect function calls are a gawk extension" msgstr "indirekte funktionskald er en gawk-udvidelse" -#: awkgram.y:1620 +#: awkgram.y:1609 #, c-format msgid "can not use special variable `%s' for indirect function call" msgstr "kan ikke bruge specialvariabel '%s' til indirekte funktionskald" -#: awkgram.y:1698 +#: awkgram.y:1635 +#, fuzzy, c-format +msgid "attempt to use non-function `%s' in function call" +msgstr "forsg p at bruge funktionen '%s' som et array" + +#: awkgram.y:1699 msgid "invalid subscript expression" msgstr "ugyldigt indeksudtryk" -#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2045 awkgram.y:2065 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "advarsel: " -#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 +#: awkgram.y:2063 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "fatal: " -#: awkgram.y:2116 +#: awkgram.y:2113 msgid "unexpected newline or end of string" msgstr "uventet nylinjetegn eller strengafslutning" -#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 +#: awkgram.y:2392 awkgram.y:2468 awkgram.y:2691 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:2384 awkgram.y:2509 +#: awkgram.y:2393 awkgram.y:2518 #, fuzzy, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "kan ikke bne kildefilen '%s' for lsning (%s)" -#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 +#: awkgram.y:2395 awkgram.y:2469 awkgram.y:2519 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "ukendt rsag" -#: awkgram.y:2395 awkgram.y:2419 +#: awkgram.y:2404 awkgram.y:2428 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "" -#: awkgram.y:2408 +#: awkgram.y:2417 #, c-format msgid "already included source file `%s'" msgstr "allerede inkluderet kildefil '%s'" -#: awkgram.y:2409 +#: awkgram.y:2418 #, fuzzy, c-format msgid "already loaded shared library `%s'" msgstr "allerede inkluderet kildefil '%s'" -#: awkgram.y:2444 +#: awkgram.y:2453 msgid "@include is a gawk extension" msgstr "@include er en gawk-udvidelse" -#: awkgram.y:2450 +#: awkgram.y:2459 msgid "empty filename after @include" msgstr "tomt filnavn efter @include" -#: awkgram.y:2494 +#: awkgram.y:2503 #, fuzzy msgid "@load is a gawk extension" msgstr "@include er en gawk-udvidelse" -#: awkgram.y:2500 +#: awkgram.y:2509 #, fuzzy msgid "empty filename after @load" msgstr "tomt filnavn efter @include" -#: awkgram.y:2634 +#: awkgram.y:2643 msgid "empty program text on command line" msgstr "tom programtekst p kommandolinjen" -#: awkgram.y:2749 +#: awkgram.y:2758 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "kan ikke lse kildefilen '%s' (%s)" -#: awkgram.y:2760 +#: awkgram.y:2769 #, c-format msgid "source file `%s' is empty" msgstr "kildefilen '%s' er tom" -#: awkgram.y:2937 +#: awkgram.y:2828 +#, c-format +msgid "PEBKAC error: invalid character '\\%03o' in source code" +msgstr "" + +#: awkgram.y:2959 msgid "source file does not end in newline" msgstr "kildefilen slutter ikke med en ny linje" -#: awkgram.y:3042 +#: awkgram.y:3062 msgid "unterminated regexp ends with `\\' at end of file" msgstr "uafsluttet regulrt udtryk slutter med '\\' i slutningen af filen" -#: awkgram.y:3066 +#: awkgram.y:3089 #, 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:3070 +#: awkgram.y:3093 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "regex-ndringstegn '/.../%c' fra tawk virker ikke i gawk" -#: awkgram.y:3077 +#: awkgram.y:3100 msgid "unterminated regexp" msgstr "uafsluttet regulrt udtryk" -#: awkgram.y:3081 +#: awkgram.y:3104 msgid "unterminated regexp at end of file" msgstr "uafsluttet regulrt udtryk i slutningen af filen" -#: awkgram.y:3140 +#: awkgram.y:3162 msgid "use of `\\ #...' line continuation is not portable" msgstr "brug af '\\ #...' for linjefortsttelse er ikke portabelt" -#: awkgram.y:3156 +#: awkgram.y:3178 msgid "backslash not last character on line" msgstr "sidste tegn p linjen er ikke en omvendt skrstreg" -#: awkgram.y:3217 +#: awkgram.y:3239 msgid "POSIX does not allow operator `**='" msgstr "POSIX tillader ikke operatoren '**='" -#: awkgram.y:3219 +#: awkgram.y:3241 msgid "old awk does not support operator `**='" msgstr "gamle versioner af awk understtter ikke operatoren '**='" -#: awkgram.y:3228 +#: awkgram.y:3250 msgid "POSIX does not allow operator `**'" msgstr "POSIX tillader ikke operatoren '**'" -#: awkgram.y:3230 +#: awkgram.y:3252 msgid "old awk does not support operator `**'" msgstr "gamle versioner af awk understtter ikke operatoren '**'" -#: awkgram.y:3265 +#: awkgram.y:3287 msgid "operator `^=' is not supported in old awk" msgstr "operatoren '^=' understttes ikke i gamle versioner af awk" -#: awkgram.y:3273 +#: awkgram.y:3295 msgid "operator `^' is not supported in old awk" msgstr "operatoren '^' understttes ikke i gamle versioner af awk" -#: awkgram.y:3366 awkgram.y:3382 command.y:1178 +#: awkgram.y:3392 awkgram.y:3410 command.y:1180 msgid "unterminated string" msgstr "uafsluttet streng" -#: awkgram.y:3603 +#: awkgram.y:3631 #, c-format msgid "invalid char '%c' in expression" msgstr "ugyldigt tegn '%c' i udtryk" -#: awkgram.y:3650 +#: awkgram.y:3678 #, c-format msgid "`%s' is a gawk extension" msgstr "'%s' er en gawk-udvidelse" -#: awkgram.y:3655 +#: awkgram.y:3683 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX tillader ikke '%s'" -#: awkgram.y:3663 +#: awkgram.y:3691 #, c-format msgid "`%s' is not supported in old awk" msgstr "'%s' understttes ikke i gamle versioner af awk" -#: awkgram.y:3753 +#: awkgram.y:3781 msgid "`goto' considered harmful!\n" msgstr "'goto' anses for skadelig!\n" -#: awkgram.y:3787 +#: awkgram.y:3815 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d er et ugyldigt antal argumenter for %s" -#: awkgram.y:3822 +#: awkgram.y:3850 #, 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:3827 +#: awkgram.y:3855 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s: tredje argument er ikke et ndringsbart objekt" -#: awkgram.y:3910 awkgram.y:3913 +#: awkgram.y:3938 awkgram.y:3941 msgid "match: third argument is a gawk extension" msgstr "match: tredje argument er en gawk-udvidelse" -#: awkgram.y:3967 awkgram.y:3970 +#: awkgram.y:3995 awkgram.y:3998 msgid "close: second argument is a gawk extension" msgstr "close: andet argument er en gawk-udvidelse" -#: awkgram.y:3982 +#: awkgram.y:4010 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "brug af dcgettext(_\"...\") er forkert: fjern det indledende " "understregningstegn" -#: awkgram.y:3997 +#: awkgram.y:4025 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "brug af dcgettext(_\"...\") er forkert: fjern det indledende " "understregningstegn" -#: awkgram.y:4016 +#: awkgram.y:4044 #, fuzzy msgid "index: regexp constant as second argument is not allowed" msgstr "indeks: andet argument er ikke en streng" -#: awkgram.y:4069 +#: awkgram.y:4097 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funktionen '%s': parameteren '%s' overskygger en global variabel" -#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4154 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:4127 +#: awkgram.y:4155 msgid "sending variable list to standard error" msgstr "sender variabelliste til standard fejl" -#: awkgram.y:4135 +#: awkgram.y:4163 #, c-format msgid "%s: close failed (%s)" msgstr "%s: lukning mislykkedes (%s)" -#: awkgram.y:4160 +#: awkgram.y:4188 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() kaldt to gange!" -#: awkgram.y:4168 +#: awkgram.y:4196 msgid "there were shadowed variables." msgstr "der var skyggede variable." -#: awkgram.y:4239 +#: awkgram.y:4267 #, c-format msgid "function name `%s' previously defined" msgstr "funktionsnavnet '%s' er allerede defineret" -#: awkgram.y:4285 +#: awkgram.y:4313 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "funktionen '%s': kan ikke bruge funktionsnavn som parameternavn" -#: awkgram.y:4288 +#: awkgram.y:4316 #, 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:4296 +#: awkgram.y:4324 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funktionen '%s': parameter %d, '%s', er samme som parameter %d" -#: awkgram.y:4383 awkgram.y:4389 +#: awkgram.y:4411 awkgram.y:4417 #, c-format msgid "function `%s' called but never defined" msgstr "funktionen '%s' kaldt, men aldrig defineret" -#: awkgram.y:4393 +#: awkgram.y:4421 #, c-format msgid "function `%s' defined but never called directly" msgstr "funktionen '%s' defineret, men aldrig kaldt direkte" -#: awkgram.y:4425 +#: awkgram.y:4453 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "konstant regulrt udtryk for parameter %d giver en boolesk vrdi" -#: awkgram.y:4484 +#: awkgram.y:4468 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -515,21 +520,21 @@ msgstr "" "funktionen '%s' kaldt med blanktegn mellem navnet og '(',\n" "eller brugt som en variabel eller et array" -#: awkgram.y:4720 +#: awkgram.y:4674 msgid "division by zero attempted" msgstr "forsgte at dividere med nul" -#: awkgram.y:4729 +#: awkgram.y:4683 #, c-format msgid "division by zero attempted in `%%'" msgstr "forsgte at dividere med nul i '%%'" -#: awkgram.y:5049 +#: awkgram.y:5003 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" -#: awkgram.y:5052 +#: awkgram.y:5006 #, fuzzy, c-format msgid "invalid target of assignment (opcode %s)" msgstr "%d er et ugyldigt antal argumenter for %s" @@ -568,189 +573,199 @@ msgstr "fflush: kan ikke rense: filen '%s' bnet for lsning, ikke skrivning" 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:362 +#: builtin.c:351 msgid "index: received non-string first argument" msgstr "indeks: frste argument er ikke en streng" -#: builtin.c:364 +#: builtin.c:353 msgid "index: received non-string second argument" msgstr "indeks: andet argument er ikke en streng" -#: builtin.c:488 mpfr.c:757 +#: builtin.c:466 mpfr.c:777 msgid "int: received non-numeric argument" msgstr "int: fik et ikke-numerisk argument" -#: builtin.c:525 +#: builtin.c:503 msgid "length: received array argument" msgstr "length: fik et array-argument" -#: builtin.c:528 +#: builtin.c:506 msgid "`length(array)' is a gawk extension" msgstr "'length(array)' er en gawk-udvidelse" -#: builtin.c:544 +#: builtin.c:525 msgid "length: received non-string argument" msgstr "length: fik et argument som ikke er en streng" -#: builtin.c:575 +#: builtin.c:554 msgid "log: received non-numeric argument" msgstr "log: fik et ikke-numerisk argument" -#: builtin.c:578 +#: builtin.c:557 #, c-format msgid "log: received negative argument %g" msgstr "log: fik et negativt argument %g" -#: builtin.c:776 builtin.c:781 +#: builtin.c:755 builtin.c:760 builtin.c:911 msgid "fatal: must use `count$' on all formats or none" msgstr "fatal: skal bruge 'count$' p alle formater eller ikke nogen" -#: builtin.c:851 +#: builtin.c:830 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "feltbredde ignoreret for '%%'-angivelse" -#: builtin.c:853 +#: builtin.c:832 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "prcision ignoreret for '%%'-angivelse" -#: builtin.c:855 +#: builtin.c:834 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "feltbredde og prcision ignoreret for '%%'-angivelse" -#: builtin.c:906 +#: builtin.c:885 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal: '$' tillades ikke i awk-formater" -#: builtin.c:915 +#: builtin.c:894 msgid "fatal: arg count with `$' must be > 0" msgstr "fatal: argumentantallet med '$' skal vre > 0" -#: builtin.c:919 +#: builtin.c:898 #, 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:923 +#: builtin.c:902 msgid "fatal: `$' not permitted after period in format" msgstr "fatal: '$' tillades ikke efter et punktum i formatet" -#: builtin.c:939 +#: builtin.c:921 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" "fatal: intet '$' angivet for bredde eller prcision af positionsangivet felt" -#: builtin.c:1009 +#: builtin.c:991 msgid "`l' is meaningless in awk formats; ignored" msgstr "'l' er meningslst i awk-formater, ignoreret" -#: builtin.c:1013 +#: builtin.c:995 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fatal: 'l' tillades ikke i POSIX awk-formater" -#: builtin.c:1026 +#: builtin.c:1008 msgid "`L' is meaningless in awk formats; ignored" msgstr "'L' er meningslst i awk-formater, ignoreret" -#: builtin.c:1030 +#: builtin.c:1012 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "fatal: 'L' tillades ikke i POSIX awk-formater" -#: builtin.c:1043 +#: builtin.c:1025 msgid "`h' is meaningless in awk formats; ignored" msgstr "'h' er meningslst i awk-formater, ignoreret" -#: builtin.c:1047 +#: builtin.c:1029 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fatal: 'h' tillades ikke i POSIX awk-formater" -#: builtin.c:1463 +#: builtin.c:1055 +#, fuzzy, c-format +msgid "[s]printf: value %g is too big for %%c format" +msgstr "[s]printf: vrdi %g er uden for omrde for '%%%c'-format" + +#: builtin.c:1068 +#, fuzzy, c-format +msgid "[s]printf: value %g is not a valid wide character" +msgstr "[s]printf: vrdi %g er uden for omrde for '%%%c'-format" + +#: builtin.c:1454 #, 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:1561 +#: builtin.c:1552 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "ignorerer ukendt formatspecificeringstegn '%c': intet argument konverteret" -#: builtin.c:1566 +#: builtin.c:1557 msgid "fatal: not enough arguments to satisfy format string" msgstr "fatal: for f argumenter til formatstrengen" -#: builtin.c:1568 +#: builtin.c:1559 msgid "^ ran out for this one" msgstr "^ sluttede her" -#: builtin.c:1575 +#: builtin.c:1566 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: formatspecifikation har intet kommandobogstav" -#: builtin.c:1578 +#: builtin.c:1569 msgid "too many arguments supplied for format string" msgstr "for mange argumenter til formatstrengen" -#: builtin.c:1634 +#: builtin.c:1625 #, fuzzy msgid "sprintf: no arguments" msgstr "printf: ingen argumenter" -#: builtin.c:1657 builtin.c:1668 +#: builtin.c:1648 builtin.c:1659 msgid "printf: no arguments" msgstr "printf: ingen argumenter" -#: builtin.c:1711 +#: builtin.c:1702 msgid "sqrt: received non-numeric argument" msgstr "sqrt: fik ikke-numerisk argument" -#: builtin.c:1715 +#: builtin.c:1706 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: kaldt med negativt argument %g" -#: builtin.c:1746 +#: builtin.c:1737 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: lngden %g er ikke >= 1" -#: builtin.c:1748 +#: builtin.c:1739 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: lngden %g er ikke >= 0" -#: builtin.c:1755 +#: builtin.c:1753 #, 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:1760 +#: builtin.c:1758 #, 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:1772 +#: builtin.c:1770 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: startindeks %g er ugyldigt, bruger 1" -#: builtin.c:1777 +#: builtin.c:1775 #, 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:1802 +#: builtin.c:1798 msgid "substr: source string is zero length" msgstr "substr: kildestrengen er tom" -#: builtin.c:1818 +#: builtin.c:1812 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: startindeks %g er forbi slutningen p strengen" -#: builtin.c:1826 +#: builtin.c:1820 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -758,191 +773,197 @@ msgstr "" "substr: lngden %g ved startindeks %g overskrider lngden af frste argument " "(%lu)" -#: builtin.c:1900 +#: builtin.c:1890 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: formatvrdi i PROCINFO[\"strftime\"] har numerisk type" -#: builtin.c:1923 +#: builtin.c:1913 msgid "strftime: received non-numeric second argument" msgstr "strftime: fik et ikke-numerisk andet argument" -#: builtin.c:1927 +#: builtin.c:1917 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:1934 +#: builtin.c:1924 msgid "strftime: received non-string first argument" msgstr "strftime: fik et frste argument som ikke er en streng" -#: builtin.c:1941 +#: builtin.c:1931 msgid "strftime: received empty format string" msgstr "strftime: fik en tom formatstreng" -#: builtin.c:2007 +#: builtin.c:1997 msgid "mktime: received non-string argument" msgstr "mktime: fik et argument som ikke er en streng" -#: builtin.c:2024 +#: builtin.c:2014 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:2059 +#: builtin.c:2049 msgid "'system' function not allowed in sandbox mode" msgstr "'system'-funktion ikke tilladt i sandkasse-tilstand" -#: builtin.c:2064 +#: builtin.c:2054 msgid "system: received non-string argument" msgstr "system: fik et argument som ikke er en streng" -#: builtin.c:2184 +#: builtin.c:2174 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "reference til ikke-initieret felt '$%d'" -#: builtin.c:2271 +#: builtin.c:2259 msgid "tolower: received non-string argument" msgstr "tolower: fik et argument som ikke er en streng" -#: builtin.c:2305 +#: builtin.c:2290 msgid "toupper: received non-string argument" msgstr "toupper: fik et argument som ikke er en streng" -#: builtin.c:2341 mpfr.c:672 +#: builtin.c:2323 mpfr.c:679 msgid "atan2: received non-numeric first argument" msgstr "atan2: fik et ikke-numerisk frste argument" -#: builtin.c:2343 mpfr.c:674 +#: builtin.c:2325 mpfr.c:681 msgid "atan2: received non-numeric second argument" msgstr "atan2: fik et ikke-numerisk andet argument" -#: builtin.c:2362 +#: builtin.c:2344 msgid "sin: received non-numeric argument" msgstr "sin: fik et ikke-numerisk argument" -#: builtin.c:2378 +#: builtin.c:2360 msgid "cos: received non-numeric argument" msgstr "cos: fik et ikke-numerisk argument" -#: builtin.c:2431 mpfr.c:1156 +#: builtin.c:2413 mpfr.c:1176 msgid "srand: received non-numeric argument" msgstr "srand: fik et ikke-numerisk argument" -#: builtin.c:2462 +#: builtin.c:2444 msgid "match: third argument is not an array" msgstr "match: tredje argument er ikke et array" -#: builtin.c:2734 -msgid "gensub: third argument of 0 treated as 1" +#: builtin.c:2705 +#, fuzzy, c-format +msgid "gensub: third argument `%.*s' treated as 1" +msgstr "gensub: 0 i tredje argument behandlet som 1" + +#: builtin.c:2720 +#, fuzzy, c-format +msgid "gensub: third argument %g treated as 1" msgstr "gensub: 0 i tredje argument behandlet som 1" -#: builtin.c:3030 +#: builtin.c:3020 msgid "lshift: received non-numeric first argument" msgstr "lshift: fik et ikke-numerisk frste argument" -#: builtin.c:3032 +#: builtin.c:3022 msgid "lshift: received non-numeric second argument" msgstr "lshift: fik et ikke-numerisk andet argument" -#: builtin.c:3038 +#: builtin.c:3028 #, 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:3040 +#: builtin.c:3030 #, fuzzy, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%lf, %lf): kommatalsvrdier vil blive trunkeret" -#: builtin.c:3042 +#: builtin.c:3032 #, 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:3067 +#: builtin.c:3057 msgid "rshift: received non-numeric first argument" msgstr "rshift: fik et ikke-numerisk frste argument" -#: builtin.c:3069 +#: builtin.c:3059 msgid "rshift: received non-numeric second argument" msgstr "rshift: fik et ikke-numerisk andet argument" -#: builtin.c:3075 +#: builtin.c:3065 #, 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:3077 +#: builtin.c:3067 #, fuzzy, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%lf, %lf): kommatalsvrdier vil blive trunkeret" -#: builtin.c:3079 +#: builtin.c:3069 #, 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:3104 mpfr.c:968 +#: builtin.c:3094 mpfr.c:988 #, fuzzy msgid "and: called with less than two arguments" msgstr "sqrt: kaldt med negativt argument %g" -#: builtin.c:3109 +#: builtin.c:3099 #, fuzzy, c-format msgid "and: argument %d is non-numeric" msgstr "exp: argumentet %g er uden for det tilladte omrde" -#: builtin.c:3113 +#: builtin.c:3103 #, 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:3136 mpfr.c:1000 +#: builtin.c:3126 mpfr.c:1020 #, fuzzy msgid "or: called with less than two arguments" msgstr "sqrt: kaldt med negativt argument %g" -#: builtin.c:3141 +#: builtin.c:3131 #, fuzzy, c-format msgid "or: argument %d is non-numeric" msgstr "exp: argumentet %g er uden for det tilladte omrde" -#: builtin.c:3145 +#: builtin.c:3135 #, 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:3167 mpfr.c:1031 +#: builtin.c:3157 mpfr.c:1051 #, fuzzy msgid "xor: called with less than two arguments" msgstr "sqrt: kaldt med negativt argument %g" -#: builtin.c:3173 +#: builtin.c:3163 #, fuzzy, c-format msgid "xor: argument %d is non-numeric" msgstr "exp: argumentet %g er uden for det tilladte omrde" -#: builtin.c:3177 +#: builtin.c:3167 #, 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:3202 mpfr.c:787 +#: builtin.c:3192 mpfr.c:807 msgid "compl: received non-numeric argument" msgstr "compl: fik et ikke-numerisk argument" -#: builtin.c:3208 +#: builtin.c:3198 #, fuzzy, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%lf): negative vrdier vil give mrkelige resultater" -#: builtin.c:3210 +#: builtin.c:3200 #, fuzzy, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%lf): kommatalsvrdier vil blive trunkeret" -#: builtin.c:3379 +#: builtin.c:3369 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: '%s' er ikke en gyldig lokalitetskategori" @@ -1224,42 +1245,48 @@ msgstr "" msgid "watch var - set a watchpoint for a variable." msgstr "" -#: command.y:1011 debug.c:401 msg.c:135 +#: command.y:901 +msgid "" +"where [N] - (same as backtrace) print trace of all or N innermost (outermost " +"if N < 0) frames." +msgstr "" + +#: command.y:1013 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "fejl: " -#: command.y:1051 +#: command.y:1053 #, fuzzy, c-format msgid "can't read command (%s)\n" msgstr "kan ikke omdirigere fra '%s' (%s)" -#: command.y:1065 +#: command.y:1067 #, fuzzy, c-format msgid "can't read command (%s)" msgstr "kan ikke omdirigere fra '%s' (%s)" -#: command.y:1116 +#: command.y:1118 #, fuzzy msgid "invalid character in command" msgstr "Ugyldigt tegnklassenavn" -#: command.y:1152 +#: command.y:1154 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "" -#: command.y:1222 +#: command.y:1224 #, c-format msgid "%s" msgstr "" -#: command.y:1284 +#: command.y:1286 #, fuzzy msgid "invalid character" msgstr "Ugyldigt sorteringstegn" -#: command.y:1455 +#: command.y:1457 #, c-format msgid "undefined command: %s\n" msgstr "" @@ -1775,69 +1802,71 @@ msgstr "'exit' kan ikke kaldes i den aktuelle kontekst" msgid "`return' not allowed in current context; statement ignored" msgstr "'exit' kan ikke kaldes i den aktuelle kontekst" -#: debug.c:5590 +#: debug.c:5604 #, fuzzy, c-format msgid "No symbol `%s' in current context" msgstr "forsg p at bruge array '%s' i skalarsammenhng" -#: 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 +#: dfa.c:1063 dfa.c:1066 dfa.c:1085 dfa.c:1095 dfa.c:1107 dfa.c:1143 +#: dfa.c:1152 dfa.c:1155 dfa.c:1160 dfa.c:1174 dfa.c:1222 msgid "unbalanced [" msgstr "" -#: dfa.c:1174 +#: dfa.c:1119 #, fuzzy msgid "invalid character class" msgstr "Ugyldigt tegnklassenavn" -#: dfa.c:1316 +#: dfa.c:1265 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "" -#: dfa.c:1366 +#: dfa.c:1327 msgid "unfinished \\ escape" msgstr "" -#: dfa.c:1513 regcomp.c:161 -msgid "Invalid content of \\{\\}" +#: dfa.c:1474 +#, fuzzy +msgid "invalid content of \\{\\}" msgstr "Ugyldigt indhold i \\{\\}" -#: dfa.c:1516 regcomp.c:176 -msgid "Regular expression too big" +#: dfa.c:1477 +#, fuzzy +msgid "regular expression too big" msgstr "Regulrt udtryk for stort" -#: dfa.c:1936 +#: dfa.c:1912 msgid "unbalanced (" msgstr "" -#: dfa.c:2062 +#: dfa.c:2038 msgid "no syntax specified" msgstr "" -#: dfa.c:2070 +#: dfa.c:2046 msgid "unbalanced )" msgstr "" -#: eval.c:394 +#: eval.c:396 #, c-format msgid "unknown nodetype %d" msgstr "ukendt nodetype %d" -#: eval.c:405 eval.c:419 +#: eval.c:407 eval.c:421 #, c-format msgid "unknown opcode %d" msgstr "ukendt opkode %d" -#: eval.c:416 +#: eval.c:418 #, c-format msgid "opcode %s not an operator or keyword" msgstr "opkode %s er ikke en operator eller et ngleord" -#: eval.c:472 +#: eval.c:474 msgid "buffer overflow in genflags2str" msgstr "bufferoverlb i genflags2str" -#: eval.c:675 +#: eval.c:676 #, c-format msgid "" "\n" @@ -1848,94 +1877,94 @@ msgstr "" "\t# Funktionskaldsstak:\n" "\n" -#: eval.c:704 +#: eval.c:705 msgid "`IGNORECASE' is a gawk extension" msgstr "'IGNORECASE' er en gawk-udvidelse" -#: eval.c:736 +#: eval.c:737 msgid "`BINMODE' is a gawk extension" msgstr "'BINMODE' er en gawk-udvidelse" -#: eval.c:794 +#: eval.c:795 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "BINMODE vrdi '%s' er ugyldig, behandles som 3" -#: eval.c:885 +#: eval.c:912 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "forkert '%sFMT'-specifikation '%s'" -#: eval.c:969 +#: eval.c:996 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "deaktiverer '--lint' p grund af en tildeling til 'LINT'" -#: eval.c:1147 +#: eval.c:1174 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "reference til ikke-initieret argument '%s'" -#: eval.c:1148 +#: eval.c:1175 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "reference til ikke-initieret variabel '%s'" -#: eval.c:1166 +#: eval.c:1193 msgid "attempt to field reference from non-numeric value" msgstr "forsg p at referere til et felt fra ikke-numerisk vrdi" -#: eval.c:1168 +#: eval.c:1195 msgid "attempt to field reference from null string" msgstr "forsg p at referere til et felt fra tom streng" -#: eval.c:1176 +#: eval.c:1203 #, c-format msgid "attempt to access field %ld" msgstr "forsg p at f adgang til felt %ld" -#: eval.c:1185 +#: eval.c:1212 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "reference til ikke-initieret felt '$%ld'" -#: eval.c:1272 +#: eval.c:1299 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "funktionen '%s' kaldt med flere argumenter end deklareret" -#: eval.c:1473 +#: eval.c:1500 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: uventet type `%s'" -#: eval.c:1569 +#: eval.c:1596 msgid "division by zero attempted in `/='" msgstr "forsgte at dividere med nul i '/='" -#: eval.c:1576 +#: eval.c:1603 #, c-format msgid "division by zero attempted in `%%='" msgstr "forsgte at dividere med nul i '%%='" -#: ext.c:89 ext.c:171 +#: ext.c:65 ext.c:147 msgid "extensions are not allowed in sandbox mode" msgstr "udvidelser er ikke tilladt i sandkasse-tilstand" -#: ext.c:92 +#: ext.c:68 #, fuzzy msgid "-l / @load are gawk extensions" msgstr "@include er en gawk-udvidelse" -#: ext.c:95 +#: ext.c:71 msgid "load_ext: received NULL lib_name" msgstr "" -#: ext.c:98 +#: ext.c:74 #, fuzzy, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "atalt: extension: kan ikke bne '%s' (%s)\n" -#: ext.c:104 +#: ext.c:80 #, fuzzy, c-format msgid "" "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" @@ -1943,31 +1972,31 @@ msgstr "" "fatalt: extension: bibliotek '%s': definer ikke " "'plugin_is_GPL_compatible' (%s)\n" -#: ext.c:110 +#: ext.c:86 #, fuzzy, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "" "fatalt: extension: bibliotek '%s': kan ikke kalde funktionen '%s' (%s)\n" -#: ext.c:114 +#: ext.c:90 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "" -#: ext.c:174 +#: ext.c:150 msgid "`extension' is a gawk extension" msgstr "'extension' er en gawk-udvidelse" -#: ext.c:177 +#: ext.c:153 msgid "extension: received NULL lib_name" msgstr "" -#: ext.c:180 +#: ext.c:156 #, fuzzy, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "atalt: extension: kan ikke bne '%s' (%s)\n" -#: ext.c:186 +#: ext.c:162 #, fuzzy, c-format msgid "" "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" @@ -1975,95 +2004,95 @@ msgstr "" "fatalt: extension: bibliotek '%s': definer ikke " "'plugin_is_GPL_compatible' (%s)\n" -#: ext.c:190 +#: ext.c:166 #, fuzzy, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "" "fatalt: extension: bibliotek '%s': kan ikke kalde funktionen '%s' (%s)\n" -#: ext.c:221 +#: ext.c:197 #, fuzzy msgid "make_builtin: missing function name" msgstr "extension: mangler funktionsnavn" -#: ext.c:236 +#: ext.c:212 #, fuzzy, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "extension: kan ikke omdefinere funktion '%s'" -#: ext.c:240 +#: ext.c:216 #, fuzzy, c-format msgid "make_builtin: function `%s' already defined" msgstr "extension: funktionen '%s' er allerede defineret" -#: ext.c:244 +#: ext.c:220 #, fuzzy, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "extension: funktionsnavnet '%s' er defineret tidligere" -#: ext.c:246 +#: ext.c:222 #, 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:249 ext.c:304 +#: ext.c:225 ext.c:280 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: negativt argumentantal for funktion '%s'" -#: ext.c:276 +#: ext.c:252 #, fuzzy msgid "extension: missing function name" msgstr "extension: mangler funktionsnavn" -#: ext.c:279 ext.c:283 +#: ext.c:255 ext.c:259 #, fuzzy, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: ugyldigt tegn '%c' i funktionsnavn '%s'" -#: ext.c:291 +#: ext.c:267 #, fuzzy, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: kan ikke omdefinere funktion '%s'" -#: ext.c:295 +#: ext.c:271 #, fuzzy, c-format msgid "extension: function `%s' already defined" msgstr "extension: funktionen '%s' er allerede defineret" -#: ext.c:299 +#: ext.c:275 #, fuzzy, c-format msgid "extension: function name `%s' previously defined" msgstr "funktionsnavnet '%s' er allerede defineret" -#: ext.c:301 +#: ext.c:277 #, fuzzy, c-format 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:375 +#: ext.c:351 #, 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:378 +#: ext.c:354 #, c-format msgid "function `%s': missing argument #%d" msgstr "funktion '%s': mangler argument nummer %d" -#: ext.c:395 +#: ext.c:371 #, 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:399 +#: ext.c:375 #, 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:413 +#: ext.c:389 msgid "dynamic loading of library not supported" msgstr "" @@ -2226,7 +2255,7 @@ msgstr "sqrt: kaldt med negativt argument %g" msgid "inplace_begin: in-place editing already active" msgstr "" -#: extension/inplace.c:133 extension/inplace.c:207 +#: extension/inplace.c:133 extension/inplace.c:210 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "" @@ -2255,55 +2284,55 @@ msgstr "'%s' er ikke et gyldigt variabelnavn" msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "" -#: extension/inplace.c:178 +#: extension/inplace.c:181 #, fuzzy, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "%s: lukning mislykkedes (%s)" -#: extension/inplace.c:185 +#: extension/inplace.c:188 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:188 +#: extension/inplace.c:191 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:191 +#: extension/inplace.c:194 #, fuzzy, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "%s: lukning mislykkedes (%s)" -#: extension/inplace.c:210 +#: extension/inplace.c:213 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:217 +#: extension/inplace.c:220 msgid "inplace_end: in-place editing not active" msgstr "" -#: extension/inplace.c:223 +#: extension/inplace.c:226 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:226 +#: extension/inplace.c:229 #, fuzzy, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "%s: lukning mislykkedes (%s)" -#: extension/inplace.c:230 +#: extension/inplace.c:233 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:243 +#: extension/inplace.c:246 #, fuzzy, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "datakanalsrensning af '%s' mislykkedes (%s)." -#: extension/inplace.c:253 +#: extension/inplace.c:256 #, fuzzy, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "lukning af fd %d ('%s') mislykkedes (%s)" @@ -2353,52 +2382,56 @@ msgstr "sqrt: kaldt med negativt argument %g" msgid "readfile: called with no arguments" msgstr "sqrt: kaldt med negativt argument %g" -#: extension/rwarray.c:124 +#: extension/revoutput.c:125 +msgid "revoutput: could not initialize REVOUT variable" +msgstr "" + +#: extension/rwarray.c:124 extension/rwarray0.c:109 #, fuzzy msgid "writea: called with too many arguments" msgstr "sqrt: kaldt med negativt argument %g" -#: extension/rwarray.c:131 +#: extension/rwarray.c:131 extension/rwarray0.c:116 #, 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:137 +#: extension/rwarray.c:137 extension/rwarray0.c:122 #, 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:184 +#: extension/rwarray.c:184 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "" -#: extension/rwarray.c:198 +#: extension/rwarray.c:198 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "" -#: extension/rwarray.c:280 +#: extension/rwarray.c:280 extension/rwarray0.c:265 #, fuzzy msgid "reada: called with too many arguments" msgstr "sqrt: kaldt med negativt argument %g" -#: extension/rwarray.c:287 +#: extension/rwarray.c:287 extension/rwarray0.c:272 #, 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:293 +#: extension/rwarray.c:293 extension/rwarray0.c:278 #, fuzzy, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "match: tredje argument er ikke et array" -#: extension/rwarray.c:337 +#: extension/rwarray.c:337 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "" -#: extension/rwarray.c:374 +#: extension/rwarray.c:374 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "" @@ -2431,84 +2464,84 @@ msgstr "exp: argumentet %g er uden for det tilladte omrde" msgid "sleep: not supported on this platform" msgstr "" -#: field.c:345 +#: field.c:346 msgid "NF set to negative value" msgstr "NF sat til en negativ vrdi" -#: field.c:971 field.c:978 field.c:982 +#: field.c:958 field.c:965 field.c:969 msgid "split: fourth argument is a gawk extension" msgstr "split: fjerde argument er en gawk-udvidelse" -#: field.c:975 +#: field.c:962 msgid "split: fourth argument is not an array" msgstr "split: fjerde argument er ikke et array" -#: field.c:989 +#: field.c:976 msgid "split: second argument is not an array" msgstr "split: andet argument er ikke et array" -#: field.c:993 +#: field.c:980 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:998 +#: field.c:985 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:1001 +#: field.c:988 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:1032 +#: field.c:1019 msgid "split: null string for third arg is a gawk extension" msgstr "split: tom streng som tredje argument er en gawk-udvidelse" -#: field.c:1072 +#: field.c:1059 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: fjerde argument er ikke et array" -#: field.c:1077 +#: field.c:1064 msgid "patsplit: second argument is not an array" msgstr "patsplit: andet argument er ikke et array" -#: field.c:1083 +#: field.c:1070 msgid "patsplit: third argument must be non-null" msgstr "patmatch: tredje argument er ikke et array" -#: field.c:1087 +#: field.c:1074 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:1092 +#: field.c:1079 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:1095 +#: field.c:1082 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:1133 +#: field.c:1120 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "'FIELDWIDTHS' er en gawk-udvidelse" -#: field.c:1197 +#: field.c:1184 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "ugyldig FIELDWIDTHS vrdi, nr '%s" -#: field.c:1270 +#: field.c:1257 msgid "null string for `FS' is a gawk extension" msgstr "tom streng som 'FS' er en gawk-udvidelse" -#: field.c:1274 +#: field.c:1261 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:1393 +#: field.c:1380 msgid "`FPAT' is a gawk extension" msgstr "'FPAT' er en gawk-udvidelse" @@ -2524,21 +2557,21 @@ msgstr "" msgid "node_to_awk_value: received null val" msgstr "" -#: gawkapi.c:807 +#: gawkapi.c:809 #, fuzzy msgid "remove_element: received null array" msgstr "length: fik et array-argument" -#: gawkapi.c:810 +#: gawkapi.c:812 msgid "remove_element: received null subscript" msgstr "" -#: gawkapi.c:947 +#: gawkapi.c:949 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "" -#: gawkapi.c:952 +#: gawkapi.c:954 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "" @@ -2598,516 +2631,485 @@ msgstr "%s: flaget '-W %s' tillader ikke noget argument\n" msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: flaget '-W %s' krver et argument\n" -#: io.c:392 +#: io.c:423 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "kommandolinjeargument '%s' er et katalog, oversprunget" -#: io.c:395 io.c:513 +#: io.c:426 io.c:544 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "kan ikke bne filen '%s' for lsning (%s)" -#: io.c:640 +#: io.c:671 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "lukning af fd %d ('%s') mislykkedes (%s)" -#: io.c:716 +#: io.c:749 msgid "redirection not allowed in sandbox mode" msgstr "omdirigering ikke tilladt i sandkasse-tilstand" -#: io.c:750 +#: io.c:783 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "udtrykket i '%s'-omdirigering har kun numerisk vrdi" -#: io.c:756 +#: io.c:789 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "udtrykket for '%s'-omdirigering har en tom streng som vrdi" -#: io.c:761 +#: io.c:794 #, 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:809 +#: io.c:842 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "undig blanding af '>' og '>>' for filen '%.*s'" -#: io.c:863 +#: io.c:896 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "kan ikke bne datakanalen '%s' for udskrivning (%s)" -#: io.c:873 +#: io.c:906 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "kan ikke bne datakanalen '%s' for indtastning (%s)" -#: io.c:904 +#: io.c:937 #, 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:986 +#: io.c:1019 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "kan ikke omdirigere fra '%s' (%s)" -#: io.c:989 +#: io.c:1022 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "kan ikke omdirigere til '%s' (%s)" -#: io.c:1040 +#: io.c:1073 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "nede systembegrnsningen for bne filer: begynder at multiplekse " "fildeskriptorer" -#: io.c:1056 +#: io.c:1089 #, c-format msgid "close of `%s' failed (%s)." msgstr "lukning af '%s' mislykkedes (%s)." -#: io.c:1064 +#: io.c:1097 msgid "too many pipes or input files open" msgstr "for mange datakanaler eller inddatafiler bne" -#: io.c:1086 +#: io.c:1119 msgid "close: second argument must be `to' or `from'" msgstr "close: andet argument skal vre 'to' eller 'from'" -#: io.c:1103 +#: io.c:1136 #, 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:1108 +#: io.c:1141 msgid "close of redirection that was never opened" msgstr "lukning af omdirigering som aldrig blev bnet" -#: io.c:1205 +#: io.c:1238 #, 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:1222 +#: io.c:1255 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "fejlstatus (%d) fra lukning af datakanalen '%s' (%s)" -#: io.c:1225 +#: io.c:1258 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "fejlstatus (%d) fra fillukning af '%s' (%s)" -#: io.c:1245 +#: io.c:1278 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "ingen eksplicit lukning af soklen '%s' angivet" -#: io.c:1248 +#: io.c:1281 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "ingen eksplicit lukning af ko-processen '%s' angivet" -#: io.c:1251 +#: io.c:1284 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "ingen eksplicit lukning af datakanalen '%s' angivet" -#: io.c:1254 +#: io.c:1287 #, c-format msgid "no explicit close of file `%s' provided" msgstr "ingen eksplicit lukning af filen '%s' angivet" -#: io.c:1284 io.c:1342 main.c:864 main.c:906 +#: io.c:1317 io.c:1375 main.c:628 main.c:670 #, c-format msgid "error writing standard output (%s)" msgstr "fejl ved skrivning til standard ud (%s)" -#: io.c:1289 io.c:1348 main.c:866 +#: io.c:1322 io.c:1381 main.c:630 #, c-format msgid "error writing standard error (%s)" msgstr "fejl ved skrivning til standard fejl (%s)" -#: io.c:1297 +#: io.c:1330 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "datakanalsrensning af '%s' mislykkedes (%s)." -#: io.c:1300 +#: io.c:1333 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "ko-procesrensning af datakanalen til '%s' mislykkedes (%s)." -#: io.c:1303 +#: io.c:1336 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "filrensning af '%s' mislykkedes (%s)." -#: io.c:1420 +#: io.c:1453 #, c-format msgid "local port %s invalid in `/inet'" msgstr "lokal port %s ugyldig i '/inet'" -#: io.c:1438 +#: io.c:1471 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "fjernvrt og portinformation (%s, %s) ugyldige" -#: 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:1604 -#, c-format -msgid "special file name `%s' is incomplete" -msgstr "special-filnavn '%s' er ufuldstndigt" - -#: io.c:1621 -msgid "must supply a remote hostname to `/inet'" -msgstr "fjernmaskinenavn til '/inet' skal angives" - -#: io.c:1639 -msgid "must supply a remote port to `/inet'" -msgstr "fjernport til '/inet' skal angives" - -#: io.c:1685 +#: io.c:1673 msgid "TCP/IP communications are not supported" msgstr "TCP/IP-kommunikation understttes ikke" -#: io.c:1867 +#: io.c:1854 #, c-format msgid "could not open `%s', mode `%s'" msgstr "kunne ikke bne '%s', tilstand '%s'" -#: io.c:1917 +#: io.c:1904 #, c-format msgid "close of master pty failed (%s)" msgstr "lukning af master-pty mislykkedes (%s)" -#: io.c:1919 io.c:2105 io.c:2305 +#: io.c:1906 io.c:2092 io.c:2293 #, c-format msgid "close of stdout in child failed (%s)" msgstr "lukning af standard ud i underproces mislykkedes (%s)" -#: io.c:1922 +#: io.c:1909 #, 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:1924 io.c:2110 +#: io.c:1911 io.c:2097 #, c-format msgid "close of stdin in child failed (%s)" msgstr "lukning af standard ind i underproces mislykkedes (%s)" -#: io.c:1927 +#: io.c:1914 #, 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:1929 io.c:1951 +#: io.c:1916 io.c:1938 #, c-format msgid "close of slave pty failed (%s)" msgstr "lukning af slave-pty mislykkedes (%s)" -#: io.c:2040 io.c:2108 io.c:2276 io.c:2308 +#: io.c:2027 io.c:2095 io.c:2264 io.c:2296 #, 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:2047 io.c:2113 +#: io.c:2034 io.c:2100 #, 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:2073 io.c:2298 +#: io.c:2060 io.c:2286 msgid "restoring stdout in parent process failed\n" msgstr "genskabelse af standard ud i forlderprocessen mislykkedes\n" -#: io.c:2081 +#: io.c:2068 msgid "restoring stdin in parent process failed\n" msgstr "genskabelse af standard ind i forlderprocessen mislykkedes\n" -#: io.c:2116 io.c:2310 io.c:2324 +#: io.c:2103 io.c:2298 io.c:2313 #, c-format msgid "close of pipe failed (%s)" msgstr "lukning af datakanalen mislykkedes (%s)" -#: io.c:2174 +#: io.c:2162 msgid "`|&' not supported" msgstr "'|&' understttes ikke" -#: io.c:2261 +#: io.c:2249 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "kan ikke bne datakanalen '%s' (%s)" -#: io.c:2318 +#: io.c:2307 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "kan ikke oprette barneproces for '%s' (fork: %s)" -#: io.c:2790 +#: io.c:2734 msgid "register_input_parser: received NULL pointer" msgstr "" -#: io.c:2818 +#: io.c:2762 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" -#: io.c:2825 +#: io.c:2769 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "" -#: io.c:2845 +#: io.c:2789 msgid "register_output_wrapper: received NULL pointer" msgstr "" -#: io.c:2873 +#: io.c:2817 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" -#: io.c:2880 +#: io.c:2824 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "" -#: io.c:2901 +#: io.c:2845 msgid "register_output_processor: received NULL pointer" msgstr "" -#: io.c:2930 +#: io.c:2874 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" msgstr "" -#: io.c:2939 +#: io.c:2883 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "" -#: io.c:3064 +#: io.c:3008 #, c-format msgid "data file `%s' is empty" msgstr "datafilen '%s' er tom" -#: io.c:3106 io.c:3114 +#: io.c:3050 io.c:3058 msgid "could not allocate more input memory" msgstr "kunne ikke allokere mere hukommelse til inddata" -#: io.c:3682 +#: io.c:3636 msgid "multicharacter value of `RS' is a gawk extension" msgstr "'RS' som flertegnsvrdi er en gawk-udvidelse" -#: io.c:3771 +#: io.c:3783 msgid "IPv6 communication is not supported" msgstr "IPv6-kommunikation understttes ikke" -#: main.c:405 -msgid "empty argument to `-e/--source' ignored" -msgstr "tomt argument til '-e/--source' ignoreret" - -#: main.c:495 -#, c-format -msgid "%s: option `-W %s' unrecognized, ignored\n" -msgstr "%s: flaget '-W %s' ukendt, ignoreret\n" - -#: main.c:541 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: flaget krver et argument -- %c\n" - -#: main.c:562 +#: main.c:321 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "miljvariablen 'POSIXLY_CORRECT' sat: aktiverer '--posix'" -#: main.c:568 +#: main.c:327 msgid "`--posix' overrides `--traditional'" msgstr "'--posix' tilsidestter '--traditional'" -#: main.c:579 +#: main.c:338 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "'--posix'/'--traditional' tilsidestter '--non-decimal-data'" -#: main.c:583 +#: main.c:342 #, c-format msgid "running %s setuid root may be a security problem" msgstr "at kre %s setuid root kan vre et sikkerhedsproblem" -#: main.c:588 +#: main.c:346 #, fuzzy msgid "`--posix' overrides `--characters-as-bytes'" msgstr "'--posix' tilsidestter '--binary'" -#: main.c:647 +#: main.c:404 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "kan ikke stte binr tilstand p standard ind (%s)" -#: main.c:650 +#: main.c:407 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "kan ikke stte binr tilstand p standard ud (%s)" -#: main.c:652 +#: main.c:409 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "kan ikke stte binr tilstand p standard fejl (%s)" -#: main.c:710 +#: main.c:469 msgid "no program text at all!" msgstr "ingen programtekst overhovedet!" -#: main.c:799 +#: main.c:563 #, 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:801 +#: main.c:565 #, 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:806 +#: main.c:570 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX-flag:\t\tlange GNU-flag: (standard)\n" -#: main.c:807 +#: main.c:571 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f progfil\t\t--file=progfil\n" -#: main.c:808 +#: main.c:572 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:809 +#: main.c:573 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=vrdi\t\t--assign=var=vrdi\n" -#: main.c:810 +#: main.c:574 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "POSIX-flag:\t\tlange GNU-flag: (udvidelser)\n" -#: main.c:811 +#: main.c:575 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:812 +#: main.c:576 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:813 +#: main.c:577 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:814 +#: main.c:578 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[fil]\t\t--dump-variables[=fil]\n" -#: main.c:815 +#: main.c:579 #, fuzzy msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-p[fil]\t\t--profile[=fil]\n" -#: main.c:816 +#: main.c:580 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'programtekst'\t--source='programtekst'\n" -#: main.c:817 +#: main.c:581 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E fil\t\t\t--exec=fil\n" -#: main.c:818 +#: main.c:582 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:819 +#: main.c:583 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:820 +#: main.c:584 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "" -#: main.c:821 +#: main.c:585 msgid "\t-l library\t\t--load=library\n" msgstr "" -#: main.c:822 -msgid "\t-L [fatal]\t\t--lint[=fatal]\n" +#: main.c:586 +#, fuzzy +msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: 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:824 +#: main.c:587 #, fuzzy msgid "\t-M\t\t\t--bignum\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:825 +#: main.c:588 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:826 +#: main.c:589 +msgid "\t-n\t\t\t--non-decimal-data\n" +msgstr "\t-n\t\t\t--non-decimal-data\n" + +#: main.c:590 #, fuzzy msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-p[fil]\t\t--profile[=fil]\n" -#: main.c:827 +#: main.c:591 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:828 +#: main.c:592 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[fil]\t\t--profile[=fil]\n" -#: main.c:829 +#: main.c:593 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:830 +#: main.c:594 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:831 +#: main.c:595 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:832 +#: main.c:596 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:833 +#: main.c:597 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:835 +#: main.c:599 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:838 +#: main.c:602 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3116,7 +3118,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:847 +#: main.c:611 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3129,7 +3131,7 @@ msgstr "" "\n" "Rapportr kommentarer til oversttelsen til <dansk@dansk-gruppen.dk>.\n" -#: main.c:851 +#: main.c:615 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3139,7 +3141,7 @@ msgstr "" "Almindeligvis lser gawk fra standard ind og skriver til standard ud.\n" "\n" -#: main.c:855 +#: main.c:619 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3149,7 +3151,7 @@ msgstr "" "\tgawk '{ sum += $1 }; END { print sum }' fil\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:880 +#: main.c:644 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3169,7 +3171,7 @@ msgstr "" "enhver senere version.\n" "\n" -#: main.c:888 +#: main.c:652 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" @@ -3183,7 +3185,7 @@ msgstr "" "General Public License for yderligere information.\n" "\n" -#: main.c:894 +#: main.c:658 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" @@ -3191,16 +3193,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:931 +#: main.c:695 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft stter ikke FS til tab i POSIX-awk" -#: main.c:1208 +#: main.c:982 #, c-format msgid "unknown value for field spec: %d\n" msgstr "ukendt vrdi for felt-spec: %d\n" -#: main.c:1306 +#: main.c:1080 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3209,102 +3211,120 @@ msgstr "" "%s: '%s' argument til '-v' ikke p formen 'var=vrdi'\n" "\n" -#: main.c:1332 +#: main.c:1106 #, c-format msgid "`%s' is not a legal variable name" msgstr "'%s' er ikke et gyldigt variabelnavn" -#: main.c:1335 +#: main.c:1109 #, 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:1339 +#: main.c:1113 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "kan ikke bruge gawk's indbyggede '%s' som variabelnavn" -#: main.c:1344 +#: main.c:1118 #, c-format msgid "cannot use function `%s' as variable name" msgstr "kan ikke bruge funktion '%s' som variabelnavn" -#: main.c:1397 +#: main.c:1171 msgid "floating point exception" msgstr "flydendetalsundtagelse" -#: main.c:1404 +#: main.c:1178 msgid "fatal error: internal error" msgstr "fatal fejl: intern fejl" -#: main.c:1419 +#: main.c:1193 msgid "fatal error: internal error: segfault" msgstr "fatal fejl: intern fejl: segmentfejl" -#: main.c:1431 +#: main.c:1205 msgid "fatal error: internal error: stack overflow" msgstr "fatal fejl: intern fejl: stakoverlb" -#: main.c:1490 +#: main.c:1264 #, c-format msgid "no pre-opened fd %d" msgstr "ingen fd %d bnet i forvejen" -#: main.c:1497 +#: main.c:1271 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "kunne ikke i forvejen bne /dev/null for fd %d" -#: mpfr.c:550 +#: main.c:1485 +msgid "empty argument to `-e/--source' ignored" +msgstr "tomt argument til '-e/--source' ignoreret" + +#: main.c:1556 +msgid "-M ignored: MPFR/GMP support not compiled in" +msgstr "" + +#: main.c:1577 +#, c-format +msgid "%s: option `-W %s' unrecognized, ignored\n" +msgstr "%s: flaget '-W %s' ukendt, ignoreret\n" + +#: main.c:1630 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: flaget krver et argument -- %c\n" + +#: mpfr.c:557 #, fuzzy, c-format msgid "PREC value `%.*s' is invalid" msgstr "BINMODE vrdi '%s' er ugyldig, behandles som 3" -#: mpfr.c:608 +#: mpfr.c:615 #, fuzzy, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "BINMODE vrdi '%s' er ugyldig, behandles som 3" -#: mpfr.c:698 +#: mpfr.c:711 #, fuzzy, c-format msgid "%s: received non-numeric argument" msgstr "cos: fik et ikke-numerisk argument" -#: mpfr.c:800 +#: mpfr.c:820 #, fuzzy msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%lf): negative vrdier vil give mrkelige resultater" -#: mpfr.c:804 +#: mpfr.c:824 #, fuzzy msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%lf): kommatalsvrdier vil blive trunkeret" -#: mpfr.c:816 +#: mpfr.c:836 #, fuzzy, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "compl(%lf): negative vrdier vil give mrkelige resultater" -#: mpfr.c:835 +#: mpfr.c:855 #, fuzzy, c-format msgid "%s: received non-numeric argument #%d" msgstr "cos: fik et ikke-numerisk argument" -#: mpfr.c:845 +#: mpfr.c:865 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "" -#: mpfr.c:857 +#: mpfr.c:877 #, fuzzy msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "compl(%lf): negative vrdier vil give mrkelige resultater" -#: mpfr.c:863 +#: mpfr.c:883 #, fuzzy msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "or(%lf, %lf): kommatalsvrdier vil blive trunkeret" -#: mpfr.c:878 +#: mpfr.c:898 #, fuzzy, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "compl(%lf): negative vrdier vil give mrkelige resultater" @@ -3314,24 +3334,24 @@ msgstr "compl(%lf): negative vrdier vil give mrkelige resultater" msgid "cmd. line:" msgstr "kommandolinje:" -#: node.c:421 +#: node.c:409 msgid "backslash at end of string" msgstr "omvendt skrstreg i slutningen af strengen" -#: node.c:500 +#: node.c:488 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "gamle versioner af awk understtter ikke '\\%c' undvigesekvens" -#: node.c:551 +#: node.c:539 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX tillader ikke '\\x'-kontrolsekvenser" -#: node.c:557 +#: node.c:545 msgid "no hex digits in `\\x' escape sequence" msgstr "ingen heksadecimale cifre i '\\x'-kontrolsekvenser" -#: node.c:579 +#: node.c:567 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3340,12 +3360,12 @@ msgstr "" "den heksadecimale sekvens \\x%.*s p %d tegn nok ikke forstet som du " "forventer det" -#: node.c:594 +#: node.c:582 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "kontrolsekvensen '\\%c' behandlet som kun '%c'" -#: node.c:739 +#: node.c:726 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3373,12 +3393,12 @@ msgid "sending profile to standard error" msgstr "sender profilen til standard fejl" #: profile.c:193 -#, c-format +#, fuzzy, c-format msgid "" -"\t# %s block(s)\n" +"\t# %s rule(s)\n" "\n" msgstr "" -"\t# %s blokke\n" +"\t# Regler\n" "\n" #: profile.c:198 @@ -3395,24 +3415,24 @@ msgstr "" msgid "internal error: %s with null vname" msgstr "intern fejl: %s med null vname" -#: profile.c:537 +#: profile.c:538 #, fuzzy msgid "internal error: builtin with null fname" msgstr "intern fejl: %s med null vname" -#: profile.c:949 +#: profile.c:958 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" "\n" msgstr "" -#: profile.c:972 +#: profile.c:981 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# profil til gawk oprettet %s\n" -#: profile.c:1475 +#: profile.c:1521 #, c-format msgid "" "\n" @@ -3421,7 +3441,7 @@ msgstr "" "\n" "\t# Funktioner, listede alfabetisk\n" -#: profile.c:1513 +#: profile.c:1559 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: uykendt omdirigeringstype %d" @@ -3431,74 +3451,113 @@ msgstr "redir2str: uykendt omdirigeringstype %d" msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "regexp-komponent `%.*s' skulle nok vre `[%.*s]'" -#: regcomp.c:131 +#: regcomp.c:139 msgid "Success" msgstr "Lykkedes" -#: regcomp.c:134 +#: regcomp.c:142 msgid "No match" msgstr "Mislykkedes" -#: regcomp.c:137 +#: regcomp.c:145 msgid "Invalid regular expression" msgstr "Ugyldigt regulrt udtryk" -#: regcomp.c:140 +#: regcomp.c:148 msgid "Invalid collation character" msgstr "Ugyldigt sorteringstegn" -#: regcomp.c:143 +#: regcomp.c:151 msgid "Invalid character class name" msgstr "Ugyldigt tegnklassenavn" -#: regcomp.c:146 +#: regcomp.c:154 msgid "Trailing backslash" msgstr "Efterflgende omvendt skrstreg" -#: regcomp.c:149 +#: regcomp.c:157 msgid "Invalid back reference" msgstr "Ugyldig bagudreference" -#: regcomp.c:152 -msgid "Unmatched [ or [^" +#: regcomp.c:160 +#, fuzzy +msgid "Unmatched [, [^, [:, [., or [=" msgstr "Ubalanceret [ eller [^" -#: regcomp.c:155 +#: regcomp.c:163 msgid "Unmatched ( or \\(" msgstr "Ubalanceret ( eller \\(" -#: regcomp.c:158 +#: regcomp.c:166 msgid "Unmatched \\{" msgstr "Ubalanceret \\{" -#: regcomp.c:164 +#: regcomp.c:169 +msgid "Invalid content of \\{\\}" +msgstr "Ugyldigt indhold i \\{\\}" + +#: regcomp.c:172 msgid "Invalid range end" msgstr "Ugyldig intervalslutning" -#: regcomp.c:167 +#: regcomp.c:175 msgid "Memory exhausted" msgstr "Hukommelsen opbrugt" -#: regcomp.c:170 +#: regcomp.c:178 msgid "Invalid preceding regular expression" msgstr "Ugyldigt foregende regulrt udtryk" -#: regcomp.c:173 +#: regcomp.c:181 msgid "Premature end of regular expression" msgstr "For tidligt slut p regulrt udtryk" -#: regcomp.c:179 +#: regcomp.c:184 +msgid "Regular expression too big" +msgstr "Regulrt udtryk for stort" + +#: regcomp.c:187 msgid "Unmatched ) or \\)" msgstr "Ubalanceret ) eller \\)" -#: regcomp.c:704 +#: regcomp.c:712 msgid "No previous regular expression" msgstr "Intet foregende regulrt udtryk" -#: symbol.c:741 +#: symbol.c:677 +#, fuzzy, c-format +msgid "function `%s': can't use function `%s' as a parameter name" +msgstr "funktionen '%s': kan ikke bruge funktionsnavn som parameternavn" + +#: symbol.c:809 msgid "can not pop main context" msgstr "" +#~ msgid "`getline var' invalid inside `%s' rule" +#~ msgstr "'getline var' ugyldig inden i '%s' regel" + +#~ msgid "`getline' invalid inside `%s' rule" +#~ msgstr "'getline' ugyldig inden i '%s' regel" + +#~ msgid "no (known) protocol supplied in special filename `%s'" +#~ msgstr "ingen (kendt) protokol opgivet i special-filnavn '%s'" + +#~ msgid "special file name `%s' is incomplete" +#~ msgstr "special-filnavn '%s' er ufuldstndigt" + +#~ msgid "must supply a remote hostname to `/inet'" +#~ msgstr "fjernmaskinenavn til '/inet' skal angives" + +#~ msgid "must supply a remote port to `/inet'" +#~ msgstr "fjernport til '/inet' skal angives" + +#~ msgid "" +#~ "\t# %s block(s)\n" +#~ "\n" +#~ msgstr "" +#~ "\t# %s blokke\n" +#~ "\n" + #~ msgid "range of the form `[%c-%c]' is locale dependent" #~ msgstr "omrde p formen `[%c-%c]' er locale-afhngig" @@ -3570,9 +3629,6 @@ msgstr "" #~ msgid "Operation Not Supported" #~ msgstr "Operationen understttes ikke" -#~ msgid "attempt to use function `%s' as an array" -#~ msgstr "forsg p at bruge funktionen '%s' som et array" - #~ msgid "reference to uninitialized element `%s[\"%.*s\"]'" #~ msgstr "reference til ikke-initieret element '%s[\"%.*s\"]'" @@ -3615,9 +3671,6 @@ msgstr "" #~ msgid "function `%s' not defined" #~ msgstr "funktionen '%s' er ikke defineret" -#~ msgid "non-redirected `getline' invalid inside `%s' rule" -#~ msgstr "ikke-omdirigeret 'getline' ugyldig inden i '%s'-regel" - #~ msgid "`nextfile' cannot be called from a `%s' rule" #~ msgstr "'nextfile' kan ikke kaldes fra en '%s'-regel" @@ -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" +"Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" +"POT-Creation-Date: 2015-02-26 20:05+0200\n" "PO-Revision-Date: 2014-10-23 17:31+0200\n" "Last-Translator: Philipp Thomas <pth@suse.de>\n" "Language-Team: German <translation-team-de@lists.sourceforge.net>\n" @@ -36,9 +36,9 @@ msgstr "Es wird versucht, den skalaren Parameter »%s« als Feld zu verwenden" msgid "attempt to use scalar `%s' as an array" msgstr "Es wird versucht, den Skalar »%s« als Array zu verwenden" -#: 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 -#: eval.c:1531 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 +#: builtin.c:1665 builtin.c:2092 builtin.c:2106 eval.c:1149 eval.c:1153 +#: eval.c:1558 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "Es wird versucht, das Feld »%s« in einem Skalarkontext zu verwenden" @@ -75,421 +75,452 @@ msgstr "asorti: Das erste Argument ist kein Feld" #: 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" +msgstr "" +"asort: ein untergeordnetes Feld des ersten Arguments kann nicht als zweites " +"Argument verwendet werden" #: 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" +msgstr "" +"asorti: ein untergeordnetes Feld des ersten Arguments kann nicht als zweites " +"Argument verwendet werden" #: 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" +msgstr "" +"asort: ein untergeordnetes Feld des zweiten Arguments kann nicht als erstes " +"Argument verwendet werden" #: 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" +msgstr "" +"asorti: ein untergeordnetes Feld des zweiten Arguments kann nicht als erstes " +"Argument verwendet werden" -#: array.c:1314 +#: array.c:1313 #, c-format msgid "`%s' is invalid as a function name" msgstr "»%s« ist ein unzulässiger Funktionsname" -#: array.c:1318 +#: array.c:1317 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "Die Vergleichsfunktion »%s« für das Sortieren ist nicht definiert" -#: awkgram.y:233 +#: awkgram.y:226 #, c-format msgid "%s blocks must have an action part" msgstr "%s-Blöcke müssen einen Aktionsteil haben" -#: awkgram.y:236 +#: awkgram.y:229 msgid "each rule must have a pattern or an action part" msgstr "Jede Regel muss entweder ein Muster oder einen Aktionsteil haben" -#: awkgram.y:325 awkgram.y:336 +#: awkgram.y:320 awkgram.y:331 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "Das alte awk erlaubt keine mehrfachen »BEGIN«- oder »END«-Regeln" -#: awkgram.y:373 +#: awkgram.y:368 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "»%s« ist eine eingebaute Funktion und kann nicht umdefiniert werden" -#: awkgram.y:419 +#: awkgram.y:417 msgid "regexp constant `//' looks like a C++ comment, but is not" -msgstr "Die Regulärer-Ausdruck-Konstante »//« sieht wie ein C-Kommentar aus, ist aber keiner" +msgstr "" +"Die Regulärer-Ausdruck-Konstante »//« sieht wie ein C-Kommentar aus, ist " +"aber keiner" -#: awkgram.y:423 +#: awkgram.y:421 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" -msgstr "Die Regulärer-Ausdruck-Konstante »/%s/« sieht wie ein C-Kommentar aus, ist aber keiner" +msgstr "" +"Die Regulärer-Ausdruck-Konstante »/%s/« sieht wie ein C-Kommentar aus, ist " +"aber keiner" -#: awkgram.y:515 +#: awkgram.y:513 #, c-format msgid "duplicate case values in switch body: %s" msgstr "doppelte Case-Werte im Switch-Block: %s" -#: awkgram.y:536 +#: awkgram.y:534 msgid "duplicate `default' detected in switch body" msgstr "doppeltes »default« im Switch-Block gefunden" -#: awkgram.y:796 awkgram.y:3699 +#: awkgram.y:794 awkgram.y:3751 msgid "`break' is not allowed outside a loop or switch" -msgstr "»break« ist außerhalb einer Schleife oder eines Switch-Blocks nicht zulässig" +msgstr "" +"»break« ist außerhalb einer Schleife oder eines Switch-Blocks nicht zulässig" -#: awkgram.y:805 awkgram.y:3691 +#: awkgram.y:803 awkgram.y:3743 msgid "`continue' is not allowed outside a loop" msgstr "»continue« ist außerhalb einer Schleife nicht zulässig" -#: awkgram.y:815 +#: awkgram.y:813 #, c-format msgid "`next' used in %s action" msgstr "»next« wird in %s-Aktion verwendet" -#: awkgram.y:824 +#: awkgram.y:822 #, c-format msgid "`nextfile' used in %s action" msgstr "»nextfile« wird in %s-Aktion verwendet" -#: awkgram.y:848 +#: awkgram.y:846 msgid "`return' used outside function context" msgstr "»return« wird außerhalb einer Funktion verwendet" -#: awkgram.y:922 +#: awkgram.y:920 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" -msgstr "Einfaches »print« in BEGIN- oder END-Regel soll vermutlich »print \"\"« sein" +msgstr "" +"Einfaches »print« in BEGIN- oder END-Regel soll vermutlich »print \"\"« sein" -#: awkgram.y:988 awkgram.y:1037 +#: awkgram.y:986 awkgram.y:1035 msgid "`delete' is not allowed with SYMTAB" msgstr "»delete« ist in Zusammenhang mit SYMTAB nicht zulässig" -#: awkgram.y:990 awkgram.y:1039 +#: awkgram.y:988 awkgram.y:1037 msgid "`delete' is not allowed with FUNCTAB" msgstr "»delete« ist in Zusammenhang mit FUNCTAB nicht zulässig" -#: awkgram.y:1024 awkgram.y:1028 +#: awkgram.y:1022 awkgram.y:1026 msgid "`delete(array)' is a non-portable tawk extension" msgstr "»delete(array)« ist eine gawk-Erweiterung" -#: awkgram.y:1149 +#: awkgram.y:1147 msgid "multistage two-way pipelines don't work" msgstr "mehrstufige Zweiwege-Pipes funktionieren nicht" -#: awkgram.y:1264 +#: awkgram.y:1262 msgid "regular expression on right of assignment" msgstr "Regulärer Ausdruck auf der rechten Seite einer Zuweisung" -#: awkgram.y:1275 +#: awkgram.y:1273 msgid "regular expression on left of `~' or `!~' operator" msgstr "Regulärer Ausdruck links vom »~«- oder »!~«-Operator" -#: awkgram.y:1291 awkgram.y:1442 +#: awkgram.y:1289 awkgram.y:1431 msgid "old awk does not support the keyword `in' except after `for'" msgstr "Das alte awk unterstützt das Schlüsselwort »in« nur nach »for«" -#: awkgram.y:1301 +#: awkgram.y:1299 msgid "regular expression on right of comparison" msgstr "Regulärer Ausdruck rechts von einem Vergleich" -#: awkgram.y:1417 -#, c-format -msgid "`getline var' invalid inside `%s' rule" -msgstr "»getline var« ist ungültig innerhalb der »%s«-Regel" - -#: awkgram.y:1420 -#, c-format -msgid "`getline' invalid inside `%s' rule" +#: awkgram.y:1411 +#, fuzzy, c-format +msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "»getline« ist ungültig innerhalb der »%s«-Regel" -#: awkgram.y:1425 +#: awkgram.y:1414 msgid "non-redirected `getline' undefined inside END action" -msgstr "Nicht-umgelenktes »getline« ist innerhalb der END-Aktion nicht definiert" +msgstr "" +"Nicht-umgelenktes »getline« ist innerhalb der END-Aktion nicht definiert" -#: awkgram.y:1444 +#: awkgram.y:1433 msgid "old awk does not support multidimensional arrays" msgstr "Das alte awk unterstützt keine mehrdimensionalen Felder" -#: awkgram.y:1541 +#: awkgram.y:1530 msgid "call of `length' without parentheses is not portable" msgstr "Aufruf von »length« ohne Klammern ist nicht portabel" -#: awkgram.y:1607 +#: awkgram.y:1596 msgid "indirect function calls are a gawk extension" msgstr "indirekte Funktionsaufrufe sind eine gawk-Erweiterung" -#: awkgram.y:1620 +#: awkgram.y:1609 #, c-format msgid "can not use special variable `%s' for indirect function call" -msgstr "die besondere Variable »%s« kann nicht für den indirekten Funktionsaufruf verwendet werden" +msgstr "" +"die besondere Variable »%s« kann nicht für den indirekten Funktionsaufruf " +"verwendet werden" -#: awkgram.y:1698 +#: awkgram.y:1635 +#, c-format +msgid "attempt to use non-function `%s' in function call" +msgstr "" + +#: awkgram.y:1699 msgid "invalid subscript expression" msgstr "Ungültiger Index-Ausdruck" -#: awkgram.y:2024 awkgram.y:2044 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2045 awkgram.y:2065 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "Warnung: " -#: awkgram.y:2042 gawkapi.c:192 gawkapi.c:221 msg.c:158 +#: awkgram.y:2063 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "Fatal: " -#: awkgram.y:2092 +#: awkgram.y:2113 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:523 debug.c:539 +#: awkgram.y:2392 awkgram.y:2468 awkgram.y:2691 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:2393 awkgram.y:2518 #, c-format msgid "can't open shared library `%s' for reading (%s)" -msgstr "Die dynamische Bibliothek »%s« kann nicht zum Lesen geöffnet werden (%s)" +msgstr "" +"Die dynamische Bibliothek »%s« kann nicht zum Lesen geöffnet werden (%s)" -#: awkgram.y:2362 awkgram.y:2436 awkgram.y:2486 builtin.c:135 debug.c:5206 +#: awkgram.y:2395 awkgram.y:2469 awkgram.y:2519 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "Unbekannte Ursache" -#: awkgram.y:2371 awkgram.y:2395 +#: awkgram.y:2404 awkgram.y:2428 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "»%s« kann nicht eingebunden und als Programmdatei verwendet werden" -#: awkgram.y:2384 +#: awkgram.y:2417 #, c-format msgid "already included source file `%s'" msgstr "Quelldatei »%s« wurde bereits eingebunden" -#: awkgram.y:2385 +#: awkgram.y:2418 #, c-format msgid "already loaded shared library `%s'" msgstr "Die dynamische Bibliothek »%s« wurde bereits eingebunden" -#: awkgram.y:2420 +#: awkgram.y:2453 msgid "@include is a gawk extension" msgstr "»@include« ist eine gawk-Erweiterung" -#: awkgram.y:2426 +#: awkgram.y:2459 msgid "empty filename after @include" msgstr "leerer Dateiname nach @include" -#: awkgram.y:2470 +#: awkgram.y:2503 msgid "@load is a gawk extension" msgstr "»@load« ist eine Gawk-Erweiterung" -#: awkgram.y:2476 +#: awkgram.y:2509 msgid "empty filename after @load" msgstr "leerer Dateiname nach @load" -#: awkgram.y:2610 +#: awkgram.y:2643 msgid "empty program text on command line" msgstr "Kein Programmtext auf der Kommandozeile" -#: awkgram.y:2725 +#: awkgram.y:2758 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "Die Quelldatei »%s« kann nicht gelesen werden (%s)" -#: awkgram.y:2736 +#: awkgram.y:2769 #, c-format msgid "source file `%s' is empty" msgstr "Die Quelldatei »%s« ist leer" -#: awkgram.y:2913 +#: awkgram.y:2828 +#, c-format +msgid "PEBKAC error: invalid character '\\%03o' in source code" +msgstr "" + +#: awkgram.y:2959 msgid "source file does not end in newline" msgstr "Die Quelldatei hört nicht mit einem Zeilenende auf" -#: awkgram.y:3018 +#: awkgram.y:3062 msgid "unterminated regexp ends with `\\' at end of file" -msgstr "Nicht beendeter regulärer Ausdruck (hört mit '\\' auf) am Ende der Datei" +msgstr "" +"Nicht beendeter regulärer Ausdruck (hört mit '\\' auf) am Ende der Datei" -#: awkgram.y:3042 +#: awkgram.y:3089 #, 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" +msgstr "" +"%s: %d: der tawk-Modifizierer für reguläre Ausdrücke »/.../%c« funktioniert " +"nicht in gawk" -#: awkgram.y:3046 +#: awkgram.y:3093 #, 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" +msgstr "" +"Der tawk-Modifizierer für reguläre Ausdrücke »/.../%c« funktioniert nicht in " +"gawk" -#: awkgram.y:3053 +#: awkgram.y:3100 msgid "unterminated regexp" msgstr "Nicht beendeter regulärer Ausdruck" -#: awkgram.y:3057 +#: awkgram.y:3104 msgid "unterminated regexp at end of file" msgstr "Nicht beendeter regulärer Ausdruck am Dateiende" -#: awkgram.y:3116 +#: awkgram.y:3162 msgid "use of `\\ #...' line continuation is not portable" -msgstr "Die Verwendung von »\\#...« zur Fortsetzung von Zeilen ist nicht portabel" +msgstr "" +"Die Verwendung von »\\#...« zur Fortsetzung von Zeilen ist nicht portabel" -#: awkgram.y:3132 +#: awkgram.y:3178 msgid "backslash not last character on line" msgstr "das letzte Zeichen auf der Zeile ist kein Backslash (»\\«)" -#: awkgram.y:3193 +#: awkgram.y:3239 msgid "POSIX does not allow operator `**='" msgstr "POSIX erlaubt den Operator »**=« nicht" -#: awkgram.y:3195 +#: awkgram.y:3241 msgid "old awk does not support operator `**='" msgstr "Das alte awk unterstützt den Operator »**=« nicht" -#: awkgram.y:3204 +#: awkgram.y:3250 msgid "POSIX does not allow operator `**'" msgstr "POSIX erlaubt den Operator »**« nicht" -#: awkgram.y:3206 +#: awkgram.y:3252 msgid "old awk does not support operator `**'" msgstr "Das alte awk unterstützt den Operator »**« nicht" -#: awkgram.y:3241 +#: awkgram.y:3287 msgid "operator `^=' is not supported in old awk" msgstr "Das alte awk unterstützt den Operator »^=« nicht" -#: awkgram.y:3249 +#: awkgram.y:3295 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:3392 awkgram.y:3410 command.y:1180 msgid "unterminated string" msgstr "Nicht beendete Zeichenkette" -#: awkgram.y:3579 +#: awkgram.y:3631 #, c-format msgid "invalid char '%c' in expression" msgstr "Ungültiges Zeichen »%c« in einem Ausdruck" -#: awkgram.y:3626 +#: awkgram.y:3678 #, c-format msgid "`%s' is a gawk extension" msgstr "»%s« ist eine gawk-Erweiterung" -#: awkgram.y:3631 +#: awkgram.y:3683 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX erlaubt »%s« nicht" -#: awkgram.y:3639 +#: awkgram.y:3691 #, c-format msgid "`%s' is not supported in old awk" msgstr "»%s« wird im alten awk nicht unterstützt" -#: awkgram.y:3729 +#: awkgram.y:3781 msgid "`goto' considered harmful!\n" msgstr "»goto« gilt als schlechter Stil!\n" -#: awkgram.y:3763 +#: awkgram.y:3815 #, 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:3850 #, 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:3855 #, 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:3938 awkgram.y:3941 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:3995 awkgram.y:3998 msgid "close: second argument is a gawk extension" msgstr "close: Das zweite Argument ist eine gawk-Erweiterung" -#: awkgram.y:3958 +#: awkgram.y:4010 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:4025 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:4044 msgid "index: regexp constant as second argument is not allowed" msgstr "index: eine Regexp-Konstante als zweites Argument ist unzulässig" -#: awkgram.y:4045 +#: awkgram.y:4097 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "Funktion »%s«: Parameter »%s« verdeckt eine globale Variable" -#: awkgram.y:4102 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4154 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:4155 msgid "sending variable list to standard error" msgstr "Die Liste der Variablen wird auf der Standardfehlerausgabe ausgegeben" -#: awkgram.y:4111 +#: awkgram.y:4163 #, c-format msgid "%s: close failed (%s)" msgstr "%s: close ist gescheitert (%s)" -#: awkgram.y:4136 +#: awkgram.y:4188 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() zweimal aufgerufen!" -#: awkgram.y:4144 +#: awkgram.y:4196 msgid "there were shadowed variables." msgstr "es sind verdeckte Variablen vorhanden" -#: awkgram.y:4215 +#: awkgram.y:4267 #, c-format msgid "function name `%s' previously defined" msgstr "Funktion »%s« wurde bereits definiert" -#: awkgram.y:4261 +#: awkgram.y:4313 #, 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:4316 #, 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" +msgstr "" +"Funktion »%s«: die spezielle Variable »%s« kann nicht als Parameter " +"verwendet werden" -#: awkgram.y:4272 +#: awkgram.y:4324 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "Funktion »%s«: Parameter #%d, »%s« wiederholt Parameter #%d" -#: awkgram.y:4359 awkgram.y:4365 +#: awkgram.y:4411 awkgram.y:4417 #, c-format msgid "function `%s' called but never defined" msgstr "Aufgerufene Funktion »%s« ist nirgends definiert" -#: awkgram.y:4369 +#: awkgram.y:4421 #, c-format msgid "function `%s' defined but never called directly" msgstr "Funktion »%s« wurde definiert aber nirgends aufgerufen" -#: awkgram.y:4401 +#: awkgram.y:4453 #, 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:4460 +#: awkgram.y:4468 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -498,20 +529,23 @@ msgstr "" "Funktion »%s« wird mit Leerzeichen zwischen Name und »(« aufgerufen, \n" "oder als Variable oder Feld verwendet" -#: awkgram.y:4696 +#: awkgram.y:4674 msgid "division by zero attempted" msgstr "Division durch Null wurde versucht" -#: awkgram.y:4705 +#: awkgram.y:4683 #, c-format msgid "division by zero attempted in `%%'" msgstr "Division durch Null versucht in »%%«" -#: awkgram.y:5025 -msgid "cannot assign a value to the result of a field post-increment expression" -msgstr "dem Ergebnis eines Feld-Postinkrementausdruck kann kein Wert zugewiesen werden" +#: awkgram.y:5003 +msgid "" +"cannot assign a value to the result of a field post-increment expression" +msgstr "" +"dem Ergebnis eines Feld-Postinkrementausdruck kann kein Wert zugewiesen " +"werden" -#: awkgram.y:5028 +#: awkgram.y:5006 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "Unzulässiges Ziel für eine Zuweisung (Opcode %s)" @@ -537,383 +571,423 @@ msgstr "exp: das Argument %g liegt außerhalb des gültigen Bereichs" #: 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" +msgstr "" +"fflush: Leeren der Puffer nicht möglich, Pipe »%s« ist nur zum Lesen geöffnet" #: 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" +msgstr "" +"fflush: Leeren der Puffer nicht möglich, Datei »%s« ist nur zum Lesen " +"geöffnet" #: 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:362 +#: builtin.c:351 msgid "index: received non-string first argument" msgstr "index: Erstes Argument ist kein String" -#: builtin.c:364 +#: builtin.c:353 msgid "index: received non-string second argument" msgstr "index: Zweites Argument ist kein string" -#: builtin.c:488 mpfr.c:757 +#: builtin.c:466 mpfr.c:777 msgid "int: received non-numeric argument" msgstr "Argument ist keine Zahl" -#: builtin.c:525 +#: builtin.c:503 msgid "length: received array argument" msgstr "length: Argument ist ein Feld" -#: builtin.c:528 +#: builtin.c:506 msgid "`length(array)' is a gawk extension" msgstr "»length(array)« ist eine gawk-Erweiterung" -#: builtin.c:544 +#: builtin.c:525 msgid "length: received non-string argument" msgstr "length: Argument ist kein String" -#: builtin.c:575 +#: builtin.c:554 msgid "log: received non-numeric argument" msgstr "log: Argument ist keine Zahl" -#: builtin.c:578 +#: builtin.c:557 #, c-format msgid "log: received negative argument %g" msgstr "log: Negatives Argument %g" -#: builtin.c:776 builtin.c:781 +#: builtin.c:755 builtin.c:760 builtin.c:911 msgid "fatal: must use `count$' on all formats or none" msgstr "Fatal: »count$« muss auf alle Formate angewandt werden oder auf keines" -#: builtin.c:851 +#: builtin.c:830 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "Feldbreite wird für die »%%«-Angabe ignoriert" -#: builtin.c:853 +#: builtin.c:832 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "Genauigkeit wird für die »%%«-Angabe ignoriert" -#: builtin.c:855 +#: builtin.c:834 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "Feldbreite und Genauigkeit werden für die »%%«-Angabe ignoriert" -#: builtin.c:906 +#: builtin.c:885 msgid "fatal: `$' is not permitted in awk formats" msgstr "Fatal: »$« ist in awk-Formaten nicht zulässig" -#: builtin.c:915 +#: builtin.c:894 msgid "fatal: arg count with `$' must be > 0" msgstr "Fatal: die Anzahl der Argumen bei »$« muss > 0 sein" -#: builtin.c:919 +#: builtin.c:898 #, 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" +msgstr "" +"Fatal: Argumentenanzahl %ld ist größer als die Gesamtzahl angegebener " +"Argumente" -#: builtin.c:923 +#: builtin.c:902 msgid "fatal: `$' not permitted after period in format" msgstr "Fatal: »$« nach Punkt in Formatangabe nicht zulässig" -#: builtin.c:939 +#: builtin.c:921 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "Fatal: »$« fehlt in positionsabhängiger Feldbreite oder Genauigkeit" # -#: builtin.c:1011 +#: builtin.c:991 msgid "`l' is meaningless in awk formats; ignored" msgstr "»l« ist in awk-Formaten bedeutungslos, ignoriert" -#: builtin.c:1015 +#: builtin.c:995 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "Fatal: »l« ist in POSIX-awk-Formaten nicht zulässig" -#: builtin.c:1028 +#: builtin.c:1008 msgid "`L' is meaningless in awk formats; ignored" msgstr "»L« ist in awk-Formaten bedeutungslos, ignoriert" -#: builtin.c:1032 +#: builtin.c:1012 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "Fatal: »L« ist in POSIX-awk-Formaten nicht zulässig" -#: builtin.c:1045 +#: builtin.c:1025 msgid "`h' is meaningless in awk formats; ignored" msgstr "»h« ist in awk-Formaten bedeutungslos, ignoriert" -#: builtin.c:1049 +#: builtin.c:1029 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "Fatal: »h« ist in POSIX-awk-Formaten nicht zulässig" -#: builtin.c:1447 +#: builtin.c:1055 +#, fuzzy, c-format +msgid "[s]printf: value %g is too big for %%c format" +msgstr "[s]printf: Wert %g ist außerhalb des Bereichs für Format »%%%c«" + +#: builtin.c:1068 +#, fuzzy, c-format +msgid "[s]printf: value %g is not a valid wide character" +msgstr "[s]printf: Wert %g ist außerhalb des Bereichs für Format »%%%c«" + +#: builtin.c:1454 #, 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:1545 +#: builtin.c:1552 #, 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" +msgstr "" +"das unbekannte Zeichen »%c« in der Formatspezifikation wird ignoriert: keine " +"Argumente umgewandelt" -#: builtin.c:1550 +#: builtin.c:1557 msgid "fatal: not enough arguments to satisfy format string" msgstr "Fatal: Nicht genügend Argumente für die Formatangabe" -#: builtin.c:1552 +#: builtin.c:1559 msgid "^ ran out for this one" msgstr "^ hierfür fehlte es" -#: builtin.c:1559 +#: builtin.c:1566 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: Format-Spezifikation hat keinen Controlcode" -#: builtin.c:1562 +#: builtin.c:1569 msgid "too many arguments supplied for format string" msgstr "Zu viele Argumente für den Formatstring" -#: builtin.c:1618 +#: builtin.c:1625 msgid "sprintf: no arguments" msgstr "sprintf: Keine Argumente" -#: builtin.c:1641 builtin.c:1652 +#: builtin.c:1648 builtin.c:1659 msgid "printf: no arguments" msgstr "printf: Keine Argumente" -#: builtin.c:1695 +#: builtin.c:1702 msgid "sqrt: received non-numeric argument" msgstr "sqrt: das Argument ist keine Zahl" -#: builtin.c:1699 +#: builtin.c:1706 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: das Argument %g ist negativ" -#: builtin.c:1730 +#: builtin.c:1737 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: Länge %g ist nicht >= 1" -#: builtin.c:1732 +#: builtin.c:1739 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: Länge %g ist nicht >= 0" -#: builtin.c:1739 +#: builtin.c:1753 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: Nicht ganzzahlige Länge %g wird abgeschnitten" -#: builtin.c:1744 +#: builtin.c:1758 #, 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" +msgstr "" +"substr: Länge %g ist zu groß für Stringindizierung, wird auf %g gekürzt" -#: builtin.c:1756 +#: builtin.c:1770 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: Start-Index %g ist ungültig, 1 wird verwendet" -#: builtin.c:1761 +#: builtin.c:1775 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: Nicht ganzzahliger Start-Wert %g wird abgeschnitten" -#: builtin.c:1786 +#: builtin.c:1798 msgid "substr: source string is zero length" msgstr "substr: Quellstring ist leer" -#: builtin.c:1802 +#: builtin.c:1812 #, 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:1810 +#: builtin.c:1820 #, c-format -msgid "substr: length %g at start index %g exceeds length of first argument (%lu)" -msgstr "substr: Länge %g am Start-Wert %g überschreitet die Länge des ersten Arguments (%lu)" +msgid "" +"substr: length %g at start index %g exceeds length of first argument (%lu)" +msgstr "" +"substr: Länge %g am Start-Wert %g überschreitet die Länge des ersten " +"Arguments (%lu)" -#: builtin.c:1884 +#: builtin.c:1890 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: Formatwert in PROCINFO[\"strftime\"] ist numerischen Typs" -#: builtin.c:1907 +#: builtin.c:1913 msgid "strftime: received non-numeric second argument" msgstr "strftime: Das zweite Argument ist keine Zahl" -#: builtin.c:1911 +#: builtin.c:1917 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" +msgstr "" +"strftime: das zweite Argument ist kleiner als 0 oder zu groß für time_t" -#: builtin.c:1918 +#: builtin.c:1924 msgid "strftime: received non-string first argument" msgstr "strftime: Das erste Argument ist kein String" -#: builtin.c:1925 +#: builtin.c:1931 msgid "strftime: received empty format string" msgstr "strftime: Der Format-String ist leer" -#: builtin.c:1991 +#: builtin.c:1997 msgid "mktime: received non-string argument" msgstr "mktime: Das Argument ist kein String" -#: builtin.c:2008 +#: builtin.c:2014 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:2043 +#: builtin.c:2049 msgid "'system' function not allowed in sandbox mode" msgstr "Die Funktion »system« ist im Sandbox-Modus nicht erlaubt" -#: builtin.c:2048 +#: builtin.c:2054 msgid "system: received non-string argument" msgstr "system: Das Argument ist kein String" -#: builtin.c:2168 +#: builtin.c:2174 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "Referenz auf das nicht initialisierte Feld »$%d«" -#: builtin.c:2255 +#: builtin.c:2259 msgid "tolower: received non-string argument" msgstr "tolower: das Argument ist kein String" -#: builtin.c:2289 +#: builtin.c:2290 msgid "toupper: received non-string argument" msgstr "toupper: das Argument ist kein String" -#: builtin.c:2325 mpfr.c:672 +#: builtin.c:2323 mpfr.c:679 msgid "atan2: received non-numeric first argument" msgstr "atan2: das erste Argument ist keine Zahl" -#: builtin.c:2327 mpfr.c:674 +#: builtin.c:2325 mpfr.c:681 msgid "atan2: received non-numeric second argument" msgstr "atan2: das zweite Argument ist keine Zahl" -#: builtin.c:2346 +#: builtin.c:2344 msgid "sin: received non-numeric argument" msgstr "sin: das Argument ist keine Zahl" -#: builtin.c:2362 +#: builtin.c:2360 msgid "cos: received non-numeric argument" msgstr "cos: das Argument ist keine Zahl" -#: builtin.c:2415 mpfr.c:1156 +#: builtin.c:2413 mpfr.c:1176 msgid "srand: received non-numeric argument" msgstr "srand: das Argument ist keine Zahl" -#: builtin.c:2446 +#: builtin.c:2444 msgid "match: third argument is not an array" msgstr "match: das dritte Argument ist kein Array" -#: builtin.c:2718 -msgid "gensub: third argument of 0 treated as 1" +#: builtin.c:2705 +#, fuzzy, c-format +msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: 0 als drittes Argument wird als 1 interpretiert" -#: builtin.c:3014 +#: builtin.c:2720 +#, fuzzy, c-format +msgid "gensub: third argument %g treated as 1" +msgstr "gensub: 0 als drittes Argument wird als 1 interpretiert" + +#: builtin.c:3020 msgid "lshift: received non-numeric first argument" msgstr "lshift: das erste Argument ist keine Zahl" -#: builtin.c:3016 +#: builtin.c:3022 msgid "lshift: received non-numeric second argument" msgstr "lshift: das zweite Argument ist keine Zahl" -#: builtin.c:3022 +#: builtin.c:3028 #, c-format msgid "lshift(%f, %f): negative values will give strange results" -msgstr "lshift(%f, %f): Negative Werte werden zu merkwürdigen Ergebnissen führen" +msgstr "" +"lshift(%f, %f): Negative Werte werden zu merkwürdigen Ergebnissen führen" -#: builtin.c:3024 +#: builtin.c:3030 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): Dezimalteil wird abgeschnitten" -#: builtin.c:3026 +#: builtin.c:3032 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" -msgstr "lshift(%f, %f): Zu große Shift-Werte werden zu merkwürdigen Ergebnissen führen" +msgstr "" +"lshift(%f, %f): Zu große Shift-Werte werden zu merkwürdigen Ergebnissen " +"führen" -#: builtin.c:3051 +#: builtin.c:3057 msgid "rshift: received non-numeric first argument" msgstr "rshift: das erste Argument ist keine Zahl" -#: builtin.c:3053 +#: builtin.c:3059 msgid "rshift: received non-numeric second argument" msgstr "rshift: das zweite Argument ist keine Zahl" -#: builtin.c:3059 +#: builtin.c:3065 #, c-format msgid "rshift(%f, %f): negative values will give strange results" -msgstr "rshift (%f, %f): Negative Werte werden zu merkwürdigen Ergebnissen führen" +msgstr "" +"rshift (%f, %f): Negative Werte werden zu merkwürdigen Ergebnissen führen" -#: builtin.c:3061 +#: builtin.c:3067 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): Dezimalteil wird abgeschnitten" -#: builtin.c:3063 +#: builtin.c:3069 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" -msgstr "rshift(%f, %f): Zu große Shift-Werte werden zu merkwürdigen Ergebnissen führen" +msgstr "" +"rshift(%f, %f): Zu große Shift-Werte werden zu merkwürdigen Ergebnissen " +"führen" -#: builtin.c:3088 mpfr.c:968 +#: builtin.c:3094 mpfr.c:988 msgid "and: called with less than two arguments" msgstr "and: wird mit weniger als zwei Argumenten aufgerufen" -#: builtin.c:3093 +#: builtin.c:3099 #, c-format msgid "and: argument %d is non-numeric" msgstr "and: das Argument %d ist nicht numerisch" -#: builtin.c:3097 +#: builtin.c:3103 #, c-format msgid "and: argument %d negative value %g will give strange results" -msgstr "and: der negative Wert %2$g von Argument %1$d wird zu merkwürdigen Ergebnissen führen" +msgstr "" +"and: der negative Wert %2$g von Argument %1$d wird zu merkwürdigen " +"Ergebnissen führen" -#: builtin.c:3120 mpfr.c:1000 +#: builtin.c:3126 mpfr.c:1020 msgid "or: called with less than two arguments" msgstr "or: wird mit weniger als zwei Argumenten aufgerufen" -#: builtin.c:3125 +#: builtin.c:3131 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: das Argument %d ist nicht numerisch" -#: builtin.c:3129 +#: builtin.c:3135 #, c-format msgid "or: argument %d negative value %g will give strange results" -msgstr "or: der negative Wert %2$g von Argument %1$d wird zu merkwürdigen Ergebnissen führen" +msgstr "" +"or: der negative Wert %2$g von Argument %1$d wird zu merkwürdigen " +"Ergebnissen führen" -#: builtin.c:3151 mpfr.c:1031 +#: builtin.c:3157 mpfr.c:1051 msgid "xor: called with less than two arguments" msgstr "xor: wird mit weniger als zwei Argumenten aufgerufen" -#: builtin.c:3157 +#: builtin.c:3163 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: das Argument %d ist nicht numerisch" -#: builtin.c:3161 +#: builtin.c:3167 #, c-format msgid "xor: argument %d negative value %g will give strange results" -msgstr "xor: der negative Wert %2$g von Argument %1$d wird zu merkwürdigen Ergebnissen führen" +msgstr "" +"xor: der negative Wert %2$g von Argument %1$d wird zu merkwürdigen " +"Ergebnissen führen" -#: builtin.c:3186 mpfr.c:787 +#: builtin.c:3192 mpfr.c:807 msgid "compl: received non-numeric argument" msgstr "compl: das erste Argument ist keine Zahl" -#: builtin.c:3192 +#: builtin.c:3198 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): Der negative Wert wird zu merkwürdigen Ergebnissen führen" -#: builtin.c:3194 +#: builtin.c:3200 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): der Dezimalteil wird abgeschnitten" -#: builtin.c:3363 +#: builtin.c:3369 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: »%s« ist keine gültige Locale-Kategorie" @@ -945,7 +1019,8 @@ msgstr "save »%s«: Der Befehl ist nicht zulässig." #: command.y:339 msgid "Can't use command `commands' for breakpoint/watchpoint commands" -msgstr "Der Befehl »commands« kann nicht für Break- bzw. Watchpoints verwendet werden" +msgstr "" +"Der Befehl »commands« kann nicht für Break- bzw. Watchpoints verwendet werden" #: command.y:341 msgid "no breakpoint/watchpoint has been set yet" @@ -958,7 +1033,9 @@ msgstr "ungültige Break-/Watchpoint/Nummer" #: command.y:348 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" -msgstr "Befehle eingeben, die bei Erreichen von %s %d ausgeführt werden sollen, einer pro Zeile.\n" +msgstr "" +"Befehle eingeben, die bei Erreichen von %s %d ausgeführt werden sollen, " +"einer pro Zeile.\n" #: command.y:350 #, c-format @@ -1019,24 +1096,36 @@ msgid "non-zero integer value" msgstr "ganyzahliger Wert ungleich Null" #: command.y:817 -msgid "backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames." -msgstr "backtrace [N] - log von allen oder den N innersten (äußersten wenn N < 0) Rahmen." +msgid "" +"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " +"frames." +msgstr "" +"backtrace [N] - log von allen oder den N innersten (äußersten wenn N < 0) " +"Rahmen." #: command.y:819 -msgid "break [[filename:]N|function] - set breakpoint at the specified location." -msgstr "break [[Dateiname:]N|funktion - Breakpoint an der angegebenen Stelle setzen.]" +msgid "" +"break [[filename:]N|function] - set breakpoint at the specified location." +msgstr "" +"break [[Dateiname:]N|funktion - Breakpoint an der angegebenen Stelle setzen.]" #: command.y:821 msgid "clear [[filename:]N|function] - delete breakpoints previously set." msgstr "clear [[Dateiname:]N|Funktion - zuvor gesetzte Breakpoints löschen." #: command.y:823 -msgid "commands [num] - starts a list of commands to be executed at a breakpoint(watchpoint) hit." -msgstr "commands [Nr] - startet eine Liste von Befehlen, die bei Erreichen eines Break- bzw. Watchpoints ausgeführt werden." +msgid "" +"commands [num] - starts a list of commands to be executed at a " +"breakpoint(watchpoint) hit." +msgstr "" +"commands [Nr] - startet eine Liste von Befehlen, die bei Erreichen eines " +"Break- bzw. Watchpoints ausgeführt werden." #: command.y:825 msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." -msgstr "condition Nr [Ausdruck] - Bedingungen für einen Break-/Watchpoint setzen oder löschen." +msgstr "" +"condition Nr [Ausdruck] - Bedingungen für einen Break-/Watchpoint setzen " +"oder löschen." #: command.y:827 msgid "continue [COUNT] - continue program being debugged." @@ -1052,7 +1141,8 @@ msgstr "disable [Breakpoints] [Bereich] - angegebene Breakpoints deaktivieren." #: command.y:833 msgid "display [var] - print value of variable each time the program stops." -msgstr "display [Var] - den Wert der Variablen bei jedem Programmstop ausgeben." +msgstr "" +"display [Var] - den Wert der Variablen bei jedem Programmstop ausgeben." #: command.y:835 msgid "down [N] - move N frames down the stack." @@ -1060,11 +1150,15 @@ msgstr "down [N] - N Rahmen nach unten im Stack gehen." #: command.y:837 msgid "dump [filename] - dump instructions to file or stdout." -msgstr "dump [Dateiname] - Befehle in eine Datei oder auf der Standardausgabe ausgeben" +msgstr "" +"dump [Dateiname] - Befehle in eine Datei oder auf der Standardausgabe " +"ausgeben" #: command.y:839 msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." -msgstr "enable [once|del] [Breakpoints] [Bereich] - die angegebenen Breakpoints aktivieren." +msgstr "" +"enable [once|del] [Breakpoints] [Bereich] - die angegebenen Breakpoints " +"aktivieren." #: command.y:841 msgid "end - end a list of commands or awk statements." @@ -1076,7 +1170,8 @@ msgstr "eval stmt[p1, p2, ...] - Awk-Ausdrücke auswerten." #: command.y:845 msgid "finish - execute until selected stack frame returns." -msgstr "finish - mit Ausführung fortfahren bis auisgewählter Rahmen verlassen wird." +msgstr "" +"finish - mit Ausführung fortfahren bis auisgewählter Rahmen verlassen wird." #: command.y:847 msgid "frame [N] - select and print stack frame number N." @@ -1084,27 +1179,41 @@ msgstr "frame [N] - den Stackrahmen Nummer N auswählen und ausgeben." #: command.y:849 msgid "help [command] - print list of commands or explanation of command." -msgstr "help [Befehl] - gibt eine Liste der Befehle oder die Beschreibung eines einzelnen Befehls aus." +msgstr "" +"help [Befehl] - gibt eine Liste der Befehle oder die Beschreibung eines " +"einzelnen Befehls aus." #: command.y:851 msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." -msgstr "ignore N ZÄHLER - setzt den Ignorieren-Zähler von Breakpoint N auf ZÄHLER" +msgstr "" +"ignore N ZÄHLER - setzt den Ignorieren-Zähler von Breakpoint N auf ZÄHLER" #: 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 [-|+|[Dateiname:]Zeilennr|Funktion|Breich] - die angegebenen Zeilen ausgeben" +msgstr "" +"list [-|+|[Dateiname:]Zeilennr|Funktion|Breich] - die angegebenen Zeilen " +"ausgeben" #: command.y:857 msgid "next [COUNT] - step program, proceeding through subroutine calls." -msgstr "next [ZÄHLER] - Programm schrittweise ausführen aber Subroutinen in einem Rutsch ausführen" +msgstr "" +"next [ZÄHLER] - Programm schrittweise ausführen aber Subroutinen in einem " +"Rutsch ausführen" #: command.y:859 -msgid "nexti [COUNT] - step one instruction, but proceed through subroutine calls." -msgstr "nexti [ZÄHLER] - einen Befehl abarbeiten. aber Subroutinen in einem Rutsch ausführen" +msgid "" +"nexti [COUNT] - step one instruction, but proceed through subroutine calls." +msgstr "" +"nexti [ZÄHLER] - einen Befehl abarbeiten. aber Subroutinen in einem Rutsch " +"ausführen" #: command.y:861 msgid "option [name[=value]] - set or display debugger option(s)." @@ -1124,7 +1233,9 @@ msgstr "quit - Debugger verlassen" #: command.y:869 msgid "return [value] - make selected stack frame return to its caller." -msgstr "return [Wert] - den ausgewählten Stapelrahmen yu seinem Aufrufer zurück kehren lassen" +msgstr "" +"return [Wert] - den ausgewählten Stapelrahmen yu seinem Aufrufer zurück " +"kehren lassen" #: command.y:871 msgid "run - start or restart executing program." @@ -1139,8 +1250,11 @@ msgid "set var = value - assign value to a scalar variable." msgstr "set Var = Wert - einer skalaren Variablen einen Wert zuweisen" #: command.y:879 -msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint." -msgstr "silent - unterdrückt die übliche Nachricht, wenn ein Break- bzw. Watchpoint erreicht wird." +msgid "" +"silent - suspends usual message when stopped at a breakpoint/watchpoint." +msgstr "" +"silent - unterdrückt die übliche Nachricht, wenn ein Break- bzw. Watchpoint " +"erreicht wird." #: command.y:881 msgid "source file - execute commands from file." @@ -1148,7 +1262,9 @@ msgstr "source Datei - die Befehle in Datei ausführen" #: command.y:883 msgid "step [COUNT] - step program until it reaches a different source line." -msgstr "step [ZÄHLER - Programm schrittweise ausführen bis es eine andere Quellzeile erricht." +msgstr "" +"step [ZÄHLER - Programm schrittweise ausführen bis es eine andere Quellzeile " +"erricht." #: command.y:885 msgid "stepi [COUNT] - step one instruction exactly." @@ -1164,11 +1280,17 @@ msgstr "trace on|off - Instruktionen vor der Ausführung ausgeben." #: command.y:891 msgid "undisplay [N] - remove variable(s) from automatic display list." -msgstr "undisplay [N] - Variablen von der Liste der automatisch Anzuzeigenden entfernen." +msgstr "" +"undisplay [N] - Variablen von der Liste der automatisch Anzuzeigenden " +"entfernen." #: command.y:893 -msgid "until [[filename:]N|function] - execute until program reaches a different line or line N within current frame." -msgstr "until [[Dateiname:]N|Funktion - Ausführen bis das Programm eine andere Zeile erreicht oder N Zeilen im aktuellen Rahmen." +msgid "" +"until [[filename:]N|function] - execute until program reaches a different " +"line or line N within current frame." +msgstr "" +"until [[Dateiname:]N|Funktion - Ausführen bis das Programm eine andere Zeile " +"erreicht oder N Zeilen im aktuellen Rahmen." #: command.y:895 msgid "unwatch [N] - remove variable(s) from watch list." @@ -1182,47 +1304,58 @@ msgstr "up [N] - N Rahmen im Kellerspeicher nach oben gehen." msgid "watch var - set a watchpoint for a variable." msgstr "watch Var - einen Watchpoint für eine Variable setzen." -#: command.y:1011 debug.c:401 msg.c:135 +#: command.y:901 +#, fuzzy +msgid "" +"where [N] - (same as backtrace) print trace of all or N innermost (outermost " +"if N < 0) frames." +msgstr "" +"backtrace [N] - log von allen oder den N innersten (äußersten wenn N < 0) " +"Rahmen." + +#: command.y:1013 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "Fehler: " -#: command.y:1051 +#: command.y:1053 #, c-format msgid "can't read command (%s)\n" msgstr "der Befehl kann nicht gelesen werden (»%s«)\n" -#: command.y:1065 +#: command.y:1067 #, c-format msgid "can't read command (%s)" msgstr "der Befehl kann nicht gelesen werden (»%s«)" -#: command.y:1116 +#: command.y:1118 msgid "invalid character in command" msgstr "Ungültiges Zeichen im Befehl" -#: command.y:1152 +#: command.y:1154 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "unbekannter Befehl - »%.*s«, versuchen Sie es mit help" -#: command.y:1222 +#: command.y:1224 #, c-format msgid "%s" msgstr "%s" -#: command.y:1284 +#: command.y:1286 msgid "invalid character" msgstr "Ungültiges Zeichen" -#: command.y:1455 +#: command.y:1457 #, c-format msgid "undefined command: %s\n" msgstr "undefinierter Befehl: %s\n" #: debug.c:252 msgid "set or show the number of lines to keep in history file." -msgstr "die Anzahl von Zeilen setzen oder anzeigen, die in der Historydatei gespeichert werden sollen." +msgstr "" +"die Anzahl von Zeilen setzen oder anzeigen, die in der Historydatei " +"gespeichert werden sollen." #: debug.c:254 msgid "set or show the list command window size." @@ -1274,12 +1407,14 @@ msgstr "Die Quelldatei »%s« kann nicht gefunden werden (%s)" #: debug.c:529 #, c-format msgid "WARNING: source file `%s' modified since program compilation.\n" -msgstr "WARNUNG: Quelldatei »%s« wurde seit der Programmübersetzung verändert.\n" +msgstr "" +"WARNUNG: Quelldatei »%s« wurde seit der Programmübersetzung verändert.\n" #: debug.c:551 #, c-format msgid "line number %d out of range; `%s' has %d lines" -msgstr "die Zeilennummer %d ist außerhalb des gültigen Bereichs: »%s« hat %d Zeilen" +msgstr "" +"die Zeilennummer %d ist außerhalb des gültigen Bereichs: »%s« hat %d Zeilen" #: debug.c:611 #, c-format @@ -1431,7 +1566,8 @@ msgstr "»%s« ist keine skalare Variable" #: debug.c:1258 debug.c:4994 #, 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" +msgstr "" +"Es wird versucht, das Feld »%s[\"%s\"]« in einem Skalarkontext zu verwenden" #: debug.c:1280 debug.c:5005 #, c-format @@ -1470,12 +1606,16 @@ msgstr "Es wird versucht, einen Skalar als Feld zu verwenden" #: debug.c:1856 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" -msgstr "Watchpoint %d wurde gelöscht, weil der Parameter außerhalb des Gültigkeitsbereichs ist.\n" +msgstr "" +"Watchpoint %d wurde gelöscht, weil der Parameter außerhalb des " +"Gültigkeitsbereichs ist.\n" #: debug.c:1867 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" -msgstr "Anzuzeigendes Element %d wurde gelöscht, weil der Parameter außerhalb des Gültigkeitsbereichs ist.\n" +msgstr "" +"Anzuzeigendes Element %d wurde gelöscht, weil der Parameter außerhalb des " +"Gültigkeitsbereichs ist.\n" #: debug.c:1900 #, c-format @@ -1504,7 +1644,9 @@ msgstr "Ungültige Rahmennummer" #: debug.c:2200 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" -msgstr "Hinweis: Breakpont %d (aktiv, ignoriert für die nächsten %ld Treffer) wird auch an %s:%d gesetzt" +msgstr "" +"Hinweis: Breakpont %d (aktiv, ignoriert für die nächsten %ld Treffer) wird " +"auch an %s:%d gesetzt" #: debug.c:2207 #, c-format @@ -1514,7 +1656,9 @@ msgstr "Hinweis: Breakpont %d (aktiv) wird auch an %s:%d gesetzt" #: debug.c:2214 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" -msgstr "Hinweis: Breakpont %d (inaktiv, ignoriert für die nächsten %ld Treffer) wird auch von %s:%d gesetzt" +msgstr "" +"Hinweis: Breakpont %d (inaktiv, ignoriert für die nächsten %ld Treffer) wird " +"auch von %s:%d gesetzt" #: debug.c:2221 #, c-format @@ -1586,7 +1730,8 @@ msgstr "j" #: debug.c:2662 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" -msgstr "die nächsten %ld Überschreitungen von Breakpoint %d werden ignoriert.\n" +msgstr "" +"die nächsten %ld Überschreitungen von Breakpoint %d werden ignoriert.\n" #: debug.c:2666 #, c-format @@ -1596,7 +1741,9 @@ msgstr "wenn Breakpoint %d das nächste mal erreicht wird, wird angehalten\n" #: debug.c:2783 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" -msgstr "Es können nur Programme untersucht werden, die mittels der Option »-f« übergeben wurden.\n" +msgstr "" +"Es können nur Programme untersucht werden, die mittels der Option »-f« " +"übergeben wurden.\n" #: debug.c:2908 #, c-format @@ -1620,7 +1767,8 @@ msgstr "Fehler: Neustart nicht möglich da die Operation verboten ist\n" #: debug.c:2942 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" -msgstr "Fehler (%s): Neustart nicht möglich, der Rest der Befehle wird ignoriert\n" +msgstr "" +"Fehler (%s): Neustart nicht möglich, der Rest der Befehle wird ignoriert\n" #: debug.c:2950 #, c-format @@ -1649,7 +1797,8 @@ msgstr "ungültige Breakpointnummer %d." #: debug.c:3020 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" -msgstr "Die nächsten %ld Überschreitungen von Breakpoint %d werden ignoriert.\n" +msgstr "" +"Die nächsten %ld Überschreitungen von Breakpoint %d werden ignoriert.\n" #: debug.c:3207 #, c-format @@ -1731,74 +1880,79 @@ msgstr "ungültige Zahl" #: debug.c:5381 #, c-format msgid "`%s' not allowed in current context; statement ignored" -msgstr "»%s« ist im aktuellen Kontext nicht zulässig; der Ausdruck wird ignoriert" +msgstr "" +"»%s« ist im aktuellen Kontext nicht zulässig; der Ausdruck wird ignoriert" #: debug.c:5389 msgid "`return' not allowed in current context; statement ignored" -msgstr "»reeturn« ist im aktuellen Kontext nicht zulässig; der Ausdruck wird ignoriert" +msgstr "" +"»reeturn« ist im aktuellen Kontext nicht zulässig; der Ausdruck wird " +"ignoriert" -#: debug.c:5590 +#: debug.c:5604 #, c-format msgid "No symbol `%s' in current context" msgstr "Im aktuelln Kontext gibt es kein Symbol »%s«" -#: 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:1063 dfa.c:1066 dfa.c:1085 dfa.c:1095 dfa.c:1107 dfa.c:1143 +#: dfa.c:1152 dfa.c:1155 dfa.c:1160 dfa.c:1174 dfa.c:1222 msgid "unbalanced [" msgstr "nicht geschlossene [" -#: dfa.c:1052 +#: dfa.c:1119 msgid "invalid character class" msgstr "ungültige Zeichenklasse" -#: dfa.c:1228 +#: dfa.c:1265 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "Die Syntax für Zeichenklassen ist [[:space:]], nicht [:space:]" -#: dfa.c:1280 +#: dfa.c:1327 msgid "unfinished \\ escape" msgstr "nicht beendetes \\ Escape" -#: dfa.c:1427 regcomp.c:161 -msgid "Invalid content of \\{\\}" +#: dfa.c:1474 +#, fuzzy +msgid "invalid content of \\{\\}" msgstr "Ungültiger Inhalt von \\{\\}" -#: dfa.c:1430 regcomp.c:176 -msgid "Regular expression too big" +#: dfa.c:1477 +#, fuzzy +msgid "regular expression too big" msgstr "Regulärer Ausdruck ist zu groß" -#: dfa.c:1847 +#: dfa.c:1912 msgid "unbalanced (" msgstr "nicht geschlossene (" -#: dfa.c:1973 +#: dfa.c:2038 msgid "no syntax specified" msgstr "keine Syntax angegeben" -#: dfa.c:1981 +#: dfa.c:2046 msgid "unbalanced )" msgstr "nicht geöffnete )" -#: eval.c:394 +#: eval.c:396 #, c-format msgid "unknown nodetype %d" msgstr "Unbekannter Knotentyp %d" -#: eval.c:405 eval.c:419 +#: eval.c:407 eval.c:421 #, c-format msgid "unknown opcode %d" msgstr "Unbekannter Opcode %d" -#: eval.c:416 +#: eval.c:418 #, c-format msgid "opcode %s not an operator or keyword" msgstr "Opcode %s ist weder ein Operator noch ein Schlüsselwort" -#: eval.c:472 +#: eval.c:474 msgid "buffer overflow in genflags2str" msgstr "Pufferüberlauf in genflags2str" -#: eval.c:675 +#: eval.c:676 #, c-format msgid "" "\n" @@ -1809,215 +1963,234 @@ msgstr "" "\t# Funktions-Aufruf-Stack\n" "\n" -#: eval.c:704 +#: eval.c:705 msgid "`IGNORECASE' is a gawk extension" msgstr "»IGNORECASE« ist eine gawk-Erweiterung" -#: eval.c:736 +#: eval.c:737 msgid "`BINMODE' is a gawk extension" msgstr "»BINMODE« ist eine gawk-Erweiterung" -#: eval.c:794 +#: eval.c:795 #, 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:885 +#: eval.c:912 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "Falsche »%sFMT«-Angabe »%s«" -#: eval.c:969 +#: eval.c:996 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "»--lint« wird abgeschaltet, da an »LINT« zugewiesen wird" -#: eval.c:1147 +#: eval.c:1174 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "Referenz auf nicht initialisiertes Argument »%s«" -#: eval.c:1148 +#: eval.c:1175 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "Referenz auf die nicht initialisierte Variable »%s«" -#: eval.c:1166 +#: eval.c:1193 msgid "attempt to field reference from non-numeric value" msgstr "Nicht numerischer Wert für Feldreferenz verwendet" -#: eval.c:1168 +#: eval.c:1195 msgid "attempt to field reference from null string" msgstr "Referenz auf ein Feld von einem Null-String" -#: eval.c:1176 +#: eval.c:1203 #, c-format msgid "attempt to access field %ld" msgstr "Versuch des Zugriffs auf Feld %ld" -#: eval.c:1185 +#: eval.c:1212 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "Referenz auf das nicht initialisierte Feld »$%ld«" -#: eval.c:1272 +#: eval.c:1299 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "Funktion »%s« mit zu vielen Argumenten aufgerufen" -#: eval.c:1473 +#: eval.c:1500 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: unerwarteter Typ »%s«" -#: eval.c:1569 +#: eval.c:1596 msgid "division by zero attempted in `/='" msgstr "Division durch Null versucht in »/=«" -#: eval.c:1576 +#: eval.c:1603 #, c-format msgid "division by zero attempted in `%%='" msgstr "Division durch Null versucht in »%%=«" -#: ext.c:89 ext.c:171 +#: ext.c:65 ext.c:147 msgid "extensions are not allowed in sandbox mode" msgstr "Erweiterungen sind im Sandbox-Modus nicht erlaubt" -#: ext.c:92 +#: ext.c:68 msgid "-l / @load are gawk extensions" msgstr "-l / @load sind gawk-Erweiterungen" -#: ext.c:95 +#: ext.c:71 msgid "load_ext: received NULL lib_name" msgstr "load_ext: NULL lib_name erhalten" -#: ext.c:98 +#: ext.c:74 #, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "load_ext: Bibliothek »%s« kann nicht geöffnet werden (%s)\n" -#: ext.c:104 +#: ext.c:80 #, c-format -msgid "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" -msgstr "load_ext: Bibliothek »%s«: definiert »plugin_is_GPL_compatible« nicht (%s)\n" +msgid "" +"load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" +msgstr "" +"load_ext: Bibliothek »%s«: definiert »plugin_is_GPL_compatible« nicht (%s)\n" -#: ext.c:110 +#: ext.c:86 #, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" -msgstr "load_ext: Bibliothek »%s«: Funktion »%s« kann nicht aufgerufen werden (%s)\n" +msgstr "" +"load_ext: Bibliothek »%s«: Funktion »%s« kann nicht aufgerufen werden (%s)\n" -#: ext.c:114 +#: ext.c:90 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" -msgstr "load_ext: die Initialisierungsroutine %2$s von Bibliothek »%1$s« ist gescheitert\n" +msgstr "" +"load_ext: die Initialisierungsroutine %2$s von Bibliothek »%1$s« ist " +"gescheitert\n" -#: ext.c:174 +#: ext.c:150 msgid "`extension' is a gawk extension" msgstr "»extension« ist eine gawk-Erweiterung" -#: ext.c:177 +#: ext.c:153 msgid "extension: received NULL lib_name" msgstr "extension: NULL lib_name erhalten" -#: ext.c:180 +#: ext.c:156 #, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "extension: Bibliothek »%s« kann nicht geöffnet werden (%s)" -#: ext.c:186 +#: ext.c:162 #, c-format -msgid "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" -msgstr "extension: Bibliothek »%s«: definiert »plugin_is_GPL_compatible« nicht (%s)" +msgid "" +"extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" +msgstr "" +"extension: Bibliothek »%s«: definiert »plugin_is_GPL_compatible« nicht (%s)" -#: ext.c:190 +#: ext.c:166 #, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" -msgstr "extension: Bibliothek »%s«: Funktion »%s« kann nicht aufgerufen werden (%s)" +msgstr "" +"extension: Bibliothek »%s«: Funktion »%s« kann nicht aufgerufen werden (%s)" -#: ext.c:221 +#: ext.c:197 msgid "make_builtin: missing function name" msgstr "make_builtin: Funktionsname fehlt" -#: ext.c:236 +#: ext.c:212 #, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "make_builtin: Funktion »%s« kann nicht neu definiert werden" -#: ext.c:240 +#: ext.c:216 #, c-format msgid "make_builtin: function `%s' already defined" msgstr "make_builtin: Funktion »%s« wurde bereits definiert" -#: ext.c:244 +#: ext.c:220 #, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "make_builtin: Funktion »%s« wurde bereits vorher definiert" -#: ext.c:246 +#: ext.c:222 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" -msgstr "make_builtin: die in gawk eingebaute Funktion »%s« kann nicht als Funktionsname verwendet werden" +msgstr "" +"make_builtin: die in gawk eingebaute Funktion »%s« kann nicht als " +"Funktionsname verwendet werden" -#: ext.c:249 ext.c:304 +#: ext.c:225 ext.c:280 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: negative Anzahl von Argumenten für Funktion »%s«" -#: ext.c:276 +#: ext.c:252 msgid "extension: missing function name" msgstr "Erweiterung: Funktionsname fehlt" -#: ext.c:279 ext.c:283 +#: ext.c:255 ext.c:259 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: unzulässiges Zeichen »%c« in Funktionsname »%s«" -#: ext.c:291 +#: ext.c:267 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: Funktion »%s« kann nicht neu definiert werden" -#: ext.c:295 +#: ext.c:271 #, c-format msgid "extension: function `%s' already defined" msgstr "extension: Funktion »%s« wurde bereits definiert" -#: ext.c:299 +#: ext.c:275 #, c-format msgid "extension: function name `%s' previously defined" msgstr "extension: Funktion »%s« wurde bereits vorher definiert" -#: ext.c:301 +#: ext.c:277 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" -msgstr "extension: die eingebaute Funktion »%s« kann nicht als Funktionsname verwendet werden" +msgstr "" +"extension: die eingebaute Funktion »%s« kann nicht als Funktionsname " +"verwendet werden" -#: ext.c:375 +#: ext.c:351 #, 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" +msgstr "" +"Funktion »%s« wird als Funktion definiert, die nie mehr als %d Argument(e) " +"akzeptiert" -#: ext.c:378 +#: ext.c:354 #, c-format msgid "function `%s': missing argument #%d" msgstr "Funktion »%s«: fehlendes Argument #%d" -#: ext.c:395 +#: ext.c:371 #, 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" +msgstr "" +"Funktion »%s«: Argument #%d: Es wird versucht, einen Skalar als Feld zu " +"verwenden" -#: ext.c:399 +#: ext.c:375 #, 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" +msgstr "" +"Funktion »%s«: Argument #%d: Es wird versucht, ein Feld als Skalar zu " +"verwenden" -#: ext.c:413 +#: ext.c:389 msgid "dynamic loading of library not supported" msgstr "das dynamische Laden von Bibliotheken wird nicht unterstützt" #: extension/filefuncs.c:159 msgid "chdir: called with incorrect number of arguments, expecting 1" -msgstr "chdir: Aufgruf mit einer ungültigen Anzahl von Argumenten, 1 wird erwartet" +msgstr "" +"chdir: Aufgruf mit einer ungültigen Anzahl von Argumenten, 1 wird erwartet" #: extension/filefuncs.c:439 #, c-format @@ -2088,7 +2261,8 @@ msgstr "fts: ungültiger dritter Parameter\n" #: extension/filefuncs.c:824 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." -msgstr "fts: die heimtückische Kennung FTS_NOSTAT wird ignoriert, ätsch bätsch." +msgstr "" +"fts: die heimtückische Kennung FTS_NOSTAT wird ignoriert, ätsch bätsch." #: extension/filefuncs.c:841 msgid "fts: clear_array() failed\n" @@ -2120,7 +2294,8 @@ msgstr "fnmatch ist auf diesem System nicht implementiert\n" #: extension/fnmatch.c:173 msgid "fnmatch init: could not add FNM_NOMATCH variable" -msgstr "fnmatch_init: eine FNM_NOMATCH-Variable konnte nicht hinzu gefügt werden" +msgstr "" +"fnmatch_init: eine FNM_NOMATCH-Variable konnte nicht hinzu gefügt werden" #: extension/fnmatch.c:183 #, c-format @@ -2155,7 +2330,7 @@ msgstr "wait: Aufruf mit zu vielen Argumenten" msgid "inplace_begin: in-place editing already active" msgstr "inplace_begin: direktes Editieren ist bereits aktiv" -#: extension/inplace.c:133 extension/inplace.c:207 +#: extension/inplace.c:133 extension/inplace.c:210 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "inplace_begin: erwartet 2 Argumente aber wurde aufgerufen mit %d" @@ -2167,7 +2342,9 @@ msgstr "inplace_begin: das erste Argument ist kein Dateiname" #: extension/inplace.c:144 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" -msgstr "inplace_begin: direktes Editieren wird deaktiviert wegen des ungültigen Dateinamens »%s«" +msgstr "" +"inplace_begin: direktes Editieren wird deaktiviert wegen des ungültigen " +"Dateinamens »%s«" #: extension/inplace.c:151 #, c-format @@ -2184,55 +2361,55 @@ msgstr "inplace_begin: »%s« ist keine reguläre Datei" msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "inplace_begin: mkstemp(»%s«) ist gescheitert (%s)" -#: extension/inplace.c:178 +#: extension/inplace.c:181 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "inplace_begin:: chmod ist gescheitert (%s)" -#: extension/inplace.c:185 +#: extension/inplace.c:188 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "inplace_begin: dup(stdout) ist gescheitert (%s)" -#: extension/inplace.c:188 +#: extension/inplace.c:191 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "inplace_begin: dup2(%d, stdout) ist gescheitert (%s)" -#: extension/inplace.c:191 +#: extension/inplace.c:194 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "inplace_begin: close(%d) ist gescheitert (%s)" -#: extension/inplace.c:210 +#: extension/inplace.c:213 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "inplace_end: das erste Argument ist kein Dateiname" -#: extension/inplace.c:217 +#: extension/inplace.c:220 msgid "inplace_end: in-place editing not active" msgstr "inplace_end: direktes Editieren ist nicht aktiv" -#: extension/inplace.c:223 +#: extension/inplace.c:226 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "inplace_end: dup2(%d, stdout) ist gescheitert (%s)" -#: extension/inplace.c:226 +#: extension/inplace.c:229 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "inplace_end: close(%d) ist gescheitert (%s)" -#: extension/inplace.c:230 +#: extension/inplace.c:233 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "inplace_end: fsetpos(stdout) ist gescheitert (%s)" -#: extension/inplace.c:243 +#: extension/inplace.c:246 #, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "inplace_end: link(»%s«, »%s«) ist gescheitert (%s)" -#: extension/inplace.c:253 +#: extension/inplace.c:256 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "inplace_end: rename(»%s«, »%s«) ist gescheitert (%s)" @@ -2261,165 +2438,181 @@ msgstr "chr: Aufruf ohne Argumente" msgid "chr: called with inappropriate argument(s)" msgstr "chr: Aufruf mit ungeeigneten 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 ist gescheitert: %s" -#: extension/readfile.c:84 +#: extension/readfile.c:113 msgid "readfile: called with too many arguments" msgstr "readfile: Aufruf mit zu vielen Argumenten" -#: extension/readfile.c:118 +#: extension/readfile.c:137 msgid "readfile: called with no arguments" msgstr "readfile: Aufruf ohen Argumente" -#: extension/rwarray.c:124 +#: extension/revoutput.c:125 +msgid "revoutput: could not initialize REVOUT variable" +msgstr "" + +#: extension/rwarray.c:124 extension/rwarray0.c:109 msgid "writea: called with too many arguments" msgstr "writea: Aufruf mit zu vielen Argumenten" -#: extension/rwarray.c:131 +#: extension/rwarray.c:131 extension/rwarray0.c:116 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "do_writea: das Argument 0 ist keine Zeichenkette\n" -#: extension/rwarray.c:137 +#: extension/rwarray.c:137 extension/rwarray0.c:122 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "do_writea: das Argument 1 ist kein Feld\n" -#: extension/rwarray.c:184 +#: extension/rwarray.c:184 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "write_array: das Feld konnte nicht niveliert werden\n" -#: extension/rwarray.c:198 +#: extension/rwarray.c:198 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "write_array: das nivelierte Feld konnte nicht frei gegeben werden\n" -#: extension/rwarray.c:280 +#: extension/rwarray.c:280 extension/rwarray0.c:265 msgid "reada: called with too many arguments" msgstr "reada: Aufruf mit zu vielen Argumenten" -#: extension/rwarray.c:287 +#: extension/rwarray.c:287 extension/rwarray0.c:272 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "do_reada: Argument 0 ist keine Zeichenkette\n" -#: extension/rwarray.c:293 +#: extension/rwarray.c:293 extension/rwarray0.c:278 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "do_reada: Argument 1 ist kein Feld\n" -#: extension/rwarray.c:337 +#: extension/rwarray.c:337 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "do_reada: clear_array ist gescheitert\n" -#: extension/rwarray.c:374 +#: extension/rwarray.c:374 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "read_array: set_array_element ist gescheitert\n" -#: extension/time.c:106 +#: extension/time.c:113 msgid "gettimeofday: ignoring arguments" msgstr "gettimeofday: die Argumente werden ignoriert" -#: extension/time.c:137 +#: extension/time.c:144 msgid "gettimeofday: not supported on this platform" msgstr "gettimeofday: wird auf dieser Plattform nicht unterstützt" -#: extension/time.c:158 +#: extension/time.c:165 msgid "sleep: called with too many arguments" msgstr "sleep: Aufruf mit zu vielen Argumenten" -#: extension/time.c:161 +#: extension/time.c:168 msgid "sleep: missing required numeric argument" msgstr "sleep: das erforderliche numerische Argument fehlt" -#: extension/time.c:167 +#: extension/time.c:174 msgid "sleep: argument is negative" msgstr "sleep: das Argument ist negativ" -#: extension/time.c:201 +#: extension/time.c:208 msgid "sleep: not supported on this platform" msgstr "sleep: wird auf dieser Plattform nicht unterstützt" -#: field.c:345 +#: field.c:346 msgid "NF set to negative value" msgstr "NF wird ein negativer Wert zugewiesen" -#: field.c:971 field.c:978 field.c:982 +#: field.c:958 field.c:965 field.c:969 msgid "split: fourth argument is a gawk extension" msgstr "split: das vierte Argument ist eine gawk-Erweiterung" -#: field.c:975 +#: field.c:962 msgid "split: fourth argument is not an array" msgstr "split: das vierte Argument ist kein Feld" -#: field.c:989 +#: field.c:976 msgid "split: second argument is not an array" msgstr "split: das zweite Argument ist kein Feld" -#: field.c:993 +#: field.c:980 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" +msgstr "" +"split: als zweites und viertes Argument kann nicht das gleiche Feld " +"verwendet werden" -#: field.c:998 +#: field.c:985 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" +msgstr "" +"split: Ein untergeordnetes Feld des zweiten Arguments kann nicht als viertes " +"Argument verwendet werden" -#: field.c:1001 +#: field.c:988 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" +msgstr "" +"split: Ein untergeordnetes Feld des vierten Arguments kann nicht als zweites " +"Argument verwendet werden" -#: field.c:1032 +#: field.c:1019 msgid "split: null string for third arg is a gawk extension" msgstr "split: Null-String als drittes Argument ist eine gawk-Erweiterung" -#: field.c:1072 +#: field.c:1059 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: Das vierte Argument ist kein Feld" -#: field.c:1077 +#: field.c:1064 msgid "patsplit: second argument is not an array" msgstr "patsplit: Das zweite Argument ist kein Feld" -#: field.c:1083 +#: field.c:1070 msgid "patsplit: third argument must be non-null" msgstr "patsplit: Das dritte Argument darf nicht Null sein" -#: field.c:1087 +#: field.c:1074 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" +msgstr "" +"patsplit: als zweites und viertes Argument kann nicht das gleiche Feld " +"verwendet werden" -#: field.c:1092 +#: field.c:1079 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" +msgstr "" +"patsplit: Ein untergeordnetes Feld des zweiten Arguments kann nicht als " +"viertes Argument verwendet werden" -#: field.c:1095 +#: field.c:1082 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" +msgstr "" +"patsplit: Ein untergeordnetes Feld des vierten Arguments kann nicht als " +"zweites Argument verwendet werden" -#: field.c:1133 +#: field.c:1120 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "»FIELDWIDTHS« ist eine gawk-Erweiterung" -#: field.c:1197 +#: field.c:1184 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "ungültiger FIELDWIDTHS-Wert nah bei »%s«" -#: field.c:1270 +#: field.c:1257 msgid "null string for `FS' is a gawk extension" msgstr "Null-String für »FS« ist eine gawk-Erweiterung" -#: field.c:1274 +#: field.c:1261 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:1393 +#: field.c:1380 msgid "`FPAT' is a gawk extension" msgstr "»FPAT« ist eine gawk-Erweiterung" @@ -2435,20 +2628,20 @@ msgstr "node_to_awk_value: Null-Knoten erhalten" msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: Null-Wert erhalten" -#: gawkapi.c:808 +#: gawkapi.c:809 msgid "remove_element: received null array" msgstr "remove_element: Null-Feld erhalten" -#: gawkapi.c:811 +#: gawkapi.c:812 msgid "remove_element: received null subscript" msgstr "remove_element: Null-Index erhalten" -#: gawkapi.c:948 +#: gawkapi.c:949 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "api_flatten_array: Index %d konnte nicht umgewandelt werden\n" -#: gawkapi.c:953 +#: gawkapi.c:954 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "api_flatten_array: Wert %d konnte nicht umgewandelt werden\n" @@ -2508,500 +2701,503 @@ msgstr "%s: Die Option »-W %s« hat keine Argumente\n" msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: Die Option »-W %s« erfordert ein Argument\n" -#: io.c:392 +#: io.c:423 #, c-format msgid "command line argument `%s' is a directory: skipped" -msgstr "das Kommandozeilen-Argument »%s« ist ein Verzeichnis: wird übersprungen" +msgstr "" +"das Kommandozeilen-Argument »%s« ist ein Verzeichnis: wird übersprungen" -#: io.c:395 io.c:513 +#: io.c:426 io.c:544 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "Die Datei »%s« kann nicht zum Lesen geöffnet werden (%s)" -#: io.c:640 +#: io.c:671 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "Das Schließen des Dateideskriptors %d (»%s«) ist gescheitert (%s)" -#: io.c:716 +#: io.c:749 msgid "redirection not allowed in sandbox mode" msgstr "Umlenkungen sind im Sandbox-Modus nicht erlaubt" -#: io.c:750 +#: io.c:783 #, c-format msgid "expression in `%s' redirection only has numeric value" -msgstr "Der Ausdruck in einer Umlenkung mittels »%s« hat nur einen numerischen Wert" +msgstr "" +"Der Ausdruck in einer Umlenkung mittels »%s« hat nur einen numerischen Wert" -#: io.c:756 +#: io.c:789 #, 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:761 +#: io.c:794 #, 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" +msgstr "" +"Der Dateiname »%s« für eine Umlenkung mittels »%s« kann das Ergebnis eines " +"logischen Ausdrucks sein" -#: io.c:809 +#: io.c:842 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "Unnötige Kombination von »>« und »>>« für Datei »%.*s«" -#: io.c:863 +#: io.c:896 #, 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:873 +#: io.c:906 #, 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:904 +#: io.c:937 #, 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)" +msgstr "" +"Die bidirektionale Pipe »%s« kann nicht für die Ein-/Ausgabe geöffnet werden " +"(%s)" -#: io.c:986 +#: io.c:1019 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "Von »%s« kann nicht umgelenkt werden (%s)" -#: io.c:989 +#: io.c:1022 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "Zu »%s« kann nicht umgelenkt werden (%s)" -#: 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:1073 +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:1056 +#: io.c:1089 #, c-format msgid "close of `%s' failed (%s)." msgstr "Das Schließen von »%s« ist gescheitert (%s)." -#: io.c:1064 +#: io.c:1097 msgid "too many pipes or input files open" msgstr "Zu viele Pipes oder Eingabedateien offen" -#: io.c:1086 +#: io.c:1119 msgid "close: second argument must be `to' or `from'" msgstr "close: Das zweite Argument muss »to« oder »from« sein" -#: io.c:1103 +#: io.c:1136 #, 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:1108 +#: io.c:1141 msgid "close of redirection that was never opened" msgstr "»close« für eine Umlenkung, die nie geöffnet wurde" -#: io.c:1205 +#: io.c:1238 #, 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" +msgstr "" +"close: Umlenkung »%s« wurde nicht mit »[&« geöffnet, das zweite Argument " +"wird ignoriert" -#: io.c:1222 +#: io.c:1255 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "Fehlerstatus (%d) beim Schließen der Pipe »%s« (%s)" -#: io.c:1225 +#: io.c:1258 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "Fehlerstatus (%d) beim Schließen der Datei »%s« (%s)" -#: io.c:1245 +#: io.c:1278 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "Das explizite Schließen des Sockets »%s« fehlt" -#: io.c:1248 +#: io.c:1281 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "Das explizite Schließen des Ko-Prozesses »%s« fehlt" -#: io.c:1251 +#: io.c:1284 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "Das explizite Schließen der Pipe »%s« fehlt" -#: io.c:1254 +#: io.c:1287 #, c-format msgid "no explicit close of file `%s' provided" msgstr "Das explizite Schließen der Datei »%s« fehlt" -#: io.c:1284 io.c:1342 main.c:864 main.c:906 +#: io.c:1317 io.c:1375 main.c:628 main.c:670 #, c-format msgid "error writing standard output (%s)" msgstr "Fehler beim Schreiben auf die Standardausgabe (%s)" -#: io.c:1289 io.c:1348 main.c:866 +#: io.c:1322 io.c:1381 main.c:630 #, c-format msgid "error writing standard error (%s)" msgstr "Fehler beim Schreiben auf die Standardfehlerausgabe (%s)" -#: io.c:1297 +#: io.c:1330 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "Das Leeren der Pipe »%s« ist gescheitert (%s)" -#: io.c:1300 +#: io.c:1333 #, 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:1303 +#: io.c:1336 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "Das Leeren der Datei »%s« ist gescheitert (%s)" -#: io.c:1420 +#: io.c:1453 #, c-format msgid "local port %s invalid in `/inet'" msgstr "Der lokale Port »%s« ist ungültig in »/inet«" -#: io.c:1438 +#: io.c:1471 #, 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:1590 -#, c-format -msgid "no (known) protocol supplied in special filename `%s'" -msgstr "Es wurde kein (bekanntes) Protokoll im Dateinamen »%s« angegeben" - -#: io.c:1604 -#, c-format -msgid "special file name `%s' is incomplete" -msgstr "Der Dateiname »%s« ist unvollständig" - -#: io.c:1621 -msgid "must supply a remote hostname to `/inet'" -msgstr "Sie müssen in /inet einen Rechnernamen angeben" - -#: io.c:1639 -msgid "must supply a remote port to `/inet'" -msgstr "Sie müssen in »/inet« einen Port angeben" - -#: io.c:1685 +#: io.c:1673 msgid "TCP/IP communications are not supported" msgstr "TCP/IP-Verbindungen werden nicht unterstützt" -#: io.c:1867 +#: io.c:1854 #, c-format msgid "could not open `%s', mode `%s'" msgstr "»%s« konnte nicht geöffnet werden, Modus »%s«" -#: io.c:1917 +#: io.c:1904 #, c-format msgid "close of master pty failed (%s)" -msgstr "Das Schließen der übergeordneten Terminal-Gerätedatei ist gescheitert (%s)" +msgstr "" +"Das Schließen der übergeordneten Terminal-Gerätedatei ist gescheitert (%s)" -#: io.c:1919 io.c:2105 io.c:2305 +#: io.c:1906 io.c:2092 io.c:2293 #, c-format msgid "close of stdout in child failed (%s)" msgstr "Das Schließen der Standardausgabe im Kindprozess ist gescheitert (%s)" -#: io.c:1922 +#: io.c:1909 #, 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)" +msgstr "" +"Das Verschieben der untergeordneten Terminal-Gerätedatei zur Standardausgabe " +"im Kindprozess ist gescheitert (dup: %s)" -#: io.c:1924 io.c:2110 +#: io.c:1911 io.c:2097 #, c-format msgid "close of stdin in child failed (%s)" msgstr "Schließen von stdin im Kindprozess gescheitert (%s)" -#: io.c:1927 +#: io.c:1914 #, 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)" +msgstr "" +"Das Verschieben der untergeordneten Terminal-Gerätedatei zur Standardeingabe " +"im Kindprozess ist gescheitert (dup: %s)" -#: io.c:1929 io.c:1951 +#: io.c:1916 io.c:1938 #, c-format msgid "close of slave pty failed (%s)" -msgstr "Das Schließen der untergeordneten Terminal-Gerätedatei ist gescheitert (%s)" +msgstr "" +"Das Schließen der untergeordneten Terminal-Gerätedatei ist gescheitert (%s)" -#: io.c:2040 io.c:2108 io.c:2276 io.c:2308 +#: io.c:2027 io.c:2095 io.c:2264 io.c:2296 #, 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)" +msgstr "" +"Das Verschieben der Pipe zur Standardausgabe im Kindprozess ist gescheitert " +"(dup: %s)" -#: io.c:2047 io.c:2113 +#: io.c:2034 io.c:2100 #, 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)" +msgstr "" +"Das Verschieben der Pipe zur Standardeingabe im Kindprozess ist gescheitert " +"(dup: %s)" -#: io.c:2073 io.c:2298 +#: io.c:2060 io.c:2286 msgid "restoring stdout in parent process failed\n" -msgstr "Das Wiederherstellen der Standardausgabe im Elternprozess ist gescheitert\n" +msgstr "" +"Das Wiederherstellen der Standardausgabe im Elternprozess ist gescheitert\n" -#: io.c:2081 +#: io.c:2068 msgid "restoring stdin in parent process failed\n" -msgstr "Das Wiederherstellen der Standardeingabe im Elternprozess ist gescheitert\n" +msgstr "" +"Das Wiederherstellen der Standardeingabe im Elternprozess ist gescheitert\n" -#: io.c:2116 io.c:2310 io.c:2324 +#: io.c:2103 io.c:2298 io.c:2313 #, c-format msgid "close of pipe failed (%s)" msgstr "Das Schließen der Pipe ist gescheitert (%s)" -#: io.c:2174 +#: io.c:2162 msgid "`|&' not supported" msgstr "»|&« wird nicht unterstützt" -#: io.c:2261 +#: io.c:2249 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "Pipe »%s« kann nicht geöffnet werden (%s)" -#: io.c:2318 +#: io.c:2307 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "Kindprozess für »%s« kann nicht erzeugt werden (fork: %s)" -#: io.c:2790 +#: io.c:2734 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: NULL-Zeiger erhalten" -#: io.c:2818 +#: io.c:2762 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" -msgstr "Eingabeparser »%s« steht im Konflikt mit dem vorher installierten Eingabeparser »%s«" +msgstr "" +"Eingabeparser »%s« steht im Konflikt mit dem vorher installierten " +"Eingabeparser »%s«" -#: io.c:2825 +#: io.c:2769 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "Eingabeparser »%s« konnte »%s« nicht öffnen" -#: io.c:2845 +#: io.c:2789 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: NULL-Zeiger erhalten" -#: io.c:2873 +#: io.c:2817 #, 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 "Ausgabeverpackung »%s« steht im Konflikt mit Ausgabeverpackung »%s«" -#: io.c:2880 +#: io.c:2824 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "Ausgabeverpackung »%s« konnte »%s« nicht öffnen" -#: io.c:2901 +#: io.c:2845 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: NULL-Zeiger erhalten" -#: io.c:2930 +#: io.c:2874 #, 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 "Zweiwegeprozessor »%s« steht im Konflikt mit Zweiwegeprozessor »%s«" -#: io.c:2939 +#: io.c:2883 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "Zweiwegeprozessor »%s« konnte »%s« nicht öffnen" -#: io.c:3064 +#: io.c:3008 #, c-format msgid "data file `%s' is empty" msgstr "Die Datei »%s« ist leer" -#: io.c:3106 io.c:3114 +#: io.c:3050 io.c:3058 msgid "could not allocate more input memory" msgstr "Es konnte kein weiterer Speicher für die Eingabe beschafft werden" -#: io.c:3682 +#: io.c:3636 msgid "multicharacter value of `RS' is a gawk extension" msgstr "Multicharacter-Wert von »RS« ist eine gawk-Erweiterung" -#: io.c:3771 +#: io.c:3783 msgid "IPv6 communication is not supported" msgstr "IPv6-Verbindungen werden nicht unterstützt" -#: main.c:405 -msgid "empty argument to `-e/--source' ignored" -msgstr "Das leere Argument für »--source« wird ignoriert" - -#: 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:541 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: Die Option %c erfordert ein Argument\n" - -#: main.c:562 +#: main.c:321 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" -msgstr "Die Umgebungsvariable »POSIXLY_CORRECT« ist gesetzt: »--posix« wird eingeschaltet" +msgstr "" +"Die Umgebungsvariable »POSIXLY_CORRECT« ist gesetzt: »--posix« wird " +"eingeschaltet" -#: main.c:568 +#: main.c:327 msgid "`--posix' overrides `--traditional'" msgstr "»--posix« hat Vorrang vor »--traditional«" -#: main.c:579 +#: main.c:338 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "»--posix« /»--traditional« hat Vorrang vor »--non-decimal-data«" -#: main.c:583 +#: main.c:342 #, 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:588 +#: main.c:346 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "»--posix« hat Vorrang vor »--characters-as-bytes«" -#: main.c:647 +#: main.c:404 #, 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)" +msgstr "" +"Das Setzen des Binärermodus für die Standardeingabe ist nicht möglich (%s)" -#: main.c:650 +#: main.c:407 #, 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)" +msgstr "" +"Das Setzen des Binärermodus für die Standardausgabe ist nicht möglich (%s)" -#: main.c:652 +#: main.c:409 #, 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)" +msgstr "" +"Das Setzen des Binärermodus für die Standardfehlerausgabe ist nicht möglich " +"(%s)" -#: main.c:710 +#: main.c:469 msgid "no program text at all!" msgstr "Es wurde überhaupt kein Programmtext angegeben!" -#: main.c:799 +#: main.c:563 #, 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:801 +#: main.c:565 #, 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:806 +#: main.c:570 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX-Optionen\t\tlange GNU-Optionen: (standard)\n" -#: main.c:807 +#: main.c:571 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f PROGRAMM\t\t--file=PROGRAMM\n" -#: main.c:808 +#: main.c:572 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F Feldtrenner\t\t\t--field-separator=Feldtrenner\n" -#: main.c:809 +#: main.c:573 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=Wert\t\t--assign=var=Wert\n" -#: main.c:810 +#: main.c:574 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "POSIX-Optionen\t\tGNU-Optionen (lang): (Erweiterungen)\n" -#: main.c:811 +#: main.c:575 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:812 +#: main.c:576 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:813 +#: main.c:577 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:814 +#: main.c:578 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d [Datei]\t\t--dump-variables[=Datei]\n" -#: main.c:815 +#: main.c:579 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[Datei]\t\t--debug[=Datei]\n" -#: main.c:816 +#: main.c:580 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'Programmtext'\t--source=Programmtext\n" -#: main.c:817 +#: main.c:581 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E Datei\t\t\t--exec=Datei\n" -#: main.c:818 +#: main.c:582 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:819 +#: main.c:583 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:820 +#: main.c:584 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i einzubindende_datei\t\t--include=einzubindende_datei\n" -#: main.c:821 +#: main.c:585 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l Bibliothek\t\t--load=Bibliothek\n" -#: main.c:822 -msgid "\t-L [fatal]\t\t--lint[=fatal]\n" +#: main.c:586 +#, fuzzy +msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: 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:824 +#: main.c:587 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:825 +#: main.c:588 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:826 +#: main.c:589 +msgid "\t-n\t\t\t--non-decimal-data\n" +msgstr "\t-n\t\t\t--non-decimal-data\n" + +#: main.c:590 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[Datei]\t\t--pretty-print[=Datei]\n" -#: main.c:827 +#: main.c:591 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:828 +#: main.c:592 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p [Datei]\t\t--profile[=Datei]\n" -#: main.c:829 +#: main.c:593 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:830 +#: main.c:594 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:831 +#: main.c:595 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:832 +#: main.c:596 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:833 +#: main.c:597 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:835 +#: main.c:599 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:838 +#: main.c:602 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3010,7 +3206,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:847 +#: main.c:611 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3026,7 +3222,7 @@ msgstr "" "translation-team-de@lists.sourceforge.net\n" "\n" -#: main.c:851 +#: main.c:615 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3037,7 +3233,7 @@ msgstr "" "auf der Standardausgabe aus.\n" "\n" -#: main.c:855 +#: main.c:619 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3047,7 +3243,7 @@ msgstr "" "\tgawk '{ sum += $1 }; END { print sum }' file\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:880 +#: main.c:644 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3067,7 +3263,7 @@ msgstr "" "spätere Version.\n" "\n" -#: main.c:888 +#: main.c:652 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" @@ -3080,7 +3276,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:894 +#: main.c:658 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" @@ -3089,16 +3285,16 @@ msgstr "" "diesem Programm erhalten haben. Wenn nicht, lesen Sie bitte\n" "http://www.gnu.org/licenses/.\n" -#: main.c:931 +#: main.c:695 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft setzt FS im POSIX-awk nicht auf Tab" -#: main.c:1208 +#: main.c:982 #, c-format msgid "unknown value for field spec: %d\n" msgstr "unbekannter Wert für eine Feldangabe: %d\n" -#: main.c:1306 +#: main.c:1080 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3107,148 +3303,184 @@ msgstr "" "%s: Argument »%s« von »-v« ist nicht in der Form »Variable=Wert«\n" "\n" -#: main.c:1332 +#: main.c:1106 #, c-format msgid "`%s' is not a legal variable name" msgstr "»%s« ist kein gültiger Variablenname" -#: main.c:1335 +#: main.c:1109 #, 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:1339 +#: main.c:1113 #, c-format msgid "cannot use gawk builtin `%s' as variable name" -msgstr "die eingebaute Funktion »%s« kann nicht als Variablenname verwendet werden" +msgstr "" +"die eingebaute Funktion »%s« kann nicht als Variablenname verwendet werden" # c-format -#: main.c:1344 +#: main.c:1118 #, c-format msgid "cannot use function `%s' as variable name" msgstr "Funktion »%s« kann nicht als Name einer Variablen verwendet werden" -#: main.c:1397 +#: main.c:1171 msgid "floating point exception" msgstr "Fließkomma-Ausnahme" -#: main.c:1404 +#: main.c:1178 msgid "fatal error: internal error" msgstr "Fataler Fehler: interner Fehler" -#: main.c:1419 +#: main.c:1193 msgid "fatal error: internal error: segfault" msgstr "Fataler Fehler: interner Fehler: Speicherbegrenzungsfehler" -#: main.c:1431 +#: main.c:1205 msgid "fatal error: internal error: stack overflow" msgstr "Fataler Fehler: interner Fehler: Stapelüberlauf" -#: main.c:1490 +#: main.c:1264 #, c-format msgid "no pre-opened fd %d" msgstr "Kein bereits geöffneter Dateideskriptor %d" -#: main.c:1497 +#: main.c:1271 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "/dev/null konnte nicht für Dateideskriptor %d geöffnet werden" -#: mpfr.c:550 +#: main.c:1485 +msgid "empty argument to `-e/--source' ignored" +msgstr "Das leere Argument für »--source« wird ignoriert" + +#: main.c:1556 +msgid "-M ignored: MPFR/GMP support not compiled in" +msgstr "" + +#: main.c:1577 +#, c-format +msgid "%s: option `-W %s' unrecognized, ignored\n" +msgstr "%s: Die Option »-W %s« ist unbekannt und wird ignoriert\n" + +#: main.c:1630 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: Die Option %c erfordert ein Argument\n" + +#: mpfr.c:557 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "PREC Wert »%.*s« ist ungültig" -#: mpfr.c:608 +#: mpfr.c:615 #, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "BINMODE Wert »%.*s« ist ungültig" -#: mpfr.c:698 +#: mpfr.c:711 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: das Argument ist keine Zahl" -#: mpfr.c:800 +#: mpfr.c:820 msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%Rg): ein negativer Wert wird zu merkwürdigen Ergebnissen führen" -#: mpfr.c:804 +#: mpfr.c:824 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg): Dezimalteil wird abgeschnitten" -#: mpfr.c:816 +#: mpfr.c:836 #, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "cmpl(%Zd): Negative Werte führen zu merkwürdigen Ergebnissen" -#: mpfr.c:835 +#: mpfr.c:855 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: das Argument Nr. %d ist keine Zahl" -#: mpfr.c:845 +#: mpfr.c:865 msgid "%s: argument #%d has invalid value %Rg, using 0" -msgstr "%s: Argument Nr. %d hat den ungültigen Wert %Rg, es wird stattdessen 0 verwendet" +msgstr "" +"%s: Argument Nr. %d hat den ungültigen Wert %Rg, es wird stattdessen 0 " +"verwendet" -#: mpfr.c:857 +#: mpfr.c:877 msgid "%s: argument #%d negative value %Rg will give strange results" -msgstr "%s: der negative Wert %2$Rg in Argument Nr. %1$d wird zu merkwürdigen Ergebnissen führen" +msgstr "" +"%s: der negative Wert %2$Rg in Argument Nr. %1$d wird zu merkwürdigen " +"Ergebnissen führen" -#: mpfr.c:863 +#: mpfr.c:883 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: der Nachkommateil %2$Rg in Argument Nr. %1$d wird abgeschnitten" -#: mpfr.c:878 +#: mpfr.c:898 #, c-format msgid "%s: argument #%d negative value %Zd will give strange results" -msgstr "%1$s: der negative Wert %3$Zd in Argument Nr. %2$d wird zu merkwürdigen Ergebnissen führen" +msgstr "" +"%1$s: der negative Wert %3$Zd in Argument Nr. %2$d wird zu merkwürdigen " +"Ergebnissen führen" #: msg.c:68 #, c-format msgid "cmd. line:" msgstr "Kommandozeile:" -#: node.c:421 +#: node.c:409 msgid "backslash at end of string" msgstr "Backslash am Ende der Zeichenkette" -#: node.c:500 +#: node.c:488 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "Das alte awk unterstützt die Escapesequenz »\\%c« nicht" -#: node.c:551 +#: node.c:539 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX erlaubt keine »\\x«-Escapes" -#: node.c:557 +#: node.c:545 msgid "no hex digits in `\\x' escape sequence" msgstr "In der »\\x«-Fluchtsequenz sind keine hexadezimalen Zahlen" -#: node.c:579 +#: node.c:567 #, c-format -msgid "hex escape \\x%.*s of %d characters probably not interpreted the way you expect" -msgstr "Die Hex-Sequenz \\x%.*s aus %d Zeichen wird wahrscheinlich nicht wie gewünscht interpretiert" +msgid "" +"hex escape \\x%.*s of %d characters probably not interpreted the way you " +"expect" +msgstr "" +"Die Hex-Sequenz \\x%.*s aus %d Zeichen wird wahrscheinlich nicht wie " +"gewünscht interpretiert" -#: node.c:594 +#: node.c:582 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "Fluchtsequenz »\\%c« wird wie ein normales »%c« behandelt" -#: node.c:739 -msgid "Invalid multibyte data detected. There may be a mismatch between your data and your locale." -msgstr "Es wurden unbekannte Multibyte-Daten gefunden. Ihre Daten entsprechen neventuell nicht der gesetzten Locale" +#: node.c:726 +msgid "" +"Invalid multibyte data detected. There may be a mismatch between your data " +"and your locale." +msgstr "" +"Es wurden unbekannte Multibyte-Daten gefunden. Ihre Daten entsprechen " +"neventuell nicht der gesetzten Locale" #: posix/gawkmisc.c:177 #, c-format msgid "%s %s `%s': could not get fd flags: (fcntl F_GETFD: %s)" -msgstr "%s %s »%s«: Die Kennungen des Dateideskriptors konnten nicht abgefragt werden: (fcntl F_GETFD: %s)" +msgstr "" +"%s %s »%s«: Die Kennungen des Dateideskriptors konnten nicht abgefragt " +"werden: (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 konnte nicht gesetzt werden: (fcntl F_SETFD: %s)" +msgstr "" +"%s %s »%s«: close-on-exec konnte nicht gesetzt werden: (fcntl F_SETFD: %s)" #: profile.c:71 #, c-format @@ -3260,12 +3492,12 @@ msgid "sending profile to standard error" msgstr "Das Profil wird auf der Standardfehlerausgabe ausgegeben" #: profile.c:193 -#, c-format +#, fuzzy, c-format msgid "" -"\t# %s block(s)\n" +"\t# %s rule(s)\n" "\n" msgstr "" -"\t# %s Blöcke\n" +"\t# Regeln(s)\n" "\n" #: profile.c:198 @@ -3282,11 +3514,11 @@ msgstr "" msgid "internal error: %s with null vname" msgstr "Interner Fehler: %s mit null vname" -#: profile.c:537 +#: profile.c:538 msgid "internal error: builtin with null fname" msgstr "Interner Fehler: eingebaute Fuktion mit leerem fname" -#: profile.c:949 +#: profile.c:958 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" @@ -3295,12 +3527,12 @@ msgstr "" "\t# Erweiterungen geladen (-l und/oder @load)\n" "\n" -#: profile.c:972 +#: profile.c:981 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawk-Profil, erzeugt %s\n" -#: profile.c:1475 +#: profile.c:1521 #, c-format msgid "" "\n" @@ -3309,7 +3541,7 @@ msgstr "" "\n" "\t# Funktionen in alphabetischer Reihenfolge\n" -#: profile.c:1513 +#: profile.c:1559 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: unbekannter Umlenkungstyp %d" @@ -3317,72 +3549,109 @@ msgstr "redir2str: unbekannter Umlenkungstyp %d" #: re.c:607 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" -msgstr "Regulärer-Ausdruck-Komponente »%.*s« sollte wahrscheinlich »[%.*s]« sein" +msgstr "" +"Regulärer-Ausdruck-Komponente »%.*s« sollte wahrscheinlich »[%.*s]« sein" -#: regcomp.c:131 +#: regcomp.c:139 msgid "Success" msgstr "Erfolg" -#: regcomp.c:134 +#: regcomp.c:142 msgid "No match" msgstr "Kein Treffer" -#: regcomp.c:137 +#: regcomp.c:145 msgid "Invalid regular expression" msgstr "Ungültiger Regulärer Ausdruck" -#: regcomp.c:140 +#: regcomp.c:148 msgid "Invalid collation character" msgstr "Ungültiges Zeichen" -#: regcomp.c:143 +#: regcomp.c:151 msgid "Invalid character class name" msgstr "Ungültiger Name für eine Zeichenklasse" -#: regcomp.c:146 +#: regcomp.c:154 msgid "Trailing backslash" msgstr "Angehängter Backslash" -#: regcomp.c:149 +#: regcomp.c:157 msgid "Invalid back reference" msgstr "Ungültige Rück-Referenz" -#: regcomp.c:152 -msgid "Unmatched [ or [^" +#: regcomp.c:160 +#, fuzzy +msgid "Unmatched [, [^, [:, [., or [=" msgstr "[ oder [^ werden nicht geschlossen" -#: regcomp.c:155 +#: regcomp.c:163 msgid "Unmatched ( or \\(" msgstr "( oder \\( werden nicht geschlossen" -#: regcomp.c:158 +#: regcomp.c:166 msgid "Unmatched \\{" msgstr "\\{ wird nicht geschlossen" -#: regcomp.c:164 +#: regcomp.c:169 +msgid "Invalid content of \\{\\}" +msgstr "Ungültiger Inhalt von \\{\\}" + +#: regcomp.c:172 msgid "Invalid range end" msgstr "Ungültiges Bereichsende" -#: regcomp.c:167 +#: regcomp.c:175 msgid "Memory exhausted" msgstr "Kein freier Speicher mehr vorhanden" -#: regcomp.c:170 +#: regcomp.c:178 msgid "Invalid preceding regular expression" msgstr "Vorangehender regulärer Ausdruck ist ungültig" -#: regcomp.c:173 +#: regcomp.c:181 msgid "Premature end of regular expression" msgstr "Vorzeitiges Ende des regulären Ausdrucks" -#: regcomp.c:179 +#: regcomp.c:184 +msgid "Regular expression too big" +msgstr "Regulärer Ausdruck ist zu groß" + +#: regcomp.c:187 msgid "Unmatched ) or \\)" msgstr ") oder \\) werden nicht geöffnet" -#: regcomp.c:704 +#: regcomp.c:712 msgid "No previous regular expression" msgstr "Kein vorangehender regulärer Ausdruck" -#: symbol.c:741 +#: symbol.c:677 +#, fuzzy, c-format +msgid "function `%s': can't use function `%s' as a parameter name" +msgstr "Funktion »%s«: Funktionsnamen können nicht als Parameternamen benutzen" + +#: symbol.c:809 msgid "can not pop main context" msgstr "der Hauptkontext kann nicht entfernt werden" + +#~ msgid "`getline var' invalid inside `%s' rule" +#~ msgstr "»getline var« ist ungültig innerhalb der »%s«-Regel" + +#~ msgid "no (known) protocol supplied in special filename `%s'" +#~ msgstr "Es wurde kein (bekanntes) Protokoll im Dateinamen »%s« angegeben" + +#~ msgid "special file name `%s' is incomplete" +#~ msgstr "Der Dateiname »%s« ist unvollständig" + +#~ msgid "must supply a remote hostname to `/inet'" +#~ msgstr "Sie müssen in /inet einen Rechnernamen angeben" + +#~ msgid "must supply a remote port to `/inet'" +#~ msgstr "Sie müssen in »/inet« einen Port angeben" + +#~ msgid "" +#~ "\t# %s block(s)\n" +#~ "\n" +#~ msgstr "" +#~ "\t# %s Blöcke\n" +#~ "\n" Binary files differ@@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.0.0h\n" -"Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2014-04-08 19:23+0300\n" +"Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" +"POT-Creation-Date: 2015-02-26 20:05+0200\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" @@ -35,9 +35,9 @@ msgstr "se intentó usar el parámetro escalar `%s como una matriz'" msgid "attempt to use scalar `%s' as an array" msgstr "se intentó usar el escalar `%s' como una matriz" -#: 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 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 +#: builtin.c:1665 builtin.c:2092 builtin.c:2106 eval.c:1149 eval.c:1153 +#: eval.c:1558 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "se intentó usar la matriz `%s' en un contexto escalar" @@ -97,421 +97,426 @@ msgstr "" "asorti: no se puede usar una submatriz del segundo argumento para el primer " "argumento" -#: array.c:1314 +#: array.c:1313 #, c-format msgid "`%s' is invalid as a function name" msgstr "`%s' es inválido como un nombre de función" -#: array.c:1318 +#: array.c:1317 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "la función de comparación de ordenamiento `%s' no está definida" -#: awkgram.y:233 +#: awkgram.y:226 #, c-format msgid "%s blocks must have an action part" msgstr "los bloques %s deben tener una parte de acción" -#: awkgram.y:236 +#: awkgram.y:229 msgid "each rule must have a pattern or an action part" msgstr "cada regla debe tener un patrón o una parte de acción" -#: awkgram.y:325 awkgram.y:336 +#: awkgram.y:320 awkgram.y:331 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "el awk antiguo no admite múltiples reglas `BEGIN' o `END'" -#: awkgram.y:373 +#: awkgram.y:368 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "`%s' es una función interna, no se puede redefinir" -#: awkgram.y:419 +#: awkgram.y:417 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "" "la constante de expresión regular `//' parece un comentario de C++, pero no " "lo es" -#: awkgram.y:423 +#: awkgram.y:421 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "" "la constante de expresión regular `/%s/' parece un comentario de C, pero no " "lo es" -#: awkgram.y:515 +#: awkgram.y:513 #, c-format msgid "duplicate case values in switch body: %s" msgstr "valores case duplicados en el cuerpo de un switch: %s" -#: awkgram.y:536 +#: awkgram.y:534 msgid "duplicate `default' detected in switch body" msgstr "se detectó un `default' duplicado en el cuerpo de un switch" -#: awkgram.y:796 awkgram.y:3723 +#: awkgram.y:794 awkgram.y:3751 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:3715 +#: awkgram.y:803 awkgram.y:3743 msgid "`continue' is not allowed outside a loop" msgstr "no se permite `continue' fuera de un bucle" -#: awkgram.y:815 +#: awkgram.y:813 #, c-format msgid "`next' used in %s action" msgstr "se usó `next' en la acción %s" -#: awkgram.y:824 +#: awkgram.y:822 #, c-format msgid "`nextfile' used in %s action" msgstr "se usó `nextfile' en la acción %s" -#: awkgram.y:848 +#: awkgram.y:846 msgid "`return' used outside function context" msgstr "se usó `return' fuera del contexto de la función" -#: awkgram.y:922 +#: awkgram.y:920 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" "el `print' simple en la regla BEGIN o END probablemente debe ser `print \"\"'" -#: awkgram.y:988 awkgram.y:1037 +#: awkgram.y:986 awkgram.y:1035 msgid "`delete' is not allowed with SYMTAB" msgstr "" -#: awkgram.y:990 awkgram.y:1039 +#: awkgram.y:988 awkgram.y:1037 msgid "`delete' is not allowed with FUNCTAB" msgstr "" -#: awkgram.y:1024 awkgram.y:1028 +#: awkgram.y:1022 awkgram.y:1026 msgid "`delete(array)' is a non-portable tawk extension" msgstr "`delete(array)' es una extensión de tawk que no es transportable" -#: awkgram.y:1149 +#: awkgram.y:1147 msgid "multistage two-way pipelines don't work" msgstr "las líneas de trabajo de dos vías multiestado no funcionan" -#: awkgram.y:1264 +#: awkgram.y:1262 msgid "regular expression on right of assignment" msgstr "expresión regular del lado derecho de una asignación" -#: awkgram.y:1275 +#: awkgram.y:1273 msgid "regular expression on left of `~' or `!~' operator" msgstr "expresión regular a la izquierda del operador `~' o `!~'" -#: awkgram.y:1291 awkgram.y:1442 +#: awkgram.y:1289 awkgram.y:1431 msgid "old awk does not support the keyword `in' except after `for'" msgstr "" "el awk antiguo no admite la palabra clave `in' excepto después de `for'" -#: awkgram.y:1301 +#: awkgram.y:1299 msgid "regular expression on right of comparison" msgstr "expresión regular a la derecha de una comparación" -#: awkgram.y:1417 -#, c-format -msgid "`getline var' invalid inside `%s' rule" -msgstr "`getline var' inválido dentro de la regla `%s'" - -#: awkgram.y:1420 +#: awkgram.y:1411 #, c-format -msgid "`getline' invalid inside `%s' rule" -msgstr "`getline' inválido dentro de la regla `%s'" +msgid "non-redirected `getline' invalid inside `%s' rule" +msgstr "`getline' no redirigido es inválido dentro de la regla `%s'" -#: awkgram.y:1425 +#: awkgram.y:1414 msgid "non-redirected `getline' undefined inside END action" msgstr "`getline' no redirigido indefinido dentro de la acción de END" -#: awkgram.y:1444 +#: awkgram.y:1433 msgid "old awk does not support multidimensional arrays" msgstr "el awk antiguo no admite matrices multidimensionales" -#: awkgram.y:1541 +#: awkgram.y:1530 msgid "call of `length' without parentheses is not portable" msgstr "la llamada de `length' sin paréntesis no es transportable" -#: awkgram.y:1607 +#: awkgram.y:1596 msgid "indirect function calls are a gawk extension" msgstr "las llamadas indirectas a función son una extensión de gawk" -#: awkgram.y:1620 +#: awkgram.y:1609 #, c-format msgid "can not use special variable `%s' for indirect function call" msgstr "" "no se puede usar la variable especial `%s' como llamada indirecta a función" -#: awkgram.y:1698 +#: awkgram.y:1635 +#, fuzzy, c-format +msgid "attempt to use non-function `%s' in function call" +msgstr "se intentó usar la función `%s' como una matriz" + +#: awkgram.y:1699 msgid "invalid subscript expression" msgstr "expresión de subíndice inválida" -#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2045 awkgram.y:2065 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "aviso: " -#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 +#: awkgram.y:2063 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "fatal: " -#: awkgram.y:2116 +#: awkgram.y:2113 msgid "unexpected newline or end of string" msgstr "nueva línea o fin de la cadena inesperados" -#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 +#: awkgram.y:2392 awkgram.y:2468 awkgram.y:2691 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:2384 awkgram.y:2509 +#: awkgram.y:2393 awkgram.y:2518 #, 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:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 +#: awkgram.y:2395 awkgram.y:2469 awkgram.y:2519 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "razón desconocida" -#: awkgram.y:2395 awkgram.y:2419 +#: awkgram.y:2404 awkgram.y:2428 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "" -#: awkgram.y:2408 +#: awkgram.y:2417 #, c-format msgid "already included source file `%s'" msgstr "ya se incluyó el fichero fuente `%s'" -#: awkgram.y:2409 +#: awkgram.y:2418 #, fuzzy, c-format msgid "already loaded shared library `%s'" msgstr "ya se incluyó el fichero fuente `%s'" -#: awkgram.y:2444 +#: awkgram.y:2453 msgid "@include is a gawk extension" msgstr "@include es una extensión de gawk" -#: awkgram.y:2450 +#: awkgram.y:2459 msgid "empty filename after @include" msgstr "nombre de fichero vacío después de @include" -#: awkgram.y:2494 +#: awkgram.y:2503 #, fuzzy msgid "@load is a gawk extension" msgstr "@include es una extensión de gawk" -#: awkgram.y:2500 +#: awkgram.y:2509 #, fuzzy msgid "empty filename after @load" msgstr "nombre de fichero vacío después de @include" -#: awkgram.y:2634 +#: awkgram.y:2643 msgid "empty program text on command line" msgstr "texto de programa vacío en la linea de órdenes" -#: awkgram.y:2749 +#: awkgram.y:2758 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "no se puede leer el fichero fuente `%s' (%s)" -#: awkgram.y:2760 +#: awkgram.y:2769 #, c-format msgid "source file `%s' is empty" msgstr "el fichero fuente `%s' está vacío" -#: awkgram.y:2937 +#: awkgram.y:2828 +#, c-format +msgid "PEBKAC error: invalid character '\\%03o' in source code" +msgstr "" + +#: awkgram.y:2959 msgid "source file does not end in newline" msgstr "el fichero fuente no termina con línea nueva" -#: awkgram.y:3042 +#: awkgram.y:3062 msgid "unterminated regexp ends with `\\' at end of file" msgstr "expresión regular sin terminar termina con `\\` al final del fichero" -#: awkgram.y:3066 +#: awkgram.y:3089 #, 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:3070 +#: awkgram.y:3093 #, 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:3077 +#: awkgram.y:3100 msgid "unterminated regexp" msgstr "expresión regular sin terminar" -#: awkgram.y:3081 +#: awkgram.y:3104 msgid "unterminated regexp at end of file" msgstr "expresión regular sin terminar al final del fichero" -#: awkgram.y:3140 +#: awkgram.y:3162 msgid "use of `\\ #...' line continuation is not portable" msgstr "el uso de la continuación de línea `\\ #...' no es transportable" -#: awkgram.y:3156 +#: awkgram.y:3178 msgid "backslash not last character on line" msgstr "la barra invertida no es el último caracter en la línea" -#: awkgram.y:3217 +#: awkgram.y:3239 msgid "POSIX does not allow operator `**='" msgstr "POSIX no permite el operador `**='" -#: awkgram.y:3219 +#: awkgram.y:3241 msgid "old awk does not support operator `**='" msgstr "el awk antiguo no admite el operador `**='" -#: awkgram.y:3228 +#: awkgram.y:3250 msgid "POSIX does not allow operator `**'" msgstr "POSIX no permite el operador `**'" -#: awkgram.y:3230 +#: awkgram.y:3252 msgid "old awk does not support operator `**'" msgstr "el awk antiguo no admite el operador `**='" -#: awkgram.y:3265 +#: awkgram.y:3287 msgid "operator `^=' is not supported in old awk" msgstr "el operador `^=' no se admite en el awk antiguo" -#: awkgram.y:3273 +#: awkgram.y:3295 msgid "operator `^' is not supported in old awk" msgstr "el operador `^' no se admite en el awk antiguo" -#: awkgram.y:3366 awkgram.y:3382 command.y:1178 +#: awkgram.y:3392 awkgram.y:3410 command.y:1180 msgid "unterminated string" msgstr "cadena sin terminar" -#: awkgram.y:3603 +#: awkgram.y:3631 #, c-format msgid "invalid char '%c' in expression" msgstr "caracter '%c' inválido en la expresión" -#: awkgram.y:3650 +#: awkgram.y:3678 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s' es una extensión de gawk" -#: awkgram.y:3655 +#: awkgram.y:3683 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX no permite `%s'" -#: awkgram.y:3663 +#: awkgram.y:3691 #, c-format msgid "`%s' is not supported in old awk" msgstr "`%s' no se admite en el awk antiguo" -#: awkgram.y:3753 +#: awkgram.y:3781 msgid "`goto' considered harmful!\n" msgstr "¡`goto' se considera dañino!\n" -#: awkgram.y:3787 +#: awkgram.y:3815 #, 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:3822 +#: awkgram.y:3850 #, 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:3827 +#: awkgram.y:3855 #, c-format msgid "%s third parameter is not a changeable object" msgstr "el tercer argumento de %s no es un objecto modificable" -#: awkgram.y:3910 awkgram.y:3913 +#: awkgram.y:3938 awkgram.y:3941 msgid "match: third argument is a gawk extension" msgstr "match: el tercer argumento es una extensión de gawk" -#: awkgram.y:3967 awkgram.y:3970 +#: awkgram.y:3995 awkgram.y:3998 msgid "close: second argument is a gawk extension" msgstr "close: el segundo argumento es una extensión de gawk" -#: awkgram.y:3982 +#: awkgram.y:4010 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "el uso de dcgettext(_\"...\") es incorrecto: quite el subrayado inicial" -#: awkgram.y:3997 +#: awkgram.y:4025 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "el uso de dcngettext(_\"...\") es incorrecto: quite el subrayado inicial" -#: awkgram.y:4016 +#: awkgram.y:4044 #, fuzzy msgid "index: regexp constant as second argument is not allowed" msgstr "index: el segundo argumento recibido no es una cadena" -#: awkgram.y:4069 +#: awkgram.y:4097 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "función `%s': parámetro `%s' oscurece la variable global" -#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4154 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:4127 +#: awkgram.y:4155 msgid "sending variable list to standard error" msgstr "se envía la lista de variables a la salida estándar de error" -#: awkgram.y:4135 +#: awkgram.y:4163 #, c-format msgid "%s: close failed (%s)" msgstr "%s: falló close (%s)" -#: awkgram.y:4160 +#: awkgram.y:4188 msgid "shadow_funcs() called twice!" msgstr "¡se llamó shadow_funcs() dos veces!" -#: awkgram.y:4168 +#: awkgram.y:4196 msgid "there were shadowed variables." msgstr "hay variables opacadas." -#: awkgram.y:4239 +#: awkgram.y:4267 #, c-format msgid "function name `%s' previously defined" msgstr "el nombre de función `%s' se definió previamente" -#: awkgram.y:4285 +#: awkgram.y:4313 #, 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:4288 +#: awkgram.y:4316 #, 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:4296 +#: awkgram.y:4324 #, 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:4383 awkgram.y:4389 +#: awkgram.y:4411 awkgram.y:4417 #, c-format msgid "function `%s' called but never defined" msgstr "se llamó a la función `%s' pero nunca se definió" -#: awkgram.y:4393 +#: awkgram.y:4421 #, c-format msgid "function `%s' defined but never called directly" msgstr "se definió la función `%s' pero nunca se llamó directamente" -#: awkgram.y:4425 +#: awkgram.y:4453 #, 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:4484 +#: awkgram.y:4468 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -520,21 +525,21 @@ 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:4720 +#: awkgram.y:4674 msgid "division by zero attempted" msgstr "se intentó una división por cero" -#: awkgram.y:4729 +#: awkgram.y:4683 #, c-format msgid "division by zero attempted in `%%'" msgstr "se intentó una división por cero en `%%'" -#: awkgram.y:5049 +#: awkgram.y:5003 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" -#: awkgram.y:5052 +#: awkgram.y:5006 #, fuzzy, c-format msgid "invalid target of assignment (opcode %s)" msgstr "%d es inválido como número de argumentos para %s" @@ -576,197 +581,207 @@ msgstr "" 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:362 +#: builtin.c:351 msgid "index: received non-string first argument" msgstr "index: el primer argumento recibido no es una cadena" -#: builtin.c:364 +#: builtin.c:353 msgid "index: received non-string second argument" msgstr "index: el segundo argumento recibido no es una cadena" -#: builtin.c:488 mpfr.c:757 +#: builtin.c:466 mpfr.c:777 msgid "int: received non-numeric argument" msgstr "int: se recibió un argumento que no es númerico" -#: builtin.c:525 +#: builtin.c:503 msgid "length: received array argument" msgstr "length: se recibió un argumento de matriz" -#: builtin.c:528 +#: builtin.c:506 msgid "`length(array)' is a gawk extension" msgstr "`length(array)' es una extensión de gawk" -#: builtin.c:544 +#: builtin.c:525 msgid "length: received non-string argument" msgstr "length: se recibió un argumento que no es una cadena" -#: builtin.c:575 +#: builtin.c:554 msgid "log: received non-numeric argument" msgstr "log: se recibió un argumento que no es númerico" -#: builtin.c:578 +#: builtin.c:557 #, c-format msgid "log: received negative argument %g" msgstr "log: se recibió el argumento negativo %g" -#: builtin.c:776 builtin.c:781 +#: builtin.c:755 builtin.c:760 builtin.c:911 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:851 +#: builtin.c:830 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "se descarta la anchura del campo para el especificador `%%'" -#: builtin.c:853 +#: builtin.c:832 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "se descarta la precisión para el especificador `%%'" -#: builtin.c:855 +#: builtin.c:834 #, 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:906 +#: builtin.c:885 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal: no se permite `$' en los formatos de awk" -#: builtin.c:915 +#: builtin.c:894 msgid "fatal: arg count with `$' must be > 0" msgstr "fatal: la cuenta de argumentos con `$' debe ser > 0" -#: builtin.c:919 +#: builtin.c:898 #, 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:923 +#: builtin.c:902 msgid "fatal: `$' not permitted after period in format" msgstr "fatal: no se permite `$' después de un punto en el formato" -#: builtin.c:939 +#: builtin.c:921 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:1009 +#: builtin.c:991 msgid "`l' is meaningless in awk formats; ignored" msgstr "`l' no tiene significado en los formatos de awk; se descarta" -#: builtin.c:1013 +#: builtin.c:995 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fatal: no se permite `l' en los formatos POSIX de awk" -#: builtin.c:1026 +#: builtin.c:1008 msgid "`L' is meaningless in awk formats; ignored" msgstr "`L' no tiene significado en los formatos de awk; se descarta" -#: builtin.c:1030 +#: builtin.c:1012 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "fatal: no se permite `L' en los formatos POSIX de awk" -#: builtin.c:1043 +#: builtin.c:1025 msgid "`h' is meaningless in awk formats; ignored" msgstr "`h' no tiene significado en los formatos de awk; se descarta" -#: builtin.c:1047 +#: builtin.c:1029 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fatal: no se permite `h' en los formatos POSIX de awk" -#: builtin.c:1463 +#: builtin.c:1055 +#, fuzzy, c-format +msgid "[s]printf: value %g is too big for %%c format" +msgstr "[s]printf: el valor %g está fuera del rango para el formato `%%%c'" + +#: builtin.c:1068 +#, fuzzy, c-format +msgid "[s]printf: value %g is not a valid wide character" +msgstr "[s]printf: el valor %g está fuera del rango para el formato `%%%c'" + +#: builtin.c:1454 #, 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:1561 +#: builtin.c:1552 #, 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:1566 +#: builtin.c:1557 msgid "fatal: not enough arguments to satisfy format string" msgstr "" "fatal: no hay suficientes argumentos para satisfacer a la cadena de formato" -#: builtin.c:1568 +#: builtin.c:1559 msgid "^ ran out for this one" msgstr "se acabó ^ para éste" -#: builtin.c:1575 +#: builtin.c:1566 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: el especificador de formato no tiene letras de control" -#: builtin.c:1578 +#: builtin.c:1569 msgid "too many arguments supplied for format string" msgstr "se proporcionaron demasiados argumentos para la cadena de formato" -#: builtin.c:1634 +#: builtin.c:1625 #, fuzzy msgid "sprintf: no arguments" msgstr "printf: sin argumentos" -#: builtin.c:1657 builtin.c:1668 +#: builtin.c:1648 builtin.c:1659 msgid "printf: no arguments" msgstr "printf: sin argumentos" -#: builtin.c:1711 +#: builtin.c:1702 msgid "sqrt: received non-numeric argument" msgstr "sqrt: se recibió un argumento que no es un númerico" -#: builtin.c:1715 +#: builtin.c:1706 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: se llamó con el argumento negativo %g" -#: builtin.c:1746 +#: builtin.c:1737 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: la longitud %g no es >= 1" -#: builtin.c:1748 +#: builtin.c:1739 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: la longitud %g no es >= 0" -#: builtin.c:1755 +#: builtin.c:1753 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: se truncará la longitud no entera %g" -#: builtin.c:1760 +#: builtin.c:1758 #, 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:1772 +#: builtin.c:1770 #, 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:1777 +#: builtin.c:1775 #, 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:1802 +#: builtin.c:1798 msgid "substr: source string is zero length" msgstr "substr: la cadena de origen es de longitud cero" -#: builtin.c:1818 +#: builtin.c:1812 #, 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:1826 +#: builtin.c:1820 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -774,196 +789,202 @@ msgstr "" "substr: la cadena %g en el índice de inicio %g excede la longitud del primer " "argumento (%lu)" -#: builtin.c:1900 +#: builtin.c:1890 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:1923 +#: builtin.c:1913 msgid "strftime: received non-numeric second argument" msgstr "strftime: el segundo argumento recibido no es númerico" -#: builtin.c:1927 +#: builtin.c:1917 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:1934 +#: builtin.c:1924 msgid "strftime: received non-string first argument" msgstr "strftime: el primer argumento recibido no es una cadena" -#: builtin.c:1941 +#: builtin.c:1931 msgid "strftime: received empty format string" msgstr "strftime: se recibió una cadena de formato vacía" -#: builtin.c:2007 +#: builtin.c:1997 msgid "mktime: received non-string argument" msgstr "mktime: se recibió un argumento que no es una cadena" -#: builtin.c:2024 +#: builtin.c:2014 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:2059 +#: builtin.c:2049 msgid "'system' function not allowed in sandbox mode" msgstr "no se permite la función 'system' en modo sandbox" -#: builtin.c:2064 +#: builtin.c:2054 msgid "system: received non-string argument" msgstr "system: se recibió un argumento que no es una cadena" -#: builtin.c:2184 +#: builtin.c:2174 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "referencia al campo sin inicializar `$%d'" -#: builtin.c:2271 +#: builtin.c:2259 msgid "tolower: received non-string argument" msgstr "tolower: se recibió un argumento que no es una cadena" -#: builtin.c:2305 +#: builtin.c:2290 msgid "toupper: received non-string argument" msgstr "toupper: se recibió un argumento que no es una cadena" -#: builtin.c:2341 mpfr.c:672 +#: builtin.c:2323 mpfr.c:679 msgid "atan2: received non-numeric first argument" msgstr "atan2: el primer argumento recibido no es númerico" -#: builtin.c:2343 mpfr.c:674 +#: builtin.c:2325 mpfr.c:681 msgid "atan2: received non-numeric second argument" msgstr "atan2: el segundo argumento recibido no es númerico" -#: builtin.c:2362 +#: builtin.c:2344 msgid "sin: received non-numeric argument" msgstr "sin: se recibió un argumento que no es númerico" -#: builtin.c:2378 +#: builtin.c:2360 msgid "cos: received non-numeric argument" msgstr "cos: se recibió un argumento que no es númerico" -#: builtin.c:2431 mpfr.c:1156 +#: builtin.c:2413 mpfr.c:1176 msgid "srand: received non-numeric argument" msgstr "srand: se recibió un argumento que no es númerico" -#: builtin.c:2462 +#: builtin.c:2444 msgid "match: third argument is not an array" msgstr "match: el tercer argumento no es una matriz" -#: builtin.c:2734 -msgid "gensub: third argument of 0 treated as 1" +#: builtin.c:2705 +#, fuzzy, c-format +msgid "gensub: third argument `%.*s' treated as 1" +msgstr "gensub: el tercer argumento de 0 se trata como 1" + +#: builtin.c:2720 +#, fuzzy, c-format +msgid "gensub: third argument %g treated as 1" msgstr "gensub: el tercer argumento de 0 se trata como 1" -#: builtin.c:3030 +#: builtin.c:3020 msgid "lshift: received non-numeric first argument" msgstr "lshift: el primer argumento recibido no es númerico" -#: builtin.c:3032 +#: builtin.c:3022 msgid "lshift: received non-numeric second argument" msgstr "lshift: el segundo argumento recibido no es númerico" -#: builtin.c:3038 +#: builtin.c:3028 #, 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:3040 +#: builtin.c:3030 #, fuzzy, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%lf, %lf): los valores fraccionarios se truncarán" -#: builtin.c:3042 +#: builtin.c:3032 #, 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:3067 +#: builtin.c:3057 msgid "rshift: received non-numeric first argument" msgstr "rshift: el primer argumento recibido no es númerico" -#: builtin.c:3069 +#: builtin.c:3059 msgid "rshift: received non-numeric second argument" msgstr "rshift: el segundo argumento recibido no es númerico" -#: builtin.c:3075 +#: builtin.c:3065 #, 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:3077 +#: builtin.c:3067 #, fuzzy, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%lf, %lf): los valores fraccionarios serán truncados" -#: builtin.c:3079 +#: builtin.c:3069 #, 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:3104 mpfr.c:968 +#: builtin.c:3094 mpfr.c:988 #, fuzzy msgid "and: called with less than two arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: builtin.c:3109 +#: builtin.c:3099 #, fuzzy, c-format msgid "and: argument %d is non-numeric" msgstr "exp: el argumento %g está fuera de rango" -#: builtin.c:3113 +#: builtin.c:3103 #, 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:3136 mpfr.c:1000 +#: builtin.c:3126 mpfr.c:1020 #, fuzzy msgid "or: called with less than two arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: builtin.c:3141 +#: builtin.c:3131 #, fuzzy, c-format msgid "or: argument %d is non-numeric" msgstr "exp: el argumento %g está fuera de rango" -#: builtin.c:3145 +#: builtin.c:3135 #, 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:3167 mpfr.c:1031 +#: builtin.c:3157 mpfr.c:1051 #, fuzzy msgid "xor: called with less than two arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: builtin.c:3173 +#: builtin.c:3163 #, fuzzy, c-format msgid "xor: argument %d is non-numeric" msgstr "exp: el argumento %g está fuera de rango" -#: builtin.c:3177 +#: builtin.c:3167 #, 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:3202 mpfr.c:787 +#: builtin.c:3192 mpfr.c:807 msgid "compl: received non-numeric argument" msgstr "compl: se recibió un argumento que no es númerico" -#: builtin.c:3208 +#: builtin.c:3198 #, fuzzy, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%lf): el valor negativo dará resultados extraños" -#: builtin.c:3210 +#: builtin.c:3200 #, fuzzy, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%lf): el valor fraccionario se truncará" -#: builtin.c:3379 +#: builtin.c:3369 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s' no es una categoría local válida" @@ -1245,42 +1266,48 @@ msgstr "" msgid "watch var - set a watchpoint for a variable." msgstr "" -#: command.y:1011 debug.c:401 msg.c:135 +#: command.y:901 +msgid "" +"where [N] - (same as backtrace) print trace of all or N innermost (outermost " +"if N < 0) frames." +msgstr "" + +#: command.y:1013 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "error: " -#: command.y:1051 +#: command.y:1053 #, fuzzy, c-format msgid "can't read command (%s)\n" msgstr "no se puede redirigir desde `%s' (%s)" -#: command.y:1065 +#: command.y:1067 #, fuzzy, c-format msgid "can't read command (%s)" msgstr "no se puede redirigir desde `%s' (%s)" -#: command.y:1116 +#: command.y:1118 #, fuzzy msgid "invalid character in command" msgstr "Nombre de clase de caracter inválido" -#: command.y:1152 +#: command.y:1154 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "" -#: command.y:1222 +#: command.y:1224 #, c-format msgid "%s" msgstr "" -#: command.y:1284 +#: command.y:1286 #, fuzzy msgid "invalid character" msgstr "Caracter de ordenación inválido" -#: command.y:1455 +#: command.y:1457 #, c-format msgid "undefined command: %s\n" msgstr "" @@ -1796,74 +1823,76 @@ msgstr "`exit' no se puede llamar en el contexto actual" msgid "`return' not allowed in current context; statement ignored" msgstr "`exit' no se puede llamar en el contexto actual" -#: debug.c:5590 +#: debug.c:5604 #, fuzzy, c-format msgid "No symbol `%s' in current context" msgstr "se intentó usar la matriz `%s' en un contexto escalar" -#: 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 +#: dfa.c:1063 dfa.c:1066 dfa.c:1085 dfa.c:1095 dfa.c:1107 dfa.c:1143 +#: dfa.c:1152 dfa.c:1155 dfa.c:1160 dfa.c:1174 dfa.c:1222 #, fuzzy msgid "unbalanced [" msgstr "[ desbalanceado" -#: dfa.c:1174 +#: dfa.c:1119 #, fuzzy msgid "invalid character class" msgstr "Nombre de clase de caracter inválido" -#: dfa.c:1316 +#: dfa.c:1265 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "" -#: dfa.c:1366 +#: dfa.c:1327 #, fuzzy msgid "unfinished \\ escape" msgstr "Escape \\ sin terminar" -#: dfa.c:1513 regcomp.c:161 -msgid "Invalid content of \\{\\}" +#: dfa.c:1474 +#, fuzzy +msgid "invalid content of \\{\\}" msgstr "Contenido inválido de \\{\\}" -#: dfa.c:1516 regcomp.c:176 -msgid "Regular expression too big" +#: dfa.c:1477 +#, fuzzy +msgid "regular expression too big" msgstr "La expresión regular es demasiado grande" -#: dfa.c:1936 +#: dfa.c:1912 #, fuzzy msgid "unbalanced (" msgstr "( desbalanceado" -#: dfa.c:2062 +#: dfa.c:2038 #, fuzzy msgid "no syntax specified" msgstr "No se especifican los bits de sintaxis de la expresión regular" -#: dfa.c:2070 +#: dfa.c:2046 #, fuzzy msgid "unbalanced )" msgstr ") desbalanceado" -#: eval.c:394 +#: eval.c:396 #, c-format msgid "unknown nodetype %d" msgstr "tipo de nodo %d desconocido" -#: eval.c:405 eval.c:419 +#: eval.c:407 eval.c:421 #, c-format msgid "unknown opcode %d" msgstr "código de operación %d desconocido" -#: eval.c:416 +#: eval.c:418 #, c-format 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:472 +#: eval.c:474 msgid "buffer overflow in genflags2str" msgstr "desbordamiento de almacenamiento temporal en genflags2str" -#: eval.c:675 +#: eval.c:676 #, c-format msgid "" "\n" @@ -1874,94 +1903,94 @@ msgstr "" "\t# Pila de Llamadas de Funciones:\n" "\n" -#: eval.c:704 +#: eval.c:705 msgid "`IGNORECASE' is a gawk extension" msgstr "`IGNORECASE' es una extensión de gawk" -#: eval.c:736 +#: eval.c:737 msgid "`BINMODE' is a gawk extension" msgstr "`BINMODE' es una extensión de gawk" -#: eval.c:794 +#: eval.c:795 #, 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:885 +#: eval.c:912 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "especificación `%sFMT' `%s' errónea" -#: eval.c:969 +#: eval.c:996 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "se desactiva `--lint' debido a una asignación a `LINT'" -#: eval.c:1147 +#: eval.c:1174 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "referencia al argumento sin inicializar `%s'" -#: eval.c:1148 +#: eval.c:1175 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "referencia a la variable sin inicializar `%s'" -#: eval.c:1166 +#: eval.c:1193 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:1168 +#: eval.c:1195 msgid "attempt to field reference from null string" msgstr "se intentó una referencia de campo desde una cadena nula" -#: eval.c:1176 +#: eval.c:1203 #, c-format msgid "attempt to access field %ld" msgstr "se intentó acceder al campo %ld" -#: eval.c:1185 +#: eval.c:1212 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "referencia al campo sin inicializar `$%ld'" -#: eval.c:1272 +#: eval.c:1299 #, 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:1473 +#: eval.c:1500 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: tipo `%s' inesperado" -#: eval.c:1569 +#: eval.c:1596 msgid "division by zero attempted in `/='" msgstr "se intentó una división por cero en `/='" -#: eval.c:1576 +#: eval.c:1603 #, c-format msgid "division by zero attempted in `%%='" msgstr "se intentó una división por cero en `%%='" -#: ext.c:89 ext.c:171 +#: ext.c:65 ext.c:147 msgid "extensions are not allowed in sandbox mode" msgstr "no se permiten las extensiones en modo sandbox" -#: ext.c:92 +#: ext.c:68 #, fuzzy msgid "-l / @load are gawk extensions" msgstr "@include es una extensión de gawk" -#: ext.c:95 +#: ext.c:71 msgid "load_ext: received NULL lib_name" msgstr "" -#: ext.c:98 +#: ext.c:74 #, fuzzy, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "fatal: extension: no se puede abrir `%s' (%s)\n" -#: ext.c:104 +#: ext.c:80 #, fuzzy, c-format msgid "" "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" @@ -1969,32 +1998,32 @@ msgstr "" "fatal: extension: la biblioteca `%s': no define " "`plugin_is_GPL_compatible' (%s)\n" -#: ext.c:110 +#: ext.c:86 #, fuzzy, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "" "fatal: extension: la biblioteca `%s': no puede llamar a la función `" "%s' (%s)\n" -#: ext.c:114 +#: ext.c:90 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "" -#: ext.c:174 +#: ext.c:150 msgid "`extension' is a gawk extension" msgstr "`extension' es una extensión de gawk" -#: ext.c:177 +#: ext.c:153 msgid "extension: received NULL lib_name" msgstr "" -#: ext.c:180 +#: ext.c:156 #, fuzzy, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "fatal: extension: no se puede abrir `%s' (%s)\n" -#: ext.c:186 +#: ext.c:162 #, fuzzy, c-format msgid "" "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" @@ -2002,100 +2031,100 @@ msgstr "" "fatal: extension: la biblioteca `%s': no define " "`plugin_is_GPL_compatible' (%s)\n" -#: ext.c:190 +#: ext.c:166 #, fuzzy, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "" "fatal: extension: la biblioteca `%s': no puede llamar a la función `" "%s' (%s)\n" -#: ext.c:221 +#: ext.c:197 #, fuzzy msgid "make_builtin: missing function name" msgstr "extension: falta el nombre de la función" -#: ext.c:236 +#: ext.c:212 #, fuzzy, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "extension: no se puede redefinir la función `%s'" -#: ext.c:240 +#: ext.c:216 #, fuzzy, c-format msgid "make_builtin: function `%s' already defined" msgstr "extension: la función `%s' ya está definida" -#: ext.c:244 +#: ext.c:220 #, fuzzy, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "extension: el nombre de función `%s' se definió previamente" -#: ext.c:246 +#: ext.c:222 #, 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:249 ext.c:304 +#: ext.c:225 ext.c:280 #, 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:276 +#: ext.c:252 #, fuzzy msgid "extension: missing function name" msgstr "extension: falta el nombre de la función" -#: ext.c:279 ext.c:283 +#: ext.c:255 ext.c:259 #, 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'" -#: ext.c:291 +#: ext.c:267 #, fuzzy, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: no se puede redefinir la función `%s'" -#: ext.c:295 +#: ext.c:271 #, fuzzy, c-format msgid "extension: function `%s' already defined" msgstr "extension: la función `%s' ya está definida" -#: ext.c:299 +#: ext.c:275 #, fuzzy, c-format msgid "extension: function name `%s' previously defined" msgstr "el nombre de función `%s' se definió previamente" -#: ext.c:301 +#: ext.c:277 #, fuzzy, c-format msgid "extension: 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:375 +#: ext.c:351 #, 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:378 +#: ext.c:354 #, c-format msgid "function `%s': missing argument #%d" msgstr "función `%s': falta el argumento #%d" -#: ext.c:395 +#: ext.c:371 #, 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:399 +#: ext.c:375 #, 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:413 +#: ext.c:389 msgid "dynamic loading of library not supported" msgstr "" @@ -2258,7 +2287,7 @@ msgstr "sqrt: se llamó con el argumento negativo %g" msgid "inplace_begin: in-place editing already active" msgstr "" -#: extension/inplace.c:133 extension/inplace.c:207 +#: extension/inplace.c:133 extension/inplace.c:210 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "" @@ -2287,55 +2316,55 @@ msgstr "`%s' no es un nombre de variable legal" msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "" -#: extension/inplace.c:178 +#: extension/inplace.c:181 #, fuzzy, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "%s: falló close (%s)" -#: extension/inplace.c:185 +#: extension/inplace.c:188 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:188 +#: extension/inplace.c:191 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:191 +#: extension/inplace.c:194 #, fuzzy, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "%s: falló close (%s)" -#: extension/inplace.c:210 +#: extension/inplace.c:213 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:217 +#: extension/inplace.c:220 msgid "inplace_end: in-place editing not active" msgstr "" -#: extension/inplace.c:223 +#: extension/inplace.c:226 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:226 +#: extension/inplace.c:229 #, fuzzy, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "%s: falló close (%s)" -#: extension/inplace.c:230 +#: extension/inplace.c:233 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:243 +#: extension/inplace.c:246 #, 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:253 +#: extension/inplace.c:256 #, fuzzy, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "falló al cerrar el df %d (`%s') (%s)" @@ -2385,52 +2414,56 @@ msgstr "sqrt: se llamó con el argumento negativo %g" msgid "readfile: called with no arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: extension/rwarray.c:124 +#: extension/revoutput.c:125 +msgid "revoutput: could not initialize REVOUT variable" +msgstr "" + +#: extension/rwarray.c:124 extension/rwarray0.c:109 #, fuzzy msgid "writea: called with too many arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: extension/rwarray.c:131 +#: extension/rwarray.c:131 extension/rwarray0.c:116 #, 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:137 +#: extension/rwarray.c:137 extension/rwarray0.c:122 #, 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:184 +#: extension/rwarray.c:184 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "" -#: extension/rwarray.c:198 +#: extension/rwarray.c:198 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "" -#: extension/rwarray.c:280 +#: extension/rwarray.c:280 extension/rwarray0.c:265 #, fuzzy msgid "reada: called with too many arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: extension/rwarray.c:287 +#: extension/rwarray.c:287 extension/rwarray0.c:272 #, 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:293 +#: extension/rwarray.c:293 extension/rwarray0.c:278 #, 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:337 +#: extension/rwarray.c:337 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "" -#: extension/rwarray.c:374 +#: extension/rwarray.c:374 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "" @@ -2463,92 +2496,92 @@ msgstr "exp: el argumento %g está fuera de rango" msgid "sleep: not supported on this platform" msgstr "" -#: field.c:345 +#: field.c:346 msgid "NF set to negative value" msgstr "se definió NF con un valor negativo" -#: field.c:971 field.c:978 field.c:982 +#: field.c:958 field.c:965 field.c:969 msgid "split: fourth argument is a gawk extension" msgstr "split: el cuarto argumento es una extensión de gawk" -#: field.c:975 +#: field.c:962 msgid "split: fourth argument is not an array" msgstr "split: el cuarto argumento no es una matriz" -#: field.c:989 +#: field.c:976 msgid "split: second argument is not an array" msgstr "split: el segundo argumento no es una matriz" -#: field.c:993 +#: field.c:980 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:998 +#: field.c:985 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:1001 +#: field.c:988 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:1032 +#: field.c:1019 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:1072 +#: field.c:1059 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: el cuarto argumento no es una matriz" -#: field.c:1077 +#: field.c:1064 msgid "patsplit: second argument is not an array" msgstr "patsplit: el segundo argumento no es una matriz" -#: field.c:1083 +#: field.c:1070 msgid "patsplit: third argument must be non-null" msgstr "patsplit: el tercer argumento no debe ser nulo" -#: field.c:1087 +#: field.c:1074 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:1092 +#: field.c:1079 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:1095 +#: field.c:1082 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:1133 +#: field.c:1120 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "`FIELDWIDTHS' es una extensión gawk" -#: field.c:1197 +#: field.c:1184 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "valor de FIELDWIDTHS inválido, cerca de `%s'" -#: field.c:1270 +#: field.c:1257 msgid "null string for `FS' is a gawk extension" msgstr "la cadena nula para `FS' es una extensión de gawk" -#: field.c:1274 +#: field.c:1261 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:1393 +#: field.c:1380 msgid "`FPAT' is a gawk extension" msgstr "`FPAT' es una extensión de gawk" @@ -2564,21 +2597,21 @@ msgstr "" msgid "node_to_awk_value: received null val" msgstr "" -#: gawkapi.c:807 +#: gawkapi.c:809 #, fuzzy msgid "remove_element: received null array" msgstr "length: se recibió un argumento de matriz" -#: gawkapi.c:810 +#: gawkapi.c:812 msgid "remove_element: received null subscript" msgstr "" -#: gawkapi.c:947 +#: gawkapi.c:949 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "" -#: gawkapi.c:952 +#: gawkapi.c:954 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "" @@ -2638,528 +2671,495 @@ msgstr "%s: la opción '-W %s' no admite ningún argumento\n" msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: la opción '-W %s' requiere un argumento\n" -#: io.c:392 +#: io.c:423 #, 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:395 io.c:513 +#: io.c:426 io.c:544 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "no se puede abrir el fichero `%s' para lectura (%s)" -#: io.c:640 +#: io.c:671 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "falló al cerrar el df %d (`%s') (%s)" -#: io.c:716 +#: io.c:749 msgid "redirection not allowed in sandbox mode" msgstr "no se permite la redirección en modo sandbox" -#: io.c:750 +#: io.c:783 #, 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:756 +#: io.c:789 #, 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:761 +#: io.c:794 #, 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:809 +#: io.c:842 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "mezcla innecesaria de `>' y `>>' para el fichero `%.*s'" -#: io.c:863 +#: io.c:896 #, 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:873 +#: io.c:906 #, 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:904 +#: io.c:937 #, 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:986 +#: io.c:1019 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "no se puede redirigir desde `%s' (%s)" -#: io.c:989 +#: io.c:1022 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "no se puede redirigir a `%s' (%s)" -#: io.c:1040 +#: io.c:1073 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:1056 +#: io.c:1089 #, c-format msgid "close of `%s' failed (%s)." msgstr "falló al cerrar `%s' (%s)." -#: io.c:1064 +#: io.c:1097 msgid "too many pipes or input files open" msgstr "demasiadas tuberías o ficheros de entrada abiertos" -#: io.c:1086 +#: io.c:1119 msgid "close: second argument must be `to' or `from'" msgstr "close: el segundo argumento debe ser `to' o `from'" -#: io.c:1103 +#: io.c:1136 #, 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:1108 +#: io.c:1141 msgid "close of redirection that was never opened" msgstr "se cerró una redirección que nunca se abrió" -#: io.c:1205 +#: io.c:1238 #, 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:1222 +#: io.c:1255 #, 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:1225 +#: io.c:1258 #, 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:1245 +#: io.c:1278 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "no se provee el cerrado explícito del `socket' `%s'" -#: io.c:1248 +#: io.c:1281 #, 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:1251 +#: io.c:1284 #, 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:1254 +#: io.c:1287 #, c-format msgid "no explicit close of file `%s' provided" msgstr "no se provee el cerrado explícito del fichero `%s'" -#: io.c:1284 io.c:1342 main.c:864 main.c:906 +#: io.c:1317 io.c:1375 main.c:628 main.c:670 #, c-format msgid "error writing standard output (%s)" msgstr "error al escribir en la salida estándar (%s)" -#: io.c:1289 io.c:1348 main.c:866 +#: io.c:1322 io.c:1381 main.c:630 #, c-format msgid "error writing standard error (%s)" msgstr "error al escribir en la salida estándar de error (%s)" -#: io.c:1297 +#: io.c:1330 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "falló la limpieza de la tubería de `%s' (%s)." -#: io.c:1300 +#: io.c:1333 #, 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:1303 +#: io.c:1336 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "falló la limpieza del fichero de `%s' (%s)." -#: io.c:1420 +#: io.c:1453 #, c-format msgid "local port %s invalid in `/inet'" msgstr "puerto local %s inválido en `/inet'" -#: io.c:1438 +#: io.c:1471 #, 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: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:1604 -#, c-format -msgid "special file name `%s' is incomplete" -msgstr "el nombre de fichero especial `%s' está incompleto" - -#: 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:1639 -msgid "must supply a remote port to `/inet'" -msgstr "se debe proporcionar a `/inet' un puerto remoto" - -#: io.c:1685 +#: io.c:1673 msgid "TCP/IP communications are not supported" msgstr "no se admiten las comunicaciones TCP/IP" -#: io.c:1867 +#: io.c:1854 #, c-format msgid "could not open `%s', mode `%s'" msgstr "no se puede abrir `%s', modo `%s'" -#: io.c:1917 +#: io.c:1904 #, c-format msgid "close of master pty failed (%s)" msgstr "falló al cerrar el pty maestro (%s)" -#: io.c:1919 io.c:2105 io.c:2305 +#: io.c:1906 io.c:2092 io.c:2293 #, c-format msgid "close of stdout in child failed (%s)" msgstr "falló al cerrar la salida estándar en el hijo (%s)" -#: io.c:1922 +#: io.c:1909 #, 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:1924 io.c:2110 +#: io.c:1911 io.c:2097 #, c-format msgid "close of stdin in child failed (%s)" msgstr "falló al cerrar la entrada estándar en el hijo (%s)" -#: io.c:1927 +#: io.c:1914 #, 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:1929 io.c:1951 +#: io.c:1916 io.c:1938 #, c-format msgid "close of slave pty failed (%s)" msgstr "falló al cerrar el pty esclavo (%s)" -#: io.c:2040 io.c:2108 io.c:2276 io.c:2308 +#: io.c:2027 io.c:2095 io.c:2264 io.c:2296 #, 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:2047 io.c:2113 +#: io.c:2034 io.c:2100 #, 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:2073 io.c:2298 +#: io.c:2060 io.c:2286 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:2081 +#: io.c:2068 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:2116 io.c:2310 io.c:2324 +#: io.c:2103 io.c:2298 io.c:2313 #, c-format msgid "close of pipe failed (%s)" msgstr "falló al cerrar la tubería (%s)" -#: io.c:2174 +#: io.c:2162 msgid "`|&' not supported" msgstr "no se admite `|&'" -#: io.c:2261 +#: io.c:2249 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "no se puede abrir la tubería `%s' (%s)" -#: io.c:2318 +#: io.c:2307 #, 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:2790 +#: io.c:2734 msgid "register_input_parser: received NULL pointer" msgstr "" -#: io.c:2818 +#: io.c:2762 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" -#: io.c:2825 +#: io.c:2769 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "" -#: io.c:2845 +#: io.c:2789 msgid "register_output_wrapper: received NULL pointer" msgstr "" -#: io.c:2873 +#: io.c:2817 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" -#: io.c:2880 +#: io.c:2824 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "" -#: io.c:2901 +#: io.c:2845 msgid "register_output_processor: received NULL pointer" msgstr "" -#: io.c:2930 +#: io.c:2874 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" msgstr "" -#: io.c:2939 +#: io.c:2883 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "" -#: io.c:3064 +#: io.c:3008 #, c-format msgid "data file `%s' is empty" msgstr "el fichero de datos `%s' está vacío" -#: io.c:3106 io.c:3114 +#: io.c:3050 io.c:3058 msgid "could not allocate more input memory" msgstr "no se puede reservar más memoria de entrada" -#: io.c:3682 +#: io.c:3636 msgid "multicharacter value of `RS' is a gawk extension" msgstr "el valor multicaracter de `RS' es una extensión de gawk" -#: io.c:3771 +#: io.c:3783 msgid "IPv6 communication is not supported" msgstr "no se admite la comunicación IPv6" -#: main.c:405 -msgid "empty argument to `-e/--source' ignored" -msgstr "se descarta el argumento vacío para `-e/--source'" - -#: 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:541 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: la opción requiere un argumento -- %c\n" - -#: main.c:562 +#: main.c:321 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "la variable de ambiente `POSIXLY_CORRECT' está definida: se activa `--posix'" -#: main.c:568 +#: main.c:327 msgid "`--posix' overrides `--traditional'" msgstr "`--posix' se impone a `--traditional'" -#: main.c:579 +#: main.c:338 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "`--posix'/`--traditional' se imponen a `--non-decimal-data'" -#: main.c:583 +#: main.c:342 #, 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:588 +#: main.c:346 #, fuzzy msgid "`--posix' overrides `--characters-as-bytes'" msgstr "`--posix' se impone a `--binary'" -#: main.c:647 +#: main.c:404 #, 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:650 +#: main.c:407 #, 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:652 +#: main.c:409 #, 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:710 +#: main.c:469 msgid "no program text at all!" msgstr "¡No hay ningún programa de texto!" -#: main.c:799 +#: main.c:563 #, 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:801 +#: main.c:565 #, 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:806 +#: main.c:570 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Opciones POSIX:\t\tOpciones largas GNU: (estándar)\n" -#: main.c:807 +#: main.c:571 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f fichprog\t\t--file=fichprog\n" -#: main.c:808 +#: main.c:572 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F sc\t\t\t--field-separator=sc\n" -#: main.c:809 +#: main.c:573 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 +#: main.c:574 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Opciones cortas:\t\tOpciones largas GNU: (extensiones)\n" -#: main.c:811 +#: main.c:575 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:812 +#: main.c:576 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:813 +#: main.c:577 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:814 +#: main.c:578 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[fichero]\t\t--dump-variables[=fichero]\n" -#: main.c:815 +#: main.c:579 #, 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:816 +#: main.c:580 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'texto-prog'\t--source='texto-prog'\n" -#: main.c:817 +#: main.c:581 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E fichero\t\t--exec=fichero\n" -#: main.c:818 +#: main.c:582 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:819 +#: main.c:583 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:820 +#: main.c:584 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "" -#: main.c:821 +#: main.c:585 msgid "\t-l library\t\t--load=library\n" msgstr "" -#: main.c:822 -msgid "\t-L [fatal]\t\t--lint[=fatal]\n" +#: main.c:586 +#, fuzzy +msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: 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:824 +#: main.c:587 #, fuzzy msgid "\t-M\t\t\t--bignum\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:825 +#: main.c:588 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:826 +#: main.c:589 +msgid "\t-n\t\t\t--non-decimal-data\n" +msgstr "\t-n\t\t\t--non-decimal-data\n" + +#: main.c:590 #, fuzzy msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-p[fichero]\t\t--profile[=fichero]\n" -#: main.c:827 +#: main.c:591 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:828 +#: main.c:592 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[fichero]\t\t--profile[=fichero]\n" -#: main.c:829 +#: main.c:593 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:830 +#: main.c:594 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:831 +#: main.c:595 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:832 +#: main.c:596 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:833 +#: main.c:597 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:835 +#: main.c:599 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:838 +#: main.c:602 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3168,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:847 +#: main.c:611 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3182,7 +3182,7 @@ msgstr "" "Reporte los errores de los mensajes en español a <es@li.org>.\n" "\n" -#: main.c:851 +#: main.c:615 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3192,7 +3192,7 @@ msgstr "" "Por defecto lee la entrada estándar y escribe en la salida estándar.\n" "\n" -#: main.c:855 +#: main.c:619 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3202,7 +3202,7 @@ msgstr "" "\tgawk '{ sum += $1 }; END { print sum }' fichero\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:880 +#: main.c:644 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3222,7 +3222,7 @@ msgstr "" "(a su elección) cualquier versión posterior.\n" "\n" -#: main.c:888 +#: main.c:652 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" @@ -3236,7 +3236,7 @@ msgstr "" "Licencia Pública General de GNU para más detalles.\n" "\n" -#: main.c:894 +#: main.c:658 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" @@ -3245,16 +3245,16 @@ msgstr "" "junto con este programa. Si no es así, consulte\n" "http://www.gnu.org/licenses/.\n" -#: main.c:931 +#: main.c:695 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:1208 +#: main.c:982 #, c-format msgid "unknown value for field spec: %d\n" msgstr "valor desconocido para la especificación de campo: %d\n" -#: main.c:1306 +#: main.c:1080 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3263,103 +3263,121 @@ msgstr "" "%s: el argumento `%s' para `-v' no es de la forma `var=valor'\n" "\n" -#: main.c:1332 +#: main.c:1106 #, c-format msgid "`%s' is not a legal variable name" msgstr "`%s' no es un nombre de variable legal" -#: main.c:1335 +#: main.c:1109 #, 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:1339 +#: main.c:1113 #, 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:1344 +#: main.c:1118 #, 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:1397 +#: main.c:1171 msgid "floating point exception" msgstr "excepción de coma flotante" -#: main.c:1404 +#: main.c:1178 msgid "fatal error: internal error" msgstr "error fatal: error interno" -#: main.c:1419 +#: main.c:1193 msgid "fatal error: internal error: segfault" msgstr "error fatal: error interno: falla de segmentación" -#: main.c:1431 +#: main.c:1205 msgid "fatal error: internal error: stack overflow" msgstr "error fatal: error interno: desbordamiento de pila" -#: main.c:1490 +#: main.c:1264 #, c-format msgid "no pre-opened fd %d" msgstr "no existe el df %d abierto previamente" -#: main.c:1497 +#: main.c:1271 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "no se puede abrir previamente /dev/null para el df %d" -#: mpfr.c:550 +#: main.c:1485 +msgid "empty argument to `-e/--source' ignored" +msgstr "se descarta el argumento vacío para `-e/--source'" + +#: main.c:1556 +msgid "-M ignored: MPFR/GMP support not compiled in" +msgstr "" + +#: main.c:1577 +#, 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:1630 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: la opción requiere un argumento -- %c\n" + +#: mpfr.c:557 #, fuzzy, c-format msgid "PREC value `%.*s' is invalid" msgstr "el valor BINMODE `%s' es inválido; se trata como 3" -#: mpfr.c:608 +#: mpfr.c:615 #, fuzzy, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "el valor BINMODE `%s' es inválido; se trata como 3" -#: mpfr.c:698 +#: mpfr.c:711 #, fuzzy, c-format msgid "%s: received non-numeric argument" msgstr "cos: se recibió un argumento que no es númerico" -#: mpfr.c:800 +#: mpfr.c:820 #, fuzzy msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%lf): el valor negativo dará resultados extraños" -#: mpfr.c:804 +#: mpfr.c:824 #, fuzzy msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%lf): el valor fraccionario se truncará" -#: mpfr.c:816 +#: mpfr.c:836 #, fuzzy, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "compl(%lf): el valor negativo dará resultados extraños" -#: mpfr.c:835 +#: mpfr.c:855 #, fuzzy, c-format msgid "%s: received non-numeric argument #%d" msgstr "cos: se recibió un argumento que no es númerico" -#: mpfr.c:845 +#: mpfr.c:865 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "" -#: mpfr.c:857 +#: mpfr.c:877 #, fuzzy msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "compl(%lf): el valor negativo dará resultados extraños" -#: mpfr.c:863 +#: mpfr.c:883 #, fuzzy msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "or(%lf, %lf): los valores fraccionarios serán truncados" -#: mpfr.c:878 +#: mpfr.c:898 #, fuzzy, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "compl(%lf): el valor negativo dará resultados extraños" @@ -3369,24 +3387,24 @@ msgstr "compl(%lf): el valor negativo dará resultados extraños" msgid "cmd. line:" msgstr "línea ord.:" -#: node.c:421 +#: node.c:409 msgid "backslash at end of string" msgstr "barra invertida al final de la cadena" -#: node.c:500 +#: node.c:488 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "el awk antiguo no admite la secuencia de escape `\\%c'" -#: node.c:551 +#: node.c:539 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX no permite escapes `\\x'" -#: node.c:557 +#: node.c:545 msgid "no hex digits in `\\x' escape sequence" msgstr "no hay dígitos hexadecimales en la secuencia de escape `\\x'" -#: node.c:579 +#: node.c:567 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3395,12 +3413,12 @@ msgstr "" "el escape hexadecimal \\x%.*s de %d caracteres tal vez no se interprete de " "la forma esperada" -#: node.c:594 +#: node.c:582 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "la secuencia de escape `\\%c' se trata como una simple `%c'" -#: node.c:739 +#: node.c:726 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3429,12 +3447,12 @@ msgid "sending profile to standard error" msgstr "se envía el perfil a la salida estándar de error" #: profile.c:193 -#, c-format +#, fuzzy, c-format msgid "" -"\t# %s block(s)\n" +"\t# %s rule(s)\n" "\n" msgstr "" -"\t# bloque(s) %s\n" +"\t# Regla(s)\n" "\n" #: profile.c:198 @@ -3451,24 +3469,24 @@ msgstr "" msgid "internal error: %s with null vname" msgstr "error interno: %s con vname nulo" -#: profile.c:537 +#: profile.c:538 #, fuzzy msgid "internal error: builtin with null fname" msgstr "error interno: %s con vname nulo" -#: profile.c:949 +#: profile.c:958 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" "\n" msgstr "" -#: profile.c:972 +#: profile.c:981 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# perfil de gawk, creado %s\n" -#: profile.c:1475 +#: profile.c:1521 #, c-format msgid "" "\n" @@ -3477,7 +3495,7 @@ msgstr "" "\n" "\t# Funciones, enumeradas alfabéticamente\n" -#: profile.c:1513 +#: profile.c:1559 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: tipo de redirección %d desconocida" @@ -3488,74 +3506,116 @@ msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" "el componente de expresión regular `%.*s' probablemente debe ser `[%.*s]'" -#: regcomp.c:131 +#: regcomp.c:139 msgid "Success" msgstr "Éxito" -#: regcomp.c:134 +#: regcomp.c:142 msgid "No match" msgstr "No hay coincidencia" -#: regcomp.c:137 +#: regcomp.c:145 msgid "Invalid regular expression" msgstr "Expresión regular inválida" -#: regcomp.c:140 +#: regcomp.c:148 msgid "Invalid collation character" msgstr "Caracter de ordenación inválido" -#: regcomp.c:143 +#: regcomp.c:151 msgid "Invalid character class name" msgstr "Nombre de clase de caracter inválido" -#: regcomp.c:146 +#: regcomp.c:154 msgid "Trailing backslash" msgstr "Barra invertida extra al final" -#: regcomp.c:149 +#: regcomp.c:157 msgid "Invalid back reference" msgstr "Referencia hacia atrás inválida" -#: regcomp.c:152 -msgid "Unmatched [ or [^" +#: regcomp.c:160 +#, fuzzy +msgid "Unmatched [, [^, [:, [., or [=" msgstr "[ o [^ desemparejados" -#: regcomp.c:155 +#: regcomp.c:163 msgid "Unmatched ( or \\(" msgstr "( o \\( desemparejados" -#: regcomp.c:158 +#: regcomp.c:166 msgid "Unmatched \\{" msgstr "\\{ desemparejado" -#: regcomp.c:164 +#: regcomp.c:169 +msgid "Invalid content of \\{\\}" +msgstr "Contenido inválido de \\{\\}" + +#: regcomp.c:172 msgid "Invalid range end" msgstr "Final de rango inválido" -#: regcomp.c:167 +#: regcomp.c:175 msgid "Memory exhausted" msgstr "Memoria agotada" -#: regcomp.c:170 +#: regcomp.c:178 msgid "Invalid preceding regular expression" msgstr "Expresión regular precedente inválida" -#: regcomp.c:173 +#: regcomp.c:181 msgid "Premature end of regular expression" msgstr "Fin prematuro de la expresión regular" -#: regcomp.c:179 +#: regcomp.c:184 +msgid "Regular expression too big" +msgstr "La expresión regular es demasiado grande" + +#: regcomp.c:187 msgid "Unmatched ) or \\)" msgstr ") o \\) desemparejados" -#: regcomp.c:704 +#: regcomp.c:712 msgid "No previous regular expression" msgstr "No hay una expresión regular previa" -#: symbol.c:741 +#: symbol.c:677 +#, fuzzy, c-format +msgid "function `%s': can't use function `%s' as a parameter name" +msgstr "" +"función `%s': no se puede usar un nombre de función como nombre de parámetro" + +#: symbol.c:809 msgid "can not pop main context" msgstr "" +#~ msgid "`getline var' invalid inside `%s' rule" +#~ msgstr "`getline var' inválido dentro de la regla `%s'" + +#~ msgid "`getline' invalid inside `%s' rule" +#~ msgstr "`getline' inválido dentro de la regla `%s'" + +#~ msgid "no (known) protocol supplied in special filename `%s'" +#~ msgstr "" +#~ "no se proporciona algún protocolo (conocido) en el nombre de fichero " +#~ "especial `%s'" + +#~ msgid "special file name `%s' is incomplete" +#~ msgstr "el nombre de fichero especial `%s' está incompleto" + +#~ msgid "must supply a remote hostname to `/inet'" +#~ msgstr "se debe proporcionar a `/inet' un nombre de anfitrión remoto" + +#~ msgid "must supply a remote port to `/inet'" +#~ msgstr "se debe proporcionar a `/inet' un puerto remoto" + +#~ msgid "" +#~ "\t# %s block(s)\n" +#~ "\n" +#~ msgstr "" +#~ "\t# bloque(s) %s\n" +#~ "\n" + #~ msgid "range of the form `[%c-%c]' is locale dependent" #~ msgstr "el rango de la forma `[%c-%c]' depende del local" @@ -3627,9 +3687,6 @@ msgstr "" #~ msgid "Operation Not Supported" #~ msgstr "No Se Admite La Operación" -#~ msgid "attempt to use function `%s' as an array" -#~ msgstr "se intentó usar la función `%s' como una matriz" - #~ msgid "reference to uninitialized element `%s[\"%.*s\"]'" #~ msgstr "referencia al elemento sin inicializar `%s[\"%.*s\"]'" @@ -3673,9 +3730,6 @@ msgstr "" #~ msgid "function `%s' not defined" #~ msgstr "la función `%s' no está definida" -#~ msgid "non-redirected `getline' invalid inside `%s' rule" -#~ msgstr "`getline' no redirigido es inválido dentro de la regla `%s'" - #~ msgid "error reading input file `%s': %s" #~ msgstr "error al leer el fichero de entrada `%s': %s" @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.1.0b\n" -"Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2014-04-08 19:23+0300\n" +"Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" +"POT-Creation-Date: 2015-02-26 20:05+0200\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,9 +37,9 @@ 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:1615 builtin.c:1661 -#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126 -#: eval.c:1531 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 +#: builtin.c:1665 builtin.c:2092 builtin.c:2106 eval.c:1149 eval.c:1153 +#: eval.c:1558 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "yritettiin käyttää taulukkoa ”%s” skalaarikontekstissa" @@ -98,408 +98,413 @@ msgstr "" "asorti: toisen argumentin alitaulukon käyttö ensimmäiselle argumentille " "epäonnistui" -#: array.c:1314 +#: array.c:1313 #, c-format msgid "`%s' is invalid as a function name" msgstr "”%s” on virheellinen funktionimenä" -#: array.c:1318 +#: array.c:1317 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "lajitteluvertailufunktiota ”%s” ei ole määritelty" -#: awkgram.y:233 +#: awkgram.y:226 #, c-format msgid "%s blocks must have an action part" msgstr "%s lohkoilla on oltava toiminto-osa" -#: awkgram.y:236 +#: awkgram.y:229 msgid "each rule must have a pattern or an action part" msgstr "jokaisella säännöllä on oltava malli tai toiminto-osa" -#: awkgram.y:325 awkgram.y:336 +#: awkgram.y:320 awkgram.y:331 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "vanha awk ei tue useita ”BEGIN”- tai ”END”-sääntöjä" -#: awkgram.y:373 +#: awkgram.y:368 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "”%s” on sisäänrakennettu funktio. Sitä ei voi määritellä uudelleen" -#: awkgram.y:419 +#: awkgram.y:417 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "" "säännöllisen lausekkeen vakio ”//” näyttää C++-kommentilta, mutta ei ole" -#: awkgram.y:423 +#: awkgram.y:421 #, 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" -#: awkgram.y:515 +#: awkgram.y:513 #, c-format msgid "duplicate case values in switch body: %s" msgstr "kaksi samanlaista case-arvoa switch-rakenteen rungossa: %s" -#: awkgram.y:536 +#: awkgram.y:534 msgid "duplicate `default' detected in switch body" msgstr "kaksoiskappale ”default” havaittu switch-rungossa" -#: awkgram.y:796 awkgram.y:3723 +#: awkgram.y:794 awkgram.y:3751 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:3715 +#: awkgram.y:803 awkgram.y:3743 msgid "`continue' is not allowed outside a loop" msgstr "”continue” ei ole sallittu silmukan ulkopuolella" -#: awkgram.y:815 +#: awkgram.y:813 #, c-format msgid "`next' used in %s action" msgstr "”next” käytetty %s-toiminnossa" -#: awkgram.y:824 +#: awkgram.y:822 #, c-format msgid "`nextfile' used in %s action" msgstr "”nextfile” käytetty %s-toiminnossa" -#: awkgram.y:848 +#: awkgram.y:846 msgid "`return' used outside function context" msgstr "”return” käytetty funktiokontekstin ulkopuolella" -#: awkgram.y:922 +#: awkgram.y:920 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 \"\"”" -#: awkgram.y:988 awkgram.y:1037 +#: awkgram.y:986 awkgram.y:1035 msgid "`delete' is not allowed with SYMTAB" msgstr "”delete” ei ole sallittu kohteessa SYMTAB" -#: awkgram.y:990 awkgram.y:1039 +#: awkgram.y:988 awkgram.y:1037 msgid "`delete' is not allowed with FUNCTAB" msgstr "”delete” ei ole sallittu kohteessa FUNCTAB" -#: awkgram.y:1024 awkgram.y:1028 +#: awkgram.y:1022 awkgram.y:1026 msgid "`delete(array)' is a non-portable tawk extension" msgstr "”delete(array)” ei ole siirrettävä tawk-laajennus" -#: awkgram.y:1149 +#: awkgram.y:1147 msgid "multistage two-way pipelines don't work" msgstr "monivaiheiset kaksisuuntaiset putket eivät toimi" -#: awkgram.y:1264 +#: awkgram.y:1262 msgid "regular expression on right of assignment" msgstr "säännöllinen lauseke sijoituksen oikealla puolella" -#: awkgram.y:1275 +#: awkgram.y:1273 msgid "regular expression on left of `~' or `!~' operator" msgstr "säännöllinen lauseke ”~”- tai ”!~”-operaattorin vasemmalla puolella" -#: awkgram.y:1291 awkgram.y:1442 +#: awkgram.y:1289 awkgram.y:1431 msgid "old awk does not support the keyword `in' except after `for'" msgstr "vanha awk ei tue avainsanaa ”in” paitsi ”for”-sanan jälkeen" -#: awkgram.y:1301 +#: awkgram.y:1299 msgid "regular expression on right of comparison" msgstr "säännöllinen lauseke vertailun oikealla puolella" -#: awkgram.y:1417 -#, c-format -msgid "`getline var' invalid inside `%s' rule" -msgstr "”getline var” virheellinen säännön ”%s” sisällä" - -#: awkgram.y:1420 +#: awkgram.y:1411 #, c-format -msgid "`getline' invalid inside `%s' rule" -msgstr "”getline” virheellinen säännön ”%s” sisällä" +msgid "non-redirected `getline' invalid inside `%s' rule" +msgstr "edelleenohjaamaton ”getline” virheellinen ”%s”-säännön sisällä" -#: awkgram.y:1425 +#: awkgram.y:1414 msgid "non-redirected `getline' undefined inside END action" msgstr "edelleenohjaamaton ”getline” määrittelemätön END-toiminnon sisällä" -#: awkgram.y:1444 +#: awkgram.y:1433 msgid "old awk does not support multidimensional arrays" msgstr "vanha awk ei tue moniulotteisia taulukkoja" -#: awkgram.y:1541 +#: awkgram.y:1530 msgid "call of `length' without parentheses is not portable" msgstr "”length”-kutsu ilman sulkumerkkejä ei ole siirrettävä" -#: awkgram.y:1607 +#: awkgram.y:1596 msgid "indirect function calls are a gawk extension" msgstr "epäsuorat funktiokutsut ovat gawk-laajennus" -#: awkgram.y:1620 +#: awkgram.y:1609 #, c-format msgid "can not use special variable `%s' for indirect function call" msgstr "erikoismuuttujan ”%s” käyttö epäsuoralle funktiokutsulle epäonnistui" -#: awkgram.y:1698 +#: awkgram.y:1635 +#, fuzzy, c-format +msgid "attempt to use non-function `%s' in function call" +msgstr "yritettiin käyttää funktiota ”%s” taulukkona" + +#: awkgram.y:1699 msgid "invalid subscript expression" msgstr "virheellinen indeksointilauseke" -#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2045 awkgram.y:2065 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "varoitus: " -#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 +#: awkgram.y:2063 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "tuhoisa: " -#: awkgram.y:2116 +#: awkgram.y:2113 msgid "unexpected newline or end of string" msgstr "odottamaton rivinvaihto tai merkkijonon loppu" -#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 +#: awkgram.y:2392 awkgram.y:2468 awkgram.y:2691 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:2384 awkgram.y:2509 +#: awkgram.y:2393 awkgram.y:2518 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "jaetun kirjaston ”%s” avaaminen lukemista varten (%s) epäonnistui" -#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 +#: awkgram.y:2395 awkgram.y:2469 awkgram.y:2519 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "syy tuntematon" -#: awkgram.y:2395 awkgram.y:2419 +#: awkgram.y:2404 awkgram.y:2428 #, 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:2408 +#: awkgram.y:2417 #, c-format msgid "already included source file `%s'" msgstr "on jo sisällytetty lähdetiedostoon ”%s”" -#: awkgram.y:2409 +#: awkgram.y:2418 #, c-format msgid "already loaded shared library `%s'" msgstr "jaettu kirjasto ”%s” on jo ladattu" -#: awkgram.y:2444 +#: awkgram.y:2453 msgid "@include is a gawk extension" msgstr "@include on gawk-laajennus" -#: awkgram.y:2450 +#: awkgram.y:2459 msgid "empty filename after @include" msgstr "tyhjä tiedostonimi @include:n jälkeen" -#: awkgram.y:2494 +#: awkgram.y:2503 msgid "@load is a gawk extension" msgstr "@load on gawk-laajennus" -#: awkgram.y:2500 +#: awkgram.y:2509 msgid "empty filename after @load" msgstr "tyhjä tiedostonimi @load:n jälkeen" -#: awkgram.y:2634 +#: awkgram.y:2643 msgid "empty program text on command line" msgstr "tyhjä ohjelmateksti komentorivillä" -#: awkgram.y:2749 +#: awkgram.y:2758 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "lähdetiedoston ”%s” (%s) lukeminen epäonnistui" -#: awkgram.y:2760 +#: awkgram.y:2769 #, c-format msgid "source file `%s' is empty" msgstr "lähdetiedosto ”%s” on tyhjä" -#: awkgram.y:2937 +#: awkgram.y:2828 +#, c-format +msgid "PEBKAC error: invalid character '\\%03o' in source code" +msgstr "" + +#: awkgram.y:2959 msgid "source file does not end in newline" msgstr "lähdetiedoston lopussa ei ole rivinvaihtoa" -#: awkgram.y:3042 +#: awkgram.y:3062 msgid "unterminated regexp ends with `\\' at end of file" msgstr "" "päättämätön säännöllinen lauseke loppuu ”\\”-merkkeihin tiedoston lopussa" -#: awkgram.y:3066 +#: awkgram.y:3089 #, 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:3070 +#: awkgram.y:3093 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "tawkin regex-määre ”/.../%c” ei toimi gawkissa" -#: awkgram.y:3077 +#: awkgram.y:3100 msgid "unterminated regexp" msgstr "päättämätön säännöllinen lauseke" -#: awkgram.y:3081 +#: awkgram.y:3104 msgid "unterminated regexp at end of file" msgstr "päättämätön säännöllinen lauseke tiedoston lopussa" -#: awkgram.y:3140 +#: awkgram.y:3162 msgid "use of `\\ #...' line continuation is not portable" msgstr "”\\ #...”-rivijatkamisen käyttö ei ole siirrettävä" -#: awkgram.y:3156 +#: awkgram.y:3178 msgid "backslash not last character on line" msgstr "kenoviiva ei ole rivin viimeinen merkki" -#: awkgram.y:3217 +#: awkgram.y:3239 msgid "POSIX does not allow operator `**='" msgstr "POSIX ei salli operaattoria ”**=”" -#: awkgram.y:3219 +#: awkgram.y:3241 msgid "old awk does not support operator `**='" msgstr "vanha awk ei tue operaattoria ”**=”" -#: awkgram.y:3228 +#: awkgram.y:3250 msgid "POSIX does not allow operator `**'" msgstr "POSIX ei salli operaattoria ”**”" -#: awkgram.y:3230 +#: awkgram.y:3252 msgid "old awk does not support operator `**'" msgstr "vanha awk ei tue operaattoria ”**”" -#: awkgram.y:3265 +#: awkgram.y:3287 msgid "operator `^=' is not supported in old awk" msgstr "operaattoria ”^=” ei tueta vanhassa awk:ssa" -#: awkgram.y:3273 +#: awkgram.y:3295 msgid "operator `^' is not supported in old awk" msgstr "operaattoria ”^” ei tueta vanhassa awk:ssa" -#: awkgram.y:3366 awkgram.y:3382 command.y:1178 +#: awkgram.y:3392 awkgram.y:3410 command.y:1180 msgid "unterminated string" msgstr "päättämätön merkkijono" -#: awkgram.y:3603 +#: awkgram.y:3631 #, c-format msgid "invalid char '%c' in expression" msgstr "virheellinen merkki ’%c’ lausekkeessa" -#: awkgram.y:3650 +#: awkgram.y:3678 #, c-format msgid "`%s' is a gawk extension" msgstr "”%s” on gawk-laajennus" -#: awkgram.y:3655 +#: awkgram.y:3683 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX ei salli operaattoria ”%s”" -#: awkgram.y:3663 +#: awkgram.y:3691 #, c-format msgid "`%s' is not supported in old awk" msgstr "”%s” ei ole tuettu vanhassa awk-ohjelmassa" -#: awkgram.y:3753 +#: awkgram.y:3781 msgid "`goto' considered harmful!\n" msgstr "”goto”-käskyä pidetään haitallisena!\n" -#: awkgram.y:3787 +#: awkgram.y:3815 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d on virheellinen argumenttilukumäärä operaattorille %s" -#: awkgram.y:3822 +#: awkgram.y:3850 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "" "%s: merkkijonoliteraalilla ei ole vaikutusta korvauksen viimeisenä " "argumenttina" -#: awkgram.y:3827 +#: awkgram.y:3855 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s kolmas parametri ei ole vaihdettava objekti" -#: awkgram.y:3910 awkgram.y:3913 +#: awkgram.y:3938 awkgram.y:3941 msgid "match: third argument is a gawk extension" msgstr "match: kolmas argumentti on gawk-laajennus" -#: awkgram.y:3967 awkgram.y:3970 +#: awkgram.y:3995 awkgram.y:3998 msgid "close: second argument is a gawk extension" msgstr "close: toinen argumentti on gawk-laajennus" -#: awkgram.y:3982 +#: awkgram.y:4010 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "dcgettext(_\"...\")-käyttö on virheellinen: poista alaviiva alusta" -#: awkgram.y:3997 +#: awkgram.y:4025 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "dcngettext(_\"...\")-käyttö on virheellinen: poista alaviiva alusta" -#: awkgram.y:4016 +#: awkgram.y:4044 msgid "index: regexp constant as second argument is not allowed" msgstr "index: regexp-vakio toisena argumenttina ei ole sallittu" -#: awkgram.y:4069 +#: awkgram.y:4097 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funktio ”%s”: parametri ”%s” varjostaa yleismuuttujaa" -#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4154 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:4127 +#: awkgram.y:4155 msgid "sending variable list to standard error" msgstr "lähetetään muuttujaluettelo vakiovirheeseen" -#: awkgram.y:4135 +#: awkgram.y:4163 #, c-format msgid "%s: close failed (%s)" msgstr "%s: sulkeminen epäonnistui (%s)" -#: awkgram.y:4160 +#: awkgram.y:4188 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() kutsuttu kahdesti!" -#: awkgram.y:4168 +#: awkgram.y:4196 msgid "there were shadowed variables." msgstr "siellä oli varjostettuja muuttujia." -#: awkgram.y:4239 +#: awkgram.y:4267 #, c-format msgid "function name `%s' previously defined" msgstr "funktionimi ”%s” on jo aikaisemmin määritelty" -#: awkgram.y:4285 +#: awkgram.y:4313 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "funktio ”%s”: funktionimen käyttö parametrinimenä epäonnistui" -#: awkgram.y:4288 +#: awkgram.y:4316 #, 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" -#: awkgram.y:4296 +#: awkgram.y:4324 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funktio ”%s”: parametri #%d, ”%s”, samanlainen parametri #%d" -#: awkgram.y:4383 awkgram.y:4389 +#: awkgram.y:4411 awkgram.y:4417 #, c-format msgid "function `%s' called but never defined" msgstr "funktiota ”%s” kutsuttiin, mutta sitä ei ole koskaan määritelty" -#: awkgram.y:4393 +#: awkgram.y:4421 #, c-format msgid "function `%s' defined but never called directly" msgstr "funktio ”%s” määriteltiin, mutta sitä ei ole koskaan kutsuttu suoraan" -#: awkgram.y:4425 +#: awkgram.y:4453 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "säännöllisen lausekkeen vakio parametrille #%d antaa boolean-arvon" -#: awkgram.y:4484 +#: awkgram.y:4468 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -508,21 +513,21 @@ msgstr "" "funktio ”%s” kutsuttu välilyönnillä nimen ja ”(”-merkin\n" "välillä, tai käytetty muuttujana tai taulukkona" -#: awkgram.y:4720 +#: awkgram.y:4674 msgid "division by zero attempted" msgstr "nollalla jakoa yritettiin" -#: awkgram.y:4729 +#: awkgram.y:4683 #, c-format msgid "division by zero attempted in `%%'" msgstr "jakoa nollalla yritettiin operaattorissa ”%%”" -#: awkgram.y:5049 +#: awkgram.y:5003 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:5052 +#: awkgram.y:5006 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "virheellinen liittämiskohde (käskykoodi %s)" @@ -565,192 +570,202 @@ msgstr "" msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "fflush: ”%s” ei ole avoin tiedosto, putki tai apuprosessi" -#: builtin.c:362 +#: builtin.c:351 msgid "index: received non-string first argument" msgstr "index: ensimmäinen vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:364 +#: builtin.c:353 msgid "index: received non-string second argument" msgstr "index: toinen vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:488 mpfr.c:757 +#: builtin.c:466 mpfr.c:777 msgid "int: received non-numeric argument" msgstr "int: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:525 +#: builtin.c:503 msgid "length: received array argument" msgstr "length: vastaanotettu taulukkoargumentti" -#: builtin.c:528 +#: builtin.c:506 msgid "`length(array)' is a gawk extension" msgstr "”length(array)” on gawk-laajennus" -#: builtin.c:544 +#: builtin.c:525 msgid "length: received non-string argument" msgstr "length: vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:575 +#: builtin.c:554 msgid "log: received non-numeric argument" msgstr "log: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:578 +#: builtin.c:557 #, c-format msgid "log: received negative argument %g" msgstr "log: vastaanotettu negatiivinen argumentti %g" -#: builtin.c:776 builtin.c:781 +#: builtin.c:755 builtin.c:760 builtin.c:911 msgid "fatal: must use `count$' on all formats or none" msgstr "kohtalokas: on käytettävä ”count$” kaikilla muodoilla tai ei missään" -#: builtin.c:851 +#: builtin.c:830 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "kenttäleveys ohitetaan ”%%%%”-määritteelle" -#: builtin.c:853 +#: builtin.c:832 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "tarkkuus ohitetaan ”%%%%”-määritteelle" -#: builtin.c:855 +#: builtin.c:834 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "kenttäleveys ja tarkkuus ohitetaan ”%%%%”-määritteelle" -#: builtin.c:906 +#: builtin.c:885 msgid "fatal: `$' is not permitted in awk formats" msgstr "kohtalokas: ”$”-argumentti ei ole sallittu awk-muodoissa" -#: builtin.c:915 +#: builtin.c:894 msgid "fatal: arg count with `$' must be > 0" msgstr "kohtalokas: argumenttilukumäärän argumentilla ”$” on oltava > 0" -#: builtin.c:919 +#: builtin.c:898 #, 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ä" -#: builtin.c:923 +#: builtin.c:902 msgid "fatal: `$' not permitted after period in format" msgstr "kohtalokas: ”$”-argumentti ei ole sallittu pisteen jälkeen muodossa" -#: builtin.c:939 +#: builtin.c:921 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" "kohtalokas: ei ”$”-argumenttia tarjottu sijantikenttäleveydelle tai " "tarkkuudelle" -#: builtin.c:1009 +#: builtin.c:991 msgid "`l' is meaningless in awk formats; ignored" msgstr "”l” on merkityksetön awk-muodoissa; ohitetaan" -#: builtin.c:1013 +#: builtin.c:995 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "kohtalokas: ”l” ei ole sallittu POSIX awk -muodoissa" -#: builtin.c:1026 +#: builtin.c:1008 msgid "`L' is meaningless in awk formats; ignored" msgstr "”L” on merkityksetön awk-muodoissa; ohitetaan" -#: builtin.c:1030 +#: builtin.c:1012 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "kohtalokas: ”L” ei ole sallittu POSIX awk -muodoissa" -#: builtin.c:1043 +#: builtin.c:1025 msgid "`h' is meaningless in awk formats; ignored" msgstr "”h” on merkityksetön awk-muodoissa; ohitetaan" -#: builtin.c:1047 +#: builtin.c:1029 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "kohtalokas: ”h” ei ole sallittu POSIX awk -muodoissa" -#: builtin.c:1463 +#: builtin.c:1055 +#, fuzzy, c-format +msgid "[s]printf: value %g is too big for %%c format" +msgstr "[s]printf: arvo %g on lukualueen ulkopuolella ”%%%c”-muodolle" + +#: builtin.c:1068 +#, fuzzy, c-format +msgid "[s]printf: value %g is not a valid wide character" +msgstr "[s]printf: arvo %g on lukualueen ulkopuolella ”%%%c”-muodolle" + +#: builtin.c:1454 #, 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:1561 +#: builtin.c:1552 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "ohitetaan tuntematon muotoargumenttimerkki ”%c”: ei muunnettu argumenttia" -#: builtin.c:1566 +#: builtin.c:1557 msgid "fatal: not enough arguments to satisfy format string" msgstr "kohtalokas: ei kylliksi argumentteja muotomerkkijonon tyydyttämiseksi" -#: builtin.c:1568 +#: builtin.c:1559 msgid "^ ran out for this one" msgstr "^ tällainen loppui kesken" -#: builtin.c:1575 +#: builtin.c:1566 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: muotoargumentilla ei ole ohjauskirjainta" -#: builtin.c:1578 +#: builtin.c:1569 msgid "too many arguments supplied for format string" msgstr "muotomerkkijonoon toimitettu liian monta argumenttia" -#: builtin.c:1634 +#: builtin.c:1625 msgid "sprintf: no arguments" msgstr "sprintf: ei argumentteja" -#: builtin.c:1657 builtin.c:1668 +#: builtin.c:1648 builtin.c:1659 msgid "printf: no arguments" msgstr "printf: ei argumentteja" -#: builtin.c:1711 +#: builtin.c:1702 msgid "sqrt: received non-numeric argument" msgstr "sqrt: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:1715 +#: builtin.c:1706 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: kutsuttu negatiivisella argumentilla %g" -#: builtin.c:1746 +#: builtin.c:1737 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: pituus %g ei ole >= 1" -#: builtin.c:1748 +#: builtin.c:1739 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: pituus %g ei ole >= 0" -#: builtin.c:1755 +#: builtin.c:1753 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: typistetään pituus %g, joka ei ole kokonaisluku" -#: builtin.c:1760 +#: builtin.c:1758 #, 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" -#: builtin.c:1772 +#: builtin.c:1770 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: aloitusindeksi %g on virheellinen, käytetään 1:tä" -#: builtin.c:1777 +#: builtin.c:1775 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: typistetään aloitusindeksi %g, joka ei ole kokonaisluku" -#: builtin.c:1802 +#: builtin.c:1798 msgid "substr: source string is zero length" msgstr "substr: lähdemerkkijono on nollapituinen" -#: builtin.c:1818 +#: builtin.c:1812 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: aloitusindeksi %g on merkkijonon lopun jälkeen" -#: builtin.c:1826 +#: builtin.c:1820 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -758,189 +773,195 @@ msgstr "" "substr: pituus %g alkuindeksissä %g ylittää ensimmäisen argumentin pituuden " "(%lu)" -#: builtin.c:1900 +#: builtin.c:1890 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" "strftime: muotoarvolla kohteessa PROCINFO[\"strftime\"] on numerotyyppi" -#: builtin.c:1923 +#: builtin.c:1913 msgid "strftime: received non-numeric second argument" msgstr "strftime: toinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:1927 +#: builtin.c:1917 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" -#: builtin.c:1934 +#: builtin.c:1924 msgid "strftime: received non-string first argument" msgstr "strftime: ensimmäinen vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:1941 +#: builtin.c:1931 msgid "strftime: received empty format string" msgstr "strftime: vastaanotettu tyhjä muotomerkkijono" -#: builtin.c:2007 +#: builtin.c:1997 msgid "mktime: received non-string argument" msgstr "mktime: vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:2024 +#: builtin.c:2014 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:2059 +#: builtin.c:2049 msgid "'system' function not allowed in sandbox mode" msgstr "’system’-funktio ei ole sallittu hiekkalaatikkotilassa" -#: builtin.c:2064 +#: builtin.c:2054 msgid "system: received non-string argument" msgstr "system: vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:2184 +#: builtin.c:2174 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "viite alustamattomaan kenttään ”$%d”" -#: builtin.c:2271 +#: builtin.c:2259 msgid "tolower: received non-string argument" msgstr "tolower: vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:2305 +#: builtin.c:2290 msgid "toupper: received non-string argument" msgstr "toupper: vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:2341 mpfr.c:672 +#: builtin.c:2323 mpfr.c:679 msgid "atan2: received non-numeric first argument" msgstr "atan2: ensimmäinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2343 mpfr.c:674 +#: builtin.c:2325 mpfr.c:681 msgid "atan2: received non-numeric second argument" msgstr "atan2: toinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2362 +#: builtin.c:2344 msgid "sin: received non-numeric argument" msgstr "sin: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2378 +#: builtin.c:2360 msgid "cos: received non-numeric argument" msgstr "cos: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2431 mpfr.c:1156 +#: builtin.c:2413 mpfr.c:1176 msgid "srand: received non-numeric argument" msgstr "srand: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2462 +#: builtin.c:2444 msgid "match: third argument is not an array" msgstr "match: kolmas argumentti ei ole taulukko" -#: builtin.c:2734 -msgid "gensub: third argument of 0 treated as 1" +#: builtin.c:2705 +#, fuzzy, c-format +msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: 0-arvoinen kolmas argumentti käsitellään kuin 1" -#: builtin.c:3030 +#: builtin.c:2720 +#, fuzzy, c-format +msgid "gensub: third argument %g treated as 1" +msgstr "gensub: 0-arvoinen kolmas argumentti käsitellään kuin 1" + +#: builtin.c:3020 msgid "lshift: received non-numeric first argument" msgstr "lshift: ensimmäinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:3032 +#: builtin.c:3022 msgid "lshift: received non-numeric second argument" msgstr "lshift: toinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:3038 +#: builtin.c:3028 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%f, %f): negatiiviset arvot antavat outoja tuloksia" -#: builtin.c:3040 +#: builtin.c:3030 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): jaosarvot typistetään" -#: builtin.c:3042 +#: builtin.c:3032 #, 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:3067 +#: builtin.c:3057 msgid "rshift: received non-numeric first argument" msgstr "rshift: ensimmäinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:3069 +#: builtin.c:3059 msgid "rshift: received non-numeric second argument" msgstr "rshift: toinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:3075 +#: builtin.c:3065 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%f, %f): negatiiviset arvot antavat outoja tuloksia" -#: builtin.c:3077 +#: builtin.c:3067 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): jaosarvot typistetään" -#: builtin.c:3079 +#: builtin.c:3069 #, 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:3104 mpfr.c:968 +#: builtin.c:3094 mpfr.c:988 msgid "and: called with less than two arguments" msgstr "and: kutsuttu vähemmällä kuin kahdella argumentilla" -#: builtin.c:3109 +#: builtin.c:3099 #, c-format msgid "and: argument %d is non-numeric" msgstr "and: argumentti %d ei ole numeeraaliargumentti" -#: builtin.c:3113 +#: builtin.c:3103 #, 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:3136 mpfr.c:1000 +#: builtin.c:3126 mpfr.c:1020 msgid "or: called with less than two arguments" msgstr "or: kutsuttu vähemmällä kuin kahdella argumentilla" -#: builtin.c:3141 +#: builtin.c:3131 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: argumentti %d ei ole numeraaliargumentti" -#: builtin.c:3145 +#: builtin.c:3135 #, 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:3167 mpfr.c:1031 +#: builtin.c:3157 mpfr.c:1051 msgid "xor: called with less than two arguments" msgstr "xor: kutsuttu vähemmällä kuin kahdella argumentilla" -#: builtin.c:3173 +#: builtin.c:3163 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: argumentti %d ei ole numeraaliargumentti" -#: builtin.c:3177 +#: builtin.c:3167 #, 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:3202 mpfr.c:787 +#: builtin.c:3192 mpfr.c:807 msgid "compl: received non-numeric argument" msgstr "compl: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:3208 +#: builtin.c:3198 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): negatiivinen arvo antaa outoja tuloksia" -#: builtin.c:3210 +#: builtin.c:3200 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): jaosarvo typistetään" -#: builtin.c:3379 +#: builtin.c:3369 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: ”%s” ei ole kelvollinen paikallinen kategoria" @@ -1245,40 +1266,49 @@ msgstr "up [N] - siirrä N kehystä ylöspäin pinossa." msgid "watch var - set a watchpoint for a variable." msgstr "watch muuttuja - aseta vahtikohta muuttujalle." -#: command.y:1011 debug.c:401 msg.c:135 +#: command.y:901 +#, fuzzy +msgid "" +"where [N] - (same as backtrace) 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:1013 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "virhe: " -#: command.y:1051 +#: command.y:1053 #, c-format msgid "can't read command (%s)\n" msgstr "komennon (%s) lukeminen epäonnistui\n" -#: command.y:1065 +#: command.y:1067 #, c-format msgid "can't read command (%s)" msgstr "komennon (%s) lukeminen epäonnistui" -#: command.y:1116 +#: command.y:1118 msgid "invalid character in command" msgstr "virheellinen merkki komennossa" -#: command.y:1152 +#: command.y:1154 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "tuntematon komento - \"%.*s\", kokeile käskyä help" -#: command.y:1222 +#: command.y:1224 #, c-format msgid "%s" msgstr "%s" -#: command.y:1284 +#: command.y:1286 msgid "invalid character" msgstr "virheellinen merkki" -#: command.y:1455 +#: command.y:1457 #, c-format msgid "undefined command: %s\n" msgstr "määrittelemätön komento: %s\n" @@ -1817,68 +1847,70 @@ msgstr "”%s” ei ole sallittu nykyisessä asiayhteydessä; lause ohitetaan" msgid "`return' not allowed in current context; statement ignored" msgstr "”return” ei ole sallittu nykyisessä asiayhteydessä; lause ohitetaan" -#: debug.c:5590 +#: debug.c:5604 #, c-format msgid "No symbol `%s' in current context" msgstr "Symbolia ”%s” ei ole nykyisesssä asiayhteydessä" -#: 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 +#: dfa.c:1063 dfa.c:1066 dfa.c:1085 dfa.c:1095 dfa.c:1107 dfa.c:1143 +#: dfa.c:1152 dfa.c:1155 dfa.c:1160 dfa.c:1174 dfa.c:1222 msgid "unbalanced [" msgstr "pariton [" -#: dfa.c:1174 +#: dfa.c:1119 msgid "invalid character class" msgstr "virheellinen merkkiluokka" -#: dfa.c:1316 +#: dfa.c:1265 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "merkkiluokkasyntaksi on [[:space:]], ei [:space:]" -#: dfa.c:1366 +#: dfa.c:1327 msgid "unfinished \\ escape" msgstr "päättymätön \\-koodinvaihtomerkki" -#: dfa.c:1513 regcomp.c:161 -msgid "Invalid content of \\{\\}" +#: dfa.c:1474 +#, fuzzy +msgid "invalid content of \\{\\}" msgstr "Virheellinen \\{\\}-sisältö" -#: dfa.c:1516 regcomp.c:176 -msgid "Regular expression too big" +#: dfa.c:1477 +#, fuzzy +msgid "regular expression too big" msgstr "Säännöllinen lauseke on liian iso" -#: dfa.c:1936 +#: dfa.c:1912 msgid "unbalanced (" msgstr "pariton (" -#: dfa.c:2062 +#: dfa.c:2038 msgid "no syntax specified" msgstr "syntaksi ei ole määritelty" -#: dfa.c:2070 +#: dfa.c:2046 msgid "unbalanced )" msgstr "pariton )" -#: eval.c:394 +#: eval.c:396 #, c-format msgid "unknown nodetype %d" msgstr "tuntematon solmutyyppi %d" -#: eval.c:405 eval.c:419 +#: eval.c:407 eval.c:421 #, c-format msgid "unknown opcode %d" msgstr "tuntematon käskykoodi %d" -#: eval.c:416 +#: eval.c:418 #, c-format msgid "opcode %s not an operator or keyword" msgstr "käskykoodi %s ei ole operaattori tai avainsana" -#: eval.c:472 +#: eval.c:474 msgid "buffer overflow in genflags2str" msgstr "puskurin ylivuoto funktiossa genflags2str" -#: eval.c:675 +#: eval.c:676 #, c-format msgid "" "\n" @@ -1889,217 +1921,217 @@ msgstr "" "\t# Funktiokutsupino:\n" "\n" -#: eval.c:704 +#: eval.c:705 msgid "`IGNORECASE' is a gawk extension" msgstr "”IGNORECASE” on gawk-laajennus" -#: eval.c:736 +#: eval.c:737 msgid "`BINMODE' is a gawk extension" msgstr "”BINMODE” on gawk-laajennus" -#: eval.c:794 +#: eval.c:795 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "BINMODE-arvo ”%s” on virheellinen, käsiteltiin arvona 3" -#: eval.c:885 +#: eval.c:912 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "väärä ”%sFMT”-määritys ”%s”" -#: eval.c:969 +#: eval.c:996 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "käännetään pois ”--lint”-valitsin ”LINT”-sijoituksen vuoksi" -#: eval.c:1147 +#: eval.c:1174 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "viite alustamattomaan argumenttiin ”%s”" -#: eval.c:1148 +#: eval.c:1175 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "viite alustamattomaan muuttujaan ”%s”" -#: eval.c:1166 +#: eval.c:1193 msgid "attempt to field reference from non-numeric value" msgstr "yritettiin kenttäviitettä arvosta, joka ei ole numeerinen" -#: eval.c:1168 +#: eval.c:1195 msgid "attempt to field reference from null string" msgstr "yritettiin kenttäviitettä null-merkkijonosta" -#: eval.c:1176 +#: eval.c:1203 #, c-format msgid "attempt to access field %ld" msgstr "yritettiin saantia kenttään %ld" -#: eval.c:1185 +#: eval.c:1212 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "viite alustamattomaan kenttään ”$%ld”" -#: eval.c:1272 +#: eval.c:1299 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "funktio ”%s” kutsuttiin useammalla argumentilla kuin esiteltiin" -#: eval.c:1473 +#: eval.c:1500 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: odottamaton tyyppi ”%s”" -#: eval.c:1569 +#: eval.c:1596 msgid "division by zero attempted in `/='" msgstr "jakoa nollalla yritettiin operaatiossa ”/=”" -#: eval.c:1576 +#: eval.c:1603 #, c-format msgid "division by zero attempted in `%%='" msgstr "jakoa nollalla yritettiin operaatiossa ”%%=”" -#: ext.c:89 ext.c:171 +#: ext.c:65 ext.c:147 msgid "extensions are not allowed in sandbox mode" msgstr "laajennuksia ei sallita hiekkalaatikkotilassa" -#: ext.c:92 +#: ext.c:68 msgid "-l / @load are gawk extensions" msgstr "-l / @load ovat gawk-laajennuksia" -#: ext.c:95 +#: ext.c:71 msgid "load_ext: received NULL lib_name" msgstr "load_ext: vastaanotettiin NULL lib_name" -#: ext.c:98 +#: ext.c:74 #, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "load_ext: kirjaston ”%s” (%s) avaus epäonnistui\n" -#: ext.c:104 +#: ext.c:80 #, 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" -#: ext.c:110 +#: ext.c:86 #, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "load_ext: kirjasto ”%s”: funktion ”%s” (%s) kutsu epäonnistui\n" -#: ext.c:114 +#: ext.c:90 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "load_ext: kirjaston ”%s” alustusrutiini ”%s” epäonnistui\n" -#: ext.c:174 +#: ext.c:150 msgid "`extension' is a gawk extension" msgstr "”extension” on gawk-laajennus" -#: ext.c:177 +#: ext.c:153 msgid "extension: received NULL lib_name" msgstr "extension: vastaanotettiin NULL lib_name" -#: ext.c:180 +#: ext.c:156 #, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "extension: kirjaston ”%s” (%s) avaus epäonnistui" -#: ext.c:186 +#: ext.c:162 #, 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)" -#: ext.c:190 +#: ext.c:166 #, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "extension: kirjasto ”%s”: funktion ”%s” (%s) kutsu epäonnistui" -#: ext.c:221 +#: ext.c:197 msgid "make_builtin: missing function name" msgstr "make_builtin: puuttuva funktionimi" -#: ext.c:236 +#: ext.c:212 #, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "make_builtin: funktion ”%s” uudelleenmäärittely epäonnistui" -#: ext.c:240 +#: ext.c:216 #, c-format msgid "make_builtin: function `%s' already defined" msgstr "make_builtin: funktio ”%s” on jo määritelty" -#: ext.c:244 +#: ext.c:220 #, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "make_builtin: funktionimi ”%s” on määritelty jo aiemmin" -#: ext.c:246 +#: ext.c:222 #, 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" -#: ext.c:249 ext.c:304 +#: ext.c:225 ext.c:280 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: negatiivinen argumenttilukumäärä funktiolle ”%s”" -#: ext.c:276 +#: ext.c:252 msgid "extension: missing function name" msgstr "extension: puuttuva funktionimi" -#: ext.c:279 ext.c:283 +#: ext.c:255 ext.c:259 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: virheellinen merkki ”%c” funktionimessä ”%s”" -#: ext.c:291 +#: ext.c:267 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: funktion ”%s” uudelleenmäärittely epäonnistui" -#: ext.c:295 +#: ext.c:271 #, c-format msgid "extension: function `%s' already defined" msgstr "extension: funktio ”%s” on jo määritelty" -#: ext.c:299 +#: ext.c:275 #, c-format msgid "extension: function name `%s' previously defined" msgstr "extension: funktionimi ”%s” on määritelty jo aiemmin" -#: ext.c:301 +#: ext.c:277 #, 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" -#: ext.c:375 +#: ext.c:351 #, c-format msgid "function `%s' defined to take no more than %d argument(s)" msgstr "funktio ”%s” on määritelty ottamaan enemmän kuin %d argumenttia" -#: ext.c:378 +#: ext.c:354 #, c-format msgid "function `%s': missing argument #%d" msgstr "function ”%s”: puuttuva argumentti #%d" -#: ext.c:395 +#: ext.c:371 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "funktio ”%s”: argumentti #%d: yritettiin käyttää skalaaria taulukkona" -#: ext.c:399 +#: ext.c:375 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "funktio ”%s”: argumentti #%d: yritettiin käyttää taulukkoa skalaarina" -#: ext.c:413 +#: ext.c:389 msgid "dynamic loading of library not supported" msgstr "kirjaston dynaamista latausta ei tueta" @@ -2243,7 +2275,7 @@ msgstr "wait: kutsuttu liian monella argumentilla" msgid "inplace_begin: in-place editing already active" msgstr "inplace_begin: kohdallaanmuokkaus on jo aktivoitu" -#: extension/inplace.c:133 extension/inplace.c:207 +#: extension/inplace.c:133 extension/inplace.c:210 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "" @@ -2277,57 +2309,57 @@ msgstr "inplace_begin: ”%s” ei ole tavallinen tiedosto" msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "inplace_begin: mkstemp(”%s”) epäonnistui (%s)" -#: extension/inplace.c:178 +#: extension/inplace.c:181 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "inplace_begin: chmod epäonnistui (%s)" -#: extension/inplace.c:185 +#: extension/inplace.c:188 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "inplace_begin: dup(stdout) epäonnistui (%s)" -#: extension/inplace.c:188 +#: extension/inplace.c:191 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "inplace_begin: dup2(%d, stdout) epäonnistui (%s)" -#: extension/inplace.c:191 +#: extension/inplace.c:194 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "inplace_begin: close(%d) epäonnistui (%s)" -#: extension/inplace.c:210 +#: extension/inplace.c:213 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "" "inplace_end: ensimmäisen argumentin noutaminen merkkijonotiedostonimenä " "epäonnistui" -#: extension/inplace.c:217 +#: extension/inplace.c:220 msgid "inplace_end: in-place editing not active" msgstr "inplace_end: kohdallaanmuokkaus ei ole aktiivinen" -#: extension/inplace.c:223 +#: extension/inplace.c:226 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "inplace_end: dup2(%d, stdout) epäonnistui (%s)" -#: extension/inplace.c:226 +#: extension/inplace.c:229 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "inplace_end: close(%d) epäonnistui (%s)" -#: extension/inplace.c:230 +#: extension/inplace.c:233 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "inplace_end: fsetpos(stdout) epäonnistui (%s)" -#: extension/inplace.c:243 +#: extension/inplace.c:246 #, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "inplace_end: link(”%s”, ”%s”) epäonnistui (%s)." -#: extension/inplace.c:253 +#: extension/inplace.c:256 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "inplace_end: rename(”%s”, ”%s”) epäonnistui (%s)" @@ -2369,50 +2401,54 @@ msgstr "readfile: kutsuttu liian monella argumentilla" msgid "readfile: called with no arguments" msgstr "readfile: kutsuttu ilman argumentteja" -#: extension/rwarray.c:124 +#: extension/revoutput.c:125 +msgid "revoutput: could not initialize REVOUT variable" +msgstr "" + +#: extension/rwarray.c:124 extension/rwarray0.c:109 msgid "writea: called with too many arguments" msgstr "writea: kutsuttu liian monella argumentilla" -#: extension/rwarray.c:131 +#: extension/rwarray.c:131 extension/rwarray0.c:116 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "do_writea: argumentti 0 ei ole merkkijono\n" -#: extension/rwarray.c:137 +#: extension/rwarray.c:137 extension/rwarray0.c:122 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "do_writea: argumentti 1 ei ole taulukko\n" -#: extension/rwarray.c:184 +#: extension/rwarray.c:184 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "write_array: taulukon litistäminen epäonnistui\n" -#: extension/rwarray.c:198 +#: extension/rwarray.c:198 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "write_array: litistettyä taulukon vapauttaminen epäonnistui\n" -#: extension/rwarray.c:280 +#: extension/rwarray.c:280 extension/rwarray0.c:265 msgid "reada: called with too many arguments" msgstr "reada: kutsuttu liian monilla argumenteilla" -#: extension/rwarray.c:287 +#: extension/rwarray.c:287 extension/rwarray0.c:272 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "do_reada: argumentti 0 ei ole merkkijono\n" -#: extension/rwarray.c:293 +#: extension/rwarray.c:293 extension/rwarray0.c:278 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "do_reada: argumentti 1 ei ole taulukko\n" -#: extension/rwarray.c:337 +#: extension/rwarray.c:337 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "do_reada: clear_array epäonnistui\n" -#: extension/rwarray.c:374 +#: extension/rwarray.c:374 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "read_array: set_array_element epäonnistui\n" @@ -2441,91 +2477,91 @@ msgstr "sleep: argumentti on negatiivinen" msgid "sleep: not supported on this platform" msgstr "sleep: ei ole tuettu tällä alustalla" -#: field.c:345 +#: field.c:346 msgid "NF set to negative value" msgstr "NF asetettu negatiiviseen arvoon" -#: field.c:971 field.c:978 field.c:982 +#: field.c:958 field.c:965 field.c:969 msgid "split: fourth argument is a gawk extension" msgstr "split: neljäs argumentti on gawk-laajennus" -#: field.c:975 +#: field.c:962 msgid "split: fourth argument is not an array" msgstr "split: neljäs argumentti ei ole taulukko" -#: field.c:989 +#: field.c:976 msgid "split: second argument is not an array" msgstr "split: toinen argumentti ei ole taulukko" -#: field.c:993 +#: field.c:980 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" -#: field.c:998 +#: field.c:985 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" "split: toisen argumentin käyttö alitaulukkoa neljännelle argumentille " "epäonnistui" -#: field.c:1001 +#: field.c:988 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" "split: neljännen argumentin käyttö alitaulukkoa toiselle argumentille " "epäonnistui" -#: field.c:1032 +#: field.c:1019 msgid "split: null string for third arg is a gawk extension" msgstr "split: null-merkkijono kolmantena argumenttina on gawk-laajennus" -#: field.c:1072 +#: field.c:1059 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: neljäs argumentti ei ole taulukko" -#: field.c:1077 +#: field.c:1064 msgid "patsplit: second argument is not an array" msgstr "patsplit: toinen argumentti ei ole taulukko" -#: field.c:1083 +#: field.c:1070 msgid "patsplit: third argument must be non-null" msgstr "patsplit: kolmas argumentti ei ole taulukko" -#: field.c:1087 +#: field.c:1074 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" -#: field.c:1092 +#: field.c:1079 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" "patsplit: toisen argumentin käyttö alitaulukkkoa neljännelle argumentille " "epäonnistui" -#: field.c:1095 +#: field.c:1082 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" "patsplit: neljännen argumentin käyttö alitaulukkoa toiselle argumentille " "epäonnistui" -#: field.c:1133 +#: field.c:1120 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "”FIELDWIDTHS” on gawk-laajennus" -#: field.c:1197 +#: field.c:1184 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "virheellinen FIELDWIDTHS-arvo, lähellä ”%s”" -#: field.c:1270 +#: field.c:1257 msgid "null string for `FS' is a gawk extension" msgstr "null-merkkijono ”FS”-kenttäerotinmuuttujalle on gawk-laajennus" -#: field.c:1274 +#: field.c:1261 msgid "old awk does not support regexps as value of `FS'" msgstr "vanha awk ei tue regexp-arvoja ”FS”-kenttäerotinmuuttujana" -#: field.c:1393 +#: field.c:1380 msgid "`FPAT' is a gawk extension" msgstr "”FPAT” on gawk-laajennus" @@ -2541,20 +2577,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:807 +#: gawkapi.c:809 msgid "remove_element: received null array" msgstr "remove_element: vastaanotettu null-taulukko" -#: gawkapi.c:810 +#: gawkapi.c:812 msgid "remove_element: received null subscript" msgstr "remove_element: vastaanotti null-alaindeksin" -#: gawkapi.c:947 +#: gawkapi.c:949 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "api_flatten_array: indeksin %d muuntaminen epäonnistui\n" -#: gawkapi.c:952 +#: gawkapi.c:954 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "api_flatten_array: arvon %d muuntaminen epäonnistui\n" @@ -2614,295 +2650,277 @@ msgstr "%s: valitsin ’-W %s’ ei salli argumenttia\n" msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: valitsin ’-W %s’ vaatii argumentin\n" -#: io.c:392 +#: io.c:423 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "komentoriviargumentti ”%s” on hakemisto: ohitettiin" -#: io.c:395 io.c:513 +#: io.c:426 io.c:544 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "tiedoston ”%s” avaaminen lukemista varten (%s) epäonnistui" -#: io.c:640 +#: io.c:671 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "tiedostomäärittelijän %d (”%s”) sulkeminen epäonnistui (%s)" -#: io.c:716 +#: io.c:749 msgid "redirection not allowed in sandbox mode" msgstr "edelleenohjaus ei ole sallittua hiekkalaatikkotilassa" -#: io.c:750 +#: io.c:783 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "lausekkeella ”%s”-uudellenohjauksessa on vain numeerinen arvo" -#: io.c:756 +#: io.c:789 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "lausekkeella ”%s”-uudelleenohjauksessa on null-merkkijonoarvo" -#: io.c:761 +#: io.c:794 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" msgstr "" "tiedostonimi ”%s” ”%s”-uudelleenohjaukselle saattaa olla loogisen lausekkeen " "tulos" -#: io.c:809 +#: io.c:842 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "turha merkkien ”>” ja ”>>” sekoittaminen tiedostolle ”%.*s”" -#: io.c:863 +#: io.c:896 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "putken ”%s” avaaminen tulosteelle (%s) epäonnistui" -#: io.c:873 +#: io.c:906 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "putken ”%s” avaaminen syötteelle (%s) epäonnistui" -#: io.c:904 +#: io.c:937 #, 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" -#: io.c:986 +#: io.c:1019 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "uudelleenohjaus putkesta ”%s” (%s) epäonnistui" -#: io.c:989 +#: io.c:1022 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "uudelleenohjaus putkeen ”%s” (%s) epäonnistui" -#: io.c:1040 +#: io.c:1073 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 +#: io.c:1089 #, c-format msgid "close of `%s' failed (%s)." msgstr "uudelleenohjauksen ”%s” sulkeminen epäonnistui (%s)." -#: io.c:1064 +#: io.c:1097 msgid "too many pipes or input files open" msgstr "avoinna liian monta putkea tai syötetiedostoa" -#: io.c:1086 +#: io.c:1119 msgid "close: second argument must be `to' or `from'" msgstr "close: toisen argumentin on oltava ”to” tai ”from”" -#: io.c:1103 +#: io.c:1136 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: ”%.*s” ei ole avoin tiedosto, putki tai apuprosessi" -#: io.c:1108 +#: io.c:1141 msgid "close of redirection that was never opened" msgstr "suljettiin uudelleenohjaus, jota ei avattu koskaan" -#: io.c:1205 +#: io.c:1238 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: uudelleenohjaus ”%s” ei ole avattu operaattoreilla ”|&”, toinen " "argumentti ohitettu" -#: io.c:1222 +#: io.c:1255 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "virhetila (%d) putken ”%s” sulkemisessa (%s)" -#: io.c:1225 +#: io.c:1258 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "virhetila (%d) tiedoston ”%s” sulkemisessa (%s)" -#: io.c:1245 +#: io.c:1278 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "pistokkeen ”%s” eksplisiittistä sulkemista ei tarjota" -#: io.c:1248 +#: io.c:1281 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "apuprosessin ”%s” eksplisiittistä sulkemista ei tarjota" -#: io.c:1251 +#: io.c:1284 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "putken ”%s” eksplisiittistä sulkemista ei tarjota" -#: io.c:1254 +#: io.c:1287 #, c-format msgid "no explicit close of file `%s' provided" msgstr "tiedoston ”%s” eksplisiittistä sulkemista ei tarjota" -#: io.c:1284 io.c:1342 main.c:864 main.c:906 +#: io.c:1317 io.c:1375 main.c:628 main.c:670 #, c-format msgid "error writing standard output (%s)" msgstr "virhe kirjoitettaessa vakiotulosteeseen (%s)" -#: io.c:1289 io.c:1348 main.c:866 +#: io.c:1322 io.c:1381 main.c:630 #, c-format msgid "error writing standard error (%s)" msgstr "virhe kirjoitettaessa vakiovirheeseen (%s)" -#: io.c:1297 +#: io.c:1330 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "uudelleenohjauksen ”%s” putken tyhjennys epäonnistui (%s)." -#: io.c:1300 +#: io.c:1333 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "putken apuprosessityhjennys uudelleenohjaukseen ”%s” epäonnistui (%s)." -#: io.c:1303 +#: io.c:1336 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "uudelleenohjauksen ”%s” tiedostontyhjennys epäonnistui (%s)." -#: io.c:1420 +#: io.c:1453 #, c-format msgid "local port %s invalid in `/inet'" msgstr "paikallinen portti %s virheellinen pistokkeessa ”/inet”" -#: io.c:1438 +#: io.c:1471 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "etäkone- ja porttitiedot (%s, %s) ovat virheellisiä" -#: io.c:1590 -#, c-format -msgid "no (known) protocol supplied in special filename `%s'" -msgstr "ei (tunnettua) yhteyskäytäntöä tarjottu erikoistiedostonimessä ”%s”" - -#: io.c:1604 -#, c-format -msgid "special file name `%s' is incomplete" -msgstr "erikoistiedostonimi ”%s” on vaillinainen" - -#: io.c:1621 -msgid "must supply a remote hostname to `/inet'" -msgstr "on tarjottava etäkoneen nimi pistokkeeseen ”/inet”" - -#: io.c:1639 -msgid "must supply a remote port to `/inet'" -msgstr "on tarjottava etäportti pistokkeeseen ”/inet”" - -#: io.c:1685 +#: io.c:1673 msgid "TCP/IP communications are not supported" msgstr "TCP/IP-viestintää ei tueta" -#: io.c:1867 +#: io.c:1854 #, c-format msgid "could not open `%s', mode `%s'" msgstr "laitteen ”%s” avaus epäonnistui, tila ”%s”" -#: io.c:1917 +#: io.c:1904 #, c-format msgid "close of master pty failed (%s)" msgstr "”master pty”-sulkeminen epäonnistui (%s)" -#: io.c:1919 io.c:2105 io.c:2305 +#: io.c:1906 io.c:2092 io.c:2293 #, c-format msgid "close of stdout in child failed (%s)" msgstr "vakiotulosteen sulkeminen lapsiprosessissa epäonnistui (%s)" -#: io.c:1922 +#: io.c:1909 #, 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)" -#: io.c:1924 io.c:2110 +#: io.c:1911 io.c:2097 #, c-format msgid "close of stdin in child failed (%s)" msgstr "vakiosyötteen sulkeminen lapsiprosessissa epäonnistui (%s)" -#: io.c:1927 +#: io.c:1914 #, 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)" -#: io.c:1929 io.c:1951 +#: io.c:1916 io.c:1938 #, c-format msgid "close of slave pty failed (%s)" msgstr "”slave pty”:n sulkeminen epäonnistui (%s)" -#: io.c:2040 io.c:2108 io.c:2276 io.c:2308 +#: io.c:2027 io.c:2095 io.c:2264 io.c:2296 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" "putken siirtäminen vakiotulosteeseen lapsiprosessissa epäonnistui (dup: %s)" -#: io.c:2047 io.c:2113 +#: io.c:2034 io.c:2100 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" "putken siirtäminen vakiosyötteeseen lapsiprosessissa epäonnistui (dup: %s)" -#: io.c:2073 io.c:2298 +#: io.c:2060 io.c:2286 msgid "restoring stdout in parent process failed\n" msgstr "vakiotulosteen palauttaminen äitiprosessissa epäonnistui\n" -#: io.c:2081 +#: io.c:2068 msgid "restoring stdin in parent process failed\n" msgstr "vakiosyötön palauttaminen äitiprosessissa epäonnistui\n" -#: io.c:2116 io.c:2310 io.c:2324 +#: io.c:2103 io.c:2298 io.c:2313 #, c-format msgid "close of pipe failed (%s)" msgstr "putken sulkeminen epäonnistui (%s)" -#: io.c:2174 +#: io.c:2162 msgid "`|&' not supported" msgstr "”|&” ei tueta" -#: io.c:2261 +#: io.c:2249 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "putken ”%s” (%s) avaaminen epäonnistui" -#: io.c:2318 +#: io.c:2307 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "lapsiprosessin luominen komennolle ”%s” (fork: %s) epäonnistui" -#: io.c:2790 +#: io.c:2734 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: vastaanotettiin NULL-osoitin" -#: io.c:2818 +#: io.c:2762 #, 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" -#: io.c:2825 +#: io.c:2769 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "syötejäsentäjä ”%s” epäonnistui kohteen ”%s” avaamisessa" -#: io.c:2845 +#: io.c:2789 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: vastaanotti NULL-osoittimen" -#: io.c:2873 +#: io.c:2817 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" @@ -2910,16 +2928,16 @@ msgstr "" "tulostekäärin ”%s” on ristiriidassa aiemmin asennetun tulostekäärimen ”%s” " "kanssa" -#: io.c:2880 +#: io.c:2824 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "tulostekäärin ”%s” epäonnistui avaamaan ”%s”" -#: io.c:2901 +#: io.c:2845 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: vastaanotti NULL-osoittimen" -#: io.c:2930 +#: io.c:2874 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2928,216 +2946,203 @@ msgstr "" "kaksisuuntainen prosessori ”%s” on ristiriidassa aiemmin asennetun " "kaksisuuntaisen prosessorin ”%s” kanssa" -#: io.c:2939 +#: io.c:2883 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "kaksisuuntainen prosessori ”%s” epäonnistui avaamaan ”%s”" -#: io.c:3064 +#: io.c:3008 #, c-format msgid "data file `%s' is empty" msgstr "data-tiedosto ”%s” on tyhjä" -#: io.c:3106 io.c:3114 +#: io.c:3050 io.c:3058 msgid "could not allocate more input memory" msgstr "lisäsyötemuistin varaus epäonnistui" -#: io.c:3682 +#: io.c:3636 msgid "multicharacter value of `RS' is a gawk extension" msgstr "”RS”-monimerkkiarvo on gawk-laajennus" -#: io.c:3771 +#: io.c:3783 msgid "IPv6 communication is not supported" msgstr "IPv6-viestintää ei tueta" -#: main.c:405 -msgid "empty argument to `-e/--source' ignored" -msgstr "tyhjä argumentti valitsimelle ”-e/--source” ohitetaan" - -#: main.c:495 -#, c-format -msgid "%s: option `-W %s' unrecognized, ignored\n" -msgstr "%s: valitsin ”-W %s” on tunnistamaton, ohitetaan\n" - -#: main.c:541 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: valitsin vaatii argumentin -- %c\n" - -#: main.c:562 +#: main.c:321 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "ympäristömuuttuja ”POSIXLY_CORRECT” asetettu: käännetään päälle valitsin ”--" "posix”" -#: main.c:568 +#: main.c:327 msgid "`--posix' overrides `--traditional'" msgstr "valitsin ”--posix” korvaa valitsimen ”--traditional”" -#: main.c:579 +#: main.c:338 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "" "valitsin ”--posix” tai ”--traditional” korvaa valitsimen ”--non-decimal-data”" -#: main.c:583 +#: main.c:342 #, c-format msgid "running %s setuid root may be a security problem" msgstr "suorittaminen ”%s setuid root”-käyttäjänä saattaa olla turvapulma" -#: main.c:588 +#: main.c:346 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "valitsin ”--posix” korvaa valitsimen ”--characters-as-bytes”" -#: main.c:647 +#: main.c:404 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "binaaritilan asettaminen vakiosyötteessä (%s) epäonnistui" -#: main.c:650 +#: main.c:407 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "binaaritilan asettaminen vakiotulosteessa (%s) epäonnistui" -#: main.c:652 +#: main.c:409 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "binaaritilaa asettaminen vakiovirheessä (%s) epäonnistui" -#: main.c:710 +#: main.c:469 msgid "no program text at all!" msgstr "ei ohjelmatekstiä ollenkaan!" -#: main.c:799 +#: main.c:563 #, 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" -#: main.c:801 +#: main.c:565 #, 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" -#: main.c:806 +#: main.c:570 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX-valitsimet:\t\tGNU-pitkät valitsimet: (vakio)\n" -#: main.c:807 +#: main.c:571 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f ohjelmatiedosto\t\t--file=ohjelmatiedosto\n" -#: main.c:808 +#: main.c:572 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:809 +#: main.c:573 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=arvo\t\t--assign=muuttuja=arvo\n" -#: main.c:810 +#: main.c:574 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Lyhyet valitsimet:\t\tGNU-pitkät valitsimet: (laajennukset)\n" -#: main.c:811 +#: main.c:575 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:812 +#: main.c:576 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:813 +#: main.c:577 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:814 +#: main.c:578 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[tiedosto]\t\t--dump-variables[=tiedosto]\n" -#: main.c:815 +#: main.c:579 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[tiedosto]\t\t--debug[=tiedosto]\n" -#: main.c:816 +#: main.c:580 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'program-text'\t--source='program-text'\n" -#: main.c:817 +#: main.c:581 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E file\t\t\t--exec=tiedosto\n" -#: main.c:818 +#: main.c:582 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-po\n" -#: main.c:819 +#: main.c:583 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:820 +#: main.c:584 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i include-tiedosto\t\t--include=include-tiedosto\n" -#: main.c:821 +#: main.c:585 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l kirjasto\t\t--load=kirjasto\n" -#: main.c:822 -msgid "\t-L [fatal]\t\t--lint[=fatal]\n" +#: main.c:586 +#, fuzzy +msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: 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:824 +#: main.c:587 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:825 +#: main.c:588 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:826 +#: main.c:589 +msgid "\t-n\t\t\t--non-decimal-data\n" +msgstr "\t-n\t\t\t--non-decimal-data\n" + +#: main.c:590 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[tiedosto]\t\t--pretty-print[=tiedosto]\n" -#: main.c:827 +#: main.c:591 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:828 +#: main.c:592 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[tiedosto]\t\t--profile[=tiedosto]\n" -#: main.c:829 +#: main.c:593 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:830 +#: main.c:594 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:831 +#: main.c:595 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:832 +#: main.c:596 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:833 +#: main.c:597 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:835 +#: main.c:599 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:838 +#: main.c:602 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3146,7 +3151,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:847 +#: main.c:611 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3159,7 +3164,7 @@ msgstr "" "joka on kappale ”Reporting Problems and Bugs” painetussa versiossa.\n" "\n" -#: main.c:851 +#: main.c:615 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3169,7 +3174,7 @@ msgstr "" "Oletuksena se lukee vakiosyötettä ja kirjoittaa vakiotulosteeseen.\n" "\n" -#: main.c:855 +#: main.c:619 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3179,7 +3184,7 @@ msgstr "" "\tgawk '{ sum += $1 }; END { print sum }' tiedosto\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:880 +#: main.c:644 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3198,7 +3203,7 @@ msgstr "" "ehtojen mukaisesti.\n" "\n" -#: main.c:888 +#: main.c:652 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" @@ -3212,7 +3217,7 @@ msgstr "" "GNU General Public License-ehdoista.\n" "\n" -#: main.c:894 +#: main.c:658 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" @@ -3220,16 +3225,16 @@ msgstr "" "Sinun pitäisi vastaanottaa kopion GNU General Public Licence-lisenssistä\n" "tämän ohjelman mukana. Jos näin ei ole, katso http://www.gnu.org/licenses/.\n" -#: main.c:931 +#: main.c:695 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft ei aseta FS välilehteen POSIX awk:ssa" -#: main.c:1208 +#: main.c:982 #, c-format msgid "unknown value for field spec: %d\n" msgstr "tuntematon arvo kenttämääritteelle: %d\n" -#: main.c:1306 +#: main.c:1080 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3238,100 +3243,118 @@ msgstr "" "%s: ”%s” argumentti valitsimelle ”-v” ei ole ”var=arvo”-muodossa\n" "\n" -#: main.c:1332 +#: main.c:1106 #, c-format msgid "`%s' is not a legal variable name" msgstr "”%s” ei ole laillinen muuttujanimi" -#: main.c:1335 +#: main.c:1109 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "”%s” ei ole muuttujanimi, etsitään tiedostoa ”%s=%s”" -#: main.c:1339 +#: main.c:1113 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "" "gawk-ohjelman sisäisen ”%s”-määrittelyn käyttö muuttujanimenä epäonnistui" -#: main.c:1344 +#: main.c:1118 #, c-format msgid "cannot use function `%s' as variable name" msgstr "funktionimen ”%s” käyttö muuttujanimenä epäonnistui" -#: main.c:1397 +#: main.c:1171 msgid "floating point exception" msgstr "liukulukupoikkeus" -#: main.c:1404 +#: main.c:1178 msgid "fatal error: internal error" msgstr "tuhoisa virhe: sisäinen virhe" -#: main.c:1419 +#: main.c:1193 msgid "fatal error: internal error: segfault" msgstr "tuhoisa virhe: sisäinen virhe: segmenttivirhe" -#: main.c:1431 +#: main.c:1205 msgid "fatal error: internal error: stack overflow" msgstr "tuhoisa virhe: sisäinen virhe: pinoylivuoto" -#: main.c:1490 +#: main.c:1264 #, c-format msgid "no pre-opened fd %d" msgstr "ei avattu uudelleen tiedostomäärittelijää %d" -#: main.c:1497 +#: main.c:1271 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "" "laitteen /dev/null avaaminen uudelleen tiedostomäärittelijälle %d epäonnistui" -#: mpfr.c:550 +#: main.c:1485 +msgid "empty argument to `-e/--source' ignored" +msgstr "tyhjä argumentti valitsimelle ”-e/--source” ohitetaan" + +#: main.c:1556 +msgid "-M ignored: MPFR/GMP support not compiled in" +msgstr "" + +#: main.c:1577 +#, c-format +msgid "%s: option `-W %s' unrecognized, ignored\n" +msgstr "%s: valitsin ”-W %s” on tunnistamaton, ohitetaan\n" + +#: main.c:1630 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: valitsin vaatii argumentin -- %c\n" + +#: mpfr.c:557 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "PREC-arvo ”%.*s” on virheellinen" -#: mpfr.c:608 +#: mpfr.c:615 #, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "RNDMODE-arvo ”%.*s” on virheellinen" -#: mpfr.c:698 +#: mpfr.c:711 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: vastaanotettu argumentti ei ole numeerinen" -#: mpfr.c:800 +#: mpfr.c:820 msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%Rg): negatiivinen arvo antaa outoja tuloksia" -#: mpfr.c:804 +#: mpfr.c:824 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg): jaosarvo typistetään" -#: mpfr.c:816 +#: mpfr.c:836 #, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "compl(%Zd): negatiiviset arvot antavat outoja tuloksia" -#: mpfr.c:835 +#: mpfr.c:855 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: vastaanotettu argumentti #%d ei ole numeerinen" -#: mpfr.c:845 +#: mpfr.c:865 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: argumentilla #%d on virheellinen arvo %Rg, käytetään 0" -#: mpfr.c:857 +#: mpfr.c:877 msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "%s: argumentin #%d negatiivinen arvo %Rg antaa outoja tuloksia" -#: mpfr.c:863 +#: mpfr.c:883 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: argumentin #%d jaosarvo %Rg typistetään" -#: mpfr.c:878 +#: mpfr.c:898 #, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "%s: argumentin #%d negatiivinen arvo %Zd antaa outoja tuloksia" @@ -3341,24 +3364,24 @@ msgstr "%s: argumentin #%d negatiivinen arvo %Zd antaa outoja tuloksia" msgid "cmd. line:" msgstr "komentorivi:" -#: node.c:421 +#: node.c:409 msgid "backslash at end of string" msgstr "kenoviiva merkkijonon lopussa" -#: node.c:500 +#: node.c:488 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "vanha awk ei tue ”\\%c”-koodinvaihtosekvenssiä" -#: node.c:551 +#: node.c:539 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX ei salli ”\\x”-koodinvaihtoja" -#: node.c:557 +#: node.c:545 msgid "no hex digits in `\\x' escape sequence" msgstr "ei heksadesimaalilukuja ”\\x”-koodinvaihtosekvenssissä" -#: node.c:579 +#: node.c:567 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3367,12 +3390,12 @@ msgstr "" "heksadesimaalikoodinvaihtomerkkejä \\x%.*s / %d ei ole luultavasti tulkittu " "sillä tavalla kuin odotat" -#: node.c:594 +#: node.c:582 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "koodinvaihtosekvenssi ”\\%c” käsitelty kuin pelkkä ”%c”" -#: node.c:739 +#: node.c:726 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3401,12 +3424,12 @@ msgid "sending profile to standard error" msgstr "lähetetään profiili vakiovirheeseen" #: profile.c:193 -#, c-format +#, fuzzy, c-format msgid "" -"\t# %s block(s)\n" +"\t# %s rule(s)\n" "\n" msgstr "" -"\t# %s-lohko(t)\n" +"\t# Säännöt\n" "\n" #: profile.c:198 @@ -3423,11 +3446,11 @@ msgstr "" msgid "internal error: %s with null vname" msgstr "sisäinen virhe: %s null vname-arvolla" -#: profile.c:537 +#: profile.c:538 msgid "internal error: builtin with null fname" msgstr "sisäinen virhe: builtin null-funktionimellä" -#: profile.c:949 +#: profile.c:958 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" @@ -3436,12 +3459,12 @@ msgstr "" "\t# Ladatut laajennukset (-l ja/tai @load)\n" "\n" -#: profile.c:972 +#: profile.c:981 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawk-profiili, luotu %s\n" -#: profile.c:1475 +#: profile.c:1521 #, c-format msgid "" "\n" @@ -3450,7 +3473,7 @@ msgstr "" "\n" "\t# Funktiot, luetteloitu aakkosjärjestyksessä\n" -#: profile.c:1513 +#: profile.c:1559 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: tuntematon edelleenohjaustyyppi %d" @@ -3461,80 +3484,116 @@ msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" "säännöllisen lausekkeen komponentin ”%.*s” pitäisi luultavasti olla ”[%.*s]”" -#: regcomp.c:131 +#: regcomp.c:139 msgid "Success" msgstr "Onnistui" -#: regcomp.c:134 +#: regcomp.c:142 msgid "No match" msgstr "Ei täsmäystä" -#: regcomp.c:137 +#: regcomp.c:145 msgid "Invalid regular expression" msgstr "Virheellinen säännöllinen lauseke" -#: regcomp.c:140 +#: regcomp.c:148 msgid "Invalid collation character" msgstr "Virheellinen vertailumerkki" -#: regcomp.c:143 +#: regcomp.c:151 msgid "Invalid character class name" msgstr "Virheellinen merkkiluokkanimi" -#: regcomp.c:146 +#: regcomp.c:154 msgid "Trailing backslash" msgstr "Jäljessä oleva kenoviiva" -#: regcomp.c:149 +#: regcomp.c:157 msgid "Invalid back reference" msgstr "Virheellinen paluuviite" -#: regcomp.c:152 -msgid "Unmatched [ or [^" +#: regcomp.c:160 +#, fuzzy +msgid "Unmatched [, [^, [:, [., or [=" msgstr "Pariton [ tai [^" -#: regcomp.c:155 +#: regcomp.c:163 msgid "Unmatched ( or \\(" msgstr "Pariton ( tai \\(" -#: regcomp.c:158 +#: regcomp.c:166 msgid "Unmatched \\{" msgstr "Pariton \\{" -#: regcomp.c:164 +#: regcomp.c:169 +msgid "Invalid content of \\{\\}" +msgstr "Virheellinen \\{\\}-sisältö" + +#: regcomp.c:172 msgid "Invalid range end" msgstr "Virheellinen lukualueen loppu" -#: regcomp.c:167 +#: regcomp.c:175 msgid "Memory exhausted" msgstr "Muisti loppui" -#: regcomp.c:170 +#: regcomp.c:178 msgid "Invalid preceding regular expression" msgstr "Virheellinen edeltävä säännöllinen lauseke" -#: regcomp.c:173 +#: regcomp.c:181 msgid "Premature end of regular expression" msgstr "Ennenaikainen säännöllisen lausekkeen loppu" -#: regcomp.c:179 +#: regcomp.c:184 +msgid "Regular expression too big" +msgstr "Säännöllinen lauseke on liian iso" + +#: regcomp.c:187 msgid "Unmatched ) or \\)" msgstr "Pariton ) tai \\)" -#: regcomp.c:704 +#: regcomp.c:712 msgid "No previous regular expression" msgstr "Ei edellistä säännöllistä lauseketta" -#: symbol.c:741 +#: symbol.c:677 +#, fuzzy, c-format +msgid "function `%s': can't use function `%s' as a parameter name" +msgstr "funktio ”%s”: funktionimen käyttö parametrinimenä epäonnistui" + +#: symbol.c:809 msgid "can not pop main context" msgstr "pääsisällön pop-toiminto epäonnistui" +#~ msgid "`getline var' invalid inside `%s' rule" +#~ msgstr "”getline var” virheellinen säännön ”%s” sisällä" + +#~ msgid "`getline' invalid inside `%s' rule" +#~ msgstr "”getline” virheellinen säännön ”%s” sisällä" + +#~ msgid "no (known) protocol supplied in special filename `%s'" +#~ msgstr "ei (tunnettua) yhteyskäytäntöä tarjottu erikoistiedostonimessä ”%s”" + +#~ msgid "special file name `%s' is incomplete" +#~ msgstr "erikoistiedostonimi ”%s” on vaillinainen" + +#~ msgid "must supply a remote hostname to `/inet'" +#~ msgstr "on tarjottava etäkoneen nimi pistokkeeseen ”/inet”" + +#~ msgid "must supply a remote port to `/inet'" +#~ msgstr "on tarjottava etäportti pistokkeeseen ”/inet”" + +#~ msgid "" +#~ "\t# %s block(s)\n" +#~ "\n" +#~ msgstr "" +#~ "\t# %s-lohko(t)\n" +#~ "\n" + #~ msgid "range of the form `[%c-%c]' is locale dependent" #~ msgstr "muodon ”[%c-%c]” lukualue on paikallisasetuksesta riippuvainen" -#~ msgid "attempt to use function `%s' as an array" -#~ msgstr "yritettiin käyttää funktiota ”%s” taulukkona" - #~ msgid "reference to uninitialized element `%s[\"%.*s\"]'" #~ msgstr "viite alustamattomaan elementtiin ”%s[\"%.*s\"]”" @@ -3613,9 +3672,6 @@ msgstr "pääsisällön pop-toiminto epäonnistui" #~ msgid "function `%s' not defined" #~ msgstr "funktio ”%s” ei ole määritelty" -#~ msgid "non-redirected `getline' invalid inside `%s' rule" -#~ msgstr "edelleenohjaamaton ”getline” virheellinen ”%s”-säännön sisällä" - #~ msgid "`nextfile' cannot be called from a `%s' rule" #~ msgstr "”nextfile” ei voida kutsua ”%s”-säännöstä" @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.1.0b\n" -"Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2014-04-08 19:23+0300\n" +"Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" +"POT-Creation-Date: 2015-02-26 20:05+0200\n" "PO-Revision-Date: 2014-01-16 00:31+0100\n" "Last-Translator: Jean-Philippe Guérard <jean-philippe.guerard@corbeaunoir." "org>\n" @@ -39,9 +39,9 @@ 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:1615 builtin.c:1661 -#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126 -#: eval.c:1531 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 +#: builtin.c:1665 builtin.c:2092 builtin.c:2106 eval.c:1149 eval.c:1153 +#: eval.c:1558 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "tentative d'utilisation du tableau « %s » dans un contexte scalaire" @@ -92,420 +92,425 @@ msgstr "asort : le 1er argument ne doit pas être un sous-tableau du 2e" msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "asorti : le 1er argument ne doit pas être un sous-tableau du 2e" -#: array.c:1314 +#: array.c:1313 #, c-format msgid "`%s' is invalid as a function name" msgstr "« %s » n'est pas un nom de fonction valide" -#: array.c:1318 +#: array.c:1317 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "la fonction de comparaison « %s » du tri n'est pas définie" -#: awkgram.y:233 +#: awkgram.y:226 #, c-format msgid "%s blocks must have an action part" msgstr "les blocs %s doivent avoir une partie action" -#: awkgram.y:236 +#: awkgram.y:229 msgid "each rule must have a pattern or an action part" msgstr "chaque règle doit avoir au moins une partie motif ou action" -#: awkgram.y:325 awkgram.y:336 +#: awkgram.y:320 awkgram.y:331 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "l'ancien awk ne permet pas les « BEGIN » ou « END » multiples" -#: awkgram.y:373 +#: awkgram.y:368 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "« %s » est une fonction interne, elle ne peut être redéfinie" -#: awkgram.y:419 +#: awkgram.y:417 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "l'expression rationnelle constante « // » n'est pas un commentaire C++" -#: awkgram.y:423 +#: awkgram.y:421 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "l'expression rationnelle constante « /%s/ » n'est pas un commentaire C" -#: awkgram.y:515 +#: awkgram.y:513 #, c-format msgid "duplicate case values in switch body: %s" msgstr "le corps du switch comporte des cas répétés : %s" -#: awkgram.y:536 +#: awkgram.y:534 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:3723 +#: awkgram.y:794 awkgram.y:3751 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:3715 +#: awkgram.y:803 awkgram.y:3743 msgid "`continue' is not allowed outside a loop" msgstr "« continue » est interdit en dehors d'une boucle ou d'un switch" -#: awkgram.y:815 +#: awkgram.y:813 #, c-format msgid "`next' used in %s action" msgstr "« next » est utilisé dans l'action %s" -#: awkgram.y:824 +#: awkgram.y:822 #, c-format msgid "`nextfile' used in %s action" msgstr "« nextfile » est utilisé dans l'action %s" -#: awkgram.y:848 +#: awkgram.y:846 msgid "`return' used outside function context" msgstr "« return » est utilisé hors du contexte d'une fonction" -#: awkgram.y:922 +#: awkgram.y:920 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 " "\"\" »" -#: awkgram.y:988 awkgram.y:1037 +#: awkgram.y:986 awkgram.y:1035 msgid "`delete' is not allowed with SYMTAB" msgstr "« delete » est interdit sur SYMTAB" -#: awkgram.y:990 awkgram.y:1039 +#: awkgram.y:988 awkgram.y:1037 msgid "`delete' is not allowed with FUNCTAB" msgstr "« delete » est interdit sur FUNCTAB" -#: awkgram.y:1024 awkgram.y:1028 +#: awkgram.y:1022 awkgram.y:1026 msgid "`delete(array)' is a non-portable tawk extension" msgstr "« delete(array) » est une extension non portable de tawk" -#: awkgram.y:1149 +#: awkgram.y:1147 msgid "multistage two-way pipelines don't work" msgstr "impossible d'utiliser des tubes bidirectionnels en série" -#: awkgram.y:1264 +#: awkgram.y:1262 msgid "regular expression on right of assignment" msgstr "expression rationnelle à droite d'une affectation" -#: awkgram.y:1275 +#: awkgram.y:1273 msgid "regular expression on left of `~' or `!~' operator" msgstr "expression rationnelle à gauche d'un opérateur « ~ » ou « !~ »" -#: awkgram.y:1291 awkgram.y:1442 +#: awkgram.y:1289 awkgram.y:1431 msgid "old awk does not support the keyword `in' except after `for'" msgstr "l'ancien awk n'autorise le mot-clef « in » qu'après « for »" -#: awkgram.y:1301 +#: awkgram.y:1299 msgid "regular expression on right of comparison" msgstr "expression rationnelle à droite d'une comparaison" -#: awkgram.y:1417 -#, c-format -msgid "`getline var' invalid inside `%s' rule" -msgstr "« getline var » n'est pas valable dans une règle « %s »" - -#: awkgram.y:1420 -#, c-format -msgid "`getline' invalid inside `%s' rule" +#: awkgram.y:1411 +#, fuzzy, c-format +msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "« getline » n'est pas valable dans une règle « %s »" -#: awkgram.y:1425 +#: awkgram.y:1414 msgid "non-redirected `getline' undefined inside END action" msgstr "dans une action END, un « getline » non redirigé n'est pas défini" -#: awkgram.y:1444 +#: awkgram.y:1433 msgid "old awk does not support multidimensional arrays" msgstr "l'ancien awk ne dispose pas des tableaux multidimensionnels" -#: awkgram.y:1541 +#: awkgram.y:1530 msgid "call of `length' without parentheses is not portable" msgstr "l'appel de « length » sans parenthèses n'est pas portable" -#: awkgram.y:1607 +#: awkgram.y:1596 msgid "indirect function calls are a gawk extension" msgstr "les appels indirects de fonctions sont une extension gawk" -#: awkgram.y:1620 +#: awkgram.y:1609 #, 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" -#: awkgram.y:1698 +#: awkgram.y:1635 +#, c-format +msgid "attempt to use non-function `%s' in function call" +msgstr "" + +#: awkgram.y:1699 msgid "invalid subscript expression" msgstr "expression indice incorrecte" -#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2045 awkgram.y:2065 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "avertissement : " -#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 +#: awkgram.y:2063 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "fatal : " -#: awkgram.y:2116 +#: awkgram.y:2113 msgid "unexpected newline or end of string" msgstr "fin de chaîne ou passage à la ligne inattendu" -#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 +#: awkgram.y:2392 awkgram.y:2468 awkgram.y:2691 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:2384 awkgram.y:2509 +#: awkgram.y:2393 awkgram.y:2518 #, 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:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 +#: awkgram.y:2395 awkgram.y:2469 awkgram.y:2519 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "raison inconnue" -#: awkgram.y:2395 awkgram.y:2419 +#: awkgram.y:2404 awkgram.y:2428 #, 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:2408 +#: awkgram.y:2417 #, c-format msgid "already included source file `%s'" msgstr "le fichier source « %s » a déjà été intégré" -#: awkgram.y:2409 +#: awkgram.y:2418 #, c-format msgid "already loaded shared library `%s'" msgstr "la bibliothèque partagée « %s » est déjà chargée" -#: awkgram.y:2444 +#: awkgram.y:2453 msgid "@include is a gawk extension" msgstr "@include est une extension gawk" -#: awkgram.y:2450 +#: awkgram.y:2459 msgid "empty filename after @include" msgstr "Le nom de fichier après @include est vide" -#: awkgram.y:2494 +#: awkgram.y:2503 msgid "@load is a gawk extension" msgstr "@load est une extension gawk" -#: awkgram.y:2500 +#: awkgram.y:2509 msgid "empty filename after @load" msgstr "Le nom de fichier après @load est vide" -#: awkgram.y:2634 +#: awkgram.y:2643 msgid "empty program text on command line" msgstr "le programme indiqué en ligne de commande est vide" -#: awkgram.y:2749 +#: awkgram.y:2758 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "impossible de lire le fichier source « %s » (%s)" -#: awkgram.y:2760 +#: awkgram.y:2769 #, c-format msgid "source file `%s' is empty" msgstr "le fichier source « %s » est vide" -#: awkgram.y:2937 +#: awkgram.y:2828 +#, c-format +msgid "PEBKAC error: invalid character '\\%03o' in source code" +msgstr "" + +#: awkgram.y:2959 msgid "source file does not end in newline" msgstr "le fichier source ne se termine pas par un passage à la ligne" -#: awkgram.y:3042 +#: awkgram.y:3062 msgid "unterminated regexp ends with `\\' at end of file" msgstr "" "expression rationnelle non refermée terminée par un « \\ » en fin de fichier" -#: awkgram.y:3066 +#: awkgram.y:3089 #, 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" -#: awkgram.y:3070 +#: awkgram.y:3093 #, 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" -#: awkgram.y:3077 +#: awkgram.y:3100 msgid "unterminated regexp" msgstr "expression rationnelle non refermée" -#: awkgram.y:3081 +#: awkgram.y:3104 msgid "unterminated regexp at end of file" msgstr "expression rationnelle non refermée en fin de fichier" -#: awkgram.y:3140 +#: awkgram.y:3162 msgid "use of `\\ #...' line continuation is not portable" msgstr "" "l'utilisation de « \\ #... » pour prolonger une ligne n'est pas portable" -#: awkgram.y:3156 +#: awkgram.y:3178 msgid "backslash not last character on line" msgstr "la barre oblique inverse n'est pas le dernier caractère de la ligne" -#: awkgram.y:3217 +#: awkgram.y:3239 msgid "POSIX does not allow operator `**='" msgstr "POSIX n'autorise pas l'opérateur « **= »" -#: awkgram.y:3219 +#: awkgram.y:3241 msgid "old awk does not support operator `**='" msgstr "l'ancien awk ne dispose pas de l'opérateur « **= »" -#: awkgram.y:3228 +#: awkgram.y:3250 msgid "POSIX does not allow operator `**'" msgstr "POSIX n'autorise pas l'opérateur « ** »" -#: awkgram.y:3230 +#: awkgram.y:3252 msgid "old awk does not support operator `**'" msgstr "l'ancien awk ne dispose pas de l'opérateur « ** »" -#: awkgram.y:3265 +#: awkgram.y:3287 msgid "operator `^=' is not supported in old awk" msgstr "l'ancien awk ne dispose pas de l'opérateur « ^= »" -#: awkgram.y:3273 +#: awkgram.y:3295 msgid "operator `^' is not supported in old awk" msgstr "l'ancien awk ne dispose pas de l'opérateur « ^ »" -#: awkgram.y:3366 awkgram.y:3382 command.y:1178 +#: awkgram.y:3392 awkgram.y:3410 command.y:1180 msgid "unterminated string" msgstr "chaîne non refermée" -#: awkgram.y:3603 +#: awkgram.y:3631 #, c-format msgid "invalid char '%c' in expression" msgstr "caractère incorrect « %c » dans l'expression" -#: awkgram.y:3650 +#: awkgram.y:3678 #, c-format msgid "`%s' is a gawk extension" msgstr "« %s » est une extension gawk" -#: awkgram.y:3655 +#: awkgram.y:3683 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX n'autorise pas « %s »" -#: awkgram.y:3663 +#: awkgram.y:3691 #, c-format msgid "`%s' is not supported in old awk" msgstr "l'ancien awk ne dispose pas de « %s »" -#: awkgram.y:3753 +#: awkgram.y:3781 msgid "`goto' considered harmful!\n" msgstr "« goto est jugé dangereux ! » (Edsger W. Dijkstra)\n" -#: awkgram.y:3787 +#: awkgram.y:3815 #, 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:3822 +#: awkgram.y:3850 #, 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" -#: awkgram.y:3827 +#: awkgram.y:3855 #, 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:3910 awkgram.y:3913 +#: awkgram.y:3938 awkgram.y:3941 msgid "match: third argument is a gawk extension" msgstr "match : le 3e argument est une extension gawk" -#: awkgram.y:3967 awkgram.y:3970 +#: awkgram.y:3995 awkgram.y:3998 msgid "close: second argument is a gawk extension" msgstr "close : le 2e argument est une extension gawk" -#: awkgram.y:3982 +#: awkgram.y:4010 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "utilisation incorrecte de dcgettext(_\"...\") : enlevez le souligné de tête" -#: awkgram.y:3997 +#: awkgram.y:4025 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "utilisation incorrecte de dcngettext(_\"...\") : enlevez le souligné de tête" -#: awkgram.y:4016 +#: awkgram.y:4044 msgid "index: regexp constant as second argument is not allowed" msgstr "" "index : le second argument ne peut être une expression rationnelle constante" -#: awkgram.y:4069 +#: awkgram.y:4097 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "fonction « %s » : le paramètre « %s » masque la variable globale" -#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4154 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:4127 +#: awkgram.y:4155 msgid "sending variable list to standard error" msgstr "envoi de la liste des variables vers la sortie d'erreur standard" -#: awkgram.y:4135 +#: awkgram.y:4163 #, c-format msgid "%s: close failed (%s)" msgstr "%s : échec de la fermeture (%s)" -#: awkgram.y:4160 +#: awkgram.y:4188 msgid "shadow_funcs() called twice!" msgstr "shadows_funcs() a été appelé deux fois !" -#: awkgram.y:4168 +#: awkgram.y:4196 msgid "there were shadowed variables." msgstr "il y avait des variables masquées." -#: awkgram.y:4239 +#: awkgram.y:4267 #, c-format msgid "function name `%s' previously defined" msgstr "nom de fonction « %s » déjà défini" -#: awkgram.y:4285 +#: awkgram.y:4313 #, 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" -#: awkgram.y:4288 +#: awkgram.y:4316 #, 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" -#: awkgram.y:4296 +#: awkgram.y:4324 #, 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" -#: awkgram.y:4383 awkgram.y:4389 +#: awkgram.y:4411 awkgram.y:4417 #, c-format msgid "function `%s' called but never defined" msgstr "fonction « %s » appelée sans être définie" -#: awkgram.y:4393 +#: awkgram.y:4421 #, c-format msgid "function `%s' defined but never called directly" msgstr "fonction « %s » définie mais jamais appelée directement" -#: awkgram.y:4425 +#: awkgram.y:4453 #, 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:4484 +#: awkgram.y:4468 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -514,24 +519,24 @@ msgstr "" "fonction « %s » appelée avec un espace entre son nom\n" "et « ( », ou utilisée comme variable ou tableau" -#: awkgram.y:4720 +#: awkgram.y:4674 msgid "division by zero attempted" msgstr "tentative de division par zéro" -#: awkgram.y:4729 +#: awkgram.y:4683 #, c-format msgid "division by zero attempted in `%%'" msgstr "tentative de division par zéro dans « %% »" # gawk 'BEGIN { $1++ = 1 }' -#: awkgram.y:5049 +#: awkgram.y:5003 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:5052 +#: awkgram.y:5006 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "cible de l'assignement incorrecte (opcode %s)" @@ -574,189 +579,199 @@ 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" -#: builtin.c:362 +#: builtin.c:351 msgid "index: received non-string first argument" msgstr "index : le premier argument n'est pas une chaîne" -#: builtin.c:364 +#: builtin.c:353 msgid "index: received non-string second argument" msgstr "index : le second argument n'est pas une chaîne" -#: builtin.c:488 mpfr.c:757 +#: builtin.c:466 mpfr.c:777 msgid "int: received non-numeric argument" msgstr "int : l'argument n'est pas numérique" -#: builtin.c:525 +#: builtin.c:503 msgid "length: received array argument" msgstr "length : l'argument reçu est un tableau" -#: builtin.c:528 +#: builtin.c:506 msgid "`length(array)' is a gawk extension" msgstr "« length(tableau) » est une extension gawk" -#: builtin.c:544 +#: builtin.c:525 msgid "length: received non-string argument" msgstr "length : l'argument n'est pas une chaîne" -#: builtin.c:575 +#: builtin.c:554 msgid "log: received non-numeric argument" msgstr "log : l'argument n'est pas numérique" -#: builtin.c:578 +#: builtin.c:557 #, c-format msgid "log: received negative argument %g" msgstr "log : l'argument est négatif %g" -#: builtin.c:776 builtin.c:781 +#: builtin.c:755 builtin.c:760 builtin.c:911 msgid "fatal: must use `count$' on all formats or none" msgstr "" "fatal : « numéro$ » doit être utilisé pour toutes les formats ou pour aucun" -#: builtin.c:851 +#: builtin.c:830 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "taille du champ de la spécification « %% » ignorée" -#: builtin.c:853 +#: builtin.c:832 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "précision de la spécification « %% » ignorée" -#: builtin.c:855 +#: builtin.c:834 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "taille du champ et précision de la spécification « %% » ignorées" -#: builtin.c:906 +#: builtin.c:885 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal : « $ » n'est pas autorisé dans les formats awk" -#: builtin.c:915 +#: builtin.c:894 msgid "fatal: arg count with `$' must be > 0" msgstr "fatal : le numéro d'argument de « $ » doit être > 0" -#: builtin.c:919 +#: builtin.c:898 #, 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" -#: builtin.c:923 +#: builtin.c:902 msgid "fatal: `$' not permitted after period in format" msgstr "fatal : dans un format, « $ » ne doit pas suivre un point" -#: builtin.c:939 +#: builtin.c:921 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" "fatal : aucun « $ » fourni pour la taille ou la précision du champ positionné" -#: builtin.c:1009 +#: builtin.c:991 msgid "`l' is meaningless in awk formats; ignored" msgstr "« l » n'a aucun sens dans un format awk ; ignoré" -#: builtin.c:1013 +#: builtin.c:995 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fatal : « l » est interdit dans un format awk POSIX" -#: builtin.c:1026 +#: builtin.c:1008 msgid "`L' is meaningless in awk formats; ignored" msgstr "« L » n'a aucun sens dans un format awk ; ignoré" -#: builtin.c:1030 +#: builtin.c:1012 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "fatal : « L » est interdit dans un format awk POSIX" -#: builtin.c:1043 +#: builtin.c:1025 msgid "`h' is meaningless in awk formats; ignored" msgstr "« h » n'a aucun sens dans un format awk ; ignoré" -#: builtin.c:1047 +#: builtin.c:1029 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fatal : « h » est interdit dans un format awk POSIX" -#: builtin.c:1463 +#: builtin.c:1055 +#, fuzzy, c-format +msgid "[s]printf: value %g is too big for %%c format" +msgstr "[s]printf : valeur %g hors limite pour le format « %%%c »" + +#: builtin.c:1068 +#, fuzzy, c-format +msgid "[s]printf: value %g is not a valid wide character" +msgstr "[s]printf : valeur %g hors limite pour le format « %%%c »" + +#: builtin.c:1454 #, 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:1561 +#: builtin.c:1552 #, 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:1566 +#: builtin.c:1557 msgid "fatal: not enough arguments to satisfy format string" msgstr "fatal : pas assez d'arguments pour satisfaire la chaîne de formatage" -#: builtin.c:1568 +#: builtin.c:1559 msgid "^ ran out for this one" msgstr "^ à court pour celui-ci" -#: builtin.c:1575 +#: builtin.c:1566 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf : spécification de format sans lettre de contrôle" -#: builtin.c:1578 +#: builtin.c:1569 msgid "too many arguments supplied for format string" msgstr "trop d'arguments pour la chaîne de formatage" -#: builtin.c:1634 +#: builtin.c:1625 msgid "sprintf: no arguments" msgstr "sprintf : aucun argument" -#: builtin.c:1657 builtin.c:1668 +#: builtin.c:1648 builtin.c:1659 msgid "printf: no arguments" msgstr "printf : aucun argument" -#: builtin.c:1711 +#: builtin.c:1702 msgid "sqrt: received non-numeric argument" msgstr "sqrt : l'argument n'est pas numérique" -#: builtin.c:1715 +#: builtin.c:1706 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt : appelé avec un argument négatif %g" -#: builtin.c:1746 +#: builtin.c:1737 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr : la longueur %g n'est pas >= 1" -#: builtin.c:1748 +#: builtin.c:1739 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr : la longueur %g n'est pas >= 0" -#: builtin.c:1755 +#: builtin.c:1753 #, 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:1760 +#: builtin.c:1758 #, 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:1772 +#: builtin.c:1770 #, 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:1777 +#: builtin.c:1775 #, 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:1802 +#: builtin.c:1798 msgid "substr: source string is zero length" msgstr "substr : la chaîne source est de longueur nulle" -#: builtin.c:1818 +#: builtin.c:1812 #, 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:1826 +#: builtin.c:1820 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -764,195 +779,201 @@ 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:1900 +#: builtin.c:1890 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" "strftime : la valeur de formatage PROCINFO[\"strftime\"] est de type " "numérique" -#: builtin.c:1923 +#: builtin.c:1913 msgid "strftime: received non-numeric second argument" msgstr "strftime : le second argument n'est pas numérique" -#: builtin.c:1927 +#: builtin.c:1917 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:1934 +#: builtin.c:1924 msgid "strftime: received non-string first argument" msgstr "strftim : le premier argument n'est pas une chaîne" -#: builtin.c:1941 +#: builtin.c:1931 msgid "strftime: received empty format string" msgstr "strftime : la chaîne de formatage est vide" -#: builtin.c:2007 +#: builtin.c:1997 msgid "mktime: received non-string argument" msgstr "mktime : l'argument n'est pas une chaîne" -#: builtin.c:2024 +#: builtin.c:2014 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" -#: builtin.c:2059 +#: builtin.c:2049 msgid "'system' function not allowed in sandbox mode" msgstr "La fonction « system » est interdite en isolement (mode sandbox)" -#: builtin.c:2064 +#: builtin.c:2054 msgid "system: received non-string argument" msgstr "system : l'argument n'est pas une chaîne" -#: builtin.c:2184 +#: builtin.c:2174 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "référence à un champ non initialisé « $%d »" -#: builtin.c:2271 +#: builtin.c:2259 msgid "tolower: received non-string argument" msgstr "tolower : l'argument n'est pas une chaîne" -#: builtin.c:2305 +#: builtin.c:2290 msgid "toupper: received non-string argument" msgstr "toupper : l'argument n'est pas une chaîne" -#: builtin.c:2341 mpfr.c:672 +#: builtin.c:2323 mpfr.c:679 msgid "atan2: received non-numeric first argument" msgstr "atan2 : le premier argument n'est pas numérique" -#: builtin.c:2343 mpfr.c:674 +#: builtin.c:2325 mpfr.c:681 msgid "atan2: received non-numeric second argument" msgstr "atan2 : le second argument n'est pas numérique" -#: builtin.c:2362 +#: builtin.c:2344 msgid "sin: received non-numeric argument" msgstr "sin : l'argument n'est pas numérique" -#: builtin.c:2378 +#: builtin.c:2360 msgid "cos: received non-numeric argument" msgstr "cos : l'argument n'est pas numérique" -#: builtin.c:2431 mpfr.c:1156 +#: builtin.c:2413 mpfr.c:1176 msgid "srand: received non-numeric argument" msgstr "srand : l'argument n'est pas numérique" -#: builtin.c:2462 +#: builtin.c:2444 msgid "match: third argument is not an array" msgstr "match : le 3e argument n'est pas un tableau" -#: builtin.c:2734 -msgid "gensub: third argument of 0 treated as 1" +#: builtin.c:2705 +#, fuzzy, c-format +msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub : le 3e argument vaut 0, il sera traité comme un 1" -#: builtin.c:3030 +#: builtin.c:2720 +#, fuzzy, c-format +msgid "gensub: third argument %g treated as 1" +msgstr "gensub : le 3e argument vaut 0, il sera traité comme un 1" + +#: builtin.c:3020 msgid "lshift: received non-numeric first argument" msgstr "lshift : le premier argument n'est pas numérique" -#: builtin.c:3032 +#: builtin.c:3022 msgid "lshift: received non-numeric second argument" msgstr "lshift : le second argument reçu n'est pas numérique" -#: builtin.c:3038 +#: builtin.c:3028 #, 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" -#: builtin.c:3040 +#: builtin.c:3030 #, 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:3042 +#: builtin.c:3032 #, 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:3067 +#: builtin.c:3057 msgid "rshift: received non-numeric first argument" msgstr "rshift : le premier argument n'est pas numérique" -#: builtin.c:3069 +#: builtin.c:3059 msgid "rshift: received non-numeric second argument" msgstr "rshift : le second argument reçu n'est pas numérique" -#: builtin.c:3075 +#: builtin.c:3065 #, 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" -#: builtin.c:3077 +#: builtin.c:3067 #, 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:3079 +#: builtin.c:3069 #, 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" -#: builtin.c:3104 mpfr.c:968 +#: builtin.c:3094 mpfr.c:988 msgid "and: called with less than two arguments" msgstr "and : appelé avec moins de 2 arguments" -#: builtin.c:3109 +#: builtin.c:3099 #, c-format msgid "and: argument %d is non-numeric" msgstr "and : l'argument %d n'est pas numérique" -#: builtin.c:3113 +#: builtin.c:3103 #, 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" -#: builtin.c:3136 mpfr.c:1000 +#: builtin.c:3126 mpfr.c:1020 msgid "or: called with less than two arguments" msgstr "or : appelé avec moins de 2 arguments" -#: builtin.c:3141 +#: builtin.c:3131 #, c-format msgid "or: argument %d is non-numeric" msgstr "or : l'argument %d n'est pas numérique" -#: builtin.c:3145 +#: builtin.c:3135 #, 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" -#: builtin.c:3167 mpfr.c:1031 +#: builtin.c:3157 mpfr.c:1051 msgid "xor: called with less than two arguments" msgstr "xor : appelé avec moins de 2 arguments" -#: builtin.c:3173 +#: builtin.c:3163 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor : l'argument %d n'est pas numérique" -#: builtin.c:3177 +#: builtin.c:3167 #, 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" -#: builtin.c:3202 mpfr.c:787 +#: builtin.c:3192 mpfr.c:807 msgid "compl: received non-numeric argument" msgstr "compl : l'argument n'est pas numérique" -#: builtin.c:3208 +#: builtin.c:3198 #, 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:3210 +#: builtin.c:3200 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f) : les valeurs non entières seront tronquées" -#: builtin.c:3379 +#: builtin.c:3369 #, 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" @@ -1256,40 +1277,49 @@ msgstr "up [N] - remonte de N trames dans la pile." msgid "watch var - set a watchpoint for a variable." msgstr "watch var - définit un point de surveillance pour une variable." -#: command.y:1011 debug.c:401 msg.c:135 +#: command.y:901 +#, fuzzy +msgid "" +"where [N] - (same as backtrace) 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:1013 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "erreur : " -#: command.y:1051 +#: command.y:1053 #, c-format msgid "can't read command (%s)\n" msgstr "impossible de lire la commande (%s)\n" -#: command.y:1065 +#: command.y:1067 #, c-format msgid "can't read command (%s)" msgstr "impossible de lire la commande (%s)" -#: command.y:1116 +#: command.y:1118 msgid "invalid character in command" msgstr "la commande contient un caractère incorrect" -#: command.y:1152 +#: command.y:1154 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "commande inconnue - « %.*s », essayez « help »" -#: command.y:1222 +#: command.y:1224 #, c-format msgid "%s" msgstr "%s" -#: command.y:1284 +#: command.y:1286 msgid "invalid character" msgstr "Caractère incorrect" -#: command.y:1455 +#: command.y:1457 #, c-format msgid "undefined command: %s\n" msgstr "commande inconnue : %s\n" @@ -1821,68 +1851,70 @@ msgstr "« %s » interdit dans ce contexte ; instruction ignorée" msgid "`return' not allowed in current context; statement ignored" msgstr "« return » interdit dans ce contexte ; instruction ignorée" -#: debug.c:5590 +#: debug.c:5604 #, c-format msgid "No symbol `%s' in current context" msgstr "Pas de symbole « %s » dans le contexte actuel" -#: 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 +#: dfa.c:1063 dfa.c:1066 dfa.c:1085 dfa.c:1095 dfa.c:1107 dfa.c:1143 +#: dfa.c:1152 dfa.c:1155 dfa.c:1160 dfa.c:1174 dfa.c:1222 msgid "unbalanced [" msgstr "[ non apparié" -#: dfa.c:1174 +#: dfa.c:1119 msgid "invalid character class" msgstr "classe de caractères incorrecte" -#: dfa.c:1316 +#: dfa.c:1265 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "la syntaxe des classes de caractères est [[:space:]], et non [:space:]" -#: dfa.c:1366 +#: dfa.c:1327 msgid "unfinished \\ escape" msgstr "échappement \\ non terminé" -#: dfa.c:1513 regcomp.c:161 -msgid "Invalid content of \\{\\}" +#: dfa.c:1474 +#, fuzzy +msgid "invalid content of \\{\\}" msgstr "Contenu de \\{\\} incorrect" -#: dfa.c:1516 regcomp.c:176 -msgid "Regular expression too big" +#: dfa.c:1477 +#, fuzzy +msgid "regular expression too big" msgstr "Expression rationnelle trop grande" -#: dfa.c:1936 +#: dfa.c:1912 msgid "unbalanced (" msgstr "( non apparié" -#: dfa.c:2062 +#: dfa.c:2038 msgid "no syntax specified" msgstr "aucune syntaxe indiquée" -#: dfa.c:2070 +#: dfa.c:2046 msgid "unbalanced )" msgstr ") non apparié" -#: eval.c:394 +#: eval.c:396 #, c-format msgid "unknown nodetype %d" msgstr "type de nœud %d inconnu" -#: eval.c:405 eval.c:419 +#: eval.c:407 eval.c:421 #, c-format msgid "unknown opcode %d" msgstr "code opération %d inconnu" -#: eval.c:416 +#: eval.c:418 #, c-format msgid "opcode %s not an operator or keyword" msgstr "le code opération %s n'est pas un opérateur ou un mot-clef" -#: eval.c:472 +#: eval.c:474 msgid "buffer overflow in genflags2str" msgstr "débordement de tampon dans genflag2str" -#: eval.c:675 +#: eval.c:676 #, c-format msgid "" "\n" @@ -1893,93 +1925,93 @@ msgstr "" "\t# Pile des appels de fonctions :\n" "\n" -#: eval.c:704 +#: eval.c:705 msgid "`IGNORECASE' is a gawk extension" msgstr "« IGNORECASE » est une extension gawk" -#: eval.c:736 +#: eval.c:737 msgid "`BINMODE' is a gawk extension" msgstr "« BINMODE » est une extension gawk" -#: eval.c:794 +#: eval.c:795 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "la valeur « %s » de BINMODE n'est pas valide, 3 utilisé à la place" -#: eval.c:885 +#: eval.c:912 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "spécification de « %sFMT » erronée « %s »" -#: eval.c:969 +#: eval.c:996 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "désactivation de « --lint » en raison d'une affectation à « LINT »" -#: eval.c:1147 +#: eval.c:1174 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "référence à un argument non initialisé « %s »" -#: eval.c:1148 +#: eval.c:1175 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "référence à une variable non initialisée « %s »" -#: eval.c:1166 +#: eval.c:1193 msgid "attempt to field reference from non-numeric value" msgstr "tentative de référence à un champ via une valeur non numérique" -#: eval.c:1168 +#: eval.c:1195 msgid "attempt to field reference from null string" msgstr "tentative de référence à un champ via une chaîne nulle" -#: eval.c:1176 +#: eval.c:1203 #, c-format msgid "attempt to access field %ld" msgstr "tentative d'accès au champ %ld" -#: eval.c:1185 +#: eval.c:1212 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "référence à un champ non initialisé « $%ld »" -#: eval.c:1272 +#: eval.c:1299 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "la fonction « %s » a été appelée avec trop d'arguments" -#: eval.c:1473 +#: eval.c:1500 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: type « %s » inattendu" -#: eval.c:1569 +#: eval.c:1596 msgid "division by zero attempted in `/='" msgstr "tentative de division par zéro dans « /= »" -#: eval.c:1576 +#: eval.c:1603 #, c-format msgid "division by zero attempted in `%%='" msgstr "tentative de division par zéro dans « %%= »" -#: ext.c:89 ext.c:171 +#: ext.c:65 ext.c:147 msgid "extensions are not allowed in sandbox mode" msgstr "les extensions sont interdites en isolement (mode sandbox)" -#: ext.c:92 +#: ext.c:68 msgid "-l / @load are gawk extensions" msgstr "-l / @load est une extension gawk" -#: ext.c:95 +#: ext.c:71 msgid "load_ext: received NULL lib_name" msgstr "load_ext : lib_name reçu NULL" -#: ext.c:98 +#: ext.c:74 #, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "load_ext : impossible d'ouvrir la bibliothèque « %s » (%s)\n" -#: ext.c:104 +#: ext.c:80 #, c-format msgid "" "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" @@ -1987,34 +2019,34 @@ msgstr "" "load_ext : bibliothèque « %s » : ne définit pas " "« plugin_is_GPL_compatible » (%s)\n" -#: ext.c:110 +#: ext.c:86 #, 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" -#: ext.c:114 +#: ext.c:90 #, 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" -#: ext.c:174 +#: ext.c:150 msgid "`extension' is a gawk extension" msgstr "« extension » est une extension gawk" -#: ext.c:177 +#: ext.c:153 msgid "extension: received NULL lib_name" msgstr "extension : lib_name reçu NULL" -#: ext.c:180 +#: ext.c:156 #, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "extension : impossible d'ouvrir la bibliothèque « %s » (%s)" -#: ext.c:186 +#: ext.c:162 #, c-format msgid "" "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" @@ -2022,100 +2054,100 @@ msgstr "" "extension : bibliothèque « %s » : ne définit pas " "« plugin_is_GPL_compatible » (%s)" -#: ext.c:190 +#: ext.c:166 #, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "" "extension : bibliothèque « %s » : impossible d'appeler la fonction " "« %s » (%s)" -#: ext.c:221 +#: ext.c:197 msgid "make_builtin: missing function name" msgstr "make_builtin : nom de fonction manquant" -#: ext.c:236 +#: ext.c:212 #, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "make_builtin : impossible de redéfinir la fonction « %s »" -#: ext.c:240 +#: ext.c:216 #, c-format msgid "make_builtin: function `%s' already defined" msgstr "make_builtin : fonction « %s » déjà définie" -#: ext.c:244 +#: ext.c:220 #, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "make_builtin : nom de la fonction « %s » déjà défini" -#: ext.c:246 +#: ext.c:222 #, 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" -#: ext.c:249 ext.c:304 +#: ext.c:225 ext.c:280 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin : la fonction « %s » a un nombre négatif d'arguments" -#: ext.c:276 +#: ext.c:252 msgid "extension: missing function name" msgstr "extension : nom de fonction manquant" -#: ext.c:279 ext.c:283 +#: ext.c:255 ext.c:259 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension : caractère illégal « %c » dans le nom de la fonction « %s »" -#: ext.c:291 +#: ext.c:267 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension : impossible de redéfinir la fonction « %s »" -#: ext.c:295 +#: ext.c:271 #, c-format msgid "extension: function `%s' already defined" msgstr "extension : fonction « %s » est déjà définie" -#: ext.c:299 +#: ext.c:275 #, c-format msgid "extension: function name `%s' previously defined" msgstr "extension : nom de la fonction « %s » déjà défini" -#: ext.c:301 +#: ext.c:277 #, 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" -#: ext.c:375 +#: ext.c:351 #, c-format msgid "function `%s' defined to take no more than %d argument(s)" msgstr "fonction « %s » définie comme ayant au maximum« %d » argument(s)" -#: ext.c:378 +#: ext.c:354 #, c-format msgid "function `%s': missing argument #%d" msgstr "fonction « %s » : argument #%d manquant" -#: ext.c:395 +#: ext.c:371 #, 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" -#: ext.c:399 +#: ext.c:375 #, 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" -#: ext.c:413 +#: ext.c:389 msgid "dynamic loading of library not supported" msgstr "chargement dynamique des bibliothèques impossible" @@ -2259,7 +2291,7 @@ msgstr "wait : appelé avec trop d'arguments" msgid "inplace_begin: in-place editing already active" msgstr "inplace_begin : modification sur place déjà active" -#: extension/inplace.c:133 extension/inplace.c:207 +#: extension/inplace.c:133 extension/inplace.c:210 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "inplace_begin : 2 arguments attendu, appelé avec %d" @@ -2291,56 +2323,56 @@ msgstr "inplace_begin : « %s » n'est pas un fichier ordinaire" msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "inplace_begin : échec de mkstemp('%s') (%s)" -#: extension/inplace.c:178 +#: extension/inplace.c:181 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "inplace_begin : échec de la chmod (%s)" -#: extension/inplace.c:185 +#: extension/inplace.c:188 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "inplace_begin : échec de dup(stdout) (%s)" -#: extension/inplace.c:188 +#: extension/inplace.c:191 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "inplace_begin : échec de dup2(%d, stdout) (%s)" -#: extension/inplace.c:191 +#: extension/inplace.c:194 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "inplace_begin : échec de close(%d) (%s)" -#: extension/inplace.c:210 +#: extension/inplace.c:213 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" -#: extension/inplace.c:217 +#: extension/inplace.c:220 msgid "inplace_end: in-place editing not active" msgstr "inplace_end : modification sur place non active" -#: extension/inplace.c:223 +#: extension/inplace.c:226 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "ipnlace_end : échec de dup2(%d, stdout) (%s)" -#: extension/inplace.c:226 +#: extension/inplace.c:229 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "inplace_end : échec de close(%d) (%s)" -#: extension/inplace.c:230 +#: extension/inplace.c:233 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "inplace_end : échec de fsetpos(stdout) (%s)" -#: extension/inplace.c:243 +#: extension/inplace.c:246 #, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "inplace_end : échec de link('%s', '%s') (%s)" -#: extension/inplace.c:253 +#: extension/inplace.c:256 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "inplace_end : échec de rename('%s', '%s') (%s)" @@ -2382,50 +2414,54 @@ msgstr "readfile : appelé avec trop d'arguments" msgid "readfile: called with no arguments" msgstr "readfile : appelé sans argument" -#: extension/rwarray.c:124 +#: extension/revoutput.c:125 +msgid "revoutput: could not initialize REVOUT variable" +msgstr "" + +#: extension/rwarray.c:124 extension/rwarray0.c:109 msgid "writea: called with too many arguments" msgstr "writea : appelé avec trop d'arguments" -#: extension/rwarray.c:131 +#: extension/rwarray.c:131 extension/rwarray0.c:116 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "do_writea : l'argument 0 n'est pas une chaîne\n" -#: extension/rwarray.c:137 +#: extension/rwarray.c:137 extension/rwarray0.c:122 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "do_writea : l'argument 1 n'est pas un tableau\n" -#: extension/rwarray.c:184 +#: extension/rwarray.c:184 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "write_array : impossible d'aplatir le tableau\n" -#: extension/rwarray.c:198 +#: extension/rwarray.c:198 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "write_array : impossible de libérer le tableau aplati\n" -#: extension/rwarray.c:280 +#: extension/rwarray.c:280 extension/rwarray0.c:265 msgid "reada: called with too many arguments" msgstr "reada : appelé avec trop d'arguments" -#: extension/rwarray.c:287 +#: extension/rwarray.c:287 extension/rwarray0.c:272 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "do_reada : l'argument 0 n'est pas une chaîne\n" -#: extension/rwarray.c:293 +#: extension/rwarray.c:293 extension/rwarray0.c:278 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "do_reada : l'argument 1 n'est pas un tableau\n" -#: extension/rwarray.c:337 +#: extension/rwarray.c:337 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "do_reada : échec de clear_array\n" -#: extension/rwarray.c:374 +#: extension/rwarray.c:374 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "read_array : échec de set_array_element\n" @@ -2454,88 +2490,88 @@ msgstr "sleep : l'argument est négatif" msgid "sleep: not supported on this platform" msgstr "sleep : n'est pas disponible sur cette plateforme" -#: field.c:345 +#: field.c:346 msgid "NF set to negative value" msgstr "une valeur négative a été assignée à NF" -#: field.c:971 field.c:978 field.c:982 +#: field.c:958 field.c:965 field.c:969 msgid "split: fourth argument is a gawk extension" msgstr "split : le 4e argument est une extension gawk" -#: field.c:975 +#: field.c:962 msgid "split: fourth argument is not an array" msgstr "split : le 4e argument n'est pas un tableau" -#: field.c:989 +#: field.c:976 msgid "split: second argument is not an array" msgstr "split : le 2e argument n'est pas un tableau" -#: field.c:993 +#: field.c:980 msgid "split: cannot use the same array for second and fourth args" msgstr "split : impossible d'utiliser le même tableau comme 2e et 4e argument" -#: field.c:998 +#: field.c:985 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" -#: field.c:1001 +#: field.c:988 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" -#: field.c:1032 +#: field.c:1019 msgid "split: null string for third arg is a gawk extension" msgstr "split : utiliser une chaîne vide en 3e argument est une extension gawk" -#: field.c:1072 +#: field.c:1059 msgid "patsplit: fourth argument is not an array" msgstr "patsplit : le 4e argument n'est pas un tableau" -#: field.c:1077 +#: field.c:1064 msgid "patsplit: second argument is not an array" msgstr "patsplit : le 2e argument n'est pas un tableau" -#: field.c:1083 +#: field.c:1070 msgid "patsplit: third argument must be non-null" msgstr "patsplit : le 3e argument n'est pas un tableau" -#: field.c:1087 +#: field.c:1074 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" -#: field.c:1092 +#: field.c:1079 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" -#: field.c:1095 +#: field.c:1082 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" -#: field.c:1133 +#: field.c:1120 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "« FIELDWIDTHS » est une extension gawk" -#: field.c:1197 +#: field.c:1184 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "valeur de FIELDWIDTHS incorrecte, près de « %s »" -#: field.c:1270 +#: field.c:1257 msgid "null string for `FS' is a gawk extension" msgstr "utiliser une chaîne vide pour « FS » est une extension gawk" -#: field.c:1274 +#: field.c:1261 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 »" -#: field.c:1393 +#: field.c:1380 msgid "`FPAT' is a gawk extension" msgstr "« FPAT » est une extension gawk" @@ -2551,20 +2587,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:807 +#: gawkapi.c:809 msgid "remove_element: received null array" msgstr "remove_element : tableau nul reçu" -#: gawkapi.c:810 +#: gawkapi.c:812 msgid "remove_element: received null subscript" msgstr "remove_element : indice nul reçu" -#: gawkapi.c:947 +#: gawkapi.c:949 #, 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:952 +#: gawkapi.c:954 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "api_flatten_array : impossible de convertir la valeur %d\n" @@ -2624,312 +2660,293 @@ msgstr "%s : l'option « -W %s » n'accepte pas d'argument\n" msgid "%s: option '-W %s' requires an argument\n" msgstr "%s : l'option « -W %s » nécessite un argument\n" -#: io.c:392 +#: io.c:423 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "L'argument « %s » de la ligne de commande est un répertoire : ignoré" -#: io.c:395 io.c:513 +#: io.c:426 io.c:544 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "impossible d'ouvrir le fichier « %s » en lecture (%s)" -#: io.c:640 +#: io.c:671 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "échec de la fermeture du fd %d (« %s ») : %s" -#: io.c:716 +#: io.c:749 msgid "redirection not allowed in sandbox mode" msgstr "les redirections sont interdites en isolement (mode sandbox)" -#: io.c:750 +#: io.c:783 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "l'expression dans la redirection « %s » n'a qu'une valeur numérique" -#: io.c:756 +#: io.c:789 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "l'expression dans la redirection « %s » donne une chaîne nulle" -#: io.c:761 +#: io.c:794 #, 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" -#: io.c:809 +#: io.c:842 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "mélange non nécessaire de « > » et « >> » pour le fichier « %.*s »" -#: io.c:863 +#: io.c:896 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "impossible d'ouvrir le tube « %s » en sortie (%s)" -#: io.c:873 +#: io.c:906 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "impossible d'ouvrir le tube « %s » en entrée (%s)" -#: io.c:904 +#: io.c:937 #, 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)" -#: io.c:986 +#: io.c:1019 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "impossible de rediriger depuis « %s » (%s)" -#: io.c:989 +#: io.c:1022 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "impossible de rediriger vers « %s » (%s)" -#: io.c:1040 +#: io.c:1073 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 +#: io.c:1089 #, c-format msgid "close of `%s' failed (%s)." msgstr "échec de la fermeture de « %s » (%s)." -#: io.c:1064 +#: io.c:1097 msgid "too many pipes or input files open" msgstr "trop de fichiers d'entrées ou de tubes ouverts" -#: io.c:1086 +#: io.c:1119 msgid "close: second argument must be `to' or `from'" msgstr "close : le second argument doit être « to » ou « from »" -#: io.c:1103 +#: io.c:1136 #, 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" -#: io.c:1108 +#: io.c:1141 msgid "close of redirection that was never opened" msgstr "fermeture d'une redirection qui n'a jamais été ouverte" -#: io.c:1205 +#: io.c:1238 #, 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é" -#: io.c:1222 +#: io.c:1255 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "résultat d'échec (%d) sur la fermeture du tube « %s » (%s)" -#: io.c:1225 +#: io.c:1258 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "résultat d'échec (%d) sur la fermeture du fichier « %s » (%s)" -#: io.c:1245 +#: io.c:1278 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "aucune fermeture explicite du connecteur « %s » fournie" -#: io.c:1248 +#: io.c:1281 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "aucune fermeture explicite du co-processus « %s » fournie" -#: io.c:1251 +#: io.c:1284 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "aucune fermeture explicite du tube « %s » fournie" -#: io.c:1254 +#: io.c:1287 #, c-format msgid "no explicit close of file `%s' provided" msgstr "aucune fermeture explicite du fichier « %s » fournie" -#: io.c:1284 io.c:1342 main.c:864 main.c:906 +#: io.c:1317 io.c:1375 main.c:628 main.c:670 #, c-format msgid "error writing standard output (%s)" msgstr "erreur lors de l'écriture vers la sortie standard (%s)" -#: io.c:1289 io.c:1348 main.c:866 +#: io.c:1322 io.c:1381 main.c:630 #, c-format msgid "error writing standard error (%s)" msgstr "erreur lors de l'écriture vers l'erreur standard (%s)" -#: io.c:1297 +#: io.c:1330 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "échec du vidage du tube « %s » (%s)." -#: io.c:1300 +#: io.c:1333 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "échec du vidage du tube vers « %s » par le co-processus (%s)." -#: io.c:1303 +#: io.c:1336 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "échec du vidage vers le fichier « %s » (%s)." -#: io.c:1420 +#: io.c:1453 #, c-format msgid "local port %s invalid in `/inet'" msgstr "le port local %s n'est pas valide dans « /inet »" -#: io.c:1438 +#: io.c:1471 #, 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" -#: 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 »" - -#: io.c:1604 -#, c-format -msgid "special file name `%s' is incomplete" -msgstr "nom de fichier spécial « %s » incomplet" - -#: io.c:1621 -msgid "must supply a remote hostname to `/inet'" -msgstr "un nom d'hôte distant doit être fourni à « /inet »" - -#: io.c:1639 -msgid "must supply a remote port to `/inet'" -msgstr "un port distant doit être fourni à « /inet »" - -#: io.c:1685 +#: io.c:1673 msgid "TCP/IP communications are not supported" msgstr "les communications TCP/IP ne sont pas disponibles" -#: io.c:1867 +#: io.c:1854 #, c-format msgid "could not open `%s', mode `%s'" msgstr "impossible d'ouvrir « %s », mode « %s »" -#: io.c:1917 +#: io.c:1904 #, c-format msgid "close of master pty failed (%s)" msgstr "échec de la fermeture du pty maître (%s)" -#: io.c:1919 io.c:2105 io.c:2305 +#: io.c:1906 io.c:2092 io.c:2293 #, c-format msgid "close of stdout in child failed (%s)" msgstr "échec de la fermeture de stdout du processus fils (%s)" -#: io.c:1922 +#: io.c:1909 #, 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)" -#: io.c:1924 io.c:2110 +#: io.c:1911 io.c:2097 #, c-format msgid "close of stdin in child failed (%s)" msgstr "échec de fermeture du stdin du processus fils (%s)" -#: io.c:1927 +#: io.c:1914 #, 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)" -#: io.c:1929 io.c:1951 +#: io.c:1916 io.c:1938 #, c-format msgid "close of slave pty failed (%s)" msgstr "échec de la fermeture du pty esclave (%s)" -#: io.c:2040 io.c:2108 io.c:2276 io.c:2308 +#: io.c:2027 io.c:2095 io.c:2264 io.c:2296 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "échec du déplacement du tube vers stdout du processus fils (dup : %s)" -#: io.c:2047 io.c:2113 +#: io.c:2034 io.c:2100 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "échec de déplacement du tube vers stdin du processus fils (dup : %s)" -#: io.c:2073 io.c:2298 +#: io.c:2060 io.c:2286 msgid "restoring stdout in parent process failed\n" msgstr "échec de la restauration du stdout dans le processus parent\n" -#: io.c:2081 +#: io.c:2068 msgid "restoring stdin in parent process failed\n" msgstr "échec de la restauration du stdin dans le processus parent\n" -#: io.c:2116 io.c:2310 io.c:2324 +#: io.c:2103 io.c:2298 io.c:2313 #, c-format msgid "close of pipe failed (%s)" msgstr "échec de la fermeture du tube (%s)" -#: io.c:2174 +#: io.c:2162 msgid "`|&' not supported" msgstr "« |& » non disponible" -#: io.c:2261 +#: io.c:2249 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "impossible d'ouvrir le tube « %s » (%s)" -#: io.c:2318 +#: io.c:2307 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "impossible de créer le processus fils pour « %s » (fork : %s)" -#: io.c:2790 +#: io.c:2734 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser : pointeur NULL reçu" -#: io.c:2818 +#: io.c:2762 #, 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é" -#: io.c:2825 +#: io.c:2769 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "l'analyseur d'entrée « %s » n'a pu ouvrir « %s »" -#: io.c:2845 +#: io.c:2789 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper : pointeur NULL reçu" -#: io.c:2873 +#: io.c:2817 #, 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é" -#: io.c:2880 +#: io.c:2824 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "le filtre de sortie « %s » n'a pu ouvrir « %s »" -#: io.c:2901 +#: io.c:2845 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor : pointeur NULL reçu" -#: io.c:2930 +#: io.c:2874 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2938,216 +2955,203 @@ msgstr "" "le gestionnaire bidirectionnel « %s » est en conflit avec le gestionnaire " "« %s » déjà installé" -#: io.c:2939 +#: io.c:2883 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "le gestionnaire bidirectionnel « %s » n'a pu ouvrir « %s »" -#: io.c:3064 +#: io.c:3008 #, c-format msgid "data file `%s' is empty" msgstr "le fichier de données « %s » est vide" -#: io.c:3106 io.c:3114 +#: io.c:3050 io.c:3058 msgid "could not allocate more input memory" msgstr "impossible d'allouer plus de mémoire d'entrée" -#: io.c:3682 +#: io.c:3636 msgid "multicharacter value of `RS' is a gawk extension" msgstr "" "l'utilisation d'un « RS » de plusieurs caractères est une extension gawk" -#: io.c:3771 +#: io.c:3783 msgid "IPv6 communication is not supported" msgstr "les communications IPv6 ne sont pas disponibles" -#: main.c:405 -msgid "empty argument to `-e/--source' ignored" -msgstr "argument vide de l'option « -e / --source » ignoré" - -#: main.c:495 -#, c-format -msgid "%s: option `-W %s' unrecognized, ignored\n" -msgstr "%s : option « -W %s » non reconnue, ignorée\n" - -#: main.c:541 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s : l'option requiert un argument - %c\n" - -#: main.c:562 +#: main.c:321 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "variable d'environnement « POSIXLY__CORRECT » définie : activation de « --" "posix »" -#: main.c:568 +#: main.c:327 msgid "`--posix' overrides `--traditional'" msgstr "« --posix » prend le pas sur « --traditional »" -#: main.c:579 +#: main.c:338 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "" "« --posix » et « --traditional » prennent le pas sur « --non-decimal-data »" -#: main.c:583 +#: main.c:342 #, 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é" -#: main.c:588 +#: main.c:346 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "« --posix » prend le pas sur « --characters-as-bytes »" -#: main.c:647 +#: main.c:404 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "impossible d'activer le mode binaire sur stdin (%s)" -#: main.c:650 +#: main.c:407 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "impossible d'activer le mode binaire sur stdout (%s)" -#: main.c:652 +#: main.c:409 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "impossible d'activer le mode binaire sur stderr (%s)" -#: main.c:710 +#: main.c:469 msgid "no program text at all!" msgstr "aucun programme !" -#: main.c:799 +#: main.c:563 #, 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" -#: main.c:801 +#: main.c:565 #, 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" -#: main.c:806 +#: main.c:570 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Options POSIX :\t\tOptions longues GNU : (standard)\n" -#: main.c:807 +#: main.c:571 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f fichier_prog\t\t--file=fichier_prog\n" -#: main.c:808 +#: main.c:572 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:809 +#: main.c:573 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=valeur\t\t--assign=var=valeur\n" -#: main.c:810 +#: main.c:574 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Options POSIX :\t\tOptions longues GNU : (extensions)\n" -#: main.c:811 +#: main.c:575 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:812 +#: main.c:576 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:813 +#: main.c:577 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:814 +#: main.c:578 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[fichier]\t\t--dump-variables[=fichier]\n" -#: main.c:815 +#: main.c:579 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[fichier]\t\t--debug[=fichier]\n" -#: main.c:816 +#: main.c:580 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'programme'\t\t--source='programme'\n" -#: main.c:817 +#: main.c:581 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E fichier\t\t--exec=fichier\n" -#: main.c:818 +#: main.c:582 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:819 +#: main.c:583 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:820 +#: main.c:584 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i fichier\t\t--include=fichier\n" -#: main.c:821 +#: main.c:585 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l bibliothèque\t\t--load=bibliothèque\n" -#: main.c:822 -msgid "\t-L [fatal]\t\t--lint[=fatal]\n" +#: main.c:586 +#, fuzzy +msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: 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:824 +#: main.c:587 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:825 +#: main.c:588 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:826 +#: main.c:589 +msgid "\t-n\t\t\t--non-decimal-data\n" +msgstr "\t-n\t\t\t--non-decimal-data\n" + +#: main.c:590 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[fichier]\t\t--pretty-print[=fichier]\n" -#: main.c:827 +#: main.c:591 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:828 +#: main.c:592 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[fichier]\t\t--profile[=fichier]\n" -#: main.c:829 +#: main.c:593 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:830 +#: main.c:594 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:831 +#: main.c:595 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:832 +#: main.c:596 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:833 +#: main.c:597 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:835 +#: main.c:599 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:838 +#: main.c:602 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3156,7 +3160,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:847 +#: main.c:611 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3171,7 +3175,7 @@ msgstr "" "<traduc CHEZ traduc POINT org>.\n" "\n" -#: main.c:851 +#: main.c:615 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3181,7 +3185,7 @@ msgstr "" "Par défaut, il lit l'entrée standard et écrit sur la sortie standard.\n" "\n" -#: main.c:855 +#: main.c:619 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3191,7 +3195,7 @@ msgstr "" "\tgawk '{ somme += $1 }; END { print somme }' fichier\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:880 +#: main.c:644 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3211,7 +3215,7 @@ msgstr "" "version ultérieure de votre choix.\n" "\n" -#: main.c:888 +#: main.c:652 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" @@ -3226,7 +3230,7 @@ msgstr "" "General Public License).\n" "\n" -#: main.c:894 +#: main.c:658 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" @@ -3235,16 +3239,16 @@ msgstr "" "(GNU General Public License) avec ce programme. Sinon, consultez\n" "http://www.gnu.org/licenses/.\n" -#: main.c:931 +#: main.c:695 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft ne définit pas le FS comme étant une tabulation en awk POSIX" -#: main.c:1208 +#: main.c:982 #, c-format msgid "unknown value for field spec: %d\n" msgstr "valeur inconnue pour la définition de champ : %d\n" -#: main.c:1306 +#: main.c:1080 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3253,99 +3257,117 @@ msgstr "" "%s : « %s » l'argument de « -v » ne respecte pas la forme « var=valeur »\n" "\n" -#: main.c:1332 +#: main.c:1106 #, c-format msgid "`%s' is not a legal variable name" msgstr "« %s » n'est pas un nom de variable valide" -#: main.c:1335 +#: main.c:1109 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "« %s » n'est pas un nom de variable, recherche du fichier « %s=%s »" -#: main.c:1339 +#: main.c:1113 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "impossible d'utiliser le mot clef gawk « %s » comme variable" -#: main.c:1344 +#: main.c:1118 #, c-format msgid "cannot use function `%s' as variable name" msgstr "impossible d'utiliser la fonction « %s » comme variable" -#: main.c:1397 +#: main.c:1171 msgid "floating point exception" msgstr "exception du traitement en virgule flottante" -#: main.c:1404 +#: main.c:1178 msgid "fatal error: internal error" msgstr "fatal : erreur interne" -#: main.c:1419 +#: main.c:1193 msgid "fatal error: internal error: segfault" msgstr "fatal : erreur interne : erreur de segmentation" -#: main.c:1431 +#: main.c:1205 msgid "fatal error: internal error: stack overflow" msgstr "fatal : erreur interne : débordement de la pile" -#: main.c:1490 +#: main.c:1264 #, c-format msgid "no pre-opened fd %d" msgstr "aucun descripteur fd %d pré-ouvert" -#: main.c:1497 +#: main.c:1271 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "impossible de pré-ouvrir /dev/null pour le descripteur fd %d" -#: mpfr.c:550 +#: main.c:1485 +msgid "empty argument to `-e/--source' ignored" +msgstr "argument vide de l'option « -e / --source » ignoré" + +#: main.c:1556 +msgid "-M ignored: MPFR/GMP support not compiled in" +msgstr "" + +#: main.c:1577 +#, c-format +msgid "%s: option `-W %s' unrecognized, ignored\n" +msgstr "%s : option « -W %s » non reconnue, ignorée\n" + +#: main.c:1630 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s : l'option requiert un argument - %c\n" + +#: mpfr.c:557 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "la valeur « %.*s » de PREC est incorrecte" -#: mpfr.c:608 +#: mpfr.c:615 #, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "la valeur « %.*s » de RNDMODE est incorrecte" -#: mpfr.c:698 +#: mpfr.c:711 #, c-format msgid "%s: received non-numeric argument" msgstr "%s : argument reçu non numérique" -#: mpfr.c:800 +#: mpfr.c:820 msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%Rg) : les valeurs négatives donneront des résultats inattendus" -#: mpfr.c:804 +#: mpfr.c:824 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg) : les valeurs non entières seront tronquées" -#: mpfr.c:816 +#: mpfr.c:836 #, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "compl(%Zd) : les valeurs négatives donneront des résultats inattendus" -#: mpfr.c:835 +#: mpfr.c:855 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s : argument reçu non numérique #%d" -#: mpfr.c:845 +#: mpfr.c:865 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s : l'argument #%d a une valeur incorrecte %Rg, utilisation de 0" -#: mpfr.c:857 +#: mpfr.c:877 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" -#: mpfr.c:863 +#: mpfr.c:883 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s : argument #%d : la valeur non entière %Rg sera tronquée" -#: mpfr.c:878 +#: mpfr.c:898 #, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "" @@ -3356,24 +3378,24 @@ msgstr "" msgid "cmd. line:" msgstr "ligne de commande:" -#: node.c:421 +#: node.c:409 msgid "backslash at end of string" msgstr "barre oblique inverse à la fin de la chaîne" -#: node.c:500 +#: node.c:488 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "l'ancien awk ne dispose pas de la séquence d'échappement « \\%c »" -#: node.c:551 +#: node.c:539 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX n'autorise pas les séquences d'échappement « \\x »" -#: node.c:557 +#: node.c:545 msgid "no hex digits in `\\x' escape sequence" msgstr "aucun chiffre hexadécimal dans la séquence d'échappement « \\x » " -#: node.c:579 +#: node.c:567 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3382,12 +3404,12 @@ 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 +#: node.c:582 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "séquence d'échappement « \\%c » traitée comme un simple « %c »" -#: node.c:739 +#: node.c:726 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3417,12 +3439,12 @@ msgid "sending profile to standard error" msgstr "envoi du profil vers la sortie d'erreur standard" #: profile.c:193 -#, c-format +#, fuzzy, c-format msgid "" -"\t# %s block(s)\n" +"\t# %s rule(s)\n" "\n" msgstr "" -"\t# Bloc(s) %s\n" +"\t# Règle(s)\n" "\n" #: profile.c:198 @@ -3439,11 +3461,11 @@ msgstr "" msgid "internal error: %s with null vname" msgstr "erreur interne : %s avec un vname nul" -#: profile.c:537 +#: profile.c:538 msgid "internal error: builtin with null fname" msgstr "erreur interne : fonction interne avec un fname nul" -#: profile.c:949 +#: profile.c:958 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" @@ -3452,12 +3474,12 @@ msgstr "" "\t# Extensions chargées (-l ou @load)\n" "\n" -#: profile.c:972 +#: profile.c:981 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# profile gawk, créé %s\n" -#: profile.c:1475 +#: profile.c:1521 #, c-format msgid "" "\n" @@ -3466,7 +3488,7 @@ msgstr "" "\n" "\t# Fonctions, par ordre alphabétique\n" -#: profile.c:1513 +#: profile.c:1559 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str : type de redirection %d inconnu" @@ -3478,73 +3500,112 @@ msgstr "" "le composant d'expression rationnelle « %.*s » devrait probablement être " "« [%.*s] »" -#: regcomp.c:131 +#: regcomp.c:139 msgid "Success" msgstr "Succès" -#: regcomp.c:134 +#: regcomp.c:142 msgid "No match" msgstr "Aucune correspondance" -#: regcomp.c:137 +#: regcomp.c:145 msgid "Invalid regular expression" msgstr "Expression rationnelle incorrecte" -#: regcomp.c:140 +#: regcomp.c:148 msgid "Invalid collation character" msgstr "Caractère d'interclassement incorrect" -#: regcomp.c:143 +#: regcomp.c:151 msgid "Invalid character class name" msgstr "Nom de classe de caractères incorrect" -#: regcomp.c:146 +#: regcomp.c:154 msgid "Trailing backslash" msgstr "Barre oblique inverse finale" -#: regcomp.c:149 +#: regcomp.c:157 msgid "Invalid back reference" msgstr "Référence arrière incorrecte" -#: regcomp.c:152 -msgid "Unmatched [ or [^" +#: regcomp.c:160 +#, fuzzy +msgid "Unmatched [, [^, [:, [., or [=" msgstr "[ ou [^ sans correspondance" -#: regcomp.c:155 +#: regcomp.c:163 msgid "Unmatched ( or \\(" msgstr "( ou \\( sans correspondance" -#: regcomp.c:158 +#: regcomp.c:166 msgid "Unmatched \\{" msgstr "\\{ sans correspondance" -#: regcomp.c:164 +#: regcomp.c:169 +msgid "Invalid content of \\{\\}" +msgstr "Contenu de \\{\\} incorrect" + +#: regcomp.c:172 msgid "Invalid range end" msgstr "Borne finale non valable" -#: regcomp.c:167 +#: regcomp.c:175 msgid "Memory exhausted" msgstr "Mémoire épuisée" -#: regcomp.c:170 +#: regcomp.c:178 msgid "Invalid preceding regular expression" msgstr "Expression rationnelle précédente incorrecte" -#: regcomp.c:173 +#: regcomp.c:181 msgid "Premature end of regular expression" msgstr "Fin prématurée de l'expression rationnelle" -#: regcomp.c:179 +#: regcomp.c:184 +msgid "Regular expression too big" +msgstr "Expression rationnelle trop grande" + +#: regcomp.c:187 msgid "Unmatched ) or \\)" msgstr ") ou \\) sans correspondance" -#: regcomp.c:704 +#: regcomp.c:712 msgid "No previous regular expression" msgstr "Aucune expression rationnelle précédente" -#: symbol.c:741 +#: symbol.c:677 +#, fuzzy, c-format +msgid "function `%s': can't use function `%s' as a parameter name" +msgstr "" +"fonction « %s » : impossible d'utiliser un nom de fonction comme paramètre" + +#: symbol.c:809 msgid "can not pop main context" msgstr "impossible de rétablir (pop) le contexte principal (main)" +#~ msgid "`getline var' invalid inside `%s' rule" +#~ msgstr "« getline var » n'est pas valable dans une règle « %s »" + +#~ 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 »" + +#~ msgid "special file name `%s' is incomplete" +#~ msgstr "nom de fichier spécial « %s » incomplet" + +#~ msgid "must supply a remote hostname to `/inet'" +#~ msgstr "un nom d'hôte distant doit être fourni à « /inet »" + +#~ msgid "must supply a remote port to `/inet'" +#~ msgstr "un port distant doit être fourni à « /inet »" + +#~ msgid "" +#~ "\t# %s block(s)\n" +#~ "\n" +#~ msgstr "" +#~ "\t# Bloc(s) %s\n" +#~ "\n" + #~ msgid "range of the form `[%c-%c]' is locale dependent" #~ msgstr "les plages « [%c-%c] » sont dépendantes des paramètres régionaux" diff --git a/po/gawk.pot b/po/gawk.pot index bb47fa9e..7f778872 100644 --- a/po/gawk.pot +++ b/po/gawk.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gawk 4.1.1\n" -"Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2014-04-08 19:23+0300\n" +"Project-Id-Version: gawk 4.1.1c\n" +"Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" +"POT-Creation-Date: 2015-02-26 20:05+0200\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,9 +36,9 @@ msgstr "" msgid "attempt to use scalar `%s' as an array" msgstr "" -#: 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 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 +#: builtin.c:1665 builtin.c:2092 builtin.c:2106 eval.c:1149 eval.c:1153 +#: eval.c:1558 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "" @@ -89,422 +89,427 @@ msgstr "" msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "" -#: array.c:1314 +#: array.c:1313 #, c-format msgid "`%s' is invalid as a function name" msgstr "" -#: array.c:1318 +#: array.c:1317 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "" -#: awkgram.y:233 +#: awkgram.y:226 #, c-format msgid "%s blocks must have an action part" msgstr "" -#: awkgram.y:236 +#: awkgram.y:229 msgid "each rule must have a pattern or an action part" msgstr "" -#: awkgram.y:325 awkgram.y:336 +#: awkgram.y:320 awkgram.y:331 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "" -#: awkgram.y:373 +#: awkgram.y:368 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "" -#: awkgram.y:419 +#: awkgram.y:417 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "" -#: awkgram.y:423 +#: awkgram.y:421 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "" -#: awkgram.y:515 +#: awkgram.y:513 #, c-format msgid "duplicate case values in switch body: %s" msgstr "" -#: awkgram.y:536 +#: awkgram.y:534 msgid "duplicate `default' detected in switch body" msgstr "" -#: awkgram.y:796 awkgram.y:3723 +#: awkgram.y:794 awkgram.y:3751 msgid "`break' is not allowed outside a loop or switch" msgstr "" -#: awkgram.y:805 awkgram.y:3715 +#: awkgram.y:803 awkgram.y:3743 msgid "`continue' is not allowed outside a loop" msgstr "" -#: awkgram.y:815 +#: awkgram.y:813 #, c-format msgid "`next' used in %s action" msgstr "" -#: awkgram.y:824 +#: awkgram.y:822 #, c-format msgid "`nextfile' used in %s action" msgstr "" -#: awkgram.y:848 +#: awkgram.y:846 msgid "`return' used outside function context" msgstr "" -#: awkgram.y:922 +#: awkgram.y:920 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" -#: awkgram.y:988 awkgram.y:1037 +#: awkgram.y:986 awkgram.y:1035 msgid "`delete' is not allowed with SYMTAB" msgstr "" -#: awkgram.y:990 awkgram.y:1039 +#: awkgram.y:988 awkgram.y:1037 msgid "`delete' is not allowed with FUNCTAB" msgstr "" -#: awkgram.y:1024 awkgram.y:1028 +#: awkgram.y:1022 awkgram.y:1026 msgid "`delete(array)' is a non-portable tawk extension" msgstr "" -#: awkgram.y:1149 +#: awkgram.y:1147 msgid "multistage two-way pipelines don't work" msgstr "" -#: awkgram.y:1264 +#: awkgram.y:1262 msgid "regular expression on right of assignment" msgstr "" -#: awkgram.y:1275 +#: awkgram.y:1273 msgid "regular expression on left of `~' or `!~' operator" msgstr "" -#: awkgram.y:1291 awkgram.y:1442 +#: awkgram.y:1289 awkgram.y:1431 msgid "old awk does not support the keyword `in' except after `for'" msgstr "" -#: awkgram.y:1301 +#: awkgram.y:1299 msgid "regular expression on right of comparison" msgstr "" -#: awkgram.y:1417 +#: awkgram.y:1411 #, c-format -msgid "`getline var' invalid inside `%s' rule" +msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "" -#: awkgram.y:1420 -#, c-format -msgid "`getline' invalid inside `%s' rule" -msgstr "" - -#: awkgram.y:1425 +#: awkgram.y:1414 msgid "non-redirected `getline' undefined inside END action" msgstr "" -#: awkgram.y:1444 +#: awkgram.y:1433 msgid "old awk does not support multidimensional arrays" msgstr "" -#: awkgram.y:1541 +#: awkgram.y:1530 msgid "call of `length' without parentheses is not portable" msgstr "" -#: awkgram.y:1607 +#: awkgram.y:1596 msgid "indirect function calls are a gawk extension" msgstr "" -#: awkgram.y:1620 +#: awkgram.y:1609 #, c-format msgid "can not use special variable `%s' for indirect function call" msgstr "" -#: awkgram.y:1698 +#: awkgram.y:1635 +#, c-format +msgid "attempt to use non-function `%s' in function call" +msgstr "" + +#: awkgram.y:1699 msgid "invalid subscript expression" msgstr "" -#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2045 awkgram.y:2065 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "" -#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 +#: awkgram.y:2063 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "" -#: awkgram.y:2116 +#: awkgram.y:2113 msgid "unexpected newline or end of string" msgstr "" -#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 +#: awkgram.y:2392 awkgram.y:2468 awkgram.y:2691 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:2384 awkgram.y:2509 +#: awkgram.y:2393 awkgram.y:2518 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "" -#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 +#: awkgram.y:2395 awkgram.y:2469 awkgram.y:2519 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "" -#: awkgram.y:2395 awkgram.y:2419 +#: awkgram.y:2404 awkgram.y:2428 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "" -#: awkgram.y:2408 +#: awkgram.y:2417 #, c-format msgid "already included source file `%s'" msgstr "" -#: awkgram.y:2409 +#: awkgram.y:2418 #, c-format msgid "already loaded shared library `%s'" msgstr "" -#: awkgram.y:2444 +#: awkgram.y:2453 msgid "@include is a gawk extension" msgstr "" -#: awkgram.y:2450 +#: awkgram.y:2459 msgid "empty filename after @include" msgstr "" -#: awkgram.y:2494 +#: awkgram.y:2503 msgid "@load is a gawk extension" msgstr "" -#: awkgram.y:2500 +#: awkgram.y:2509 msgid "empty filename after @load" msgstr "" -#: awkgram.y:2634 +#: awkgram.y:2643 msgid "empty program text on command line" msgstr "" -#: awkgram.y:2749 +#: awkgram.y:2758 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "" -#: awkgram.y:2760 +#: awkgram.y:2769 #, c-format msgid "source file `%s' is empty" msgstr "" -#: awkgram.y:2937 +#: awkgram.y:2828 +#, c-format +msgid "PEBKAC error: invalid character '\\%03o' in source code" +msgstr "" + +#: awkgram.y:2959 msgid "source file does not end in newline" msgstr "" -#: awkgram.y:3042 +#: awkgram.y:3062 msgid "unterminated regexp ends with `\\' at end of file" msgstr "" -#: awkgram.y:3066 +#: awkgram.y:3089 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" -#: awkgram.y:3070 +#: awkgram.y:3093 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" -#: awkgram.y:3077 +#: awkgram.y:3100 msgid "unterminated regexp" msgstr "" -#: awkgram.y:3081 +#: awkgram.y:3104 msgid "unterminated regexp at end of file" msgstr "" -#: awkgram.y:3140 +#: awkgram.y:3162 msgid "use of `\\ #...' line continuation is not portable" msgstr "" -#: awkgram.y:3156 +#: awkgram.y:3178 msgid "backslash not last character on line" msgstr "" -#: awkgram.y:3217 +#: awkgram.y:3239 msgid "POSIX does not allow operator `**='" msgstr "" -#: awkgram.y:3219 +#: awkgram.y:3241 msgid "old awk does not support operator `**='" msgstr "" -#: awkgram.y:3228 +#: awkgram.y:3250 msgid "POSIX does not allow operator `**'" msgstr "" -#: awkgram.y:3230 +#: awkgram.y:3252 msgid "old awk does not support operator `**'" msgstr "" -#: awkgram.y:3265 +#: awkgram.y:3287 msgid "operator `^=' is not supported in old awk" msgstr "" -#: awkgram.y:3273 +#: awkgram.y:3295 msgid "operator `^' is not supported in old awk" msgstr "" -#: awkgram.y:3366 awkgram.y:3382 command.y:1178 +#: awkgram.y:3392 awkgram.y:3410 command.y:1180 msgid "unterminated string" msgstr "" -#: awkgram.y:3603 +#: awkgram.y:3631 #, c-format msgid "invalid char '%c' in expression" msgstr "" -#: awkgram.y:3650 +#: awkgram.y:3678 #, c-format msgid "`%s' is a gawk extension" msgstr "" -#: awkgram.y:3655 +#: awkgram.y:3683 #, c-format msgid "POSIX does not allow `%s'" msgstr "" -#: awkgram.y:3663 +#: awkgram.y:3691 #, c-format msgid "`%s' is not supported in old awk" msgstr "" -#: awkgram.y:3753 +#: awkgram.y:3781 msgid "`goto' considered harmful!\n" msgstr "" -#: awkgram.y:3787 +#: awkgram.y:3815 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "" -#: awkgram.y:3822 +#: awkgram.y:3850 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "" -#: awkgram.y:3827 +#: awkgram.y:3855 #, c-format msgid "%s third parameter is not a changeable object" msgstr "" -#: awkgram.y:3910 awkgram.y:3913 +#: awkgram.y:3938 awkgram.y:3941 msgid "match: third argument is a gawk extension" msgstr "" -#: awkgram.y:3967 awkgram.y:3970 +#: awkgram.y:3995 awkgram.y:3998 msgid "close: second argument is a gawk extension" msgstr "" -#: awkgram.y:3982 +#: awkgram.y:4010 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" -#: awkgram.y:3997 +#: awkgram.y:4025 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" -#: awkgram.y:4016 +#: awkgram.y:4044 msgid "index: regexp constant as second argument is not allowed" msgstr "" -#: awkgram.y:4069 +#: awkgram.y:4097 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "" -#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4154 debug.c:4041 debug.c:4084 debug.c:5204 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "" -#: awkgram.y:4127 +#: awkgram.y:4155 msgid "sending variable list to standard error" msgstr "" -#: awkgram.y:4135 +#: awkgram.y:4163 #, c-format msgid "%s: close failed (%s)" msgstr "" -#: awkgram.y:4160 +#: awkgram.y:4188 msgid "shadow_funcs() called twice!" msgstr "" -#: awkgram.y:4168 +#: awkgram.y:4196 msgid "there were shadowed variables." msgstr "" -#: awkgram.y:4239 +#: awkgram.y:4267 #, c-format msgid "function name `%s' previously defined" msgstr "" -#: awkgram.y:4285 +#: awkgram.y:4313 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "" -#: awkgram.y:4288 +#: awkgram.y:4316 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "" -#: awkgram.y:4296 +#: awkgram.y:4324 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "" -#: awkgram.y:4383 awkgram.y:4389 +#: awkgram.y:4411 awkgram.y:4417 #, c-format msgid "function `%s' called but never defined" msgstr "" -#: awkgram.y:4393 +#: awkgram.y:4421 #, c-format msgid "function `%s' defined but never called directly" msgstr "" -#: awkgram.y:4425 +#: awkgram.y:4453 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "" -#: awkgram.y:4484 +#: awkgram.y:4468 #, c-format msgid "" "function `%s' called with space between name and `(',\n" "or used as a variable or an array" msgstr "" -#: awkgram.y:4720 +#: awkgram.y:4674 msgid "division by zero attempted" msgstr "" -#: awkgram.y:4729 +#: awkgram.y:4683 #, c-format msgid "division by zero attempted in `%%'" msgstr "" -#: awkgram.y:5049 +#: awkgram.y:5003 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" -#: awkgram.y:5052 +#: awkgram.y:5006 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "" @@ -542,371 +547,387 @@ msgstr "" msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "" -#: builtin.c:362 +#: builtin.c:351 msgid "index: received non-string first argument" msgstr "" -#: builtin.c:364 +#: builtin.c:353 msgid "index: received non-string second argument" msgstr "" -#: builtin.c:488 mpfr.c:757 +#: builtin.c:466 mpfr.c:777 msgid "int: received non-numeric argument" msgstr "" -#: builtin.c:525 +#: builtin.c:503 msgid "length: received array argument" msgstr "" -#: builtin.c:528 +#: builtin.c:506 msgid "`length(array)' is a gawk extension" msgstr "" -#: builtin.c:544 +#: builtin.c:525 msgid "length: received non-string argument" msgstr "" -#: builtin.c:575 +#: builtin.c:554 msgid "log: received non-numeric argument" msgstr "" -#: builtin.c:578 +#: builtin.c:557 #, c-format msgid "log: received negative argument %g" msgstr "" -#: builtin.c:776 builtin.c:781 +#: builtin.c:755 builtin.c:760 builtin.c:911 msgid "fatal: must use `count$' on all formats or none" msgstr "" -#: builtin.c:851 +#: builtin.c:830 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "" -#: builtin.c:853 +#: builtin.c:832 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "" -#: builtin.c:855 +#: builtin.c:834 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "" -#: builtin.c:906 +#: builtin.c:885 msgid "fatal: `$' is not permitted in awk formats" msgstr "" -#: builtin.c:915 +#: builtin.c:894 msgid "fatal: arg count with `$' must be > 0" msgstr "" -#: builtin.c:919 +#: builtin.c:898 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "" -#: builtin.c:923 +#: builtin.c:902 msgid "fatal: `$' not permitted after period in format" msgstr "" -#: builtin.c:939 +#: builtin.c:921 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" -#: builtin.c:1009 +#: builtin.c:991 msgid "`l' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:1013 +#: builtin.c:995 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:1026 +#: builtin.c:1008 msgid "`L' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:1030 +#: builtin.c:1012 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:1043 +#: builtin.c:1025 msgid "`h' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:1047 +#: builtin.c:1029 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:1463 +#: builtin.c:1055 +#, c-format +msgid "[s]printf: value %g is too big for %%c format" +msgstr "" + +#: builtin.c:1068 +#, c-format +msgid "[s]printf: value %g is not a valid wide character" +msgstr "" + +#: builtin.c:1454 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "" -#: builtin.c:1561 +#: builtin.c:1552 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" -#: builtin.c:1566 +#: builtin.c:1557 msgid "fatal: not enough arguments to satisfy format string" msgstr "" -#: builtin.c:1568 +#: builtin.c:1559 msgid "^ ran out for this one" msgstr "" -#: builtin.c:1575 +#: builtin.c:1566 msgid "[s]printf: format specifier does not have control letter" msgstr "" -#: builtin.c:1578 +#: builtin.c:1569 msgid "too many arguments supplied for format string" msgstr "" -#: builtin.c:1634 +#: builtin.c:1625 msgid "sprintf: no arguments" msgstr "" -#: builtin.c:1657 builtin.c:1668 +#: builtin.c:1648 builtin.c:1659 msgid "printf: no arguments" msgstr "" -#: builtin.c:1711 +#: builtin.c:1702 msgid "sqrt: received non-numeric argument" msgstr "" -#: builtin.c:1715 +#: builtin.c:1706 #, c-format msgid "sqrt: called with negative argument %g" msgstr "" -#: builtin.c:1746 +#: builtin.c:1737 #, c-format msgid "substr: length %g is not >= 1" msgstr "" -#: builtin.c:1748 +#: builtin.c:1739 #, c-format msgid "substr: length %g is not >= 0" msgstr "" -#: builtin.c:1755 +#: builtin.c:1753 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "" -#: builtin.c:1760 +#: builtin.c:1758 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" -#: builtin.c:1772 +#: builtin.c:1770 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "" -#: builtin.c:1777 +#: builtin.c:1775 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "" -#: builtin.c:1802 +#: builtin.c:1798 msgid "substr: source string is zero length" msgstr "" -#: builtin.c:1818 +#: builtin.c:1812 #, c-format msgid "substr: start index %g is past end of string" msgstr "" -#: builtin.c:1826 +#: builtin.c:1820 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" msgstr "" -#: builtin.c:1900 +#: builtin.c:1890 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" -#: builtin.c:1923 +#: builtin.c:1913 msgid "strftime: received non-numeric second argument" msgstr "" -#: builtin.c:1927 +#: builtin.c:1917 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "" -#: builtin.c:1934 +#: builtin.c:1924 msgid "strftime: received non-string first argument" msgstr "" -#: builtin.c:1941 +#: builtin.c:1931 msgid "strftime: received empty format string" msgstr "" -#: builtin.c:2007 +#: builtin.c:1997 msgid "mktime: received non-string argument" msgstr "" -#: builtin.c:2024 +#: builtin.c:2014 msgid "mktime: at least one of the values is out of the default range" msgstr "" -#: builtin.c:2059 +#: builtin.c:2049 msgid "'system' function not allowed in sandbox mode" msgstr "" -#: builtin.c:2064 +#: builtin.c:2054 msgid "system: received non-string argument" msgstr "" -#: builtin.c:2184 +#: builtin.c:2174 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "" -#: builtin.c:2271 +#: builtin.c:2259 msgid "tolower: received non-string argument" msgstr "" -#: builtin.c:2305 +#: builtin.c:2290 msgid "toupper: received non-string argument" msgstr "" -#: builtin.c:2341 mpfr.c:672 +#: builtin.c:2323 mpfr.c:679 msgid "atan2: received non-numeric first argument" msgstr "" -#: builtin.c:2343 mpfr.c:674 +#: builtin.c:2325 mpfr.c:681 msgid "atan2: received non-numeric second argument" msgstr "" -#: builtin.c:2362 +#: builtin.c:2344 msgid "sin: received non-numeric argument" msgstr "" -#: builtin.c:2378 +#: builtin.c:2360 msgid "cos: received non-numeric argument" msgstr "" -#: builtin.c:2431 mpfr.c:1156 +#: builtin.c:2413 mpfr.c:1176 msgid "srand: received non-numeric argument" msgstr "" -#: builtin.c:2462 +#: builtin.c:2444 msgid "match: third argument is not an array" msgstr "" -#: builtin.c:2734 -msgid "gensub: third argument of 0 treated as 1" +#: builtin.c:2705 +#, c-format +msgid "gensub: third argument `%.*s' treated as 1" msgstr "" -#: builtin.c:3030 +#: builtin.c:2720 +#, c-format +msgid "gensub: third argument %g treated as 1" +msgstr "" + +#: builtin.c:3020 msgid "lshift: received non-numeric first argument" msgstr "" -#: builtin.c:3032 +#: builtin.c:3022 msgid "lshift: received non-numeric second argument" msgstr "" -#: builtin.c:3038 +#: builtin.c:3028 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "" -#: builtin.c:3040 +#: builtin.c:3030 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "" -#: builtin.c:3042 +#: builtin.c:3032 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "" -#: builtin.c:3067 +#: builtin.c:3057 msgid "rshift: received non-numeric first argument" msgstr "" -#: builtin.c:3069 +#: builtin.c:3059 msgid "rshift: received non-numeric second argument" msgstr "" -#: builtin.c:3075 +#: builtin.c:3065 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "" -#: builtin.c:3077 +#: builtin.c:3067 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "" -#: builtin.c:3079 +#: builtin.c:3069 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "" -#: builtin.c:3104 mpfr.c:968 +#: builtin.c:3094 mpfr.c:988 msgid "and: called with less than two arguments" msgstr "" -#: builtin.c:3109 +#: builtin.c:3099 #, c-format msgid "and: argument %d is non-numeric" msgstr "" -#: builtin.c:3113 +#: builtin.c:3103 #, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "" -#: builtin.c:3136 mpfr.c:1000 +#: builtin.c:3126 mpfr.c:1020 msgid "or: called with less than two arguments" msgstr "" -#: builtin.c:3141 +#: builtin.c:3131 #, c-format msgid "or: argument %d is non-numeric" msgstr "" -#: builtin.c:3145 +#: builtin.c:3135 #, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "" -#: builtin.c:3167 mpfr.c:1031 +#: builtin.c:3157 mpfr.c:1051 msgid "xor: called with less than two arguments" msgstr "" -#: builtin.c:3173 +#: builtin.c:3163 #, c-format msgid "xor: argument %d is non-numeric" msgstr "" -#: builtin.c:3177 +#: builtin.c:3167 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "" -#: builtin.c:3202 mpfr.c:787 +#: builtin.c:3192 mpfr.c:807 msgid "compl: received non-numeric argument" msgstr "" -#: builtin.c:3208 +#: builtin.c:3198 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "" -#: builtin.c:3210 +#: builtin.c:3200 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "" -#: builtin.c:3379 +#: builtin.c:3369 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "" @@ -1186,40 +1207,46 @@ msgstr "" msgid "watch var - set a watchpoint for a variable." msgstr "" -#: command.y:1011 debug.c:401 msg.c:135 +#: command.y:901 +msgid "" +"where [N] - (same as backtrace) print trace of all or N innermost (outermost " +"if N < 0) frames." +msgstr "" + +#: command.y:1013 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "" -#: command.y:1051 +#: command.y:1053 #, c-format msgid "can't read command (%s)\n" msgstr "" -#: command.y:1065 +#: command.y:1067 #, c-format msgid "can't read command (%s)" msgstr "" -#: command.y:1116 +#: command.y:1118 msgid "invalid character in command" msgstr "" -#: command.y:1152 +#: command.y:1154 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "" -#: command.y:1222 +#: command.y:1224 #, c-format msgid "%s" msgstr "" -#: command.y:1284 +#: command.y:1286 msgid "invalid character" msgstr "" -#: command.y:1455 +#: command.y:1457 #, c-format msgid "undefined command: %s\n" msgstr "" @@ -1731,68 +1758,68 @@ msgstr "" msgid "`return' not allowed in current context; statement ignored" msgstr "" -#: debug.c:5590 +#: debug.c:5604 #, c-format msgid "No symbol `%s' in current context" msgstr "" -#: 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 +#: dfa.c:1063 dfa.c:1066 dfa.c:1085 dfa.c:1095 dfa.c:1107 dfa.c:1143 +#: dfa.c:1152 dfa.c:1155 dfa.c:1160 dfa.c:1174 dfa.c:1222 msgid "unbalanced [" msgstr "" -#: dfa.c:1174 +#: dfa.c:1119 msgid "invalid character class" msgstr "" -#: dfa.c:1316 +#: dfa.c:1265 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "" -#: dfa.c:1366 +#: dfa.c:1327 msgid "unfinished \\ escape" msgstr "" -#: dfa.c:1513 regcomp.c:161 -msgid "Invalid content of \\{\\}" +#: dfa.c:1474 +msgid "invalid content of \\{\\}" msgstr "" -#: dfa.c:1516 regcomp.c:176 -msgid "Regular expression too big" +#: dfa.c:1477 +msgid "regular expression too big" msgstr "" -#: dfa.c:1936 +#: dfa.c:1912 msgid "unbalanced (" msgstr "" -#: dfa.c:2062 +#: dfa.c:2038 msgid "no syntax specified" msgstr "" -#: dfa.c:2070 +#: dfa.c:2046 msgid "unbalanced )" msgstr "" -#: eval.c:394 +#: eval.c:396 #, c-format msgid "unknown nodetype %d" msgstr "" -#: eval.c:405 eval.c:419 +#: eval.c:407 eval.c:421 #, c-format msgid "unknown opcode %d" msgstr "" -#: eval.c:416 +#: eval.c:418 #, c-format msgid "opcode %s not an operator or keyword" msgstr "" -#: eval.c:472 +#: eval.c:474 msgid "buffer overflow in genflags2str" msgstr "" -#: eval.c:675 +#: eval.c:676 #, c-format msgid "" "\n" @@ -1800,211 +1827,211 @@ msgid "" "\n" msgstr "" -#: eval.c:704 +#: eval.c:705 msgid "`IGNORECASE' is a gawk extension" msgstr "" -#: eval.c:736 +#: eval.c:737 msgid "`BINMODE' is a gawk extension" msgstr "" -#: eval.c:794 +#: eval.c:795 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "" -#: eval.c:885 +#: eval.c:912 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "" -#: eval.c:969 +#: eval.c:996 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "" -#: eval.c:1147 +#: eval.c:1174 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "" -#: eval.c:1148 +#: eval.c:1175 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "" -#: eval.c:1166 +#: eval.c:1193 msgid "attempt to field reference from non-numeric value" msgstr "" -#: eval.c:1168 +#: eval.c:1195 msgid "attempt to field reference from null string" msgstr "" -#: eval.c:1176 +#: eval.c:1203 #, c-format msgid "attempt to access field %ld" msgstr "" -#: eval.c:1185 +#: eval.c:1212 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "" -#: eval.c:1272 +#: eval.c:1299 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "" -#: eval.c:1473 +#: eval.c:1500 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "" -#: eval.c:1569 +#: eval.c:1596 msgid "division by zero attempted in `/='" msgstr "" -#: eval.c:1576 +#: eval.c:1603 #, c-format msgid "division by zero attempted in `%%='" msgstr "" -#: ext.c:89 ext.c:171 +#: ext.c:65 ext.c:147 msgid "extensions are not allowed in sandbox mode" msgstr "" -#: ext.c:92 +#: ext.c:68 msgid "-l / @load are gawk extensions" msgstr "" -#: ext.c:95 +#: ext.c:71 msgid "load_ext: received NULL lib_name" msgstr "" -#: ext.c:98 +#: ext.c:74 #, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "" -#: ext.c:104 +#: ext.c:80 #, c-format msgid "" "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" msgstr "" -#: ext.c:110 +#: ext.c:86 #, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "" -#: ext.c:114 +#: ext.c:90 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "" -#: ext.c:174 +#: ext.c:150 msgid "`extension' is a gawk extension" msgstr "" -#: ext.c:177 +#: ext.c:153 msgid "extension: received NULL lib_name" msgstr "" -#: ext.c:180 +#: ext.c:156 #, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "" -#: ext.c:186 +#: ext.c:162 #, c-format msgid "" "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" msgstr "" -#: ext.c:190 +#: ext.c:166 #, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "" -#: ext.c:221 +#: ext.c:197 msgid "make_builtin: missing function name" msgstr "" -#: ext.c:236 +#: ext.c:212 #, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "" -#: ext.c:240 +#: ext.c:216 #, c-format msgid "make_builtin: function `%s' already defined" msgstr "" -#: ext.c:244 +#: ext.c:220 #, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "" -#: ext.c:246 +#: ext.c:222 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "" -#: ext.c:249 ext.c:304 +#: ext.c:225 ext.c:280 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "" -#: ext.c:276 +#: ext.c:252 msgid "extension: missing function name" msgstr "" -#: ext.c:279 ext.c:283 +#: ext.c:255 ext.c:259 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "" -#: ext.c:291 +#: ext.c:267 #, c-format msgid "extension: can't redefine function `%s'" msgstr "" -#: ext.c:295 +#: ext.c:271 #, c-format msgid "extension: function `%s' already defined" msgstr "" -#: ext.c:299 +#: ext.c:275 #, c-format msgid "extension: function name `%s' previously defined" msgstr "" -#: ext.c:301 +#: ext.c:277 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" msgstr "" -#: ext.c:375 +#: ext.c:351 #, c-format msgid "function `%s' defined to take no more than %d argument(s)" msgstr "" -#: ext.c:378 +#: ext.c:354 #, c-format msgid "function `%s': missing argument #%d" msgstr "" -#: ext.c:395 +#: ext.c:371 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "" -#: ext.c:399 +#: ext.c:375 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "" -#: ext.c:413 +#: ext.c:389 msgid "dynamic loading of library not supported" msgstr "" @@ -2148,7 +2175,7 @@ msgstr "" msgid "inplace_begin: in-place editing already active" msgstr "" -#: extension/inplace.c:133 extension/inplace.c:207 +#: extension/inplace.c:133 extension/inplace.c:210 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "" @@ -2177,55 +2204,55 @@ msgstr "" msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "" -#: extension/inplace.c:178 +#: extension/inplace.c:181 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "" -#: extension/inplace.c:185 +#: extension/inplace.c:188 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:188 +#: extension/inplace.c:191 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:191 +#: extension/inplace.c:194 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "" -#: extension/inplace.c:210 +#: extension/inplace.c:213 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:217 +#: extension/inplace.c:220 msgid "inplace_end: in-place editing not active" msgstr "" -#: extension/inplace.c:223 +#: extension/inplace.c:226 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:226 +#: extension/inplace.c:229 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "" -#: extension/inplace.c:230 +#: extension/inplace.c:233 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:243 +#: extension/inplace.c:246 #, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "" -#: extension/inplace.c:253 +#: extension/inplace.c:256 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "" @@ -2267,50 +2294,54 @@ msgstr "" msgid "readfile: called with no arguments" msgstr "" -#: extension/rwarray.c:124 +#: extension/revoutput.c:125 +msgid "revoutput: could not initialize REVOUT variable" +msgstr "" + +#: extension/rwarray.c:124 extension/rwarray0.c:109 msgid "writea: called with too many arguments" msgstr "" -#: extension/rwarray.c:131 +#: extension/rwarray.c:131 extension/rwarray0.c:116 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "" -#: extension/rwarray.c:137 +#: extension/rwarray.c:137 extension/rwarray0.c:122 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "" -#: extension/rwarray.c:184 +#: extension/rwarray.c:184 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "" -#: extension/rwarray.c:198 +#: extension/rwarray.c:198 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "" -#: extension/rwarray.c:280 +#: extension/rwarray.c:280 extension/rwarray0.c:265 msgid "reada: called with too many arguments" msgstr "" -#: extension/rwarray.c:287 +#: extension/rwarray.c:287 extension/rwarray0.c:272 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "" -#: extension/rwarray.c:293 +#: extension/rwarray.c:293 extension/rwarray0.c:278 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "" -#: extension/rwarray.c:337 +#: extension/rwarray.c:337 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "" -#: extension/rwarray.c:374 +#: extension/rwarray.c:374 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "" @@ -2339,80 +2370,80 @@ msgstr "" msgid "sleep: not supported on this platform" msgstr "" -#: field.c:345 +#: field.c:346 msgid "NF set to negative value" msgstr "" -#: field.c:971 field.c:978 field.c:982 +#: field.c:958 field.c:965 field.c:969 msgid "split: fourth argument is a gawk extension" msgstr "" -#: field.c:975 +#: field.c:962 msgid "split: fourth argument is not an array" msgstr "" -#: field.c:989 +#: field.c:976 msgid "split: second argument is not an array" msgstr "" -#: field.c:993 +#: field.c:980 msgid "split: cannot use the same array for second and fourth args" msgstr "" -#: field.c:998 +#: field.c:985 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" -#: field.c:1001 +#: field.c:988 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" -#: field.c:1032 +#: field.c:1019 msgid "split: null string for third arg is a gawk extension" msgstr "" -#: field.c:1072 +#: field.c:1059 msgid "patsplit: fourth argument is not an array" msgstr "" -#: field.c:1077 +#: field.c:1064 msgid "patsplit: second argument is not an array" msgstr "" -#: field.c:1083 +#: field.c:1070 msgid "patsplit: third argument must be non-null" msgstr "" -#: field.c:1087 +#: field.c:1074 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "" -#: field.c:1092 +#: field.c:1079 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" -#: field.c:1095 +#: field.c:1082 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" -#: field.c:1133 +#: field.c:1120 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "" -#: field.c:1197 +#: field.c:1184 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "" -#: field.c:1270 +#: field.c:1257 msgid "null string for `FS' is a gawk extension" msgstr "" -#: field.c:1274 +#: field.c:1261 msgid "old awk does not support regexps as value of `FS'" msgstr "" -#: field.c:1393 +#: field.c:1380 msgid "`FPAT' is a gawk extension" msgstr "" @@ -2428,20 +2459,20 @@ msgstr "" msgid "node_to_awk_value: received null val" msgstr "" -#: gawkapi.c:807 +#: gawkapi.c:809 msgid "remove_element: received null array" msgstr "" -#: gawkapi.c:810 +#: gawkapi.c:812 msgid "remove_element: received null subscript" msgstr "" -#: gawkapi.c:947 +#: gawkapi.c:949 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "" -#: gawkapi.c:952 +#: gawkapi.c:954 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "" @@ -2501,504 +2532,472 @@ msgstr "" msgid "%s: option '-W %s' requires an argument\n" msgstr "" -#: io.c:392 +#: io.c:423 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "" -#: io.c:395 io.c:513 +#: io.c:426 io.c:544 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "" -#: io.c:640 +#: io.c:671 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "" -#: io.c:716 +#: io.c:749 msgid "redirection not allowed in sandbox mode" msgstr "" -#: io.c:750 +#: io.c:783 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "" -#: io.c:756 +#: io.c:789 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "" -#: io.c:761 +#: io.c:794 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" msgstr "" -#: io.c:809 +#: io.c:842 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "" -#: io.c:863 +#: io.c:896 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "" -#: io.c:873 +#: io.c:906 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "" -#: io.c:904 +#: io.c:937 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" msgstr "" -#: io.c:986 +#: io.c:1019 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "" -#: io.c:989 +#: io.c:1022 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "" -#: io.c:1040 +#: io.c:1073 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" -#: io.c:1056 +#: io.c:1089 #, c-format msgid "close of `%s' failed (%s)." msgstr "" -#: io.c:1064 +#: io.c:1097 msgid "too many pipes or input files open" msgstr "" -#: io.c:1086 +#: io.c:1119 msgid "close: second argument must be `to' or `from'" msgstr "" -#: io.c:1103 +#: io.c:1136 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "" -#: io.c:1108 +#: io.c:1141 msgid "close of redirection that was never opened" msgstr "" -#: io.c:1205 +#: io.c:1238 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" -#: io.c:1222 +#: io.c:1255 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "" -#: io.c:1225 +#: io.c:1258 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "" -#: io.c:1245 +#: io.c:1278 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "" -#: io.c:1248 +#: io.c:1281 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "" -#: io.c:1251 +#: io.c:1284 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "" -#: io.c:1254 +#: io.c:1287 #, c-format msgid "no explicit close of file `%s' provided" msgstr "" -#: io.c:1284 io.c:1342 main.c:864 main.c:906 +#: io.c:1317 io.c:1375 main.c:628 main.c:670 #, c-format msgid "error writing standard output (%s)" msgstr "" -#: io.c:1289 io.c:1348 main.c:866 +#: io.c:1322 io.c:1381 main.c:630 #, c-format msgid "error writing standard error (%s)" msgstr "" -#: io.c:1297 +#: io.c:1330 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "" -#: io.c:1300 +#: io.c:1333 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "" -#: io.c:1303 +#: io.c:1336 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "" -#: io.c:1420 +#: io.c:1453 #, c-format msgid "local port %s invalid in `/inet'" msgstr "" -#: io.c:1438 +#: io.c:1471 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "" -#: io.c:1590 -#, c-format -msgid "no (known) protocol supplied in special filename `%s'" -msgstr "" - -#: io.c:1604 -#, c-format -msgid "special file name `%s' is incomplete" -msgstr "" - -#: io.c:1621 -msgid "must supply a remote hostname to `/inet'" -msgstr "" - -#: io.c:1639 -msgid "must supply a remote port to `/inet'" -msgstr "" - -#: io.c:1685 +#: io.c:1673 msgid "TCP/IP communications are not supported" msgstr "" -#: io.c:1867 +#: io.c:1854 #, c-format msgid "could not open `%s', mode `%s'" msgstr "" -#: io.c:1917 +#: io.c:1904 #, c-format msgid "close of master pty failed (%s)" msgstr "" -#: io.c:1919 io.c:2105 io.c:2305 +#: io.c:1906 io.c:2092 io.c:2293 #, c-format msgid "close of stdout in child failed (%s)" msgstr "" -#: io.c:1922 +#: io.c:1909 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" -#: io.c:1924 io.c:2110 +#: io.c:1911 io.c:2097 #, c-format msgid "close of stdin in child failed (%s)" msgstr "" -#: io.c:1927 +#: io.c:1914 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" -#: io.c:1929 io.c:1951 +#: io.c:1916 io.c:1938 #, c-format msgid "close of slave pty failed (%s)" msgstr "" -#: io.c:2040 io.c:2108 io.c:2276 io.c:2308 +#: io.c:2027 io.c:2095 io.c:2264 io.c:2296 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" -#: io.c:2047 io.c:2113 +#: io.c:2034 io.c:2100 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" -#: io.c:2073 io.c:2298 +#: io.c:2060 io.c:2286 msgid "restoring stdout in parent process failed\n" msgstr "" -#: io.c:2081 +#: io.c:2068 msgid "restoring stdin in parent process failed\n" msgstr "" -#: io.c:2116 io.c:2310 io.c:2324 +#: io.c:2103 io.c:2298 io.c:2313 #, c-format msgid "close of pipe failed (%s)" msgstr "" -#: io.c:2174 +#: io.c:2162 msgid "`|&' not supported" msgstr "" -#: io.c:2261 +#: io.c:2249 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "" -#: io.c:2318 +#: io.c:2307 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "" -#: io.c:2790 +#: io.c:2734 msgid "register_input_parser: received NULL pointer" msgstr "" -#: io.c:2818 +#: io.c:2762 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" -#: io.c:2825 +#: io.c:2769 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "" -#: io.c:2845 +#: io.c:2789 msgid "register_output_wrapper: received NULL pointer" msgstr "" -#: io.c:2873 +#: io.c:2817 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" -#: io.c:2880 +#: io.c:2824 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "" -#: io.c:2901 +#: io.c:2845 msgid "register_output_processor: received NULL pointer" msgstr "" -#: io.c:2930 +#: io.c:2874 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" msgstr "" -#: io.c:2939 +#: io.c:2883 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "" -#: io.c:3064 +#: io.c:3008 #, c-format msgid "data file `%s' is empty" msgstr "" -#: io.c:3106 io.c:3114 +#: io.c:3050 io.c:3058 msgid "could not allocate more input memory" msgstr "" -#: io.c:3682 +#: io.c:3636 msgid "multicharacter value of `RS' is a gawk extension" msgstr "" -#: io.c:3771 +#: io.c:3783 msgid "IPv6 communication is not supported" msgstr "" -#: main.c:405 -msgid "empty argument to `-e/--source' ignored" -msgstr "" - -#: main.c:495 -#, c-format -msgid "%s: option `-W %s' unrecognized, ignored\n" -msgstr "" - -#: main.c:541 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "" - -#: main.c:562 +#: main.c:321 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" -#: main.c:568 +#: main.c:327 msgid "`--posix' overrides `--traditional'" msgstr "" -#: main.c:579 +#: main.c:338 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "" -#: main.c:583 +#: main.c:342 #, c-format msgid "running %s setuid root may be a security problem" msgstr "" -#: main.c:588 +#: main.c:346 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "" -#: main.c:647 +#: main.c:404 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "" -#: main.c:650 +#: main.c:407 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "" -#: main.c:652 +#: main.c:409 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "" -#: main.c:710 +#: main.c:469 msgid "no program text at all!" msgstr "" -#: main.c:799 +#: main.c:563 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" -#: main.c:801 +#: main.c:565 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" -#: main.c:806 +#: main.c:570 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "" -#: main.c:807 +#: main.c:571 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "" -#: main.c:808 +#: main.c:572 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "" -#: main.c:809 +#: main.c:573 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "" -#: main.c:810 +#: main.c:574 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "" -#: main.c:811 +#: main.c:575 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "" -#: main.c:812 +#: main.c:576 msgid "\t-c\t\t\t--traditional\n" msgstr "" -#: main.c:813 +#: main.c:577 msgid "\t-C\t\t\t--copyright\n" msgstr "" -#: main.c:814 +#: main.c:578 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "" -#: main.c:815 +#: main.c:579 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "" -#: main.c:816 +#: main.c:580 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "" -#: main.c:817 +#: main.c:581 msgid "\t-E file\t\t\t--exec=file\n" msgstr "" -#: main.c:818 +#: main.c:582 msgid "\t-g\t\t\t--gen-pot\n" msgstr "" -#: main.c:819 +#: main.c:583 msgid "\t-h\t\t\t--help\n" msgstr "" -#: main.c:820 +#: main.c:584 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "" -#: main.c:821 +#: main.c:585 msgid "\t-l library\t\t--load=library\n" msgstr "" -#: main.c:822 -msgid "\t-L [fatal]\t\t--lint[=fatal]\n" -msgstr "" - -#: main.c:823 -msgid "\t-n\t\t\t--non-decimal-data\n" +#: main.c:586 +msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "" -#: main.c:824 +#: main.c:587 msgid "\t-M\t\t\t--bignum\n" msgstr "" -#: main.c:825 +#: main.c:588 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "" -#: main.c:826 +#: main.c:589 +msgid "\t-n\t\t\t--non-decimal-data\n" +msgstr "" + +#: main.c:590 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "" -#: main.c:827 +#: main.c:591 msgid "\t-O\t\t\t--optimize\n" msgstr "" -#: main.c:828 +#: main.c:592 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "" -#: main.c:829 +#: main.c:593 msgid "\t-P\t\t\t--posix\n" msgstr "" -#: main.c:830 +#: main.c:594 msgid "\t-r\t\t\t--re-interval\n" msgstr "" -#: main.c:831 +#: main.c:595 msgid "\t-S\t\t\t--sandbox\n" msgstr "" -#: main.c:832 +#: main.c:596 msgid "\t-t\t\t\t--lint-old\n" msgstr "" -#: main.c:833 +#: main.c:597 msgid "\t-V\t\t\t--version\n" msgstr "" -#: main.c:835 +#: main.c:599 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "" -#: main.c:838 +#: main.c:602 msgid "\t-Y\t\t--parsedebug\n" msgstr "" @@ -3007,7 +3006,7 @@ msgstr "" #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:847 +#: main.c:611 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3015,21 +3014,21 @@ msgid "" "\n" msgstr "" -#: main.c:851 +#: main.c:615 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:855 +#: main.c:619 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" msgstr "" -#: main.c:880 +#: main.c:644 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3041,7 +3040,7 @@ msgid "" "\n" msgstr "" -#: main.c:888 +#: main.c:652 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" @@ -3050,120 +3049,138 @@ msgid "" "\n" msgstr "" -#: main.c:894 +#: main.c:658 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:931 +#: main.c:695 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "" -#: main.c:1208 +#: main.c:982 #, c-format msgid "unknown value for field spec: %d\n" msgstr "" -#: main.c:1306 +#: main.c:1080 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" "\n" msgstr "" -#: main.c:1332 +#: main.c:1106 #, c-format msgid "`%s' is not a legal variable name" msgstr "" -#: main.c:1335 +#: main.c:1109 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "" -#: main.c:1339 +#: main.c:1113 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "" -#: main.c:1344 +#: main.c:1118 #, c-format msgid "cannot use function `%s' as variable name" msgstr "" -#: main.c:1397 +#: main.c:1171 msgid "floating point exception" msgstr "" -#: main.c:1404 +#: main.c:1178 msgid "fatal error: internal error" msgstr "" -#: main.c:1419 +#: main.c:1193 msgid "fatal error: internal error: segfault" msgstr "" -#: main.c:1431 +#: main.c:1205 msgid "fatal error: internal error: stack overflow" msgstr "" -#: main.c:1490 +#: main.c:1264 #, c-format msgid "no pre-opened fd %d" msgstr "" -#: main.c:1497 +#: main.c:1271 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "" -#: mpfr.c:550 +#: main.c:1485 +msgid "empty argument to `-e/--source' ignored" +msgstr "" + +#: main.c:1556 +msgid "-M ignored: MPFR/GMP support not compiled in" +msgstr "" + +#: main.c:1577 +#, c-format +msgid "%s: option `-W %s' unrecognized, ignored\n" +msgstr "" + +#: main.c:1630 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "" + +#: mpfr.c:557 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "" -#: mpfr.c:608 +#: mpfr.c:615 #, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "" -#: mpfr.c:698 +#: mpfr.c:711 #, c-format msgid "%s: received non-numeric argument" msgstr "" -#: mpfr.c:800 +#: mpfr.c:820 msgid "compl(%Rg): negative value will give strange results" msgstr "" -#: mpfr.c:804 +#: mpfr.c:824 msgid "comp(%Rg): fractional value will be truncated" msgstr "" -#: mpfr.c:816 +#: mpfr.c:836 #, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "" -#: mpfr.c:835 +#: mpfr.c:855 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "" -#: mpfr.c:845 +#: mpfr.c:865 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "" -#: mpfr.c:857 +#: mpfr.c:877 msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "" -#: mpfr.c:863 +#: mpfr.c:883 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "" -#: mpfr.c:878 +#: mpfr.c:898 #, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "" @@ -3173,36 +3190,36 @@ msgstr "" msgid "cmd. line:" msgstr "" -#: node.c:421 +#: node.c:409 msgid "backslash at end of string" msgstr "" -#: node.c:500 +#: node.c:488 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "" -#: node.c:551 +#: node.c:539 msgid "POSIX does not allow `\\x' escapes" msgstr "" -#: node.c:557 +#: node.c:545 msgid "no hex digits in `\\x' escape sequence" msgstr "" -#: node.c:579 +#: node.c:567 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " "expect" msgstr "" -#: node.c:594 +#: node.c:582 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "" -#: node.c:739 +#: node.c:726 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3230,7 +3247,7 @@ msgstr "" #: profile.c:193 #, c-format msgid "" -"\t# %s block(s)\n" +"\t# %s rule(s)\n" "\n" msgstr "" @@ -3246,30 +3263,30 @@ msgstr "" msgid "internal error: %s with null vname" msgstr "" -#: profile.c:537 +#: profile.c:538 msgid "internal error: builtin with null fname" msgstr "" -#: profile.c:949 +#: profile.c:958 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" "\n" msgstr "" -#: profile.c:972 +#: profile.c:981 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "" -#: profile.c:1475 +#: profile.c:1521 #, c-format msgid "" "\n" "\t# Functions, listed alphabetically\n" msgstr "" -#: profile.c:1513 +#: profile.c:1559 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "" @@ -3279,70 +3296,83 @@ msgstr "" msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" -#: regcomp.c:131 +#: regcomp.c:139 msgid "Success" msgstr "" -#: regcomp.c:134 +#: regcomp.c:142 msgid "No match" msgstr "" -#: regcomp.c:137 +#: regcomp.c:145 msgid "Invalid regular expression" msgstr "" -#: regcomp.c:140 +#: regcomp.c:148 msgid "Invalid collation character" msgstr "" -#: regcomp.c:143 +#: regcomp.c:151 msgid "Invalid character class name" msgstr "" -#: regcomp.c:146 +#: regcomp.c:154 msgid "Trailing backslash" msgstr "" -#: regcomp.c:149 +#: regcomp.c:157 msgid "Invalid back reference" msgstr "" -#: regcomp.c:152 -msgid "Unmatched [ or [^" +#: regcomp.c:160 +msgid "Unmatched [, [^, [:, [., or [=" msgstr "" -#: regcomp.c:155 +#: regcomp.c:163 msgid "Unmatched ( or \\(" msgstr "" -#: regcomp.c:158 +#: regcomp.c:166 msgid "Unmatched \\{" msgstr "" -#: regcomp.c:164 +#: regcomp.c:169 +msgid "Invalid content of \\{\\}" +msgstr "" + +#: regcomp.c:172 msgid "Invalid range end" msgstr "" -#: regcomp.c:167 +#: regcomp.c:175 msgid "Memory exhausted" msgstr "" -#: regcomp.c:170 +#: regcomp.c:178 msgid "Invalid preceding regular expression" msgstr "" -#: regcomp.c:173 +#: regcomp.c:181 msgid "Premature end of regular expression" msgstr "" -#: regcomp.c:179 +#: regcomp.c:184 +msgid "Regular expression too big" +msgstr "" + +#: regcomp.c:187 msgid "Unmatched ) or \\)" msgstr "" -#: regcomp.c:704 +#: regcomp.c:712 msgid "No previous regular expression" msgstr "" -#: symbol.c:741 +#: symbol.c:677 +#, c-format +msgid "function `%s': can't use function `%s' as a parameter name" +msgstr "" + +#: symbol.c:809 msgid "can not pop main context" 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: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2014-12-14 21:30+0100\n" +"POT-Creation-Date: 2015-02-26 20:05+0200\n" "PO-Revision-Date: 2014-12-14 22:10+0100\n" "Last-Translator: Antonio Colombo <azc100@gmail.com>\n" "Language-Team: Italian <it@li.org>\n" @@ -34,9 +34,9 @@ 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:1600 builtin.c:1646 -#: builtin.c:1659 builtin.c:2086 builtin.c:2100 eval.c:1150 eval.c:1154 -#: eval.c:1559 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 +#: builtin.c:1665 builtin.c:2092 builtin.c:2106 eval.c:1149 eval.c:1153 +#: eval.c:1558 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "tentativo di usare vettore `%s' in un contesto scalare" @@ -105,402 +105,407 @@ msgstr "`%s' non un nome funzione valido" msgid "sort comparison function `%s' is not defined" msgstr "funzione di confronto del sort `%s' non definita" -#: awkgram.y:241 +#: awkgram.y:226 #, c-format msgid "%s blocks must have an action part" msgstr "blocchi %s richiedono una `azione'" -#: awkgram.y:244 +#: awkgram.y:229 msgid "each rule must have a pattern or an action part" msgstr "ogni regola deve avere una parte `espressione' o una parte `azione'" -#: awkgram.y:354 awkgram.y:368 +#: awkgram.y:320 awkgram.y:331 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "il vecchio awk non supporta pi di una regola `BEGIN' o `END'" -#: awkgram.y:412 +#: awkgram.y:368 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "`%s' una funzione interna, non si pu ridefinire" -#: awkgram.y:474 +#: awkgram.y:417 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "espressione regolare costante `//' sembra un commento C++, ma non lo " -#: awkgram.y:478 +#: awkgram.y:421 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "espressione regolare costante `/%s/' sembra un commento C, ma non lo " -#: awkgram.y:590 +#: awkgram.y:513 #, c-format msgid "duplicate case values in switch body: %s" msgstr "valori di `case' doppi all'interno di uno `switch': %s" -#: awkgram.y:611 +#: awkgram.y:534 msgid "duplicate `default' detected in switch body" msgstr "valori di default doppi all'interno di uno `switch'" -#: awkgram.y:871 awkgram.y:3948 +#: awkgram.y:794 awkgram.y:3751 msgid "`break' is not allowed outside a loop or switch" msgstr "`break' non consentito fuori da un ciclo o da uno `switch'" -#: awkgram.y:880 awkgram.y:3940 +#: awkgram.y:803 awkgram.y:3743 msgid "`continue' is not allowed outside a loop" msgstr "`continue' non consentito fuori da un un ciclo" -#: awkgram.y:890 +#: awkgram.y:813 #, c-format msgid "`next' used in %s action" msgstr "`next' usato in `azione' %s" -#: awkgram.y:899 +#: awkgram.y:822 #, c-format msgid "`nextfile' used in %s action" msgstr "`nextfile' usato in `azione' %s" -#: awkgram.y:923 +#: awkgram.y:846 msgid "`return' used outside function context" msgstr "`return' usato fuori da una funzione" -#: awkgram.y:997 +#: awkgram.y:920 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "`print' da solo in BEGIN o END dovrebbe forse essere `print \"\"'" -#: awkgram.y:1063 awkgram.y:1112 +#: awkgram.y:986 awkgram.y:1035 msgid "`delete' is not allowed with SYMTAB" msgstr "`delete' non consentito in SYMTAB" -#: awkgram.y:1065 awkgram.y:1114 +#: awkgram.y:988 awkgram.y:1037 msgid "`delete' is not allowed with FUNCTAB" msgstr "`delete' non consentito in FUNCTAB" -#: awkgram.y:1099 awkgram.y:1103 +#: awkgram.y:1022 awkgram.y:1026 msgid "`delete(array)' is a non-portable tawk extension" msgstr "`delete(array)' un'estensione tawk non-portabile" -#: awkgram.y:1224 +#: awkgram.y:1147 msgid "multistage two-way pipelines don't work" msgstr "`pipeline' multistadio bidirezionali non funzionano" -#: awkgram.y:1339 +#: awkgram.y:1262 msgid "regular expression on right of assignment" msgstr "espressione regolare usata per assegnare un valore" -#: awkgram.y:1350 +#: awkgram.y:1273 msgid "regular expression on left of `~' or `!~' operator" msgstr "espressione regolare prima di operatore `~' o `!~'" -#: awkgram.y:1366 awkgram.y:1508 +#: awkgram.y:1289 awkgram.y:1431 msgid "old awk does not support the keyword `in' except after `for'" msgstr "il vecchio awk non supporta la parola-chiave `in' se non dopo `for'" -#: awkgram.y:1376 +#: awkgram.y:1299 msgid "regular expression on right of comparison" msgstr "espressione regolare a destra in un confronto" -#: awkgram.y:1488 +#: awkgram.y:1411 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "`getline' non ridiretta invalida all'interno della regola `%s'" -#: awkgram.y:1491 +#: awkgram.y:1414 msgid "non-redirected `getline' undefined inside END action" msgstr "`getline' non ri-diretta indefinita dentro `azione' END" -#: awkgram.y:1510 +#: awkgram.y:1433 msgid "old awk does not support multidimensional arrays" msgstr "il vecchio awk non supporta vettori multidimensionali" -#: awkgram.y:1607 +#: awkgram.y:1530 msgid "call of `length' without parentheses is not portable" msgstr "chiamata a `length' senza parentesi non portabile" -#: awkgram.y:1673 +#: awkgram.y:1596 msgid "indirect function calls are a gawk extension" msgstr "chiamate a funzione indirette sono un'estensione gawk" -#: awkgram.y:1686 +#: awkgram.y:1609 #, c-format msgid "can not use special variable `%s' for indirect function call" msgstr "" "non riesco a usare la variabile speciale `%s' come parametro indiretto di " "funzione" -#: awkgram.y:1764 +#: awkgram.y:1635 +#, c-format +msgid "attempt to use non-function `%s' in function call" +msgstr "" + +#: awkgram.y:1699 msgid "invalid subscript expression" msgstr "espressione indice invalida" -#: awkgram.y:2111 awkgram.y:2131 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2045 awkgram.y:2065 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "attenzione: " -#: awkgram.y:2129 gawkapi.c:192 gawkapi.c:221 msg.c:158 +#: awkgram.y:2063 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "fatale: " -#: awkgram.y:2179 +#: awkgram.y:2113 msgid "unexpected newline or end of string" msgstr "carattere 'a capo' o fine stringa non previsti" -#: awkgram.y:2470 awkgram.y:2546 awkgram.y:2769 debug.c:523 debug.c:539 -#: debug.c:2812 debug.c:5056 +#: awkgram.y:2392 awkgram.y:2468 awkgram.y:2691 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:2471 awkgram.y:2596 +#: awkgram.y:2393 awkgram.y:2518 #, 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:2473 awkgram.y:2547 awkgram.y:2597 builtin.c:135 debug.c:5207 +#: awkgram.y:2395 awkgram.y:2469 awkgram.y:2519 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "ragione indeterminata" -#: awkgram.y:2482 awkgram.y:2506 +#: awkgram.y:2404 awkgram.y:2428 #, 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:2495 +#: awkgram.y:2417 #, c-format msgid "already included source file `%s'" msgstr "file sorgente `%s' gi incluso" -#: awkgram.y:2496 +#: awkgram.y:2418 #, c-format msgid "already loaded shared library `%s'" msgstr "shared library `%s' gi inclusa" -#: awkgram.y:2531 +#: awkgram.y:2453 msgid "@include is a gawk extension" msgstr "@include un'estensione gawk" -#: awkgram.y:2537 +#: awkgram.y:2459 msgid "empty filename after @include" msgstr "nome-file mancante dopo @include" -#: awkgram.y:2581 +#: awkgram.y:2503 msgid "@load is a gawk extension" msgstr "@load un'estensione gawk" -#: awkgram.y:2587 +#: awkgram.y:2509 msgid "empty filename after @load" msgstr "nome-file mancante dopo @include" -#: awkgram.y:2721 +#: awkgram.y:2643 msgid "empty program text on command line" msgstr "programma nullo sulla riga comandi" -#: awkgram.y:2836 +#: awkgram.y:2758 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "non riesco a leggere file sorgente `%s' (%s)" -#: awkgram.y:2847 +#: awkgram.y:2769 #, c-format msgid "source file `%s' is empty" msgstr "file sorgente `%s' vuoto" -#: awkgram.y:2906 +#: awkgram.y:2828 #, c-format msgid "PEBKAC error: invalid character '\\%03o' in source code" msgstr "errore PEBKAC: carattere invalido '\\%03o' nel codice sorgente" -#: awkgram.y:3142 +#: awkgram.y:2959 msgid "source file does not end in newline" msgstr "file sorgente non termina con carattere 'a capo'" -#: awkgram.y:3247 +#: awkgram.y:3062 msgid "unterminated regexp ends with `\\' at end of file" msgstr "espressione regolare non completata termina con `\\' a fine file" -#: awkgram.y:3271 +#: awkgram.y:3089 #, 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:3275 +#: awkgram.y:3093 #, 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:3282 +#: awkgram.y:3100 msgid "unterminated regexp" msgstr "espressione regolare non completata" -#: awkgram.y:3286 +#: awkgram.y:3104 msgid "unterminated regexp at end of file" msgstr "espressione regolare non completata a fine file" -#: awkgram.y:3357 +#: awkgram.y:3162 msgid "use of `\\ #...' line continuation is not portable" msgstr "uso di `\\ #...' continuazione riga non portabile" -#: awkgram.y:3377 +#: awkgram.y:3178 msgid "backslash not last character on line" msgstr "'\\' non l'ultimo carattere della riga" -#: awkgram.y:3438 +#: awkgram.y:3239 msgid "POSIX does not allow operator `**='" msgstr "POSIX non permette l'operatore `**='" -#: awkgram.y:3440 +#: awkgram.y:3241 msgid "old awk does not support operator `**='" msgstr "il vecchio awk non supporta l'operatore `**='" -#: awkgram.y:3449 +#: awkgram.y:3250 msgid "POSIX does not allow operator `**'" msgstr "POSIX non permette l'operatore `**'" -#: awkgram.y:3451 +#: awkgram.y:3252 msgid "old awk does not support operator `**'" msgstr "il vecchio awk non supporta l'operatore `**'" -#: awkgram.y:3486 +#: awkgram.y:3287 msgid "operator `^=' is not supported in old awk" msgstr "l'operatore `^=' non supportato nel vecchio awk" -#: awkgram.y:3494 +#: awkgram.y:3295 msgid "operator `^' is not supported in old awk" msgstr "l'operatore `^' non supportato nel vecchio awk" -#: awkgram.y:3591 awkgram.y:3607 command.y:1180 +#: awkgram.y:3392 awkgram.y:3410 command.y:1180 msgid "unterminated string" msgstr "stringa non terminata" -#: awkgram.y:3828 +#: awkgram.y:3631 #, c-format msgid "invalid char '%c' in expression" msgstr "carattere '%c' non valido in un'espressione" -#: awkgram.y:3875 +#: awkgram.y:3678 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s' un'estensione gawk" -#: awkgram.y:3880 +#: awkgram.y:3683 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX non permette `%s'" -#: awkgram.y:3888 +#: awkgram.y:3691 #, c-format msgid "`%s' is not supported in old awk" msgstr "`%s' non supportato nel vecchio awk" -#: awkgram.y:3978 +#: awkgram.y:3781 msgid "`goto' considered harmful!\n" msgstr "`goto' considerato pericoloso!\n" -#: awkgram.y:4012 +#: awkgram.y:3815 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d non valido come numero di argomenti per %s" -#: awkgram.y:4047 +#: awkgram.y:3850 #, 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:4052 +#: awkgram.y:3855 #, c-format msgid "%s third parameter is not a changeable object" msgstr "il terzo parametro di '%s' non un oggetto modificabile" -#: awkgram.y:4144 awkgram.y:4147 +#: awkgram.y:3938 awkgram.y:3941 msgid "match: third argument is a gawk extension" msgstr "match: il terzo argomento un'estensione gawk" -#: awkgram.y:4201 awkgram.y:4204 +#: awkgram.y:3995 awkgram.y:3998 msgid "close: second argument is a gawk extension" msgstr "close: il secondo argomento un'estensione gawk" -#: awkgram.y:4216 +#: awkgram.y:4010 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "uso scorretto di dcgettext(_\"...\"): togliere il carattere '_' iniziale" -#: awkgram.y:4231 +#: awkgram.y:4025 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "uso scorretto di dcngettext(_\"...\"): togliere il carattere '_' iniziale" -#: awkgram.y:4250 +#: awkgram.y:4044 msgid "index: regexp constant as second argument is not allowed" msgstr "index: espressione regolare come secondo argomento non consentita" -#: awkgram.y:4303 +#: awkgram.y:4097 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funzione `%s': parametro `%s' nasconde variabile globale" -#: awkgram.y:4360 debug.c:4042 debug.c:4085 debug.c:5205 +#: awkgram.y:4154 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:4361 +#: awkgram.y:4155 msgid "sending variable list to standard error" msgstr "mando lista variabili a 'standard error'" -#: awkgram.y:4369 +#: awkgram.y:4163 #, c-format msgid "%s: close failed (%s)" msgstr "%s: `close' non riuscita (%s)" -#: awkgram.y:4394 +#: awkgram.y:4188 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() chiamata due volte!" -#: awkgram.y:4402 +#: awkgram.y:4196 msgid "there were shadowed variables." msgstr "c'erano variabili nascoste." -#: awkgram.y:4481 +#: awkgram.y:4267 #, c-format msgid "function name `%s' previously defined" msgstr "funzione di nome `%s' definita in precedenza" -#: awkgram.y:4527 +#: awkgram.y:4313 #, 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:4530 +#: awkgram.y:4316 #, 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:4538 +#: awkgram.y:4324 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funzione `%s': parametro #%d, `%s', duplica parametro #%d" -#: awkgram.y:4625 awkgram.y:4631 +#: awkgram.y:4411 awkgram.y:4417 #, c-format msgid "function `%s' called but never defined" msgstr "funzione `%s' chiamata ma mai definita" -#: awkgram.y:4635 +#: awkgram.y:4421 #, c-format msgid "function `%s' defined but never called directly" msgstr "funzione `%s' definita ma mai chiamata direttamente" -#: awkgram.y:4667 +#: awkgram.y:4453 #, 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:4726 +#: awkgram.y:4468 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -509,23 +514,23 @@ msgstr "" "funzione `%s' chiamata con spazio tra il nome e `(',\n" "o usata come variabile o vettore" -#: awkgram.y:4962 +#: awkgram.y:4674 msgid "division by zero attempted" msgstr "tentativo di dividere per zero" -#: awkgram.y:4971 +#: awkgram.y:4683 #, c-format msgid "division by zero attempted in `%%'" msgstr "tentativo di dividere per zero in `%%'" -#: awkgram.y:5294 +#: awkgram.y:5003 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:5297 +#: awkgram.y:5006 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "destinazione di assegnazione non valida (codice operativo %s)" @@ -586,178 +591,178 @@ msgstr "length: l'argomento ricevuto un vettore" msgid "`length(array)' is a gawk extension" msgstr "`length(array)' un'estensione gawk" -#: builtin.c:522 +#: builtin.c:525 msgid "length: received non-string argument" msgstr "length: l'argomento ricevuto non una stringa" -#: builtin.c:551 +#: builtin.c:554 msgid "log: received non-numeric argument" msgstr "log: l'argomento ricevuto non numerico" -#: builtin.c:554 +#: builtin.c:557 #, c-format msgid "log: received negative argument %g" msgstr "log: argomento ricevuto negativo %g" -#: builtin.c:752 builtin.c:757 +#: builtin.c:755 builtin.c:760 builtin.c:911 msgid "fatal: must use `count$' on all formats or none" msgstr "fatale: `count$' va usato per tutti i formati o per nessuno" -#: builtin.c:827 +#: builtin.c:830 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "larghezza campo ignorata per la specifica `%%'" -#: builtin.c:829 +#: builtin.c:832 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "precisione ignorata per la specifica `%%'" -#: builtin.c:831 +#: builtin.c:834 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "larghezza campo e precisone ignorate per la specifica `%%'" -#: builtin.c:882 +#: builtin.c:885 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatale: operatore `$' non consentito nei formati awk" -#: builtin.c:891 +#: builtin.c:894 msgid "fatal: arg count with `$' must be > 0" msgstr "fatale: numero argomenti con `$' dev'essere > 0" -#: builtin.c:895 +#: builtin.c:898 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "fatale: numero argomenti %ld > del numero totale argomenti specificati" -#: builtin.c:899 +#: builtin.c:902 msgid "fatal: `$' not permitted after period in format" msgstr "fatale: `$' non consentito dopo il punto in un formato" -#: builtin.c:915 +#: builtin.c:921 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "fatale: manca `$' per i campi posizionali larghezza o precisione" -#: builtin.c:985 +#: builtin.c:991 msgid "`l' is meaningless in awk formats; ignored" msgstr "`l' non ha senso nei formati awk; ignorato" -#: builtin.c:989 +#: builtin.c:995 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fatale: `l' non consentito nei formati POSIX awk" -#: builtin.c:1002 +#: builtin.c:1008 msgid "`L' is meaningless in awk formats; ignored" msgstr "`L' non ha senso nei formati awk; ignorato" -#: builtin.c:1006 +#: builtin.c:1012 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "fatale: `L' non consentito nei formati POSIX awk" -#: builtin.c:1019 +#: builtin.c:1025 msgid "`h' is meaningless in awk formats; ignored" msgstr "`h' non ha senso nei formati awk; ignorato" -#: builtin.c:1023 +#: builtin.c:1029 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fatale: `h' non consentito nei formati POSIX awk" -#: builtin.c:1049 +#: builtin.c:1055 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: valore %g troppo elevato per il formato %%c" -#: builtin.c:1062 +#: builtin.c:1068 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: valore %g non un carattere multibyte valido " -#: builtin.c:1448 +#: builtin.c:1454 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: valore %g fuori intervallo per il formato `%%%c'" -#: builtin.c:1546 +#: builtin.c:1552 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "carattere di formato ignoto `%c' ignorato: nessun argomento convertito" -#: builtin.c:1551 +#: builtin.c:1557 msgid "fatal: not enough arguments to satisfy format string" msgstr "" "fatale: argomenti in numero minore di quelli richiesti dalla stringa di " "formato" -#: builtin.c:1553 +#: builtin.c:1559 msgid "^ ran out for this one" msgstr "^ esauriti a questo punto" -#: builtin.c:1560 +#: builtin.c:1566 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: specifica di formato senza un carattere di controllo" -#: builtin.c:1563 +#: builtin.c:1569 msgid "too many arguments supplied for format string" msgstr "troppi argomenti specificati per questa stringa di formato" -#: builtin.c:1619 +#: builtin.c:1625 msgid "sprintf: no arguments" msgstr "sprintf: nessun argomento" -#: builtin.c:1642 builtin.c:1653 +#: builtin.c:1648 builtin.c:1659 msgid "printf: no arguments" msgstr "printf: nessun argomento" -#: builtin.c:1696 +#: builtin.c:1702 msgid "sqrt: received non-numeric argument" msgstr "sqrt: l'argomento ricevuto non numerico" -#: builtin.c:1700 +#: builtin.c:1706 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: chiamata con argomento negativo %g" -#: builtin.c:1731 +#: builtin.c:1737 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: lunghezza %g non >= 1" -#: builtin.c:1733 +#: builtin.c:1739 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: lunghezza %g non >= 0" -#: builtin.c:1747 +#: builtin.c:1753 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: lunghezza non intera %g: sar troncata" -#: builtin.c:1752 +#: builtin.c:1758 #, 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:1764 +#: builtin.c:1770 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: indice di partenza %g non valido, uso 1" -#: builtin.c:1769 +#: builtin.c:1775 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: indice di partenza non intero %g: sar troncato" -#: builtin.c:1792 +#: builtin.c:1798 msgid "substr: source string is zero length" msgstr "substr: stringa di partenza lunga zero" -#: builtin.c:1806 +#: builtin.c:1812 #, 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:1814 +#: builtin.c:1820 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -765,213 +770,197 @@ msgstr "" "substr: lunghezza %g all'indice di partenza %g supera la lunghezza del primo " "argomento (%lu)" -#: builtin.c:1884 +#: builtin.c:1890 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" "strftime: il valore del formato in PROCINFO[\"strftime\"] di tipo numerico" -#: builtin.c:1907 +#: builtin.c:1913 msgid "strftime: received non-numeric second argument" msgstr "strftime: il secondo argomento ricevuto non numerico" -#: builtin.c:1911 +#: builtin.c:1917 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: il secondo argomento < 0 o troppo elevato per time_t" -#: builtin.c:1918 +#: builtin.c:1924 msgid "strftime: received non-string first argument" msgstr "strftime: il primo argomento ricevuto non una stringa" -#: builtin.c:1925 +#: builtin.c:1931 msgid "strftime: received empty format string" msgstr "strftime: il formato ricevuto una stringa nulla" -#: builtin.c:1991 +#: builtin.c:1997 msgid "mktime: received non-string argument" msgstr "mktime: l'argomento ricevuto non una stringa" -#: builtin.c:2008 +#: builtin.c:2014 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:2049 msgid "'system' function not allowed in sandbox mode" msgstr "funzione 'system' non consentita in modo `sandbox'" -#: builtin.c:2048 +#: builtin.c:2054 msgid "system: received non-string argument" msgstr "system: l'argomento ricevuto non una stringa" -#: builtin.c:2168 +#: builtin.c:2174 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "riferimento a variabile non inizializzata `$%d'" -#: builtin.c:2253 +#: builtin.c:2259 msgid "tolower: received non-string argument" msgstr "tolower: l'argomento ricevuto non una stringa" -#: builtin.c:2284 +#: builtin.c:2290 msgid "toupper: received non-string argument" msgstr "toupper: l'argomento ricevuto non una stringa" -#: builtin.c:2317 mpfr.c:679 +#: builtin.c:2323 mpfr.c:679 msgid "atan2: received non-numeric first argument" msgstr "atan2: il primo argomento ricevuto non numerico" -#: builtin.c:2319 mpfr.c:681 +#: builtin.c:2325 mpfr.c:681 msgid "atan2: received non-numeric second argument" msgstr "atan2: il secondo argomento ricevuto non numerico" -#: builtin.c:2338 +#: builtin.c:2344 msgid "sin: received non-numeric argument" msgstr "sin: l'argomento ricevuto non numerico" -#: builtin.c:2354 +#: builtin.c:2360 msgid "cos: received non-numeric argument" msgstr "cos: l'argomento ricevuto non numerico" -#: builtin.c:2468 mpfr.c:1176 +#: builtin.c:2413 mpfr.c:1176 msgid "srand: received non-numeric argument" msgstr "srand: l'argomento ricevuto non numerico" -#: builtin.c:2499 +#: builtin.c:2444 msgid "match: third argument is not an array" msgstr "match: terzo argomento non-vettoriale" -#: builtin.c:2760 +#: builtin.c:2705 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: il terzo argomento `%.*s' trattato come 1" -#: builtin.c:2775 +#: builtin.c:2720 #, c-format msgid "gensub: third argument %g treated as 1" msgstr "gensub: il terzo argomento %g trattato come 1" -#: builtin.c:3075 +#: builtin.c:3020 msgid "lshift: received non-numeric first argument" msgstr "lshift: il primo argomento ricevuto non numerico" -#: builtin.c:3077 +#: builtin.c:3022 msgid "lshift: received non-numeric second argument" msgstr "lshift: il secondo argomento ricevuto non numerico" -#: builtin.c:3083 +#: builtin.c:3028 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%f, %f): valori negativi daranno risultati strani" -#: builtin.c:3085 +#: builtin.c:3030 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): valori decimali saranno troncati" -#: builtin.c:3087 +#: builtin.c:3032 #, 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:3112 +#: builtin.c:3057 msgid "rshift: received non-numeric first argument" msgstr "rshift: il primo argomento ricevuto non numerico" -#: builtin.c:3114 +#: builtin.c:3059 msgid "rshift: received non-numeric second argument" msgstr "rshift: il secondo argomento ricevuto non numerico" -#: builtin.c:3120 +#: builtin.c:3065 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%f, %f): valori negativi daranno risultati strani" -#: builtin.c:3122 +#: builtin.c:3067 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): valori decimali saranno troncati" -#: builtin.c:3124 +#: builtin.c:3069 #, 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:3149 mpfr.c:988 +#: builtin.c:3094 mpfr.c:988 msgid "and: called with less than two arguments" msgstr "and: chiamata con meno di due argomenti" -#: builtin.c:3154 +#: builtin.c:3099 #, c-format msgid "and: argument %d is non-numeric" msgstr "and: l'argomento %d non numerico" -#: builtin.c:3158 +#: builtin.c:3103 #, 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:3181 mpfr.c:1020 +#: builtin.c:3126 mpfr.c:1020 msgid "or: called with less than two arguments" msgstr "or: chiamata con meno di due argomenti" -#: builtin.c:3186 +#: builtin.c:3131 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: l'argomento %d non numerico" -#: builtin.c:3190 +#: builtin.c:3135 #, 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:3212 mpfr.c:1051 +#: builtin.c:3157 mpfr.c:1051 msgid "xor: called with less than two arguments" msgstr "xor: chiamata con meno di due argomenti" -#: builtin.c:3218 +#: builtin.c:3163 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: l'argomento %d non numerico" -#: builtin.c:3222 +#: builtin.c:3167 #, 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:3247 mpfr.c:807 +#: builtin.c:3192 mpfr.c:807 msgid "compl: received non-numeric argument" msgstr "compl: l'argomento ricevuto non numerico" -#: builtin.c:3253 +#: builtin.c:3198 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): valore negativo, dar risultati strani" -#: builtin.c:3255 +#: builtin.c:3200 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): valori decimali saranno troncati" -#: builtin.c:3424 +#: builtin.c:3369 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s' non una categoria `locale' valida" -#: builtin.c:3611 mpfr.c:1209 -msgid "div: third argument is not an array" -msgstr "div: terzo argomento non-vettoriale" - -#: builtin.c:3619 mpfr.c:1217 -msgid "div: received non-numeric first argument" -msgstr "div: il primo argomento ricevuto non numerico" - -#: builtin.c:3621 mpfr.c:1219 -msgid "div: received non-numeric second argument" -msgstr "div: il secondo argomento ricevuto non numerico" - -#: builtin.c:3630 mpfr.c:1253 -msgid "div: division by zero attempted" -msgstr "div: tentativo di dividere per zero" - #: command.y:225 #, c-format msgid "Type (g)awk statement(s). End with the command \"end\"\n" @@ -1527,17 +1516,17 @@ msgstr "[\"%s\"] non presente nel vettore `%s\n" msgid "`%s[\"%s\"]' is not an array\n" msgstr "`%s[\"%s\"]' non un vettore\n" -#: debug.c:1236 debug.c:4965 +#: debug.c:1236 debug.c:4964 #, c-format msgid "`%s' is not a scalar variable" msgstr "`%s' non una variabile scalare" -#: debug.c:1258 debug.c:4995 +#: debug.c:1258 debug.c:4994 #, c-format msgid "attempt to use array `%s[\"%s\"]' in a scalar context" msgstr "tentativo di usare vettore `%s[\"%s\"]' in un contesto scalare" -#: debug.c:1280 debug.c:5006 +#: debug.c:1280 debug.c:5005 #, c-format msgid "attempt to use scalar `%s[\"%s\"]' as array" msgstr "tentativo di usare scalare `%s[\"%s\"]' come vettore" @@ -1815,99 +1804,99 @@ msgstr "'finish' not significativo per salti non-locali '%s'\n" msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "'until' not significativo per salti non-locali '%s'\n" -#: debug.c:4186 +#: debug.c:4185 msgid "\t------[Enter] to continue or q [Enter] to quit------" msgstr "\t------[Invio] per continuare o q [Invio] per uscire------" -#: debug.c:4187 +#: debug.c:4186 msgid "q" msgstr "q" -#: debug.c:5002 +#: debug.c:5001 #, c-format msgid "[\"%s\"] not in array `%s'" msgstr "[\"%s\"] non presente nel vettore `%s'" -#: debug.c:5208 +#: debug.c:5207 #, c-format msgid "sending output to stdout\n" msgstr "output inviato a stdout\n" -#: debug.c:5248 +#: debug.c:5247 msgid "invalid number" msgstr "numero non valido" -#: debug.c:5382 +#: debug.c:5381 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "`%s' non consentito nel contesto corrente; istruzione ignorata" -#: debug.c:5390 +#: debug.c:5389 msgid "`return' not allowed in current context; statement ignored" msgstr "`return' non consentito nel contesto corrente; istruzione ignorata" -#: debug.c:5605 +#: debug.c:5604 #, c-format msgid "No symbol `%s' in current context" msgstr "Simbolo `%s' non esiste nel contesto corrente" -#: dfa.c:1051 dfa.c:1054 dfa.c:1073 dfa.c:1083 dfa.c:1095 dfa.c:1131 -#: dfa.c:1140 dfa.c:1143 dfa.c:1148 dfa.c:1162 dfa.c:1210 +#: dfa.c:1063 dfa.c:1066 dfa.c:1085 dfa.c:1095 dfa.c:1107 dfa.c:1143 +#: dfa.c:1152 dfa.c:1155 dfa.c:1160 dfa.c:1174 dfa.c:1222 msgid "unbalanced [" msgstr "[ non chiusa" -#: dfa.c:1107 +#: dfa.c:1119 msgid "invalid character class" msgstr "character class non valida" -#: dfa.c:1253 +#: dfa.c:1265 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "sintassi character class [[:spazio:]], non [:spazio:]" -#: dfa.c:1315 +#: dfa.c:1327 msgid "unfinished \\ escape" msgstr "sequenza escape \\ non completa" -#: dfa.c:1462 +#: dfa.c:1474 msgid "invalid content of \\{\\}" msgstr "contenuto di \\{\\} non valido" -#: dfa.c:1465 +#: dfa.c:1477 msgid "regular expression too big" msgstr "espressione regolare troppo complessa" -#: dfa.c:1900 +#: dfa.c:1912 msgid "unbalanced (" msgstr "( non chiusa" -#: dfa.c:2026 +#: dfa.c:2038 msgid "no syntax specified" msgstr "nessuna sintassi specificata" -#: dfa.c:2034 +#: dfa.c:2046 msgid "unbalanced )" msgstr ") non aperta" -#: eval.c:397 +#: eval.c:396 #, c-format msgid "unknown nodetype %d" msgstr "tipo nodo sconosciuto %d" -#: eval.c:408 eval.c:422 +#: eval.c:407 eval.c:421 #, c-format msgid "unknown opcode %d" msgstr "codice operativo sconosciuto %d" -#: eval.c:419 +#: eval.c:418 #, c-format msgid "opcode %s not an operator or keyword" msgstr "codice operativo %s non un operatore o una parola chiave" -#: eval.c:475 +#: eval.c:474 msgid "buffer overflow in genflags2str" msgstr "superamento limiti buffer in 'genflags2str'" -#: eval.c:677 +#: eval.c:676 #, c-format msgid "" "\n" @@ -1918,71 +1907,71 @@ msgstr "" "\t# `Stack' (Pila) Chiamate Funzione:\n" "\n" -#: eval.c:706 +#: eval.c:705 msgid "`IGNORECASE' is a gawk extension" msgstr "`IGNORECASE' un'estensione gawk" -#: eval.c:738 +#: eval.c:737 msgid "`BINMODE' is a gawk extension" msgstr "`BINMODE' un'estensione gawk" -#: eval.c:796 +#: eval.c:795 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "valore di BINMODE `%s' non valido, considerato come 3" -#: eval.c:913 +#: eval.c:912 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "specificazione invalida `%sFMT' `%s'" -#: eval.c:997 +#: eval.c:996 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "disabilito `--lint' a causa di assegnamento a `LINT'" -#: eval.c:1175 +#: eval.c:1174 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "riferimento ad argomento non inizializzato `%s'" -#: eval.c:1176 +#: eval.c:1175 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "riferimento a variabile non inizializzata `%s'" -#: eval.c:1194 +#: eval.c:1193 msgid "attempt to field reference from non-numeric value" msgstr "tentativo di riferimento a un campo da valore non-numerico" -#: eval.c:1196 +#: eval.c:1195 msgid "attempt to field reference from null string" msgstr "tentativo di riferimento a un campo da una stringa nulla" -#: eval.c:1204 +#: eval.c:1203 #, c-format msgid "attempt to access field %ld" msgstr "tentativo di accedere al campo %ld" -#: eval.c:1213 +#: eval.c:1212 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "riferimento a campo non inizializzato `$%ld'" -#: eval.c:1300 +#: eval.c:1299 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "funzione `%s' chiamata con pi argomenti di quelli previsti" -#: eval.c:1501 +#: eval.c:1500 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: tipo non previsto `%s'" -#: eval.c:1597 +#: eval.c:1596 msgid "division by zero attempted in `/='" msgstr "divisione per zero tentata in `/='" -#: eval.c:1604 +#: eval.c:1603 #, c-format msgid "division by zero attempted in `%%='" msgstr "divisione per zero tentata in `%%='" @@ -2393,50 +2382,54 @@ msgstr "readfile: chiamata con troppi argomenti" msgid "readfile: called with no arguments" msgstr "readfile: chiamata senza argomenti" -#: extension/rwarray.c:124 +#: extension/revoutput.c:125 +msgid "revoutput: could not initialize REVOUT variable" +msgstr "" + +#: extension/rwarray.c:124 extension/rwarray0.c:109 msgid "writea: called with too many arguments" msgstr "writea: chiamata con troppi argomenti" -#: extension/rwarray.c:131 +#: extension/rwarray.c:131 extension/rwarray0.c:116 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "do_writea: argomento 0 non una stringa\n" -#: extension/rwarray.c:137 +#: extension/rwarray.c:137 extension/rwarray0.c:122 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "do_writea: argomento 1 non-vettoriale\n" -#: extension/rwarray.c:184 +#: extension/rwarray.c:184 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "write_array: non sono riuscito a appiattire un vettore\n" -#: extension/rwarray.c:198 +#: extension/rwarray.c:198 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "write_array: non sono riuscito a rilasciare un vettore appiattito\n" -#: extension/rwarray.c:280 +#: extension/rwarray.c:280 extension/rwarray0.c:265 msgid "reada: called with too many arguments" msgstr "reada: chiamata con troppi argomenti" -#: extension/rwarray.c:287 +#: extension/rwarray.c:287 extension/rwarray0.c:272 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "do_reada: argomento 0 non una stringa\n" -#: extension/rwarray.c:293 +#: extension/rwarray.c:293 extension/rwarray0.c:278 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "do_reada: argomento 1 non-vettoriale\n" -#: extension/rwarray.c:337 +#: extension/rwarray.c:337 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "do_reada: clear_array non riuscita\n" -#: extension/rwarray.c:374 +#: extension/rwarray.c:374 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "read_array: set_array_element non riuscita\n" @@ -2564,20 +2557,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:810 +#: gawkapi.c:809 msgid "remove_element: received null array" msgstr "remove_element: ricevuto vettore nullo" -#: gawkapi.c:813 +#: gawkapi.c:812 msgid "remove_element: received null subscript" msgstr "remove_element: ricevuto indice nullo" -#: gawkapi.c:950 +#: gawkapi.c:949 #, 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:955 +#: gawkapi.c:954 #, 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" @@ -2768,12 +2761,12 @@ msgstr "nessuna chiusura esplicita richiesta per `pipe' `%s'" msgid "no explicit close of file `%s' provided" msgstr "nessuna chiusura esplicita richiesta per file `%s'" -#: io.c:1317 io.c:1375 main.c:615 main.c:657 +#: io.c:1317 io.c:1375 main.c:628 main.c:670 #, c-format msgid "error writing standard output (%s)" msgstr "errore scrivendo 'standard output' (%s)" -#: io.c:1322 io.c:1381 main.c:617 +#: io.c:1322 io.c:1381 main.c:630 #, c-format msgid "error writing standard error (%s)" msgstr "errore scrivendo 'standard error' (%s)" @@ -2953,173 +2946,173 @@ msgstr "valore multicarattere per `RS' un'estensione gawk" msgid "IPv6 communication is not supported" msgstr "comunicazioni IPv6 non supportate" -#: main.c:309 +#: main.c:321 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "variable d'ambiente `POSIXLY_CORRECT' impostata: attivo `--posix'" -#: main.c:315 +#: main.c:327 msgid "`--posix' overrides `--traditional'" msgstr "`--posix' annulla `--traditional'" -#: main.c:326 +#: main.c:338 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "`--posix'/`--traditional' annulla `--non-decimal-data'" -#: main.c:330 +#: main.c:342 #, c-format msgid "running %s setuid root may be a security problem" msgstr "eseguire %s con `setuid' root pu essere un rischio per la sicurezza" -#: main.c:334 +#: main.c:346 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "`--posix' annulla `--characters-as-bytes'" -#: main.c:392 +#: main.c:404 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "non possibile impostare modalit binaria su `stdin'(%s)" -#: main.c:395 +#: main.c:407 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "non possibile impostare modalit binaria su `stdout'(%s)" -#: main.c:397 +#: main.c:409 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "non possibile impostare modalit binaria su `stderr'(%s)" -#: main.c:457 +#: main.c:469 msgid "no program text at all!" msgstr "manca del tutto il testo del programma!" -#: main.c:550 +#: main.c:563 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "Uso: %s [opzioni in stile POSIX o GNU] -f file-prog. [--] file ...\n" -#: main.c:552 +#: main.c:565 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "Usage: %s [opzioni in stile POSIX o GNU] [--] %cprogramma%c file ...\n" -#: main.c:557 +#: main.c:570 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Opzioni POSIX:\t\topzioni lunghe GNU: (standard)\n" -#: main.c:558 +#: main.c:571 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f fileprog\t\t--file=file-prog.\n" -#: main.c:559 +#: main.c:572 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:560 +#: main.c:573 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=valore\t\t--assign=var=valore\n" -#: main.c:561 +#: main.c:574 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Opzioni brevi:\t\topzioni lunghe GNU: (estensioni)\n" -#: main.c:562 +#: main.c:575 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:563 +#: main.c:576 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:564 +#: main.c:577 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:565 +#: main.c:578 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[file]\t\t--dump-variables[=file]\n" -#: main.c:566 +#: main.c:579 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[file]\t\t--debug[=file]\n" -#: main.c:567 +#: main.c:580 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'testo-del-programma'\t--source='testo-del-programma'\n" -#: main.c:568 +#: main.c:581 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E file\t\t\t--exec=file\n" -#: main.c:569 +#: main.c:582 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:570 +#: main.c:583 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:571 +#: main.c:584 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i include_file\t\t--include=include_file\n" -#: main.c:572 +#: main.c:585 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l libreria\t\t--load=libreria\n" -#: main.c:573 +#: main.c:586 msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" -#: main.c:574 +#: main.c:587 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:575 +#: main.c:588 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:576 +#: main.c:589 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:577 +#: main.c:590 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[file]\t\t--pretty-print[=file]\n" -#: main.c:578 +#: main.c:591 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:579 +#: main.c:592 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[file]\t\t--profile[=file]\n" -#: main.c:580 +#: main.c:593 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:581 +#: main.c:594 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:582 +#: main.c:595 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:583 +#: main.c:596 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:584 +#: main.c:597 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:586 +#: main.c:599 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:589 +#: main.c:602 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3128,7 +3121,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:598 +#: main.c:611 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3141,7 +3134,7 @@ msgstr "" "Problemi di traduzione, segnalare ad: azc100@gmail.com.\n" "\n" -#: main.c:602 +#: main.c:615 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3151,7 +3144,7 @@ msgstr "" "Senza parametri, legge da 'standard input' e scrive su 'standard output'.\n" "\n" -#: main.c:606 +#: main.c:619 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3161,7 +3154,7 @@ msgstr "" "\tgawk '{ sum += $1 }; END { print sum }' file\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:631 +#: main.c:644 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3180,7 +3173,7 @@ msgstr "" "Licenza, o (a tua scelta) a una qualsiasi versione successiva.\n" "\n" -#: main.c:639 +#: main.c:652 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" @@ -3194,7 +3187,7 @@ msgstr "" "Vedi la 'GNU General Public License' per ulteriori dettagli.\n" "\n" -#: main.c:645 +#: main.c:658 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" @@ -3203,16 +3196,16 @@ msgstr "" "assieme a questo programma; se non cos, vedi http://www.gnu.org/" "licenses/.\n" -#: main.c:682 +#: main.c:695 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft non imposta FS a `tab' nell'awk POSIX" -#: main.c:973 +#: main.c:982 #, c-format msgid "unknown value for field spec: %d\n" msgstr "valore non noto per specifica campo: %d\n" -#: main.c:1071 +#: main.c:1080 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3221,66 +3214,66 @@ msgstr "" "%s: `%s' argomento di `-v' non in forma `var=valore'\n" "\n" -#: main.c:1097 +#: main.c:1106 #, c-format msgid "`%s' is not a legal variable name" msgstr "`%s' non un nome di variabile ammesso" -#: main.c:1100 +#: main.c:1109 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "`%s' non un nome di variabile, cerco il file `%s=%s'" -#: main.c:1104 +#: main.c:1113 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "nome funzione interna gawk `%s' non ammesso come nome variabile" -#: main.c:1109 +#: main.c:1118 #, c-format msgid "cannot use function `%s' as variable name" msgstr "non possibile usare nome di funzione `%s' come nome di variabile" -#: main.c:1162 +#: main.c:1171 msgid "floating point exception" msgstr "eccezione floating point" -#: main.c:1169 +#: main.c:1178 msgid "fatal error: internal error" msgstr "errore fatale: errore interno" -#: main.c:1184 +#: main.c:1193 msgid "fatal error: internal error: segfault" msgstr "errore fatale: errore interno: segfault" -#: main.c:1196 +#: main.c:1205 msgid "fatal error: internal error: stack overflow" msgstr "errore fatale: errore interno: stack overflow" -#: main.c:1255 +#: main.c:1264 #, c-format msgid "no pre-opened fd %d" msgstr "manca `fd' pre-aperta %d" -#: main.c:1262 +#: main.c:1271 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "non riesco a pre-aprire /dev/null per `fd' %d" -#: main.c:1476 +#: main.c:1485 msgid "empty argument to `-e/--source' ignored" msgstr "argomento di `-e/--source' nullo, ignorato" -#: main.c:1547 +#: main.c:1556 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "-M ignorato: supporto per MPFR/GMP non generato" -#: main.c:1568 +#: main.c:1577 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: opzione `-W %s' non riconosciuta, ignorata\n" -#: main.c:1621 +#: main.c:1630 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: l'opzione richiede un argomento -- %c\n" @@ -3357,7 +3350,7 @@ msgstr "POSIX non permette escape `\\x'" msgid "no hex digits in `\\x' escape sequence" msgstr "niente cifre esadecimali nella sequenza di escape `\\x'" -#: node.c:566 +#: node.c:567 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3366,12 +3359,12 @@ msgstr "" "sequenza di escape esadec.\\x%.*s di %d caratteri probabilmente non " "interpretata nel modo previsto" -#: node.c:581 +#: node.c:582 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "sequenza di escape `\\%c' considerata come semplice `%c'" -#: node.c:725 +#: node.c:726 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3390,16 +3383,16 @@ msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" msgstr "" "%s %s `%s': non riesco a impostare 'close-on-exec': (fcntl F_SETFD: %s)" -#: profile.c:73 +#: profile.c:71 #, c-format msgid "could not open `%s' for writing: %s" msgstr "non riesco ad aprire `%s' in scrittura: %s" -#: profile.c:75 +#: profile.c:73 msgid "sending profile to standard error" msgstr "mando profilo a 'standard error'" -#: profile.c:220 +#: profile.c:193 #, c-format msgid "" "\t# %s rule(s)\n" @@ -3408,7 +3401,7 @@ msgstr "" "\t# %s regola(e)\n" "\n" -#: profile.c:227 +#: profile.c:198 #, c-format msgid "" "\t# Rule(s)\n" @@ -3417,16 +3410,16 @@ msgstr "" "\t# Regola(e)\n" "\n" -#: profile.c:308 +#: profile.c:272 #, c-format msgid "internal error: %s with null vname" msgstr "errore interno: %s con `vname' nullo" -#: profile.c:574 +#: profile.c:538 msgid "internal error: builtin with null fname" msgstr "errore interno: funzione interna con `fname' nullo" -#: profile.c:1016 +#: profile.c:958 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" @@ -3435,12 +3428,12 @@ msgstr "" "\t# Estensioni caricate (-l e/o @load)\n" "\n" -#: profile.c:1065 +#: profile.c:981 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# profilo gawk, creato %s\n" -#: profile.c:1607 +#: profile.c:1521 #, c-format msgid "" "\n" @@ -3449,7 +3442,7 @@ msgstr "" "\n" "\t# Funzioni, in ordine alfabetico\n" -#: profile.c:1658 +#: profile.c:1559 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: tipo di ri-direzione non noto %d" @@ -3460,78 +3453,96 @@ msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" "componente di espressione `%.*s' dovrebbe probabilmente essere `[%.*s]'" -#: regcomp.c:131 +#: regcomp.c:139 msgid "Success" msgstr "Successo" -#: regcomp.c:134 +#: regcomp.c:142 msgid "No match" msgstr "Nessuna corrispondenza" -#: regcomp.c:137 +#: regcomp.c:145 msgid "Invalid regular expression" msgstr "Espressione regolare invalida" -#: regcomp.c:140 +#: regcomp.c:148 msgid "Invalid collation character" msgstr "Carattere di ordinamento non valido" -#: regcomp.c:143 +#: regcomp.c:151 msgid "Invalid character class name" msgstr "Nome di 'classe di caratteri' non valido" -#: regcomp.c:146 +#: regcomp.c:154 msgid "Trailing backslash" msgstr "'\\' finale" -#: regcomp.c:149 +#: regcomp.c:157 msgid "Invalid back reference" msgstr "Riferimento indietro non valido" -#: regcomp.c:152 +#: regcomp.c:160 msgid "Unmatched [, [^, [:, [., or [=" msgstr "[, [^, [:, [. o [= non chiusa" -#: regcomp.c:155 +#: regcomp.c:163 msgid "Unmatched ( or \\(" msgstr "( o \\( non chiusa" -#: regcomp.c:158 +#: regcomp.c:166 msgid "Unmatched \\{" msgstr "\\{ non chiusa" -#: regcomp.c:161 +#: regcomp.c:169 msgid "Invalid content of \\{\\}" msgstr "Contenuto di \\{\\} non valido" -#: regcomp.c:164 +#: regcomp.c:172 msgid "Invalid range end" msgstr "Fine di intervallo non valido" -#: regcomp.c:167 +#: regcomp.c:175 msgid "Memory exhausted" msgstr "Memoria esaurita" -#: regcomp.c:170 +#: regcomp.c:178 msgid "Invalid preceding regular expression" msgstr "Espressione regolare precedente invalida" -#: regcomp.c:173 +#: regcomp.c:181 msgid "Premature end of regular expression" msgstr "Fine di espressione regolare inaspettata" -#: regcomp.c:176 +#: regcomp.c:184 msgid "Regular expression too big" msgstr "Espressione regolare troppo complessa" -#: regcomp.c:179 +#: regcomp.c:187 msgid "Unmatched ) or \\)" msgstr ") o \\) non aperta" -#: regcomp.c:704 +#: regcomp.c:712 msgid "No previous regular expression" msgstr "Nessuna espressione regolare precedente" -#: symbol.c:749 +#: symbol.c:677 +#, fuzzy, c-format +msgid "function `%s': can't use function `%s' as a parameter name" +msgstr "" +"funzione `%s': non possibile usare nome della funzione come nome parametro" + +#: symbol.c:809 msgid "can not pop main context" msgstr "non posso salire pi in alto nello stack" + +#~ msgid "div: third argument is not an array" +#~ msgstr "div: terzo argomento non-vettoriale" + +#~ msgid "div: received non-numeric first argument" +#~ msgstr "div: il primo argomento ricevuto non numerico" + +#~ msgid "div: received non-numeric second argument" +#~ msgstr "div: il secondo argomento ricevuto non numerico" + +#~ msgid "div: division by zero attempted" +#~ msgstr "div: tentativo di dividere per zero" 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-04-08 19:23+0300\n" +"Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" +"POT-Creation-Date: 2015-02-26 20:05+0200\n" "PO-Revision-Date: 2014-11-07 12:26+0000\n" "Last-Translator: Yasuaki Taniguchi <yasuakit@gmail.com>\n" "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n" @@ -37,9 +37,9 @@ msgstr "スカラー仮引数 `%s' を配列として使用する試みです" msgid "attempt to use scalar `%s' as an array" msgstr "スカラー `%s' を配列として使用する試みです" -#: 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 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 +#: builtin.c:1665 builtin.c:2092 builtin.c:2106 eval.c:1149 eval.c:1153 +#: eval.c:1558 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "スカラーコンテキストで配列 `%s' を使用する試みです" @@ -90,407 +90,412 @@ msgstr "asort: 第二引数の部分配列を第一引数用に使用するこ msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "asorti: 第二引数の部分配列を第一引数用に使用することは出来ません" -#: array.c:1314 +#: array.c:1313 #, c-format msgid "`%s' is invalid as a function name" msgstr "`%s' は関数名としては無効です" -#: array.c:1318 +#: array.c:1317 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "ソート比較関数 `%s' が定義されていません" -#: awkgram.y:233 +#: awkgram.y:226 #, c-format msgid "%s blocks must have an action part" msgstr "%s ブロックにはアクション部が必須です" -#: awkgram.y:236 +#: awkgram.y:229 msgid "each rule must have a pattern or an action part" msgstr "各ルールにはパターンまたはアクション部が必須です。" -#: awkgram.y:325 awkgram.y:336 +#: awkgram.y:320 awkgram.y:331 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "古い awk は複数の `BEGIN' または `END' ルールをサポートしません" -#: awkgram.y:373 +#: awkgram.y:368 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "`%s' は組込み関数です。再定義できません" -#: awkgram.y:419 +#: awkgram.y:417 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "正規表現定数 `//' は C++コメントに似ていますが、違います。" -#: awkgram.y:423 +#: awkgram.y:421 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "正規表現定数 `/%s/' は C コメントに似ていますが、異なります" -#: awkgram.y:515 +#: awkgram.y:513 #, c-format msgid "duplicate case values in switch body: %s" msgstr "switch 文の中で重複した case 値が使用されています: %s" -#: awkgram.y:536 +#: awkgram.y:534 msgid "duplicate `default' detected in switch body" msgstr "switch 文の中で重複した `default' が検出されました" -#: awkgram.y:796 awkgram.y:3723 +#: awkgram.y:794 awkgram.y:3751 msgid "`break' is not allowed outside a loop or switch" msgstr "`break' はループまたは switch の外では許可されていません" -#: awkgram.y:805 awkgram.y:3715 +#: awkgram.y:803 awkgram.y:3743 msgid "`continue' is not allowed outside a loop" msgstr "`continue' はループの外では許可されていません" -#: awkgram.y:815 +#: awkgram.y:813 #, c-format msgid "`next' used in %s action" msgstr "%s アクション内で `next' が使用されました" -#: awkgram.y:824 +#: awkgram.y:822 #, c-format msgid "`nextfile' used in %s action" msgstr "`nextfile' が %s アクション内で使用されました" -#: awkgram.y:848 +#: awkgram.y:846 msgid "`return' used outside function context" msgstr "`return' が関数定義文の外で使われました" -#: awkgram.y:922 +#: awkgram.y:920 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" "BEGIN または END ルール内の引数の無い `print' は `print \"\"' だと思われます" -#: awkgram.y:988 awkgram.y:1037 +#: awkgram.y:986 awkgram.y:1035 msgid "`delete' is not allowed with SYMTAB" msgstr "" -#: awkgram.y:990 awkgram.y:1039 +#: awkgram.y:988 awkgram.y:1037 msgid "`delete' is not allowed with FUNCTAB" msgstr "" -#: awkgram.y:1024 awkgram.y:1028 +#: awkgram.y:1022 awkgram.y:1026 msgid "`delete(array)' is a non-portable tawk extension" msgstr "`delete(array)' は移植性の無い tawk 拡張です" -#: awkgram.y:1149 +#: awkgram.y:1147 msgid "multistage two-way pipelines don't work" msgstr "多段階で双方向パイプを利用した式は使用できません" -#: awkgram.y:1264 +#: awkgram.y:1262 msgid "regular expression on right of assignment" msgstr "正規表現が代入式の右辺に使用されています" -#: awkgram.y:1275 +#: awkgram.y:1273 msgid "regular expression on left of `~' or `!~' operator" msgstr "`~' や `!~' 演算子の左辺に正規表現が使用されています" -#: awkgram.y:1291 awkgram.y:1442 +#: awkgram.y:1289 awkgram.y:1431 msgid "old awk does not support the keyword `in' except after `for'" msgstr "古い awk では `in' 予約語は `for' の後を除きサポートしません" -#: awkgram.y:1301 +#: awkgram.y:1299 msgid "regular expression on right of comparison" msgstr "比較式の右辺に正規表現が使用されています。" -#: awkgram.y:1417 -#, c-format -msgid "`getline var' invalid inside `%s' rule" -msgstr "`%s' ルールの内部では `getline var' は無効です" - -#: awkgram.y:1420 +#: awkgram.y:1411 #, c-format -msgid "`getline' invalid inside `%s' rule" -msgstr "`%s' ルールの内部では `getline' は無効です" +msgid "non-redirected `getline' invalid inside `%s' rule" +msgstr "`%s' ルールの内側ではリダイレクトされていない `getline' は無効です" -#: awkgram.y:1425 +#: awkgram.y:1414 msgid "non-redirected `getline' undefined inside END action" msgstr "リダイレクトされていない `getline' は END アクションでは未定義です。" -#: awkgram.y:1444 +#: awkgram.y:1433 msgid "old awk does not support multidimensional arrays" msgstr "古い awk は多次元配列をサポートしません" -#: awkgram.y:1541 +#: awkgram.y:1530 msgid "call of `length' without parentheses is not portable" msgstr "小括弧が無い `length' は移植性がありません" -#: awkgram.y:1607 +#: awkgram.y:1596 msgid "indirect function calls are a gawk extension" msgstr "間接関数呼び出しは gawk 拡張です" -#: awkgram.y:1620 +#: awkgram.y:1609 #, c-format msgid "can not use special variable `%s' for indirect function call" msgstr "特別な変数 `%s' は間接関数呼び出し用には使用出来ません" -#: awkgram.y:1698 +#: awkgram.y:1635 +#, fuzzy, c-format +msgid "attempt to use non-function `%s' in function call" +msgstr "関数 `%s' を配列として使用する試みです" + +#: awkgram.y:1699 msgid "invalid subscript expression" msgstr "添字の式が無効です" -#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2045 awkgram.y:2065 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "警告: " -#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 +#: awkgram.y:2063 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "致命的: " -#: awkgram.y:2116 +#: awkgram.y:2113 msgid "unexpected newline or end of string" msgstr "予期しない改行または文字列終端です" -#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 +#: awkgram.y:2392 awkgram.y:2468 awkgram.y:2691 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:2384 awkgram.y:2509 +#: awkgram.y:2393 awkgram.y:2518 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "共有ライブラリ `%s' を読み込み用に開けません (%s)" -#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 +#: awkgram.y:2395 awkgram.y:2469 awkgram.y:2519 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "原因不明" -#: awkgram.y:2395 awkgram.y:2419 +#: awkgram.y:2404 awkgram.y:2428 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "" -#: awkgram.y:2408 +#: awkgram.y:2417 #, c-format msgid "already included source file `%s'" msgstr "ソースファイル `%s' は既に読み込まれています" -#: awkgram.y:2409 +#: awkgram.y:2418 #, c-format msgid "already loaded shared library `%s'" msgstr "共有ライブラリ `%s' は既に読み込まれています" -#: awkgram.y:2444 +#: awkgram.y:2453 msgid "@include is a gawk extension" msgstr "@include は gawk 拡張です" -#: awkgram.y:2450 +#: awkgram.y:2459 msgid "empty filename after @include" msgstr "@include の後に空のファイル名があります" -#: awkgram.y:2494 +#: awkgram.y:2503 msgid "@load is a gawk extension" msgstr "@load は gawk 拡張です" -#: awkgram.y:2500 +#: awkgram.y:2509 msgid "empty filename after @load" msgstr "@load の後に空のファイル名があります" -#: awkgram.y:2634 +#: awkgram.y:2643 msgid "empty program text on command line" msgstr "コマンド行のプログラム表記が空です" -#: awkgram.y:2749 +#: awkgram.y:2758 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "ソースファイル `%s' を読み込めません (%s)" -#: awkgram.y:2760 +#: awkgram.y:2769 #, c-format msgid "source file `%s' is empty" msgstr "ソースファイル `%s' は空です" -#: awkgram.y:2937 +#: awkgram.y:2828 +#, c-format +msgid "PEBKAC error: invalid character '\\%03o' in source code" +msgstr "" + +#: awkgram.y:2959 msgid "source file does not end in newline" msgstr "ソースファイルが改行で終っていません" -#: awkgram.y:3042 +#: awkgram.y:3062 msgid "unterminated regexp ends with `\\' at end of file" msgstr "終端されていない正規表現がファイル最後の `\\' で終っています。" -#: awkgram.y:3066 +#: awkgram.y:3089 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "%s: %d: tawk の正規表現修飾子 `/.../%c' は gawk で使用できません" -#: awkgram.y:3070 +#: awkgram.y:3093 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "tawk の正規表現修飾子 `/.../%c' は gawk で使用できません" -#: awkgram.y:3077 +#: awkgram.y:3100 msgid "unterminated regexp" msgstr "正規表現が終端されていません" -#: awkgram.y:3081 +#: awkgram.y:3104 msgid "unterminated regexp at end of file" msgstr "ファイルの中で正規表現が終端されていません" -#: awkgram.y:3140 +#: awkgram.y:3162 msgid "use of `\\ #...' line continuation is not portable" msgstr "`\\ #...' 形式の行継続は移植性がありません" -#: awkgram.y:3156 +#: awkgram.y:3178 msgid "backslash not last character on line" msgstr "バックスラッシュが行最後の文字になっていません。" -#: awkgram.y:3217 +#: awkgram.y:3239 msgid "POSIX does not allow operator `**='" msgstr "POSIX では演算子 `**=' は許可されていません" -#: awkgram.y:3219 +#: awkgram.y:3241 msgid "old awk does not support operator `**='" msgstr "古い awk は演算子 `**=' をサポートしません" -#: awkgram.y:3228 +#: awkgram.y:3250 msgid "POSIX does not allow operator `**'" msgstr "POSIX では演算子 `**' は許可されていません" -#: awkgram.y:3230 +#: awkgram.y:3252 msgid "old awk does not support operator `**'" msgstr "古い awk は演算子 `**' をサポートしません" -#: awkgram.y:3265 +#: awkgram.y:3287 msgid "operator `^=' is not supported in old awk" msgstr "古い awk は演算子 `^=' をサポートしません" -#: awkgram.y:3273 +#: awkgram.y:3295 msgid "operator `^' is not supported in old awk" msgstr "古い awk は演算子 `^' をサポートしません" -#: awkgram.y:3366 awkgram.y:3382 command.y:1178 +#: awkgram.y:3392 awkgram.y:3410 command.y:1180 msgid "unterminated string" msgstr "文字列が終端されていません" -#: awkgram.y:3603 +#: awkgram.y:3631 #, c-format msgid "invalid char '%c' in expression" msgstr "式内に無効な文字 '%c' があります" -#: awkgram.y:3650 +#: awkgram.y:3678 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s' は gawk 拡張です" -#: awkgram.y:3655 +#: awkgram.y:3683 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX では `%s' は許可されていません" -#: awkgram.y:3663 +#: awkgram.y:3691 #, c-format msgid "`%s' is not supported in old awk" msgstr "古い awk は `%s' をサポートしません" -#: awkgram.y:3753 +#: awkgram.y:3781 msgid "`goto' considered harmful!\n" msgstr "`goto' は有害だと見なされています!\n" -#: awkgram.y:3787 +#: awkgram.y:3815 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d は %s 用の引数の数としては無効です" -#: awkgram.y:3822 +#: awkgram.y:3850 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "%s: 文字列リテラルを置き換え最後の引数に使用すると効果がありません" -#: awkgram.y:3827 +#: awkgram.y:3855 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s 第三仮引数は可変オブジェクトではありません" -#: awkgram.y:3910 awkgram.y:3913 +#: awkgram.y:3938 awkgram.y:3941 msgid "match: third argument is a gawk extension" msgstr "match: 第三引数は gawk 拡張です" -#: awkgram.y:3967 awkgram.y:3970 +#: awkgram.y:3995 awkgram.y:3998 msgid "close: second argument is a gawk extension" msgstr "close: 第二引数は gawk 拡張です" -#: awkgram.y:3982 +#: awkgram.y:4010 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "dcgettext(_\"...\")の使用法が間違っています: 先頭のアンダースコア(_)を削除し" "てください" -#: awkgram.y:3997 +#: awkgram.y:4025 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "dcngettext(_\"...\")の使用法が間違っています: 先頭のアンダースコア(_)を削除し" "てください" -#: awkgram.y:4016 +#: awkgram.y:4044 #, fuzzy msgid "index: regexp constant as second argument is not allowed" msgstr "index: 文字列では無い第二引数を受け取りました" -#: awkgram.y:4069 +#: awkgram.y:4097 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "関数 `%s': 仮引数 `%s' が大域変数を覆い隠しています" -#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4154 debug.c:4041 debug.c:4084 debug.c:5204 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "`%s' を書込み用に開けませんでした (%s)" -#: awkgram.y:4127 +#: awkgram.y:4155 msgid "sending variable list to standard error" msgstr "変数リストを標準エラーに送っています" -#: awkgram.y:4135 +#: awkgram.y:4163 #, c-format msgid "%s: close failed (%s)" msgstr "%s: 閉じるのに失敗しました (%s)" -#: awkgram.y:4160 +#: awkgram.y:4188 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() を二回呼び出しています!" -#: awkgram.y:4168 +#: awkgram.y:4196 msgid "there were shadowed variables." msgstr "覆い隠された変数がありました" -#: awkgram.y:4239 +#: awkgram.y:4267 #, c-format msgid "function name `%s' previously defined" msgstr "関数名 `%s' は前に定義されています" -#: awkgram.y:4285 +#: awkgram.y:4313 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "関数 `%s': 関数名を仮引数名として使用出来ません" -#: awkgram.y:4288 +#: awkgram.y:4316 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "関数 `%s': 特別な変数 `%s' は関数の仮引数として使用出来ません" -#: awkgram.y:4296 +#: awkgram.y:4324 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "関数 `%s': 仮引数 #%d, `%s' が仮引数 #%d と重複しています" -#: awkgram.y:4383 awkgram.y:4389 +#: awkgram.y:4411 awkgram.y:4417 #, c-format msgid "function `%s' called but never defined" msgstr "未定義の関数 `%s' を呼び出しました" -#: awkgram.y:4393 +#: awkgram.y:4421 #, c-format msgid "function `%s' defined but never called directly" msgstr "関数 `%s' は定義されていますが、一度も直接呼び出されていません" -#: awkgram.y:4425 +#: awkgram.y:4453 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "仮引数 #%d 用の正規表現定数は真偽値を出力します" -#: awkgram.y:4484 +#: awkgram.y:4468 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -499,21 +504,21 @@ msgstr "" "関数名と `(' の間にスペースを入れて関数 `%s' を呼び出しています。\n" "または、変数か配列として使われています。" -#: awkgram.y:4720 +#: awkgram.y:4674 msgid "division by zero attempted" msgstr "ゼロによる除算が試みられました" -#: awkgram.y:4729 +#: awkgram.y:4683 #, c-format msgid "division by zero attempted in `%%'" msgstr "`%%' 内でゼロによる除算が試みられました" -#: awkgram.y:5049 +#: awkgram.y:5003 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" -#: awkgram.y:5052 +#: awkgram.y:5006 #, fuzzy, c-format msgid "invalid target of assignment (opcode %s)" msgstr "%d は %s 用の引数の数としては無効です" @@ -555,188 +560,198 @@ msgstr "" msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "fflush: `%s' が開かれたファイル、パイプ、プロセス共有ではありません" -#: builtin.c:362 +#: builtin.c:351 msgid "index: received non-string first argument" msgstr "index: 文字列では無い第一引数を受け取りました" -#: builtin.c:364 +#: builtin.c:353 msgid "index: received non-string second argument" msgstr "index: 文字列では無い第二引数を受け取りました" -#: builtin.c:488 mpfr.c:757 +#: builtin.c:466 mpfr.c:777 msgid "int: received non-numeric argument" msgstr "int: 数値では無い引数を受け取りました" -#: builtin.c:525 +#: builtin.c:503 msgid "length: received array argument" msgstr "length: 配列引数を受け取りました" -#: builtin.c:528 +#: builtin.c:506 msgid "`length(array)' is a gawk extension" msgstr "`length(array)' は gawk 拡張です" -#: builtin.c:544 +#: builtin.c:525 msgid "length: received non-string argument" msgstr "length: 文字列では無い引数を受け取りました" -#: builtin.c:575 +#: builtin.c:554 msgid "log: received non-numeric argument" msgstr "log: 数値では無い引数を受け取りました" -#: builtin.c:578 +#: builtin.c:557 #, c-format msgid "log: received negative argument %g" msgstr "log: 負の引数 %g を受け取りました" -#: builtin.c:776 builtin.c:781 +#: builtin.c:755 builtin.c:760 builtin.c:911 msgid "fatal: must use `count$' on all formats or none" msgstr "" "致命的: `count$’ は全ての書式使用する、または全てに使用しないのいずれかでなけ" "ればいけません" -#: builtin.c:851 +#: builtin.c:830 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "`%%' 指定用のフィールド幅は無視されます" -#: builtin.c:853 +#: builtin.c:832 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "`%%' 指定用のフィールド幅は無視されます" -#: builtin.c:855 +#: builtin.c:834 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "`%%' 指定用のフィールド幅および精度は無視されます" -#: builtin.c:906 +#: builtin.c:885 msgid "fatal: `$' is not permitted in awk formats" msgstr "致命的: `$' は awk 形式内では許可されていません" -#: builtin.c:915 +#: builtin.c:894 msgid "fatal: arg count with `$' must be > 0" msgstr "致命的: `$' で指定する引数の番号は正でなければいけません" -#: builtin.c:919 +#: builtin.c:898 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "致命的: 引数の番号 %ld は引数として与えられた数より大きいです" -#: builtin.c:923 +#: builtin.c:902 msgid "fatal: `$' not permitted after period in format" msgstr "致命的: `$' は書式指定内のピリオド `.' の後に使用できません" -#: builtin.c:939 +#: builtin.c:921 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "致命的: フィールド幅、または精度の指定子に `$' が与えられていません" -#: builtin.c:1009 +#: builtin.c:991 msgid "`l' is meaningless in awk formats; ignored" msgstr "awk の書式指定では `l' は無意味です。無視します" -#: builtin.c:1013 +#: builtin.c:995 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "致命的: POSIX awk 書式内では `l' は許可されていません" -#: builtin.c:1026 +#: builtin.c:1008 msgid "`L' is meaningless in awk formats; ignored" msgstr "awk の書式指定では `L' は無意味です。無視します。" -#: builtin.c:1030 +#: builtin.c:1012 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "致命的: POSIX awk 書式内では `L' は許可されていません" -#: builtin.c:1043 +#: builtin.c:1025 msgid "`h' is meaningless in awk formats; ignored" msgstr "awk の書式指定では `h' は無意味です。無視します。" -#: builtin.c:1047 +#: builtin.c:1029 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "致命的: POSIX awk 書式内では `h' は許可されていません" -#: builtin.c:1463 +#: builtin.c:1055 +#, fuzzy, c-format +msgid "[s]printf: value %g is too big for %%c format" +msgstr "[s]printf: 値 %g は書式 `%%%c' の範囲外です" + +#: builtin.c:1068 +#, fuzzy, c-format +msgid "[s]printf: value %g is not a valid wide character" +msgstr "[s]printf: 値 %g は書式 `%%%c' の範囲外です" + +#: builtin.c:1454 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: 値 %g は書式 `%%%c' の範囲外です" -#: builtin.c:1561 +#: builtin.c:1552 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "不明な書式指定文字 `%c' を無視しています: 変換される引数はありません" -#: builtin.c:1566 +#: builtin.c:1557 msgid "fatal: not enough arguments to satisfy format string" msgstr "致命的: 書式文字列を満たす十分な数の引数がありません" -#: builtin.c:1568 +#: builtin.c:1559 msgid "^ ran out for this one" msgstr "^ ここから足りません" -#: builtin.c:1575 +#: builtin.c:1566 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: 書式指定子に制御文字がありません" -#: builtin.c:1578 +#: builtin.c:1569 msgid "too many arguments supplied for format string" msgstr "書式文字列に与えられている引数が多すぎます" -#: builtin.c:1634 +#: builtin.c:1625 msgid "sprintf: no arguments" msgstr "sprintf: 引数がありません" -#: builtin.c:1657 builtin.c:1668 +#: builtin.c:1648 builtin.c:1659 msgid "printf: no arguments" msgstr "printf: 引数がありません" -#: builtin.c:1711 +#: builtin.c:1702 msgid "sqrt: received non-numeric argument" msgstr "sqrt: 数値では無い引数を受け取りました" -#: builtin.c:1715 +#: builtin.c:1706 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" -#: builtin.c:1746 +#: builtin.c:1737 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: 長さ %g が 1 以上ではありません" -#: builtin.c:1748 +#: builtin.c:1739 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: 長さ %g が 0 以上ではありません" -#: builtin.c:1755 +#: builtin.c:1753 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: 文字数 %g の小数点以下は切り捨てます。" -#: builtin.c:1760 +#: builtin.c:1758 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "substr: 文字数 %g は最大値を超えています。%g を使います。" -#: builtin.c:1772 +#: builtin.c:1770 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: 開始インデックス %g が無効です。1を使用します" -#: builtin.c:1777 +#: builtin.c:1775 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: 開始インデックス %g が非整数のため、値は切り捨てられます" -#: builtin.c:1802 +#: builtin.c:1798 msgid "substr: source string is zero length" msgstr "substr: 文字列の長さがゼロです。" -#: builtin.c:1818 +#: builtin.c:1812 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: 開始インデックス %g が文字列終端の後にあります" -#: builtin.c:1826 +#: builtin.c:1820 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -744,187 +759,193 @@ msgstr "" "substr: 開始インデックス %2$g からの長さ %1$g は第一引数の長さを超えています " "(%3$lu)" -#: builtin.c:1900 +#: builtin.c:1890 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: PROCINFO[\"strftime\"] の書式の値は数値型です" -#: builtin.c:1923 +#: builtin.c:1913 msgid "strftime: received non-numeric second argument" msgstr "strftime: 非数値の第二引数を受け取りました" -#: builtin.c:1927 +#: builtin.c:1917 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "" -#: builtin.c:1934 +#: builtin.c:1924 msgid "strftime: received non-string first argument" msgstr "strftime: 非文字列の第一引数を受け取りました" -#: builtin.c:1941 +#: builtin.c:1931 msgid "strftime: received empty format string" msgstr "strftime: 空の書式文字列を受け取りました" -#: builtin.c:2007 +#: builtin.c:1997 msgid "mktime: received non-string argument" msgstr "mktime: 非文字列引数を受け取りました" -#: builtin.c:2024 +#: builtin.c:2014 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: 一つ以上の値がデフォルトの範囲を超えています" -#: builtin.c:2059 +#: builtin.c:2049 msgid "'system' function not allowed in sandbox mode" msgstr "サンドボックスモードでは 'system' 関数は許可されていません" -#: builtin.c:2064 +#: builtin.c:2054 msgid "system: received non-string argument" msgstr "system: 文字列では無い引数を受け取りました" -#: builtin.c:2184 +#: builtin.c:2174 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "初期化されていないフィールド `$%d' への参照です" -#: builtin.c:2271 +#: builtin.c:2259 msgid "tolower: received non-string argument" msgstr "tolower: 非文字列引数を受け取りました" -#: builtin.c:2305 +#: builtin.c:2290 msgid "toupper: received non-string argument" msgstr "toupper: 非文字列引数を受け取りました" -#: builtin.c:2341 mpfr.c:672 +#: builtin.c:2323 mpfr.c:679 msgid "atan2: received non-numeric first argument" msgstr "atan2: 非数値の第一引数を受け取りました" -#: builtin.c:2343 mpfr.c:674 +#: builtin.c:2325 mpfr.c:681 msgid "atan2: received non-numeric second argument" msgstr "atan2: 非数値の第二引数を受け取りました" -#: builtin.c:2362 +#: builtin.c:2344 msgid "sin: received non-numeric argument" msgstr "sin: 非数値の引数を受け取りました" -#: builtin.c:2378 +#: builtin.c:2360 msgid "cos: received non-numeric argument" msgstr "cos: 非数値の引数を受け取りました" -#: builtin.c:2431 mpfr.c:1156 +#: builtin.c:2413 mpfr.c:1176 msgid "srand: received non-numeric argument" msgstr "srand: 非数値の引数を受け取りました" -#: builtin.c:2462 +#: builtin.c:2444 msgid "match: third argument is not an array" msgstr "match: 第三引数が配列ではありません" -#: builtin.c:2734 -msgid "gensub: third argument of 0 treated as 1" +#: builtin.c:2705 +#, fuzzy, c-format +msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: 第三引数が 0 です。1 を代わりに使用します" -#: builtin.c:3030 +#: builtin.c:2720 +#, fuzzy, c-format +msgid "gensub: third argument %g treated as 1" +msgstr "gensub: 第三引数が 0 です。1 を代わりに使用します" + +#: builtin.c:3020 msgid "lshift: received non-numeric first argument" msgstr "lshift: 非数値の第一引数を受け取りました" -#: builtin.c:3032 +#: builtin.c:3022 msgid "lshift: received non-numeric second argument" msgstr "lshift: 非数値の第二引数を受け取りました" -#: builtin.c:3038 +#: builtin.c:3028 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%f, %f): 負の数値を使用すると異常な結果になります" -#: builtin.c:3040 +#: builtin.c:3030 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): 小数点以下は切り捨てられます" -#: builtin.c:3042 +#: builtin.c:3032 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f): シフト値が大き過ぎると異常な結果になります" -#: builtin.c:3067 +#: builtin.c:3057 msgid "rshift: received non-numeric first argument" msgstr "rshift: 非数値の第一引数を受け取りました" -#: builtin.c:3069 +#: builtin.c:3059 msgid "rshift: received non-numeric second argument" msgstr "rshift: 非数値の第二引数を受け取りました" -#: builtin.c:3075 +#: builtin.c:3065 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%f, %f): 負の数値を使用すると異常な結果になります" -#: builtin.c:3077 +#: builtin.c:3067 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): 小数点以下は切り捨てられます" -#: builtin.c:3079 +#: builtin.c:3069 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f): シフト値が大き過ぎると異常な結果になります" -#: builtin.c:3104 mpfr.c:968 +#: builtin.c:3094 mpfr.c:988 msgid "and: called with less than two arguments" msgstr "and: 2個未満の引数で呼び出されました" -#: builtin.c:3109 +#: builtin.c:3099 #, c-format msgid "and: argument %d is non-numeric" msgstr "and: 引数 %d が非数値です" -#: builtin.c:3113 +#: builtin.c:3103 #, fuzzy, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "and(%lf, %lf): 負の数値を使用すると異常な結果になります" -#: builtin.c:3136 mpfr.c:1000 +#: builtin.c:3126 mpfr.c:1020 msgid "or: called with less than two arguments" msgstr "or: 2個未満の引数で呼び出されました" -#: builtin.c:3141 +#: builtin.c:3131 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: 引数 %d が非数値です" -#: builtin.c:3145 +#: builtin.c:3135 #, fuzzy, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "compl(%lf): 負の数値を使用すると異常な結果になります" -#: builtin.c:3167 mpfr.c:1031 +#: builtin.c:3157 mpfr.c:1051 #, fuzzy msgid "xor: called with less than two arguments" msgstr "xor: 2個未満の引数で呼び出されました" -#: builtin.c:3173 +#: builtin.c:3163 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: 引数 %d が非数値です" -#: builtin.c:3177 +#: builtin.c:3167 #, fuzzy, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "xor(%lf, %lf): 負の数値を使用すると異常な結果になります" -#: builtin.c:3202 mpfr.c:787 +#: builtin.c:3192 mpfr.c:807 msgid "compl: received non-numeric argument" msgstr "compl: 非数値の引数を受け取りました" -#: builtin.c:3208 +#: builtin.c:3198 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): 負の数値を使用すると異常な結果になります" -#: builtin.c:3210 +#: builtin.c:3200 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): 小数点以下は切り捨てられます" -#: builtin.c:3379 +#: builtin.c:3369 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s' は無効なロケール区分です" @@ -1204,41 +1225,47 @@ msgstr "" msgid "watch var - set a watchpoint for a variable." msgstr "" -#: command.y:1011 debug.c:401 msg.c:135 +#: command.y:901 +msgid "" +"where [N] - (same as backtrace) print trace of all or N innermost (outermost " +"if N < 0) frames." +msgstr "" + +#: command.y:1013 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "エラー: " -#: command.y:1051 +#: command.y:1053 #, fuzzy, c-format msgid "can't read command (%s)\n" msgstr "`%s' からリダイレクトできません (%s)" -#: command.y:1065 +#: command.y:1067 #, fuzzy, c-format msgid "can't read command (%s)" msgstr "`%s' からリダイレクトできません (%s)" -#: command.y:1116 +#: command.y:1118 #, fuzzy msgid "invalid character in command" msgstr "無効な文字クラス名です" -#: command.y:1152 +#: command.y:1154 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "" -#: command.y:1222 +#: command.y:1224 #, c-format msgid "%s" msgstr "" -#: command.y:1284 +#: command.y:1286 msgid "invalid character" msgstr "無効な文字です" -#: command.y:1455 +#: command.y:1457 #, c-format msgid "undefined command: %s\n" msgstr "" @@ -1753,69 +1780,71 @@ msgstr "" msgid "`return' not allowed in current context; statement ignored" msgstr "" -#: debug.c:5590 +#: debug.c:5604 #, c-format msgid "No symbol `%s' in current context" msgstr "" -#: 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 +#: dfa.c:1063 dfa.c:1066 dfa.c:1085 dfa.c:1095 dfa.c:1107 dfa.c:1143 +#: dfa.c:1152 dfa.c:1155 dfa.c:1160 dfa.c:1174 dfa.c:1222 msgid "unbalanced [" msgstr "" -#: dfa.c:1174 +#: dfa.c:1119 #, fuzzy msgid "invalid character class" msgstr "無効な文字クラス名です" -#: dfa.c:1316 +#: dfa.c:1265 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "" -#: dfa.c:1366 +#: dfa.c:1327 msgid "unfinished \\ escape" msgstr "" -#: dfa.c:1513 regcomp.c:161 -msgid "Invalid content of \\{\\}" +#: dfa.c:1474 +#, fuzzy +msgid "invalid content of \\{\\}" msgstr "\\{\\} の中身が無効です" -#: dfa.c:1516 regcomp.c:176 -msgid "Regular expression too big" +#: dfa.c:1477 +#, fuzzy +msgid "regular expression too big" msgstr "正規表現が大きすぎます" -#: dfa.c:1936 +#: dfa.c:1912 msgid "unbalanced (" msgstr "" -#: dfa.c:2062 +#: dfa.c:2038 msgid "no syntax specified" msgstr "" -#: dfa.c:2070 +#: dfa.c:2046 msgid "unbalanced )" msgstr "" -#: eval.c:394 +#: eval.c:396 #, c-format msgid "unknown nodetype %d" msgstr "不明なノード型 %d です" -#: eval.c:405 eval.c:419 +#: eval.c:407 eval.c:421 #, c-format msgid "unknown opcode %d" msgstr "不明なオペコード %d です" -#: eval.c:416 +#: eval.c:418 #, c-format msgid "opcode %s not an operator or keyword" msgstr "オペコード %s は演算子または予約語ではありません" -#: eval.c:472 +#: eval.c:474 msgid "buffer overflow in genflags2str" msgstr "genflags2str 内でバッファオーバーフローが発生しました" -#: eval.c:675 +#: eval.c:676 #, c-format msgid "" "\n" @@ -1826,94 +1855,94 @@ msgstr "" "\t# 呼出関数スタック:\n" "\n" -#: eval.c:704 +#: eval.c:705 msgid "`IGNORECASE' is a gawk extension" msgstr "`IGNORECASE' は gawk 拡張です" -#: eval.c:736 +#: eval.c:737 msgid "`BINMODE' is a gawk extension" msgstr "`BINMODE' は gawk 拡張です" -#: eval.c:794 +#: eval.c:795 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "BINMODE 値 `%s' は無効です。代わりに 3 を使用します" -#: eval.c:885 +#: eval.c:912 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "誤った `%sFMT' 指定 `%s' です" -#: eval.c:969 +#: eval.c:996 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "`LINT' への代入に従い `--lint' を無効にします" -#: eval.c:1147 +#: eval.c:1174 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "初期化されていない引数 `%s' への参照です" -#: eval.c:1148 +#: eval.c:1175 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "初期化されていない変数 `%s' への参照です" -#: eval.c:1166 +#: eval.c:1193 msgid "attempt to field reference from non-numeric value" msgstr "非数値を使用したフイールド参照の試みです" -#: eval.c:1168 +#: eval.c:1195 msgid "attempt to field reference from null string" msgstr "NULL 文字列を使用してフィールドの参照を試みています" -#: eval.c:1176 +#: eval.c:1203 #, c-format msgid "attempt to access field %ld" msgstr "フィールド %ld へのアクセスの試みです" -#: eval.c:1185 +#: eval.c:1212 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "初期化されていないフィールド `$%ld' への参照です" -#: eval.c:1272 +#: eval.c:1299 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "宣言されている数より多い引数を使って関数 `%s' を呼び出しました" -#: eval.c:1473 +#: eval.c:1500 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: 予期しない型 `%s' です" -#: eval.c:1569 +#: eval.c:1596 msgid "division by zero attempted in `/='" msgstr "`/=' 内でゼロによる除算が行われました" -#: eval.c:1576 +#: eval.c:1603 #, c-format msgid "division by zero attempted in `%%='" msgstr "`%%=' 内でゼロによる除算が行われました" -#: ext.c:89 ext.c:171 +#: ext.c:65 ext.c:147 msgid "extensions are not allowed in sandbox mode" msgstr "サンドボックスモード内では拡張は許可されていません" -#: ext.c:92 +#: ext.c:68 #, fuzzy msgid "-l / @load are gawk extensions" msgstr "@include は gawk 拡張です" -#: ext.c:95 +#: ext.c:71 msgid "load_ext: received NULL lib_name" msgstr "" -#: ext.c:98 +#: ext.c:74 #, fuzzy, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "致命的: extension: `%s' を開くことが出来ません (%s)\n" -#: ext.c:104 +#: ext.c:80 #, fuzzy, c-format msgid "" "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" @@ -1921,32 +1950,32 @@ msgstr "" "致命的: extension: ライブラリ `%s': `plugin_is_GPL_compatible' が定義されてい" "ません (%s)\n" -#: ext.c:110 +#: ext.c:86 #, fuzzy, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "" "致命的: extension: ライブラリ `%s': 関数 `%s' を呼び出すことが出来ません " "(%s)\n" -#: ext.c:114 +#: ext.c:90 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "" -#: ext.c:174 +#: ext.c:150 msgid "`extension' is a gawk extension" msgstr "`extension' は gawk 拡張です" -#: ext.c:177 +#: ext.c:153 msgid "extension: received NULL lib_name" msgstr "" -#: ext.c:180 +#: ext.c:156 #, fuzzy, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "致命的: extension: `%s' を開くことが出来ません (%s)\n" -#: ext.c:186 +#: ext.c:162 #, fuzzy, c-format msgid "" "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" @@ -1954,93 +1983,93 @@ msgstr "" "致命的: extension: ライブラリ `%s': `plugin_is_GPL_compatible' が定義されてい" "ません (%s)\n" -#: ext.c:190 +#: ext.c:166 #, fuzzy, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "" "致命的: extension: ライブラリ `%s': 関数 `%s' を呼び出すことが出来ません " "(%s)\n" -#: ext.c:221 +#: ext.c:197 #, fuzzy msgid "make_builtin: missing function name" msgstr "extension: 関数名がありません" -#: ext.c:236 +#: ext.c:212 #, fuzzy, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "extension: 関数 `%s' を再定義できません" -#: ext.c:240 +#: ext.c:216 #, fuzzy, c-format msgid "make_builtin: function `%s' already defined" msgstr "extension: 関数 `%s' は既に定義されています" -#: ext.c:244 +#: ext.c:220 #, fuzzy, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "extension: 関数名 `%s' は前に定義されています" -#: ext.c:246 +#: ext.c:222 #, fuzzy, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "extension: gawk に組み込まれている `%s' は関数名として使用出来ません" -#: ext.c:249 ext.c:304 +#: ext.c:225 ext.c:280 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: 関数 `%s' の引数の数が負です" -#: ext.c:276 +#: ext.c:252 msgid "extension: missing function name" msgstr "extension: 関数名がありません" -#: ext.c:279 ext.c:283 +#: ext.c:255 ext.c:259 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: 関数名 `%2$s' の中で不正な文字 `%1$c' が使用されています" -#: ext.c:291 +#: ext.c:267 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: 関数 `%s' を再定義できません" -#: ext.c:295 +#: ext.c:271 #, c-format msgid "extension: function `%s' already defined" msgstr "extension: 関数 `%s' は既に定義されています" -#: ext.c:299 +#: ext.c:275 #, c-format msgid "extension: function name `%s' previously defined" msgstr "extension: 関数名 `%s' は前に定義されています" -#: ext.c:301 +#: ext.c:277 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" msgstr "extension: gawk に組み込まれている `%s' は関数名として使用出来ません" -#: ext.c:375 +#: ext.c:351 #, c-format msgid "function `%s' defined to take no more than %d argument(s)" msgstr "関数 `%s' に使える引数の数は `%d' 以下と定義されています" -#: ext.c:378 +#: ext.c:354 #, c-format msgid "function `%s': missing argument #%d" msgstr "関数 `%s': 引数 #%d がありません" -#: ext.c:395 +#: ext.c:371 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "関数 `%s': 引数 #%d: スカラーを配列として使用する試みです" -#: ext.c:399 +#: ext.c:375 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "関数 `%s': 引数 #%d: 配列をスカラーとして使用する試みです" -#: ext.c:413 +#: ext.c:389 msgid "dynamic loading of library not supported" msgstr "" @@ -2200,7 +2229,7 @@ msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" msgid "inplace_begin: in-place editing already active" msgstr "" -#: extension/inplace.c:133 extension/inplace.c:207 +#: extension/inplace.c:133 extension/inplace.c:210 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "" @@ -2229,55 +2258,55 @@ msgstr "" msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "" -#: extension/inplace.c:178 +#: extension/inplace.c:181 #, fuzzy, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "%s: 閉じるのに失敗しました (%s)" -#: extension/inplace.c:185 +#: extension/inplace.c:188 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:188 +#: extension/inplace.c:191 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:191 +#: extension/inplace.c:194 #, fuzzy, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "%s: 閉じるのに失敗しました (%s)" -#: extension/inplace.c:210 +#: extension/inplace.c:213 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:217 +#: extension/inplace.c:220 msgid "inplace_end: in-place editing not active" msgstr "" -#: extension/inplace.c:223 +#: extension/inplace.c:226 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:226 +#: extension/inplace.c:229 #, fuzzy, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "%s: 閉じるのに失敗しました (%s)" -#: extension/inplace.c:230 +#: extension/inplace.c:233 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:243 +#: extension/inplace.c:246 #, fuzzy, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "パイプ `%s' をフラッシュできません (%s)。" -#: extension/inplace.c:253 +#: extension/inplace.c:256 #, fuzzy, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "fd %d (`%s') を閉じることができません (%s)" @@ -2327,52 +2356,56 @@ msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" msgid "readfile: called with no arguments" msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" -#: extension/rwarray.c:124 +#: extension/revoutput.c:125 +msgid "revoutput: could not initialize REVOUT variable" +msgstr "" + +#: extension/rwarray.c:124 extension/rwarray0.c:109 #, fuzzy msgid "writea: called with too many arguments" msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" -#: extension/rwarray.c:131 +#: extension/rwarray.c:131 extension/rwarray0.c:116 #, fuzzy, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "exp: 引数 %g が範囲外です" -#: extension/rwarray.c:137 +#: extension/rwarray.c:137 extension/rwarray0.c:122 #, fuzzy, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "split: 第四引数が配列ではありません" -#: extension/rwarray.c:184 +#: extension/rwarray.c:184 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "" -#: extension/rwarray.c:198 +#: extension/rwarray.c:198 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "" -#: extension/rwarray.c:280 +#: extension/rwarray.c:280 extension/rwarray0.c:265 #, fuzzy msgid "reada: called with too many arguments" msgstr "sqrt: 負の値 %g を引数に使用して呼び出されました" -#: extension/rwarray.c:287 +#: extension/rwarray.c:287 extension/rwarray0.c:272 #, fuzzy, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "exp: 引数 %g が範囲外です" -#: extension/rwarray.c:293 +#: extension/rwarray.c:293 extension/rwarray0.c:278 #, fuzzy, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "adump: 引数が配列ではありません" -#: extension/rwarray.c:337 +#: extension/rwarray.c:337 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "" -#: extension/rwarray.c:374 +#: extension/rwarray.c:374 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "" @@ -2405,80 +2438,80 @@ msgstr "exp: 引数 %g が範囲外です" msgid "sleep: not supported on this platform" msgstr "" -#: field.c:345 +#: field.c:346 msgid "NF set to negative value" msgstr "NF が負の値に設定されています" -#: field.c:971 field.c:978 field.c:982 +#: field.c:958 field.c:965 field.c:969 msgid "split: fourth argument is a gawk extension" msgstr "split: 第四引数は gawk 拡張です" -#: field.c:975 +#: field.c:962 msgid "split: fourth argument is not an array" msgstr "split: 第四引数が配列ではありません" -#: field.c:989 +#: field.c:976 msgid "split: second argument is not an array" msgstr "split: 第二引数が配列ではありません" -#: field.c:993 +#: field.c:980 msgid "split: cannot use the same array for second and fourth args" msgstr "split: 第二引数と第四引数に同じ配列を使用することは出来ません" -#: field.c:998 +#: field.c:985 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "split: 第四引数に第二引数の部分配列を使用することは出来ません" -#: field.c:1001 +#: field.c:988 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "split: 第二引数に第四引数の部分配列を使用することは出来ません" -#: field.c:1032 +#: field.c:1019 msgid "split: null string for third arg is a gawk extension" msgstr "split: 第三引数に NULL 文字列を使用することは gawk 拡張です" -#: field.c:1072 +#: field.c:1059 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: 第四引数が配列ではありません" -#: field.c:1077 +#: field.c:1064 msgid "patsplit: second argument is not an array" msgstr "patsplit: 第二引数が配列ではありません" -#: field.c:1083 +#: field.c:1070 msgid "patsplit: third argument must be non-null" msgstr "patsplit: 第三引数は非 NULL でなければいけません" -#: field.c:1087 +#: field.c:1074 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "patsplit: 第二引数と第四引数に同じ配列を使用することは出来ません" -#: field.c:1092 +#: field.c:1079 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "patsplit: 第四引数に第二引数の部分配列を使用することは出来ません" -#: field.c:1095 +#: field.c:1082 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "patsplit: 第二引数に第四引数の部分配列を使用することは出来ません" -#: field.c:1133 +#: field.c:1120 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "`FIELDWIDTHS' は gawk 拡張です" -#: field.c:1197 +#: field.c:1184 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "`%s' 付近の FIELDWIDTHS 値が無効です" -#: field.c:1270 +#: field.c:1257 msgid "null string for `FS' is a gawk extension" msgstr "`FS' に NULL 文字列を使用するのは gawk 拡張です" -#: field.c:1274 +#: field.c:1261 msgid "old awk does not support regexps as value of `FS'" msgstr "古い awk は `FS' の値として正規表現をサポートしません" -#: field.c:1393 +#: field.c:1380 msgid "`FPAT' is a gawk extension" msgstr "`FPAT' は gawk 拡張です" @@ -2494,21 +2527,21 @@ msgstr "" msgid "node_to_awk_value: received null val" msgstr "" -#: gawkapi.c:807 +#: gawkapi.c:809 #, fuzzy msgid "remove_element: received null array" msgstr "length: 配列引数を受け取りました" -#: gawkapi.c:810 +#: gawkapi.c:812 msgid "remove_element: received null subscript" msgstr "" -#: gawkapi.c:947 +#: gawkapi.c:949 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "" -#: gawkapi.c:952 +#: gawkapi.c:954 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "" @@ -2568,522 +2601,490 @@ msgstr "%s: オプション '-W %s' は引数を取ることができません\n msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: オプション '-W %s' には引数が必要です\n" -#: io.c:392 +#: io.c:423 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "コマンドライン引数 `%s' はディレクトリです: スキップされました" -#: io.c:395 io.c:513 +#: io.c:426 io.c:544 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "ファイル `%s' を読み込み用に開けません (%s)" -#: io.c:640 +#: io.c:671 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "fd %d (`%s') を閉じることができません (%s)" -#: io.c:716 +#: io.c:749 msgid "redirection not allowed in sandbox mode" msgstr "サンドボックスモード内ではリダイレクトは許可されていません" -#: io.c:750 +#: io.c:783 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "`%s' リダイレクトの命令式に数値しか記述されていません。" -#: io.c:756 +#: io.c:789 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "`%s' リダイレクトの命令式が空列です。" -#: io.c:761 +#: io.c:794 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" msgstr "" "`%2$s' リダイレクトに論理演算の結果と思われるファイル名 `%1$s' が使われていま" "す。" -#: io.c:809 +#: io.c:842 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "ファイル `%.*s' で必要以上に `>' と `>>' を組合せています。" -#: io.c:863 +#: io.c:896 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "出力用にパイプ `%s' を開けません (%s)" -#: io.c:873 +#: io.c:906 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "入力用にパイプ `%s' を開けません (%s)" -#: io.c:904 +#: io.c:937 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" msgstr "入出力用の双方向パイプ `%s' が開けません (%s)" -#: io.c:986 +#: io.c:1019 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "`%s' からリダイレクトできません (%s)" -#: io.c:989 +#: io.c:1022 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "`%s' にリダイレクトできません (%s)" -#: io.c:1040 +#: io.c:1073 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "開いているファイルの数がシステム制限に達しました。ファイル記述子を多重化しま" "す。" -#: io.c:1056 +#: io.c:1089 #, c-format msgid "close of `%s' failed (%s)." msgstr "`%s' を閉じるのに失敗しました (%s)" -#: io.c:1064 +#: io.c:1097 msgid "too many pipes or input files open" msgstr "開いているパイプまたは入力ファイルの数が多過ぎます。" -#: io.c:1086 +#: io.c:1119 msgid "close: second argument must be `to' or `from'" msgstr "close: 第二引数は `to' または `from' でなければいけません" -#: io.c:1103 +#: io.c:1136 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: `%.*s' は開いているファイル、パイプ、プロセス共有ではありません" -#: io.c:1108 +#: io.c:1141 msgid "close of redirection that was never opened" msgstr "開いてないリダイレクトを閉じようとしています" -#: io.c:1205 +#: io.c:1238 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: リダイレクト `%s' は `|&' を使用して開かれていません。第二引数は無視さ" "れました" -#: io.c:1222 +#: io.c:1255 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "パイプ `%2$s' を閉じたときの状態コードが失敗 (%1$d) でした (%3$s)。" -#: io.c:1225 +#: io.c:1258 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "ファイル `%2$s' を閉じたときの状態コードが失敗 (%1$d) でした (%3$s)。" -#: io.c:1245 +#: io.c:1278 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "ソケット `%s' を明示して閉じていません。" -#: io.c:1248 +#: io.c:1281 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "並行プロセス `%s' を明示して閉じていません。" -#: io.c:1251 +#: io.c:1284 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "パイプ `%s' を明示して閉じていません。" -#: io.c:1254 +#: io.c:1287 #, c-format msgid "no explicit close of file `%s' provided" msgstr "ファイル `%s' を明示して閉じていません。" -#: io.c:1284 io.c:1342 main.c:864 main.c:906 +#: io.c:1317 io.c:1375 main.c:628 main.c:670 #, c-format msgid "error writing standard output (%s)" msgstr "標準出力への書込みエラー (%s)" -#: io.c:1289 io.c:1348 main.c:866 +#: io.c:1322 io.c:1381 main.c:630 #, c-format msgid "error writing standard error (%s)" msgstr "標準エラーへの書込みエラー (%s)" -#: io.c:1297 +#: io.c:1330 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "パイプ `%s' をフラッシュできません (%s)。" -#: io.c:1300 +#: io.c:1333 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "`%s' へ接続するパイプを並行プロセスからフラッシュできません (%s)。" -#: io.c:1303 +#: io.c:1336 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "ファイル `%s' をフラッシュできません (%s)。" -#: io.c:1420 +#: io.c:1453 #, c-format msgid "local port %s invalid in `/inet'" msgstr "`/inet' 内のローカルポート %s が無効です" -#: io.c:1438 +#: io.c:1471 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "リモートのホストおよびポート情報 (%s, %s) が無効です" -#: io.c:1590 -#, c-format -msgid "no (known) protocol supplied in special filename `%s'" -msgstr "" -"スペシャルファイル名 `%s' に(認識できる)プロトコルが指定されていません" - -#: io.c:1604 -#, c-format -msgid "special file name `%s' is incomplete" -msgstr "スペシャルファイル名 `%s' は不完全です" - -#: io.c:1621 -msgid "must supply a remote hostname to `/inet'" -msgstr "`/inet' にはリモートホスト名を与えなければいけません" - -#: io.c:1639 -msgid "must supply a remote port to `/inet'" -msgstr "`/inet' にはリモートポート番号を与えなければいけません" - -#: io.c:1685 +#: io.c:1673 msgid "TCP/IP communications are not supported" msgstr "TCP/IP 通信はサポートされていません" -#: io.c:1867 +#: io.c:1854 #, c-format msgid "could not open `%s', mode `%s'" msgstr "`%s' をモード `%s' で開けません" -#: io.c:1917 +#: io.c:1904 #, c-format msgid "close of master pty failed (%s)" msgstr "マスター pty を閉じるのに失敗しました (%s)" -#: io.c:1919 io.c:2105 io.c:2305 +#: io.c:1906 io.c:2092 io.c:2293 #, c-format msgid "close of stdout in child failed (%s)" msgstr "子プロセスが標準出力を閉じるのに失敗しました (%s)" -#: io.c:1922 +#: io.c:1909 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "子プロセスがスレーブ pty を標準出力に移動できません (dup: %s)。" -#: io.c:1924 io.c:2110 +#: io.c:1911 io.c:2097 #, c-format msgid "close of stdin in child failed (%s)" msgstr "子プロセスが標準入力を閉じられません (%s)。" -#: io.c:1927 +#: io.c:1914 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "子プロセスがスレーブ pty を標準入力に移動できません (dup: %s)。" -#: io.c:1929 io.c:1951 +#: io.c:1916 io.c:1938 #, c-format msgid "close of slave pty failed (%s)" msgstr "スレーブ pty を閉じるのに失敗しました (%s)" -#: io.c:2040 io.c:2108 io.c:2276 io.c:2308 +#: io.c:2027 io.c:2095 io.c:2264 io.c:2296 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "子プロセスがパイプを標準出力に移動できません (dup: %s)。" -#: io.c:2047 io.c:2113 +#: io.c:2034 io.c:2100 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "子プロセスがパイプを標準入力に移動できません (dup: %s)。" -#: io.c:2073 io.c:2298 +#: io.c:2060 io.c:2286 msgid "restoring stdout in parent process failed\n" msgstr "親プロセスが標準出力を復旧できません。\n" -#: io.c:2081 +#: io.c:2068 msgid "restoring stdin in parent process failed\n" msgstr "親プロセスが標準入力を復旧できません。\n" -#: io.c:2116 io.c:2310 io.c:2324 +#: io.c:2103 io.c:2298 io.c:2313 #, c-format msgid "close of pipe failed (%s)" msgstr "パイプを閉じられません (%s)。" -#: io.c:2174 +#: io.c:2162 msgid "`|&' not supported" msgstr "`|&' は使用できません。" -#: io.c:2261 +#: io.c:2249 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "パイプ `%s' が開けません (%s)。" -#: io.c:2318 +#: io.c:2307 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "`%s' 用の子プロセスを実行できません (fork: %s)。" -#: io.c:2790 +#: io.c:2734 msgid "register_input_parser: received NULL pointer" msgstr "" -#: io.c:2818 +#: io.c:2762 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" -#: io.c:2825 +#: io.c:2769 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "" -#: io.c:2845 +#: io.c:2789 msgid "register_output_wrapper: received NULL pointer" msgstr "" -#: io.c:2873 +#: io.c:2817 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" -#: io.c:2880 +#: io.c:2824 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "" -#: io.c:2901 +#: io.c:2845 msgid "register_output_processor: received NULL pointer" msgstr "" -#: io.c:2930 +#: io.c:2874 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" msgstr "" -#: io.c:2939 +#: io.c:2883 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "" -#: io.c:3064 +#: io.c:3008 #, c-format msgid "data file `%s' is empty" msgstr "データファイル `%s' は空です。" -#: io.c:3106 io.c:3114 +#: io.c:3050 io.c:3058 msgid "could not allocate more input memory" msgstr "入力用メモリーをこれ以上確保できません。" -#: io.c:3682 +#: io.c:3636 msgid "multicharacter value of `RS' is a gawk extension" msgstr "複数の文字を `RS' に使用するのは gawk 特有の拡張です。" -#: io.c:3771 +#: io.c:3783 msgid "IPv6 communication is not supported" msgstr "IPv6 通信はサポートされていません" -#: main.c:405 -msgid "empty argument to `-e/--source' ignored" -msgstr "`-e/--source' への空の引数は無視されました" - -#: main.c:495 -#, c-format -msgid "%s: option `-W %s' unrecognized, ignored\n" -msgstr "%s: オプション `-W %s' は認識できません。無視されました\n" - -#: main.c:541 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: 引数が必要なオプション -- %c\n" - -#: main.c:562 +#: main.c:321 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "環境変数 `POSIXLY_CORRECT' が指定されています。オプション `--posix' を有効に" "します" -#: main.c:568 +#: main.c:327 msgid "`--posix' overrides `--traditional'" msgstr "オプション `--posix' は `--traditional' を無効にします。" -#: main.c:579 +#: main.c:338 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "" "オプション `--posix'/`--traditional' は `--non-decimal-data' を無効にします。" -#: main.c:583 +#: main.c:342 #, c-format msgid "running %s setuid root may be a security problem" msgstr "" "setuid root で %s を実行すると、セキュリティ上の問題が発生する場合がありま" "す。" -#: main.c:588 +#: main.c:346 #, fuzzy msgid "`--posix' overrides `--characters-as-bytes'" msgstr "`--posix' は `--binary' を上書きします" -#: main.c:647 +#: main.c:404 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "標準入力をバイナリモードに設定できません (%s)" -#: main.c:650 +#: main.c:407 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "標準出力をバイナリモードに設定できません (%s)" -#: main.c:652 +#: main.c:409 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "標準エラーをバイナリモードに設定できません (%s)" -#: main.c:710 +#: main.c:469 msgid "no program text at all!" msgstr "プログラム文が全くありません!" -#: main.c:799 +#: main.c:563 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" "使用法: %s [POSIX または GNU 形式のオプション] -f progfile [--] file ...\n" -#: main.c:801 +#: main.c:565 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" "使用法: %s [POSIX または GNU 形式のオプション] [--] %cprogram%c file ...\n" -#: main.c:806 +#: main.c:570 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX オプション:\t\tGNU 長い形式のオプション: (標準)\n" -#: main.c:807 +#: main.c:571 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f progfile\t\t--file=progfile\n" -#: main.c:808 +#: main.c:572 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:809 +#: main.c:573 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=val\t\t--assign=var=val\n" -#: main.c:810 +#: main.c:574 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "短いオプション:\t\tGNU 長い形式のオプション: (拡張)\n" -#: main.c:811 +#: main.c:575 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:812 +#: main.c:576 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:813 +#: main.c:577 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:814 +#: main.c:578 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[file]\t\t--dump-variables[=file]\n" -#: main.c:815 +#: main.c:579 #, fuzzy msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-p[file]\t\t--profile[=file]\n" -#: main.c:816 +#: main.c:580 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'program-text'\t--source='program-text'\n" -#: main.c:817 +#: main.c:581 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E file\t\t\t--exec=file\n" -#: main.c:818 +#: main.c:582 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:819 +#: main.c:583 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:820 +#: main.c:584 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "" -#: main.c:821 +#: main.c:585 msgid "\t-l library\t\t--load=library\n" msgstr "" -#: main.c:822 -msgid "\t-L [fatal]\t\t--lint[=fatal]\n" +#: main.c:586 +#, fuzzy +msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: 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:824 +#: main.c:587 #, fuzzy msgid "\t-M\t\t\t--bignum\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:825 +#: main.c:588 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:826 +#: main.c:589 +msgid "\t-n\t\t\t--non-decimal-data\n" +msgstr "\t-n\t\t\t--non-decimal-data\n" + +#: main.c:590 #, fuzzy msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-p[file]\t\t--profile[=file]\n" -#: main.c:827 +#: main.c:591 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:828 +#: main.c:592 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[file]\t\t--profile[=file]\n" -#: main.c:829 +#: main.c:593 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:830 +#: main.c:594 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:831 +#: main.c:595 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:832 +#: main.c:596 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:833 +#: main.c:597 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:835 +#: main.c:599 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:838 +#: main.c:602 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3092,7 +3093,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:847 +#: main.c:611 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3107,7 +3108,7 @@ msgstr "" "翻訳に関するバグは<translation-team-ja@lists.sourceforge.net>に報告してくださ" "い。\n" -#: main.c:851 +#: main.c:615 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3117,7 +3118,7 @@ msgstr "" "デフォルト設定では、標準入力を読み込み、標準出力に書き出します。\n" "\n" -#: main.c:855 +#: main.c:619 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3127,7 +3128,7 @@ msgstr "" "\tgawk '{ sum += $1 }; END { print sum }' file\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:880 +#: main.c:644 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3146,7 +3147,7 @@ msgstr "" "(at your option) any later version.\n" "\n" -#: main.c:888 +#: main.c:652 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" @@ -3160,7 +3161,7 @@ msgstr "" "GNU General Public License for more details.\n" "\n" -#: main.c:894 +#: main.c:658 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" @@ -3168,16 +3169,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:931 +#: main.c:695 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "POSIX awk では -Ft は FS をタブに設定しません" -#: main.c:1208 +#: main.c:982 #, c-format msgid "unknown value for field spec: %d\n" msgstr "フィールド指定に不明な値があります: %d\n" -#: main.c:1306 +#: main.c:1080 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3186,102 +3187,120 @@ msgstr "" "%s: オプション `-v' の引数 `%s' が `変数=代入値' の形式になっていません。\n" "\n" -#: main.c:1332 +#: main.c:1106 #, c-format msgid "`%s' is not a legal variable name" msgstr "`%s' は不正な変数名です" -#: main.c:1335 +#: main.c:1109 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "`%s' は変数名ではありません。`%s=%s' のファイルを探します。" -#: main.c:1339 +#: main.c:1113 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "gawk に組み込みの `%s' は変数名として使用出来ません" -#: main.c:1344 +#: main.c:1118 #, c-format msgid "cannot use function `%s' as variable name" msgstr "関数 `%s' は変数名として使用出来ません" -#: main.c:1397 +#: main.c:1171 msgid "floating point exception" msgstr "浮動小数点例外" -#: main.c:1404 +#: main.c:1178 msgid "fatal error: internal error" msgstr "致命的エラー: 内部エラー" -#: main.c:1419 +#: main.c:1193 msgid "fatal error: internal error: segfault" msgstr "致命的エラー: 内部エラー: セグメンテーション違反" -#: main.c:1431 +#: main.c:1205 msgid "fatal error: internal error: stack overflow" msgstr "致命的エラー: 内部エラー: スタックオーバーフロー" -#: main.c:1490 +#: main.c:1264 #, c-format msgid "no pre-opened fd %d" msgstr "fd %d が事前に開いていません。" -#: main.c:1497 +#: main.c:1271 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "事前に fd %d 用に /dev/null を開けません。" -#: mpfr.c:550 +#: main.c:1485 +msgid "empty argument to `-e/--source' ignored" +msgstr "`-e/--source' への空の引数は無視されました" + +#: main.c:1556 +msgid "-M ignored: MPFR/GMP support not compiled in" +msgstr "" + +#: main.c:1577 +#, c-format +msgid "%s: option `-W %s' unrecognized, ignored\n" +msgstr "%s: オプション `-W %s' は認識できません。無視されました\n" + +#: main.c:1630 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: 引数が必要なオプション -- %c\n" + +#: mpfr.c:557 #, fuzzy, c-format msgid "PREC value `%.*s' is invalid" msgstr "BINMODE 値 `%s' は無効です。代わりに 3 を使用します" -#: mpfr.c:608 +#: mpfr.c:615 #, fuzzy, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "BINMODE 値 `%s' は無効です。代わりに 3 を使用します" -#: mpfr.c:698 +#: mpfr.c:711 #, fuzzy, c-format msgid "%s: received non-numeric argument" msgstr "cos: 非数値の引数を受け取りました" -#: mpfr.c:800 +#: mpfr.c:820 #, fuzzy msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%lf): 負の数値を使用すると異常な結果になります" -#: mpfr.c:804 +#: mpfr.c:824 #, fuzzy msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%lf): 小数点以下は切り捨てられます" -#: mpfr.c:816 +#: mpfr.c:836 #, fuzzy, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "compl(%lf): 負の数値を使用すると異常な結果になります" -#: mpfr.c:835 +#: mpfr.c:855 #, fuzzy, c-format msgid "%s: received non-numeric argument #%d" msgstr "cos: 非数値の引数を受け取りました" -#: mpfr.c:845 +#: mpfr.c:865 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "" -#: mpfr.c:857 +#: mpfr.c:877 #, fuzzy msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "and(%lf, %lf): 負の数値を使用すると異常な結果になります" -#: mpfr.c:863 +#: mpfr.c:883 #, fuzzy msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "and(%lf, %lf): 小数点以下は切り捨てられます" -#: mpfr.c:878 +#: mpfr.c:898 #, fuzzy, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "and(%lf, %lf): 負の数値を使用すると異常な結果になります" @@ -3291,24 +3310,24 @@ msgstr "and(%lf, %lf): 負の数値を使用すると異常な結果になりま msgid "cmd. line:" msgstr "コマンドライン:" -#: node.c:421 +#: node.c:409 msgid "backslash at end of string" msgstr "文字列の終りにバックスラッシュが使われています。" -#: node.c:500 +#: node.c:488 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "古い awk は `\\%c' エスケープシーケンスをサポートしません" -#: node.c:551 +#: node.c:539 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX では `\\x' エスケープは許可されていません" -#: node.c:557 +#: node.c:545 msgid "no hex digits in `\\x' escape sequence" msgstr "`\\x' エスケープシーケンスに十六進数がありません" -#: node.c:579 +#: node.c:567 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3317,12 +3336,12 @@ msgstr "" "十六進エスケープ \\x%.*s (%d 文字) はおそらく予期したようには解釈されないで" "しょう" -#: node.c:594 +#: node.c:582 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "エスケープシーケンス `\\%c' は `%c' と同等に扱われます" -#: node.c:739 +#: node.c:726 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3350,12 +3369,12 @@ msgid "sending profile to standard error" msgstr "プロファイルを標準エラーに送っています" #: profile.c:193 -#, c-format +#, fuzzy, c-format msgid "" -"\t# %s block(s)\n" +"\t# %s rule(s)\n" "\n" msgstr "" -"\t# %s ブロック\n" +"\t# ルール\n" "\n" #: profile.c:198 @@ -3372,24 +3391,24 @@ msgstr "" msgid "internal error: %s with null vname" msgstr "内部エラー: %s の vname が無効です。" -#: profile.c:537 +#: profile.c:538 #, fuzzy msgid "internal error: builtin with null fname" msgstr "内部エラー: %s の vname が無効です。" -#: profile.c:949 +#: profile.c:958 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" "\n" msgstr "" -#: profile.c:972 +#: profile.c:981 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawk プロファイル、作成日時 %s\n" -#: profile.c:1475 +#: profile.c:1521 #, c-format msgid "" "\n" @@ -3398,7 +3417,7 @@ msgstr "" "\n" "\t# 関数一覧(アルファベット順)\n" -#: profile.c:1513 +#: profile.c:1559 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: 不明なリダイレクト型 %d です" @@ -3408,76 +3427,113 @@ msgstr "redir2str: 不明なリダイレクト型 %d です" msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "正規表現の要素 `%.*s' はおそらく `[%.*s]' であるべきです" -#: regcomp.c:131 +#: regcomp.c:139 msgid "Success" msgstr "成功です" -#: regcomp.c:134 +#: regcomp.c:142 msgid "No match" msgstr "一致しません" -#: regcomp.c:137 +#: regcomp.c:145 msgid "Invalid regular expression" msgstr "無効な正規表現です" -#: regcomp.c:140 +#: regcomp.c:148 msgid "Invalid collation character" msgstr "無効な照合文字です" -#: regcomp.c:143 +#: regcomp.c:151 msgid "Invalid character class name" msgstr "無効な文字クラス名です" -#: regcomp.c:146 +#: regcomp.c:154 msgid "Trailing backslash" msgstr "終端のバックスラッシュ" -#: regcomp.c:149 +#: regcomp.c:157 msgid "Invalid back reference" msgstr "無効な前方参照です" -#: regcomp.c:152 -msgid "Unmatched [ or [^" +#: regcomp.c:160 +#, fuzzy +msgid "Unmatched [, [^, [:, [., or [=" msgstr "[ または [^ が不一致です" -#: regcomp.c:155 +#: regcomp.c:163 msgid "Unmatched ( or \\(" msgstr "( または \\( が不一致です" -#: regcomp.c:158 +#: regcomp.c:166 msgid "Unmatched \\{" msgstr "\\{ が不一致です" -#: regcomp.c:164 +#: regcomp.c:169 +msgid "Invalid content of \\{\\}" +msgstr "\\{\\} の中身が無効です" + +#: regcomp.c:172 msgid "Invalid range end" msgstr "無効な範囲終了です" -#: regcomp.c:167 +#: regcomp.c:175 msgid "Memory exhausted" msgstr "メモリを使い果たしました" -#: regcomp.c:170 +#: regcomp.c:178 msgid "Invalid preceding regular expression" msgstr "無効な前方正規表現です" -#: regcomp.c:173 +#: regcomp.c:181 msgid "Premature end of regular expression" msgstr "正規表現が途中で終了しました" -#: regcomp.c:179 +#: regcomp.c:184 +msgid "Regular expression too big" +msgstr "正規表現が大きすぎます" + +#: regcomp.c:187 msgid "Unmatched ) or \\)" msgstr ") または \\) が不一致です" -#: regcomp.c:704 +#: regcomp.c:712 msgid "No previous regular expression" msgstr "以前に正規表現がありません" -#: symbol.c:741 +#: symbol.c:677 +#, fuzzy, c-format +msgid "function `%s': can't use function `%s' as a parameter name" +msgstr "関数 `%s': 関数名を仮引数名として使用出来ません" + +#: symbol.c:809 msgid "can not pop main context" msgstr "" -#~ msgid "attempt to use function `%s' as an array" -#~ msgstr "関数 `%s' を配列として使用する試みです" +#~ msgid "`getline var' invalid inside `%s' rule" +#~ msgstr "`%s' ルールの内部では `getline var' は無効です" + +#~ msgid "`getline' invalid inside `%s' rule" +#~ msgstr "`%s' ルールの内部では `getline' は無効です" + +#~ msgid "no (known) protocol supplied in special filename `%s'" +#~ msgstr "" +#~ "スペシャルファイル名 `%s' に(認識できる)プロトコルが指定されていません" + +#~ msgid "special file name `%s' is incomplete" +#~ msgstr "スペシャルファイル名 `%s' は不完全です" + +#~ msgid "must supply a remote hostname to `/inet'" +#~ msgstr "`/inet' にはリモートホスト名を与えなければいけません" + +#~ msgid "must supply a remote port to `/inet'" +#~ msgstr "`/inet' にはリモートポート番号を与えなければいけません" + +#~ msgid "" +#~ "\t# %s block(s)\n" +#~ "\n" +#~ msgstr "" +#~ "\t# %s ブロック\n" +#~ "\n" #~ msgid "reference to uninitialized element `%s[\"%.*s\"]'" #~ msgstr "初期化されていない要素 `%s[\"%.*s\"]' への参照です" @@ -3561,9 +3617,6 @@ msgstr "" #~ msgid "function `%s' not defined" #~ msgstr "関数 `%s' は定義されていません" -#~ msgid "non-redirected `getline' invalid inside `%s' rule" -#~ msgstr "`%s' ルールの内側ではリダイレクトされていない `getline' は無効です" - #~ msgid "`nextfile' cannot be called from a `%s' rule" #~ msgstr "`nextfile' は `%s' ルールから呼び出すことが出来ません" @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.0.75\n" -"Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2014-04-08 19:23+0300\n" +"Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" +"POT-Creation-Date: 2015-02-26 20:05+0200\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" @@ -38,9 +38,9 @@ msgstr "cubaan untuk menggunakan parameter skalar `%s' sebagai tatasusunan" msgid "attempt to use scalar `%s' as an array" msgstr "cubaan untuk menggunakan skalar `%s' sebagai tatasusunan" -#: 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 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 +#: builtin.c:1665 builtin.c:2092 builtin.c:2106 eval.c:1149 eval.c:1153 +#: eval.c:1558 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "cubaan untuk menggunakan tatasusunan `%s' dalam konteks skalar" @@ -91,422 +91,427 @@ msgstr "" msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "" -#: array.c:1314 +#: array.c:1313 #, c-format msgid "`%s' is invalid as a function name" msgstr "" -#: array.c:1318 +#: array.c:1317 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "" -#: awkgram.y:233 +#: awkgram.y:226 #, c-format msgid "%s blocks must have an action part" msgstr "" -#: awkgram.y:236 +#: awkgram.y:229 msgid "each rule must have a pattern or an action part" msgstr "" -#: awkgram.y:325 awkgram.y:336 +#: awkgram.y:320 awkgram.y:331 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "" -#: awkgram.y:373 +#: awkgram.y:368 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "" -#: awkgram.y:419 +#: awkgram.y:417 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "" -#: awkgram.y:423 +#: awkgram.y:421 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "" -#: awkgram.y:515 +#: awkgram.y:513 #, c-format msgid "duplicate case values in switch body: %s" msgstr "" -#: awkgram.y:536 +#: awkgram.y:534 msgid "duplicate `default' detected in switch body" msgstr "" -#: awkgram.y:796 awkgram.y:3723 +#: awkgram.y:794 awkgram.y:3751 msgid "`break' is not allowed outside a loop or switch" msgstr "" -#: awkgram.y:805 awkgram.y:3715 +#: awkgram.y:803 awkgram.y:3743 msgid "`continue' is not allowed outside a loop" msgstr "" -#: awkgram.y:815 +#: awkgram.y:813 #, c-format msgid "`next' used in %s action" msgstr "" -#: awkgram.y:824 +#: awkgram.y:822 #, c-format msgid "`nextfile' used in %s action" msgstr "" -#: awkgram.y:848 +#: awkgram.y:846 msgid "`return' used outside function context" msgstr "" -#: awkgram.y:922 +#: awkgram.y:920 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" -#: awkgram.y:988 awkgram.y:1037 +#: awkgram.y:986 awkgram.y:1035 msgid "`delete' is not allowed with SYMTAB" msgstr "" -#: awkgram.y:990 awkgram.y:1039 +#: awkgram.y:988 awkgram.y:1037 msgid "`delete' is not allowed with FUNCTAB" msgstr "" -#: awkgram.y:1024 awkgram.y:1028 +#: awkgram.y:1022 awkgram.y:1026 msgid "`delete(array)' is a non-portable tawk extension" msgstr "" -#: awkgram.y:1149 +#: awkgram.y:1147 msgid "multistage two-way pipelines don't work" msgstr "" -#: awkgram.y:1264 +#: awkgram.y:1262 msgid "regular expression on right of assignment" msgstr "" -#: awkgram.y:1275 +#: awkgram.y:1273 msgid "regular expression on left of `~' or `!~' operator" msgstr "" -#: awkgram.y:1291 awkgram.y:1442 +#: awkgram.y:1289 awkgram.y:1431 msgid "old awk does not support the keyword `in' except after `for'" msgstr "" -#: awkgram.y:1301 +#: awkgram.y:1299 msgid "regular expression on right of comparison" msgstr "" -#: awkgram.y:1417 +#: awkgram.y:1411 #, c-format -msgid "`getline var' invalid inside `%s' rule" +msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "" -#: awkgram.y:1420 -#, c-format -msgid "`getline' invalid inside `%s' rule" -msgstr "" - -#: awkgram.y:1425 +#: awkgram.y:1414 msgid "non-redirected `getline' undefined inside END action" msgstr "" -#: awkgram.y:1444 +#: awkgram.y:1433 msgid "old awk does not support multidimensional arrays" msgstr "" -#: awkgram.y:1541 +#: awkgram.y:1530 msgid "call of `length' without parentheses is not portable" msgstr "" -#: awkgram.y:1607 +#: awkgram.y:1596 msgid "indirect function calls are a gawk extension" msgstr "" -#: awkgram.y:1620 +#: awkgram.y:1609 #, c-format msgid "can not use special variable `%s' for indirect function call" msgstr "" -#: awkgram.y:1698 +#: awkgram.y:1635 +#, c-format +msgid "attempt to use non-function `%s' in function call" +msgstr "" + +#: awkgram.y:1699 msgid "invalid subscript expression" msgstr "" -#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2045 awkgram.y:2065 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "" -#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 +#: awkgram.y:2063 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "" -#: awkgram.y:2116 +#: awkgram.y:2113 msgid "unexpected newline or end of string" msgstr "" -#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 +#: awkgram.y:2392 awkgram.y:2468 awkgram.y:2691 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:2384 awkgram.y:2509 +#: awkgram.y:2393 awkgram.y:2518 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "" -#: awkgram.y:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 +#: awkgram.y:2395 awkgram.y:2469 awkgram.y:2519 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "" -#: awkgram.y:2395 awkgram.y:2419 +#: awkgram.y:2404 awkgram.y:2428 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "" -#: awkgram.y:2408 +#: awkgram.y:2417 #, c-format msgid "already included source file `%s'" msgstr "" -#: awkgram.y:2409 +#: awkgram.y:2418 #, c-format msgid "already loaded shared library `%s'" msgstr "" -#: awkgram.y:2444 +#: awkgram.y:2453 msgid "@include is a gawk extension" msgstr "" -#: awkgram.y:2450 +#: awkgram.y:2459 msgid "empty filename after @include" msgstr "" -#: awkgram.y:2494 +#: awkgram.y:2503 msgid "@load is a gawk extension" msgstr "" -#: awkgram.y:2500 +#: awkgram.y:2509 msgid "empty filename after @load" msgstr "" -#: awkgram.y:2634 +#: awkgram.y:2643 msgid "empty program text on command line" msgstr "" -#: awkgram.y:2749 +#: awkgram.y:2758 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "" -#: awkgram.y:2760 +#: awkgram.y:2769 #, c-format msgid "source file `%s' is empty" msgstr "" -#: awkgram.y:2937 +#: awkgram.y:2828 +#, c-format +msgid "PEBKAC error: invalid character '\\%03o' in source code" +msgstr "" + +#: awkgram.y:2959 msgid "source file does not end in newline" msgstr "" -#: awkgram.y:3042 +#: awkgram.y:3062 msgid "unterminated regexp ends with `\\' at end of file" msgstr "" -#: awkgram.y:3066 +#: awkgram.y:3089 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" -#: awkgram.y:3070 +#: awkgram.y:3093 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" -#: awkgram.y:3077 +#: awkgram.y:3100 msgid "unterminated regexp" msgstr "" -#: awkgram.y:3081 +#: awkgram.y:3104 msgid "unterminated regexp at end of file" msgstr "" -#: awkgram.y:3140 +#: awkgram.y:3162 msgid "use of `\\ #...' line continuation is not portable" msgstr "" -#: awkgram.y:3156 +#: awkgram.y:3178 msgid "backslash not last character on line" msgstr "" -#: awkgram.y:3217 +#: awkgram.y:3239 msgid "POSIX does not allow operator `**='" msgstr "" -#: awkgram.y:3219 +#: awkgram.y:3241 msgid "old awk does not support operator `**='" msgstr "" -#: awkgram.y:3228 +#: awkgram.y:3250 msgid "POSIX does not allow operator `**'" msgstr "" -#: awkgram.y:3230 +#: awkgram.y:3252 msgid "old awk does not support operator `**'" msgstr "" -#: awkgram.y:3265 +#: awkgram.y:3287 msgid "operator `^=' is not supported in old awk" msgstr "" -#: awkgram.y:3273 +#: awkgram.y:3295 msgid "operator `^' is not supported in old awk" msgstr "" -#: awkgram.y:3366 awkgram.y:3382 command.y:1178 +#: awkgram.y:3392 awkgram.y:3410 command.y:1180 msgid "unterminated string" msgstr "" -#: awkgram.y:3603 +#: awkgram.y:3631 #, c-format msgid "invalid char '%c' in expression" msgstr "" -#: awkgram.y:3650 +#: awkgram.y:3678 #, c-format msgid "`%s' is a gawk extension" msgstr "" -#: awkgram.y:3655 +#: awkgram.y:3683 #, c-format msgid "POSIX does not allow `%s'" msgstr "" -#: awkgram.y:3663 +#: awkgram.y:3691 #, c-format msgid "`%s' is not supported in old awk" msgstr "" -#: awkgram.y:3753 +#: awkgram.y:3781 msgid "`goto' considered harmful!\n" msgstr "" -#: awkgram.y:3787 +#: awkgram.y:3815 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "" -#: awkgram.y:3822 +#: awkgram.y:3850 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "" -#: awkgram.y:3827 +#: awkgram.y:3855 #, c-format msgid "%s third parameter is not a changeable object" msgstr "" -#: awkgram.y:3910 awkgram.y:3913 +#: awkgram.y:3938 awkgram.y:3941 msgid "match: third argument is a gawk extension" msgstr "" -#: awkgram.y:3967 awkgram.y:3970 +#: awkgram.y:3995 awkgram.y:3998 msgid "close: second argument is a gawk extension" msgstr "" -#: awkgram.y:3982 +#: awkgram.y:4010 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" -#: awkgram.y:3997 +#: awkgram.y:4025 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" -#: awkgram.y:4016 +#: awkgram.y:4044 msgid "index: regexp constant as second argument is not allowed" msgstr "" -#: awkgram.y:4069 +#: awkgram.y:4097 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "" -#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4154 debug.c:4041 debug.c:4084 debug.c:5204 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "" -#: awkgram.y:4127 +#: awkgram.y:4155 msgid "sending variable list to standard error" msgstr "" -#: awkgram.y:4135 +#: awkgram.y:4163 #, c-format msgid "%s: close failed (%s)" msgstr "" -#: awkgram.y:4160 +#: awkgram.y:4188 msgid "shadow_funcs() called twice!" msgstr "" -#: awkgram.y:4168 +#: awkgram.y:4196 msgid "there were shadowed variables." msgstr "" -#: awkgram.y:4239 +#: awkgram.y:4267 #, c-format msgid "function name `%s' previously defined" msgstr "" -#: awkgram.y:4285 +#: awkgram.y:4313 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "" -#: awkgram.y:4288 +#: awkgram.y:4316 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "" -#: awkgram.y:4296 +#: awkgram.y:4324 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "" -#: awkgram.y:4383 awkgram.y:4389 +#: awkgram.y:4411 awkgram.y:4417 #, c-format msgid "function `%s' called but never defined" msgstr "" -#: awkgram.y:4393 +#: awkgram.y:4421 #, c-format msgid "function `%s' defined but never called directly" msgstr "" -#: awkgram.y:4425 +#: awkgram.y:4453 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "" -#: awkgram.y:4484 +#: awkgram.y:4468 #, c-format msgid "" "function `%s' called with space between name and `(',\n" "or used as a variable or an array" msgstr "" -#: awkgram.y:4720 +#: awkgram.y:4674 msgid "division by zero attempted" msgstr "" -#: awkgram.y:4729 +#: awkgram.y:4683 #, c-format msgid "division by zero attempted in `%%'" msgstr "" -#: awkgram.y:5049 +#: awkgram.y:5003 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" -#: awkgram.y:5052 +#: awkgram.y:5006 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "" @@ -544,371 +549,387 @@ msgstr "" msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "" -#: builtin.c:362 +#: builtin.c:351 msgid "index: received non-string first argument" msgstr "" -#: builtin.c:364 +#: builtin.c:353 msgid "index: received non-string second argument" msgstr "" -#: builtin.c:488 mpfr.c:757 +#: builtin.c:466 mpfr.c:777 msgid "int: received non-numeric argument" msgstr "" -#: builtin.c:525 +#: builtin.c:503 msgid "length: received array argument" msgstr "" -#: builtin.c:528 +#: builtin.c:506 msgid "`length(array)' is a gawk extension" msgstr "" -#: builtin.c:544 +#: builtin.c:525 msgid "length: received non-string argument" msgstr "" -#: builtin.c:575 +#: builtin.c:554 msgid "log: received non-numeric argument" msgstr "" -#: builtin.c:578 +#: builtin.c:557 #, c-format msgid "log: received negative argument %g" msgstr "" -#: builtin.c:776 builtin.c:781 +#: builtin.c:755 builtin.c:760 builtin.c:911 msgid "fatal: must use `count$' on all formats or none" msgstr "" -#: builtin.c:851 +#: builtin.c:830 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "" -#: builtin.c:853 +#: builtin.c:832 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "" -#: builtin.c:855 +#: builtin.c:834 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "" -#: builtin.c:906 +#: builtin.c:885 msgid "fatal: `$' is not permitted in awk formats" msgstr "" -#: builtin.c:915 +#: builtin.c:894 msgid "fatal: arg count with `$' must be > 0" msgstr "" -#: builtin.c:919 +#: builtin.c:898 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "" -#: builtin.c:923 +#: builtin.c:902 msgid "fatal: `$' not permitted after period in format" msgstr "" -#: builtin.c:939 +#: builtin.c:921 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" -#: builtin.c:1009 +#: builtin.c:991 msgid "`l' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:1013 +#: builtin.c:995 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:1026 +#: builtin.c:1008 msgid "`L' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:1030 +#: builtin.c:1012 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:1043 +#: builtin.c:1025 msgid "`h' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:1047 +#: builtin.c:1029 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:1463 +#: builtin.c:1055 +#, c-format +msgid "[s]printf: value %g is too big for %%c format" +msgstr "" + +#: builtin.c:1068 +#, c-format +msgid "[s]printf: value %g is not a valid wide character" +msgstr "" + +#: builtin.c:1454 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "" -#: builtin.c:1561 +#: builtin.c:1552 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" -#: builtin.c:1566 +#: builtin.c:1557 msgid "fatal: not enough arguments to satisfy format string" msgstr "" -#: builtin.c:1568 +#: builtin.c:1559 msgid "^ ran out for this one" msgstr "" -#: builtin.c:1575 +#: builtin.c:1566 msgid "[s]printf: format specifier does not have control letter" msgstr "" -#: builtin.c:1578 +#: builtin.c:1569 msgid "too many arguments supplied for format string" msgstr "" -#: builtin.c:1634 +#: builtin.c:1625 msgid "sprintf: no arguments" msgstr "" -#: builtin.c:1657 builtin.c:1668 +#: builtin.c:1648 builtin.c:1659 msgid "printf: no arguments" msgstr "" -#: builtin.c:1711 +#: builtin.c:1702 msgid "sqrt: received non-numeric argument" msgstr "" -#: builtin.c:1715 +#: builtin.c:1706 #, c-format msgid "sqrt: called with negative argument %g" msgstr "" -#: builtin.c:1746 +#: builtin.c:1737 #, c-format msgid "substr: length %g is not >= 1" msgstr "" -#: builtin.c:1748 +#: builtin.c:1739 #, c-format msgid "substr: length %g is not >= 0" msgstr "" -#: builtin.c:1755 +#: builtin.c:1753 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "" -#: builtin.c:1760 +#: builtin.c:1758 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" -#: builtin.c:1772 +#: builtin.c:1770 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "" -#: builtin.c:1777 +#: builtin.c:1775 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "" -#: builtin.c:1802 +#: builtin.c:1798 msgid "substr: source string is zero length" msgstr "" -#: builtin.c:1818 +#: builtin.c:1812 #, c-format msgid "substr: start index %g is past end of string" msgstr "" -#: builtin.c:1826 +#: builtin.c:1820 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" msgstr "" -#: builtin.c:1900 +#: builtin.c:1890 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" -#: builtin.c:1923 +#: builtin.c:1913 msgid "strftime: received non-numeric second argument" msgstr "" -#: builtin.c:1927 +#: builtin.c:1917 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "" -#: builtin.c:1934 +#: builtin.c:1924 msgid "strftime: received non-string first argument" msgstr "" -#: builtin.c:1941 +#: builtin.c:1931 msgid "strftime: received empty format string" msgstr "" -#: builtin.c:2007 +#: builtin.c:1997 msgid "mktime: received non-string argument" msgstr "" -#: builtin.c:2024 +#: builtin.c:2014 msgid "mktime: at least one of the values is out of the default range" msgstr "" -#: builtin.c:2059 +#: builtin.c:2049 msgid "'system' function not allowed in sandbox mode" msgstr "" -#: builtin.c:2064 +#: builtin.c:2054 msgid "system: received non-string argument" msgstr "" -#: builtin.c:2184 +#: builtin.c:2174 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "" -#: builtin.c:2271 +#: builtin.c:2259 msgid "tolower: received non-string argument" msgstr "" -#: builtin.c:2305 +#: builtin.c:2290 msgid "toupper: received non-string argument" msgstr "" -#: builtin.c:2341 mpfr.c:672 +#: builtin.c:2323 mpfr.c:679 msgid "atan2: received non-numeric first argument" msgstr "" -#: builtin.c:2343 mpfr.c:674 +#: builtin.c:2325 mpfr.c:681 msgid "atan2: received non-numeric second argument" msgstr "" -#: builtin.c:2362 +#: builtin.c:2344 msgid "sin: received non-numeric argument" msgstr "" -#: builtin.c:2378 +#: builtin.c:2360 msgid "cos: received non-numeric argument" msgstr "" -#: builtin.c:2431 mpfr.c:1156 +#: builtin.c:2413 mpfr.c:1176 msgid "srand: received non-numeric argument" msgstr "" -#: builtin.c:2462 +#: builtin.c:2444 msgid "match: third argument is not an array" msgstr "" -#: builtin.c:2734 -msgid "gensub: third argument of 0 treated as 1" +#: builtin.c:2705 +#, c-format +msgid "gensub: third argument `%.*s' treated as 1" msgstr "" -#: builtin.c:3030 +#: builtin.c:2720 +#, c-format +msgid "gensub: third argument %g treated as 1" +msgstr "" + +#: builtin.c:3020 msgid "lshift: received non-numeric first argument" msgstr "" -#: builtin.c:3032 +#: builtin.c:3022 msgid "lshift: received non-numeric second argument" msgstr "" -#: builtin.c:3038 +#: builtin.c:3028 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "" -#: builtin.c:3040 +#: builtin.c:3030 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "" -#: builtin.c:3042 +#: builtin.c:3032 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "" -#: builtin.c:3067 +#: builtin.c:3057 msgid "rshift: received non-numeric first argument" msgstr "" -#: builtin.c:3069 +#: builtin.c:3059 msgid "rshift: received non-numeric second argument" msgstr "" -#: builtin.c:3075 +#: builtin.c:3065 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "" -#: builtin.c:3077 +#: builtin.c:3067 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "" -#: builtin.c:3079 +#: builtin.c:3069 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "" -#: builtin.c:3104 mpfr.c:968 +#: builtin.c:3094 mpfr.c:988 msgid "and: called with less than two arguments" msgstr "" -#: builtin.c:3109 +#: builtin.c:3099 #, c-format msgid "and: argument %d is non-numeric" msgstr "" -#: builtin.c:3113 +#: builtin.c:3103 #, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "" -#: builtin.c:3136 mpfr.c:1000 +#: builtin.c:3126 mpfr.c:1020 msgid "or: called with less than two arguments" msgstr "" -#: builtin.c:3141 +#: builtin.c:3131 #, c-format msgid "or: argument %d is non-numeric" msgstr "" -#: builtin.c:3145 +#: builtin.c:3135 #, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "" -#: builtin.c:3167 mpfr.c:1031 +#: builtin.c:3157 mpfr.c:1051 msgid "xor: called with less than two arguments" msgstr "" -#: builtin.c:3173 +#: builtin.c:3163 #, c-format msgid "xor: argument %d is non-numeric" msgstr "" -#: builtin.c:3177 +#: builtin.c:3167 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "" -#: builtin.c:3202 mpfr.c:787 +#: builtin.c:3192 mpfr.c:807 msgid "compl: received non-numeric argument" msgstr "" -#: builtin.c:3208 +#: builtin.c:3198 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "" -#: builtin.c:3210 +#: builtin.c:3200 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "" -#: builtin.c:3379 +#: builtin.c:3369 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "" @@ -1188,40 +1209,46 @@ msgstr "" msgid "watch var - set a watchpoint for a variable." msgstr "" -#: command.y:1011 debug.c:401 msg.c:135 +#: command.y:901 +msgid "" +"where [N] - (same as backtrace) print trace of all or N innermost (outermost " +"if N < 0) frames." +msgstr "" + +#: command.y:1013 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "" -#: command.y:1051 +#: command.y:1053 #, c-format msgid "can't read command (%s)\n" msgstr "" -#: command.y:1065 +#: command.y:1067 #, c-format msgid "can't read command (%s)" msgstr "" -#: command.y:1116 +#: command.y:1118 msgid "invalid character in command" msgstr "" -#: command.y:1152 +#: command.y:1154 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "" -#: command.y:1222 +#: command.y:1224 #, c-format msgid "%s" msgstr "" -#: command.y:1284 +#: command.y:1286 msgid "invalid character" msgstr "" -#: command.y:1455 +#: command.y:1457 #, c-format msgid "undefined command: %s\n" msgstr "" @@ -1733,68 +1760,68 @@ msgstr "" msgid "`return' not allowed in current context; statement ignored" msgstr "" -#: debug.c:5590 +#: debug.c:5604 #, c-format msgid "No symbol `%s' in current context" msgstr "" -#: 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 +#: dfa.c:1063 dfa.c:1066 dfa.c:1085 dfa.c:1095 dfa.c:1107 dfa.c:1143 +#: dfa.c:1152 dfa.c:1155 dfa.c:1160 dfa.c:1174 dfa.c:1222 msgid "unbalanced [" msgstr "" -#: dfa.c:1174 +#: dfa.c:1119 msgid "invalid character class" msgstr "" -#: dfa.c:1316 +#: dfa.c:1265 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "" -#: dfa.c:1366 +#: dfa.c:1327 msgid "unfinished \\ escape" msgstr "" -#: dfa.c:1513 regcomp.c:161 -msgid "Invalid content of \\{\\}" +#: dfa.c:1474 +msgid "invalid content of \\{\\}" msgstr "" -#: dfa.c:1516 regcomp.c:176 -msgid "Regular expression too big" +#: dfa.c:1477 +msgid "regular expression too big" msgstr "" -#: dfa.c:1936 +#: dfa.c:1912 msgid "unbalanced (" msgstr "" -#: dfa.c:2062 +#: dfa.c:2038 msgid "no syntax specified" msgstr "" -#: dfa.c:2070 +#: dfa.c:2046 msgid "unbalanced )" msgstr "" -#: eval.c:394 +#: eval.c:396 #, c-format msgid "unknown nodetype %d" msgstr "" -#: eval.c:405 eval.c:419 +#: eval.c:407 eval.c:421 #, c-format msgid "unknown opcode %d" msgstr "" -#: eval.c:416 +#: eval.c:418 #, c-format msgid "opcode %s not an operator or keyword" msgstr "" -#: eval.c:472 +#: eval.c:474 msgid "buffer overflow in genflags2str" msgstr "" -#: eval.c:675 +#: eval.c:676 #, c-format msgid "" "\n" @@ -1802,211 +1829,211 @@ msgid "" "\n" msgstr "" -#: eval.c:704 +#: eval.c:705 msgid "`IGNORECASE' is a gawk extension" msgstr "" -#: eval.c:736 +#: eval.c:737 msgid "`BINMODE' is a gawk extension" msgstr "" -#: eval.c:794 +#: eval.c:795 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "" -#: eval.c:885 +#: eval.c:912 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "" -#: eval.c:969 +#: eval.c:996 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "" -#: eval.c:1147 +#: eval.c:1174 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "" -#: eval.c:1148 +#: eval.c:1175 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "" -#: eval.c:1166 +#: eval.c:1193 msgid "attempt to field reference from non-numeric value" msgstr "" -#: eval.c:1168 +#: eval.c:1195 msgid "attempt to field reference from null string" msgstr "" -#: eval.c:1176 +#: eval.c:1203 #, c-format msgid "attempt to access field %ld" msgstr "" -#: eval.c:1185 +#: eval.c:1212 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "" -#: eval.c:1272 +#: eval.c:1299 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "" -#: eval.c:1473 +#: eval.c:1500 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "" -#: eval.c:1569 +#: eval.c:1596 msgid "division by zero attempted in `/='" msgstr "" -#: eval.c:1576 +#: eval.c:1603 #, c-format msgid "division by zero attempted in `%%='" msgstr "" -#: ext.c:89 ext.c:171 +#: ext.c:65 ext.c:147 msgid "extensions are not allowed in sandbox mode" msgstr "" -#: ext.c:92 +#: ext.c:68 msgid "-l / @load are gawk extensions" msgstr "" -#: ext.c:95 +#: ext.c:71 msgid "load_ext: received NULL lib_name" msgstr "" -#: ext.c:98 +#: ext.c:74 #, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "" -#: ext.c:104 +#: ext.c:80 #, c-format msgid "" "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" msgstr "" -#: ext.c:110 +#: ext.c:86 #, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "" -#: ext.c:114 +#: ext.c:90 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "" -#: ext.c:174 +#: ext.c:150 msgid "`extension' is a gawk extension" msgstr "" -#: ext.c:177 +#: ext.c:153 msgid "extension: received NULL lib_name" msgstr "" -#: ext.c:180 +#: ext.c:156 #, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "" -#: ext.c:186 +#: ext.c:162 #, c-format msgid "" "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" msgstr "" -#: ext.c:190 +#: ext.c:166 #, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "" -#: ext.c:221 +#: ext.c:197 msgid "make_builtin: missing function name" msgstr "" -#: ext.c:236 +#: ext.c:212 #, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "" -#: ext.c:240 +#: ext.c:216 #, c-format msgid "make_builtin: function `%s' already defined" msgstr "" -#: ext.c:244 +#: ext.c:220 #, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "" -#: ext.c:246 +#: ext.c:222 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "" -#: ext.c:249 ext.c:304 +#: ext.c:225 ext.c:280 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "" -#: ext.c:276 +#: ext.c:252 msgid "extension: missing function name" msgstr "" -#: ext.c:279 ext.c:283 +#: ext.c:255 ext.c:259 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "" -#: ext.c:291 +#: ext.c:267 #, c-format msgid "extension: can't redefine function `%s'" msgstr "" -#: ext.c:295 +#: ext.c:271 #, c-format msgid "extension: function `%s' already defined" msgstr "" -#: ext.c:299 +#: ext.c:275 #, c-format msgid "extension: function name `%s' previously defined" msgstr "" -#: ext.c:301 +#: ext.c:277 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" msgstr "" -#: ext.c:375 +#: ext.c:351 #, c-format msgid "function `%s' defined to take no more than %d argument(s)" msgstr "" -#: ext.c:378 +#: ext.c:354 #, c-format msgid "function `%s': missing argument #%d" msgstr "" -#: ext.c:395 +#: ext.c:371 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "" -#: ext.c:399 +#: ext.c:375 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "" -#: ext.c:413 +#: ext.c:389 msgid "dynamic loading of library not supported" msgstr "" @@ -2150,7 +2177,7 @@ msgstr "" msgid "inplace_begin: in-place editing already active" msgstr "" -#: extension/inplace.c:133 extension/inplace.c:207 +#: extension/inplace.c:133 extension/inplace.c:210 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "" @@ -2179,55 +2206,55 @@ msgstr "" msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "" -#: extension/inplace.c:178 +#: extension/inplace.c:181 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "" -#: extension/inplace.c:185 +#: extension/inplace.c:188 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:188 +#: extension/inplace.c:191 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:191 +#: extension/inplace.c:194 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "" -#: extension/inplace.c:210 +#: extension/inplace.c:213 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:217 +#: extension/inplace.c:220 msgid "inplace_end: in-place editing not active" msgstr "" -#: extension/inplace.c:223 +#: extension/inplace.c:226 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:226 +#: extension/inplace.c:229 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "" -#: extension/inplace.c:230 +#: extension/inplace.c:233 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:243 +#: extension/inplace.c:246 #, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "" -#: extension/inplace.c:253 +#: extension/inplace.c:256 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "" @@ -2269,50 +2296,54 @@ msgstr "" msgid "readfile: called with no arguments" msgstr "" -#: extension/rwarray.c:124 +#: extension/revoutput.c:125 +msgid "revoutput: could not initialize REVOUT variable" +msgstr "" + +#: extension/rwarray.c:124 extension/rwarray0.c:109 msgid "writea: called with too many arguments" msgstr "" -#: extension/rwarray.c:131 +#: extension/rwarray.c:131 extension/rwarray0.c:116 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "" -#: extension/rwarray.c:137 +#: extension/rwarray.c:137 extension/rwarray0.c:122 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "" -#: extension/rwarray.c:184 +#: extension/rwarray.c:184 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "" -#: extension/rwarray.c:198 +#: extension/rwarray.c:198 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "" -#: extension/rwarray.c:280 +#: extension/rwarray.c:280 extension/rwarray0.c:265 msgid "reada: called with too many arguments" msgstr "" -#: extension/rwarray.c:287 +#: extension/rwarray.c:287 extension/rwarray0.c:272 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "" -#: extension/rwarray.c:293 +#: extension/rwarray.c:293 extension/rwarray0.c:278 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "" -#: extension/rwarray.c:337 +#: extension/rwarray.c:337 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "" -#: extension/rwarray.c:374 +#: extension/rwarray.c:374 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "" @@ -2341,80 +2372,80 @@ msgstr "" msgid "sleep: not supported on this platform" msgstr "" -#: field.c:345 +#: field.c:346 msgid "NF set to negative value" msgstr "" -#: field.c:971 field.c:978 field.c:982 +#: field.c:958 field.c:965 field.c:969 msgid "split: fourth argument is a gawk extension" msgstr "" -#: field.c:975 +#: field.c:962 msgid "split: fourth argument is not an array" msgstr "" -#: field.c:989 +#: field.c:976 msgid "split: second argument is not an array" msgstr "" -#: field.c:993 +#: field.c:980 msgid "split: cannot use the same array for second and fourth args" msgstr "" -#: field.c:998 +#: field.c:985 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" -#: field.c:1001 +#: field.c:988 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" -#: field.c:1032 +#: field.c:1019 msgid "split: null string for third arg is a gawk extension" msgstr "" -#: field.c:1072 +#: field.c:1059 msgid "patsplit: fourth argument is not an array" msgstr "" -#: field.c:1077 +#: field.c:1064 msgid "patsplit: second argument is not an array" msgstr "" -#: field.c:1083 +#: field.c:1070 msgid "patsplit: third argument must be non-null" msgstr "" -#: field.c:1087 +#: field.c:1074 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "" -#: field.c:1092 +#: field.c:1079 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" -#: field.c:1095 +#: field.c:1082 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" -#: field.c:1133 +#: field.c:1120 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "" -#: field.c:1197 +#: field.c:1184 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "" -#: field.c:1270 +#: field.c:1257 msgid "null string for `FS' is a gawk extension" msgstr "" -#: field.c:1274 +#: field.c:1261 msgid "old awk does not support regexps as value of `FS'" msgstr "" -#: field.c:1393 +#: field.c:1380 msgid "`FPAT' is a gawk extension" msgstr "" @@ -2430,20 +2461,20 @@ msgstr "" msgid "node_to_awk_value: received null val" msgstr "" -#: gawkapi.c:807 +#: gawkapi.c:809 msgid "remove_element: received null array" msgstr "" -#: gawkapi.c:810 +#: gawkapi.c:812 msgid "remove_element: received null subscript" msgstr "" -#: gawkapi.c:947 +#: gawkapi.c:949 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "" -#: gawkapi.c:952 +#: gawkapi.c:954 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "" @@ -2503,504 +2534,472 @@ msgstr "" msgid "%s: option '-W %s' requires an argument\n" msgstr "" -#: io.c:392 +#: io.c:423 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "" -#: io.c:395 io.c:513 +#: io.c:426 io.c:544 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "" -#: io.c:640 +#: io.c:671 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "" -#: io.c:716 +#: io.c:749 msgid "redirection not allowed in sandbox mode" msgstr "" -#: io.c:750 +#: io.c:783 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "" -#: io.c:756 +#: io.c:789 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "" -#: io.c:761 +#: io.c:794 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" msgstr "" -#: io.c:809 +#: io.c:842 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "" -#: io.c:863 +#: io.c:896 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "" -#: io.c:873 +#: io.c:906 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "" -#: io.c:904 +#: io.c:937 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" msgstr "" -#: io.c:986 +#: io.c:1019 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "" -#: io.c:989 +#: io.c:1022 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "" -#: io.c:1040 +#: io.c:1073 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" -#: io.c:1056 +#: io.c:1089 #, c-format msgid "close of `%s' failed (%s)." msgstr "" -#: io.c:1064 +#: io.c:1097 msgid "too many pipes or input files open" msgstr "" -#: io.c:1086 +#: io.c:1119 msgid "close: second argument must be `to' or `from'" msgstr "" -#: io.c:1103 +#: io.c:1136 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "" -#: io.c:1108 +#: io.c:1141 msgid "close of redirection that was never opened" msgstr "" -#: io.c:1205 +#: io.c:1238 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" -#: io.c:1222 +#: io.c:1255 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "" -#: io.c:1225 +#: io.c:1258 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "" -#: io.c:1245 +#: io.c:1278 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "" -#: io.c:1248 +#: io.c:1281 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "" -#: io.c:1251 +#: io.c:1284 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "" -#: io.c:1254 +#: io.c:1287 #, c-format msgid "no explicit close of file `%s' provided" msgstr "" -#: io.c:1284 io.c:1342 main.c:864 main.c:906 +#: io.c:1317 io.c:1375 main.c:628 main.c:670 #, c-format msgid "error writing standard output (%s)" msgstr "" -#: io.c:1289 io.c:1348 main.c:866 +#: io.c:1322 io.c:1381 main.c:630 #, c-format msgid "error writing standard error (%s)" msgstr "" -#: io.c:1297 +#: io.c:1330 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "" -#: io.c:1300 +#: io.c:1333 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "" -#: io.c:1303 +#: io.c:1336 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "" -#: io.c:1420 +#: io.c:1453 #, c-format msgid "local port %s invalid in `/inet'" msgstr "" -#: io.c:1438 +#: io.c:1471 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "" -#: io.c:1590 -#, c-format -msgid "no (known) protocol supplied in special filename `%s'" -msgstr "" - -#: io.c:1604 -#, c-format -msgid "special file name `%s' is incomplete" -msgstr "" - -#: io.c:1621 -msgid "must supply a remote hostname to `/inet'" -msgstr "" - -#: io.c:1639 -msgid "must supply a remote port to `/inet'" -msgstr "" - -#: io.c:1685 +#: io.c:1673 msgid "TCP/IP communications are not supported" msgstr "" -#: io.c:1867 +#: io.c:1854 #, c-format msgid "could not open `%s', mode `%s'" msgstr "" -#: io.c:1917 +#: io.c:1904 #, c-format msgid "close of master pty failed (%s)" msgstr "" -#: io.c:1919 io.c:2105 io.c:2305 +#: io.c:1906 io.c:2092 io.c:2293 #, c-format msgid "close of stdout in child failed (%s)" msgstr "" -#: io.c:1922 +#: io.c:1909 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" -#: io.c:1924 io.c:2110 +#: io.c:1911 io.c:2097 #, c-format msgid "close of stdin in child failed (%s)" msgstr "" -#: io.c:1927 +#: io.c:1914 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" -#: io.c:1929 io.c:1951 +#: io.c:1916 io.c:1938 #, c-format msgid "close of slave pty failed (%s)" msgstr "" -#: io.c:2040 io.c:2108 io.c:2276 io.c:2308 +#: io.c:2027 io.c:2095 io.c:2264 io.c:2296 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" -#: io.c:2047 io.c:2113 +#: io.c:2034 io.c:2100 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" -#: io.c:2073 io.c:2298 +#: io.c:2060 io.c:2286 msgid "restoring stdout in parent process failed\n" msgstr "" -#: io.c:2081 +#: io.c:2068 msgid "restoring stdin in parent process failed\n" msgstr "" -#: io.c:2116 io.c:2310 io.c:2324 +#: io.c:2103 io.c:2298 io.c:2313 #, c-format msgid "close of pipe failed (%s)" msgstr "" -#: io.c:2174 +#: io.c:2162 msgid "`|&' not supported" msgstr "" -#: io.c:2261 +#: io.c:2249 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "" -#: io.c:2318 +#: io.c:2307 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "" -#: io.c:2790 +#: io.c:2734 msgid "register_input_parser: received NULL pointer" msgstr "" -#: io.c:2818 +#: io.c:2762 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" -#: io.c:2825 +#: io.c:2769 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "" -#: io.c:2845 +#: io.c:2789 msgid "register_output_wrapper: received NULL pointer" msgstr "" -#: io.c:2873 +#: io.c:2817 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" -#: io.c:2880 +#: io.c:2824 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "" -#: io.c:2901 +#: io.c:2845 msgid "register_output_processor: received NULL pointer" msgstr "" -#: io.c:2930 +#: io.c:2874 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" msgstr "" -#: io.c:2939 +#: io.c:2883 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "" -#: io.c:3064 +#: io.c:3008 #, c-format msgid "data file `%s' is empty" msgstr "" -#: io.c:3106 io.c:3114 +#: io.c:3050 io.c:3058 msgid "could not allocate more input memory" msgstr "" -#: io.c:3682 +#: io.c:3636 msgid "multicharacter value of `RS' is a gawk extension" msgstr "" -#: io.c:3771 +#: io.c:3783 msgid "IPv6 communication is not supported" msgstr "" -#: main.c:405 -msgid "empty argument to `-e/--source' ignored" -msgstr "" - -#: main.c:495 -#, c-format -msgid "%s: option `-W %s' unrecognized, ignored\n" -msgstr "" - -#: main.c:541 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "" - -#: main.c:562 +#: main.c:321 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" -#: main.c:568 +#: main.c:327 msgid "`--posix' overrides `--traditional'" msgstr "" -#: main.c:579 +#: main.c:338 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "" -#: main.c:583 +#: main.c:342 #, c-format msgid "running %s setuid root may be a security problem" msgstr "" -#: main.c:588 +#: main.c:346 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "" -#: main.c:647 +#: main.c:404 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "" -#: main.c:650 +#: main.c:407 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "" -#: main.c:652 +#: main.c:409 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "" -#: main.c:710 +#: main.c:469 msgid "no program text at all!" msgstr "" -#: main.c:799 +#: main.c:563 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" -#: main.c:801 +#: main.c:565 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" -#: main.c:806 +#: main.c:570 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "" -#: main.c:807 +#: main.c:571 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "" -#: main.c:808 +#: main.c:572 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "" -#: main.c:809 +#: main.c:573 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "" -#: main.c:810 +#: main.c:574 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "" -#: main.c:811 +#: main.c:575 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "" -#: main.c:812 +#: main.c:576 msgid "\t-c\t\t\t--traditional\n" msgstr "" -#: main.c:813 +#: main.c:577 msgid "\t-C\t\t\t--copyright\n" msgstr "" -#: main.c:814 +#: main.c:578 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "" -#: main.c:815 +#: main.c:579 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "" -#: main.c:816 +#: main.c:580 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "" -#: main.c:817 +#: main.c:581 msgid "\t-E file\t\t\t--exec=file\n" msgstr "" -#: main.c:818 +#: main.c:582 msgid "\t-g\t\t\t--gen-pot\n" msgstr "" -#: main.c:819 +#: main.c:583 msgid "\t-h\t\t\t--help\n" msgstr "" -#: main.c:820 +#: main.c:584 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "" -#: main.c:821 +#: main.c:585 msgid "\t-l library\t\t--load=library\n" msgstr "" -#: main.c:822 -msgid "\t-L [fatal]\t\t--lint[=fatal]\n" -msgstr "" - -#: main.c:823 -msgid "\t-n\t\t\t--non-decimal-data\n" +#: main.c:586 +msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "" -#: main.c:824 +#: main.c:587 msgid "\t-M\t\t\t--bignum\n" msgstr "" -#: main.c:825 +#: main.c:588 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "" -#: main.c:826 +#: main.c:589 +msgid "\t-n\t\t\t--non-decimal-data\n" +msgstr "" + +#: main.c:590 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "" -#: main.c:827 +#: main.c:591 msgid "\t-O\t\t\t--optimize\n" msgstr "" -#: main.c:828 +#: main.c:592 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "" -#: main.c:829 +#: main.c:593 msgid "\t-P\t\t\t--posix\n" msgstr "" -#: main.c:830 +#: main.c:594 msgid "\t-r\t\t\t--re-interval\n" msgstr "" -#: main.c:831 +#: main.c:595 msgid "\t-S\t\t\t--sandbox\n" msgstr "" -#: main.c:832 +#: main.c:596 msgid "\t-t\t\t\t--lint-old\n" msgstr "" -#: main.c:833 +#: main.c:597 msgid "\t-V\t\t\t--version\n" msgstr "" -#: main.c:835 +#: main.c:599 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "" -#: main.c:838 +#: main.c:602 msgid "\t-Y\t\t--parsedebug\n" msgstr "" @@ -3009,7 +3008,7 @@ msgstr "" #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:847 +#: main.c:611 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3017,21 +3016,21 @@ msgid "" "\n" msgstr "" -#: main.c:851 +#: main.c:615 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:855 +#: main.c:619 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" msgstr "" -#: main.c:880 +#: main.c:644 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3043,7 +3042,7 @@ msgid "" "\n" msgstr "" -#: main.c:888 +#: main.c:652 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" @@ -3052,120 +3051,138 @@ msgid "" "\n" msgstr "" -#: main.c:894 +#: main.c:658 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:931 +#: main.c:695 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "" -#: main.c:1208 +#: main.c:982 #, c-format msgid "unknown value for field spec: %d\n" msgstr "" -#: main.c:1306 +#: main.c:1080 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" "\n" msgstr "" -#: main.c:1332 +#: main.c:1106 #, c-format msgid "`%s' is not a legal variable name" msgstr "" -#: main.c:1335 +#: main.c:1109 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "" -#: main.c:1339 +#: main.c:1113 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "" -#: main.c:1344 +#: main.c:1118 #, c-format msgid "cannot use function `%s' as variable name" msgstr "" -#: main.c:1397 +#: main.c:1171 msgid "floating point exception" msgstr "" -#: main.c:1404 +#: main.c:1178 msgid "fatal error: internal error" msgstr "" -#: main.c:1419 +#: main.c:1193 msgid "fatal error: internal error: segfault" msgstr "" -#: main.c:1431 +#: main.c:1205 msgid "fatal error: internal error: stack overflow" msgstr "" -#: main.c:1490 +#: main.c:1264 #, c-format msgid "no pre-opened fd %d" msgstr "" -#: main.c:1497 +#: main.c:1271 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "" -#: mpfr.c:550 +#: main.c:1485 +msgid "empty argument to `-e/--source' ignored" +msgstr "" + +#: main.c:1556 +msgid "-M ignored: MPFR/GMP support not compiled in" +msgstr "" + +#: main.c:1577 +#, c-format +msgid "%s: option `-W %s' unrecognized, ignored\n" +msgstr "" + +#: main.c:1630 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "" + +#: mpfr.c:557 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "" -#: mpfr.c:608 +#: mpfr.c:615 #, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "" -#: mpfr.c:698 +#: mpfr.c:711 #, c-format msgid "%s: received non-numeric argument" msgstr "" -#: mpfr.c:800 +#: mpfr.c:820 msgid "compl(%Rg): negative value will give strange results" msgstr "" -#: mpfr.c:804 +#: mpfr.c:824 msgid "comp(%Rg): fractional value will be truncated" msgstr "" -#: mpfr.c:816 +#: mpfr.c:836 #, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "" -#: mpfr.c:835 +#: mpfr.c:855 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "" -#: mpfr.c:845 +#: mpfr.c:865 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "" -#: mpfr.c:857 +#: mpfr.c:877 msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "" -#: mpfr.c:863 +#: mpfr.c:883 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "" -#: mpfr.c:878 +#: mpfr.c:898 #, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "" @@ -3175,36 +3192,36 @@ msgstr "" msgid "cmd. line:" msgstr "" -#: node.c:421 +#: node.c:409 msgid "backslash at end of string" msgstr "" -#: node.c:500 +#: node.c:488 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "" -#: node.c:551 +#: node.c:539 msgid "POSIX does not allow `\\x' escapes" msgstr "" -#: node.c:557 +#: node.c:545 msgid "no hex digits in `\\x' escape sequence" msgstr "" -#: node.c:579 +#: node.c:567 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " "expect" msgstr "" -#: node.c:594 +#: node.c:582 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "" -#: node.c:739 +#: node.c:726 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3232,7 +3249,7 @@ msgstr "" #: profile.c:193 #, c-format msgid "" -"\t# %s block(s)\n" +"\t# %s rule(s)\n" "\n" msgstr "" @@ -3248,30 +3265,30 @@ msgstr "" msgid "internal error: %s with null vname" msgstr "" -#: profile.c:537 +#: profile.c:538 msgid "internal error: builtin with null fname" msgstr "" -#: profile.c:949 +#: profile.c:958 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" "\n" msgstr "" -#: profile.c:972 +#: profile.c:981 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "" -#: profile.c:1475 +#: profile.c:1521 #, c-format msgid "" "\n" "\t# Functions, listed alphabetically\n" msgstr "" -#: profile.c:1513 +#: profile.c:1559 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "" @@ -3281,70 +3298,83 @@ msgstr "" msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" -#: regcomp.c:131 +#: regcomp.c:139 msgid "Success" msgstr "" -#: regcomp.c:134 +#: regcomp.c:142 msgid "No match" msgstr "" -#: regcomp.c:137 +#: regcomp.c:145 msgid "Invalid regular expression" msgstr "" -#: regcomp.c:140 +#: regcomp.c:148 msgid "Invalid collation character" msgstr "" -#: regcomp.c:143 +#: regcomp.c:151 msgid "Invalid character class name" msgstr "" -#: regcomp.c:146 +#: regcomp.c:154 msgid "Trailing backslash" msgstr "" -#: regcomp.c:149 +#: regcomp.c:157 msgid "Invalid back reference" msgstr "" -#: regcomp.c:152 -msgid "Unmatched [ or [^" +#: regcomp.c:160 +msgid "Unmatched [, [^, [:, [., or [=" msgstr "" -#: regcomp.c:155 +#: regcomp.c:163 msgid "Unmatched ( or \\(" msgstr "" -#: regcomp.c:158 +#: regcomp.c:166 msgid "Unmatched \\{" msgstr "" -#: regcomp.c:164 +#: regcomp.c:169 +msgid "Invalid content of \\{\\}" +msgstr "" + +#: regcomp.c:172 msgid "Invalid range end" msgstr "" -#: regcomp.c:167 +#: regcomp.c:175 msgid "Memory exhausted" msgstr "" -#: regcomp.c:170 +#: regcomp.c:178 msgid "Invalid preceding regular expression" msgstr "" -#: regcomp.c:173 +#: regcomp.c:181 msgid "Premature end of regular expression" msgstr "" -#: regcomp.c:179 +#: regcomp.c:184 +msgid "Regular expression too big" +msgstr "" + +#: regcomp.c:187 msgid "Unmatched ) or \\)" msgstr "" -#: regcomp.c:704 +#: regcomp.c:712 msgid "No previous regular expression" msgstr "" -#: symbol.c:741 +#: symbol.c:677 +#, c-format +msgid "function `%s': can't use function `%s' as a parameter name" +msgstr "" + +#: symbol.c:809 msgid "can not pop main context" msgstr "" Binary files differ@@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.1.0b\n" -"Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2014-04-08 19:23+0300\n" +"Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" +"POT-Creation-Date: 2015-02-26 20:05+0200\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,9 +40,9 @@ 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:1615 builtin.c:1661 -#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126 -#: eval.c:1531 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 +#: builtin.c:1665 builtin.c:2092 builtin.c:2106 eval.c:1149 eval.c:1153 +#: eval.c:1558 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "array '%s' wordt gebruikt in een scalaire context" @@ -101,406 +101,411 @@ msgstr "" "asorti: een subarray van het tweede argument kan niet als eerste argument " "gebruikt worden" -#: array.c:1314 +#: array.c:1313 #, c-format msgid "`%s' is invalid as a function name" msgstr "'%s' is ongeldig als functienaam" -#: array.c:1318 +#: array.c:1317 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "sorteervergelijkingsfunctie '%s' is niet gedefinieerd" -#: awkgram.y:233 +#: awkgram.y:226 #, c-format msgid "%s blocks must have an action part" msgstr "%s-blokken horen een actiedeel te hebben" -#: awkgram.y:236 +#: awkgram.y:229 msgid "each rule must have a pattern or an action part" msgstr "elke regel hoort een patroon of een actiedeel te hebben" -#: awkgram.y:325 awkgram.y:336 +#: awkgram.y:320 awkgram.y:331 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "oude 'awk' staat meerdere 'BEGIN'- en 'END'-regels niet toe" -#: awkgram.y:373 +#: awkgram.y:368 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "'%s' is een ingebouwde functie en is niet te herdefiniëren" -#: awkgram.y:419 +#: awkgram.y:417 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "regexp-constante '//' lijkt op C-commentaar, maar is het niet" -#: awkgram.y:423 +#: awkgram.y:421 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "regexp-constante '/%s/' lijkt op C-commentaar, maar is het niet" -#: awkgram.y:515 +#: awkgram.y:513 #, c-format msgid "duplicate case values in switch body: %s" msgstr "dubbele 'case'-waarde in 'switch'-opdracht: %s" -#: awkgram.y:536 +#: awkgram.y:534 msgid "duplicate `default' detected in switch body" msgstr "dubbele 'default' in 'switch'-opdracht" -#: awkgram.y:796 awkgram.y:3723 +#: awkgram.y:794 awkgram.y:3751 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:3715 +#: awkgram.y:803 awkgram.y:3743 msgid "`continue' is not allowed outside a loop" msgstr "'continue' buiten een lus is niet toegestaan" -#: awkgram.y:815 +#: awkgram.y:813 #, c-format msgid "`next' used in %s action" msgstr "'next' wordt gebruikt in %s-actie" -#: awkgram.y:824 +#: awkgram.y:822 #, c-format msgid "`nextfile' used in %s action" msgstr "'nextfile' wordt gebruikt in %s-actie" -#: awkgram.y:848 +#: awkgram.y:846 msgid "`return' used outside function context" msgstr "'return' wordt gebruikt buiten functiecontext" -#: awkgram.y:922 +#: awkgram.y:920 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" "kale 'print' in BEGIN- of END-regel moet vermoedelijk 'print \"\"' zijn" -#: awkgram.y:988 awkgram.y:1037 +#: awkgram.y:986 awkgram.y:1035 msgid "`delete' is not allowed with SYMTAB" msgstr "'delete' is niet toegestaan met SYMTAB" -#: awkgram.y:990 awkgram.y:1039 +#: awkgram.y:988 awkgram.y:1037 msgid "`delete' is not allowed with FUNCTAB" msgstr "'delete' is niet toegestaan met FUNCTAB" -#: awkgram.y:1024 awkgram.y:1028 +#: awkgram.y:1022 awkgram.y:1026 msgid "`delete(array)' is a non-portable tawk extension" msgstr "'delete(array)' is een niet-overdraagbare 'tawk'-uitbreiding" -#: awkgram.y:1149 +#: awkgram.y:1147 msgid "multistage two-way pipelines don't work" msgstr "meerfase-tweerichtings-pijplijnen werken niet" -#: awkgram.y:1264 +#: awkgram.y:1262 msgid "regular expression on right of assignment" msgstr "reguliere expressie rechts van toewijzing" -#: awkgram.y:1275 +#: awkgram.y:1273 msgid "regular expression on left of `~' or `!~' operator" msgstr "reguliere expressie links van operator '~' of '!~'" -#: awkgram.y:1291 awkgram.y:1442 +#: awkgram.y:1289 awkgram.y:1431 msgid "old awk does not support the keyword `in' except after `for'" msgstr "oude 'awk' kent het sleutelwoord 'in' niet, behalve na 'for'" -#: awkgram.y:1301 +#: awkgram.y:1299 msgid "regular expression on right of comparison" msgstr "reguliere expressie rechts van vergelijking" -#: awkgram.y:1417 -#, c-format -msgid "`getline var' invalid inside `%s' rule" -msgstr "'getline var' is ongeldig binnen een '%s'-regel" - -#: awkgram.y:1420 +#: awkgram.y:1411 #, c-format -msgid "`getline' invalid inside `%s' rule" -msgstr "'getline' is ongeldig binnen een '%s'-regel" +msgid "non-redirected `getline' invalid inside `%s' rule" +msgstr "niet-omgeleide 'getline' is ongeldig binnen een '%s'-regel" -#: awkgram.y:1425 +#: awkgram.y:1414 msgid "non-redirected `getline' undefined inside END action" msgstr "niet-omgeleide 'getline' is ongedefinieerd binnen een END-actie" -#: awkgram.y:1444 +#: awkgram.y:1433 msgid "old awk does not support multidimensional arrays" msgstr "oude 'awk' kent geen meerdimensionale arrays" -#: awkgram.y:1541 +#: awkgram.y:1530 msgid "call of `length' without parentheses is not portable" msgstr "aanroep van 'length' zonder haakjes is niet overdraagbaar" -#: awkgram.y:1607 +#: awkgram.y:1596 msgid "indirect function calls are a gawk extension" msgstr "indirecte functieaanroepen zijn een gawk-uitbreiding" -#: awkgram.y:1620 +#: awkgram.y:1609 #, c-format msgid "can not use special variable `%s' for indirect function call" msgstr "" "kan speciale variabele '%s' niet voor indirecte functieaanroep gebruiken" -#: awkgram.y:1698 +#: awkgram.y:1635 +#, fuzzy, c-format +msgid "attempt to use non-function `%s' in function call" +msgstr "functie '%s' wordt gebruikt als array" + +#: awkgram.y:1699 msgid "invalid subscript expression" msgstr "ongeldige index-expressie" -#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2045 awkgram.y:2065 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "waarschuwing: " -#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 +#: awkgram.y:2063 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "fataal: " -#: awkgram.y:2116 +#: awkgram.y:2113 msgid "unexpected newline or end of string" msgstr "onverwacht regeleinde of einde van string" -#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 +#: awkgram.y:2392 awkgram.y:2468 awkgram.y:2691 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:2384 awkgram.y:2509 +#: awkgram.y:2393 awkgram.y:2518 #, 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:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 +#: awkgram.y:2395 awkgram.y:2469 awkgram.y:2519 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "reden onbekend" -#: awkgram.y:2395 awkgram.y:2419 +#: awkgram.y:2404 awkgram.y:2428 #, 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:2408 +#: awkgram.y:2417 #, c-format msgid "already included source file `%s'" msgstr "bronbestand '%s' is reeds ingesloten" -#: awkgram.y:2409 +#: awkgram.y:2418 #, c-format msgid "already loaded shared library `%s'" msgstr "gedeelde bibliotheek '%s' is reeds geladen" -#: awkgram.y:2444 +#: awkgram.y:2453 msgid "@include is a gawk extension" msgstr "'@include' is een gawk-uitbreiding" -#: awkgram.y:2450 +#: awkgram.y:2459 msgid "empty filename after @include" msgstr "lege bestandsnaam na '@include'" -#: awkgram.y:2494 +#: awkgram.y:2503 msgid "@load is a gawk extension" msgstr "'@load' is een gawk-uitbreiding" -#: awkgram.y:2500 +#: awkgram.y:2509 msgid "empty filename after @load" msgstr "lege bestandsnaam na '@load'" -#: awkgram.y:2634 +#: awkgram.y:2643 msgid "empty program text on command line" msgstr "lege programmatekst op opdrachtregel" -#: awkgram.y:2749 +#: awkgram.y:2758 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "kan bronbestand '%s' niet lezen (%s)" -#: awkgram.y:2760 +#: awkgram.y:2769 #, c-format msgid "source file `%s' is empty" msgstr "bronbestand '%s' is leeg" -#: awkgram.y:2937 +#: awkgram.y:2828 +#, c-format +msgid "PEBKAC error: invalid character '\\%03o' in source code" +msgstr "" + +#: awkgram.y:2959 msgid "source file does not end in newline" msgstr "bronbestand eindigt niet met een regeleindeteken (LF)" -#: awkgram.y:3042 +#: awkgram.y:3062 msgid "unterminated regexp ends with `\\' at end of file" msgstr "onafgesloten reguliere expressie eindigt met '\\' aan bestandseinde" -#: awkgram.y:3066 +#: awkgram.y:3089 #, 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:3070 +#: awkgram.y:3093 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "regexp-optie '/.../%c' van 'tawk' werkt niet in gawk" -#: awkgram.y:3077 +#: awkgram.y:3100 msgid "unterminated regexp" msgstr "onafgesloten reguliere expressie" -#: awkgram.y:3081 +#: awkgram.y:3104 msgid "unterminated regexp at end of file" msgstr "onafgesloten reguliere expressie aan bestandseinde" -#: awkgram.y:3140 +#: awkgram.y:3162 msgid "use of `\\ #...' line continuation is not portable" msgstr "gebruik van regelvoortzetting '\\ #...' is niet overdraagbaar" -#: awkgram.y:3156 +#: awkgram.y:3178 msgid "backslash not last character on line" msgstr "backslash is niet het laatste teken op de regel" -#: awkgram.y:3217 +#: awkgram.y:3239 msgid "POSIX does not allow operator `**='" msgstr "POSIX staat operator '**=' niet toe" -#: awkgram.y:3219 +#: awkgram.y:3241 msgid "old awk does not support operator `**='" msgstr "oude 'awk' kent de operator '**=' niet" -#: awkgram.y:3228 +#: awkgram.y:3250 msgid "POSIX does not allow operator `**'" msgstr "POSIX staat operator '**' niet toe" -#: awkgram.y:3230 +#: awkgram.y:3252 msgid "old awk does not support operator `**'" msgstr "oude 'awk' kent de operator '**' niet" -#: awkgram.y:3265 +#: awkgram.y:3287 msgid "operator `^=' is not supported in old awk" msgstr "oude 'awk' kent de operator '^=' niet" -#: awkgram.y:3273 +#: awkgram.y:3295 msgid "operator `^' is not supported in old awk" msgstr "oude 'awk' kent de operator '^' niet" -#: awkgram.y:3366 awkgram.y:3382 command.y:1178 +#: awkgram.y:3392 awkgram.y:3410 command.y:1180 msgid "unterminated string" msgstr "onafgesloten string" -#: awkgram.y:3603 +#: awkgram.y:3631 #, c-format msgid "invalid char '%c' in expression" msgstr "ongeldig teken '%c' in expressie" -#: awkgram.y:3650 +#: awkgram.y:3678 #, c-format msgid "`%s' is a gawk extension" msgstr "'%s' is een gawk-uitbreiding" -#: awkgram.y:3655 +#: awkgram.y:3683 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX staat '%s' niet toe" -#: awkgram.y:3663 +#: awkgram.y:3691 #, c-format msgid "`%s' is not supported in old awk" msgstr "oude 'awk' kent '%s' niet" -#: awkgram.y:3753 +#: awkgram.y:3781 msgid "`goto' considered harmful!\n" msgstr "'goto' wordt als schadelijk beschouwd!\n" -#: awkgram.y:3787 +#: awkgram.y:3815 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d is een ongeldig aantal argumenten voor %s" -#: awkgram.y:3822 +#: awkgram.y:3850 #, 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:3827 +#: awkgram.y:3855 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s: derde parameter is geen veranderbaar object" -#: awkgram.y:3910 awkgram.y:3913 +#: awkgram.y:3938 awkgram.y:3941 msgid "match: third argument is a gawk extension" msgstr "match: derde argument is een gawk-uitbreiding" -#: awkgram.y:3967 awkgram.y:3970 +#: awkgram.y:3995 awkgram.y:3998 msgid "close: second argument is a gawk extension" msgstr "close: tweede argument is een gawk-uitbreiding" -#: awkgram.y:3982 +#: awkgram.y:4010 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "dcgettext(_\"...\") is onjuist: verwijder het liggende streepje" -#: awkgram.y:3997 +#: awkgram.y:4025 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "dcngettext(_\"...\") is onjuist: verwijder het liggende streepje" -#: awkgram.y:4016 +#: awkgram.y:4044 msgid "index: regexp constant as second argument is not allowed" msgstr "" "index: een reguliere-expressie-constante als tweede argument is niet " "toegestaan" -#: awkgram.y:4069 +#: awkgram.y:4097 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "functie '%s': parameter '%s' schaduwt een globale variabele" -#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4154 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:4127 +#: awkgram.y:4155 msgid "sending variable list to standard error" msgstr "variabelenlijst gaat naar standaardfoutuitvoer" -#: awkgram.y:4135 +#: awkgram.y:4163 #, c-format msgid "%s: close failed (%s)" msgstr "%s: sluiten is mislukt (%s)" -#: awkgram.y:4160 +#: awkgram.y:4188 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() twee keer aangeroepen!" -#: awkgram.y:4168 +#: awkgram.y:4196 msgid "there were shadowed variables." msgstr "er waren geschaduwde variabelen." -#: awkgram.y:4239 +#: awkgram.y:4267 #, c-format msgid "function name `%s' previously defined" msgstr "functienaam '%s' is al eerder gedefinieerd" -#: awkgram.y:4285 +#: awkgram.y:4313 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "functie '%s': kan functienaam niet als parameternaam gebruiken" -#: awkgram.y:4288 +#: awkgram.y:4316 #, 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" -#: awkgram.y:4296 +#: awkgram.y:4324 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "functie '%s': parameter #%d, '%s', dupliceert parameter #%d" -#: awkgram.y:4383 awkgram.y:4389 +#: awkgram.y:4411 awkgram.y:4417 #, c-format msgid "function `%s' called but never defined" msgstr "functie '%s' wordt aangeroepen maar is nergens gedefinieerd" -#: awkgram.y:4393 +#: awkgram.y:4421 #, c-format msgid "function `%s' defined but never called directly" msgstr "functie '%s' is gedefinieerd maar wordt nergens direct aangeroepen" -#: awkgram.y:4425 +#: awkgram.y:4453 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "regexp-constante als parameter #%d levert booleanwaarde op" -#: awkgram.y:4484 +#: awkgram.y:4468 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -509,23 +514,23 @@ msgstr "" "functie '%s' wordt aangeroepen met een spatie tussen naam en '(',\n" "of wordt gebruikt als variabele of array" -#: awkgram.y:4720 +#: awkgram.y:4674 msgid "division by zero attempted" msgstr "deling door nul" -#: awkgram.y:4729 +#: awkgram.y:4683 #, c-format msgid "division by zero attempted in `%%'" msgstr "deling door nul in '%%'" -#: awkgram.y:5049 +#: awkgram.y:5003 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:5052 +#: awkgram.y:5006 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "ongeldig doel van toewijzing (opcode %s)" @@ -567,188 +572,198 @@ msgstr "" msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "fflush: '%s' is geen open bestand, pijp, of co-proces" -#: builtin.c:362 +#: builtin.c:351 msgid "index: received non-string first argument" msgstr "index: eerste argument is geen string" -#: builtin.c:364 +#: builtin.c:353 msgid "index: received non-string second argument" msgstr "index: tweede argument is geen string" -#: builtin.c:488 mpfr.c:757 +#: builtin.c:466 mpfr.c:777 msgid "int: received non-numeric argument" msgstr "int: argument is geen getal" -#: builtin.c:525 +#: builtin.c:503 msgid "length: received array argument" msgstr "length: argument is een array" -#: builtin.c:528 +#: builtin.c:506 msgid "`length(array)' is a gawk extension" msgstr "'length(array)' is een gawk-uitbreiding" -#: builtin.c:544 +#: builtin.c:525 msgid "length: received non-string argument" msgstr "length: argument is geen string" -#: builtin.c:575 +#: builtin.c:554 msgid "log: received non-numeric argument" msgstr "log: argument is geen getal" -#: builtin.c:578 +#: builtin.c:557 #, c-format msgid "log: received negative argument %g" msgstr "log: argument %g is negatief" -#: builtin.c:776 builtin.c:781 +#: builtin.c:755 builtin.c:760 builtin.c:911 msgid "fatal: must use `count$' on all formats or none" msgstr "fataal: 'count$' hoort in alle opmaken gebruikt te worden, of in geen" -#: builtin.c:851 +#: builtin.c:830 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "veldbreedte wordt genegeerd voor opmaakaanduiding '%%'" -#: builtin.c:853 +#: builtin.c:832 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "veldprecisie wordt genegeerd voor opmaakaanduiding '%%'" -#: builtin.c:855 +#: builtin.c:834 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "veldbreedte en -precisie worden genegeerd voor opmaakaanduiding '%%'" -#: builtin.c:906 +#: builtin.c:885 msgid "fatal: `$' is not permitted in awk formats" msgstr "fataal: '$' is niet toegestaan in awk-opmaak" -#: builtin.c:915 +#: builtin.c:894 msgid "fatal: arg count with `$' must be > 0" msgstr "fataal: het aantal argumenten met '$' moet > 0 zijn" -#: builtin.c:919 +#: builtin.c:898 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "fataal: argumentental %ld is groter dan het gegeven aantal argumenten" -#: builtin.c:923 +#: builtin.c:902 msgid "fatal: `$' not permitted after period in format" msgstr "fataal: '$' is niet toegestaan na een punt in de opmaak" -#: builtin.c:939 +#: builtin.c:921 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "fataal: geen '$' opgegeven bij positionele veldbreedte of -precisie" -#: builtin.c:1009 +#: builtin.c:991 msgid "`l' is meaningless in awk formats; ignored" msgstr "'l' is betekenisloos in awk-opmaak; genegeerd" -#: builtin.c:1013 +#: builtin.c:995 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fataal: 'l' is niet toegestaan in POSIX awk-opmaak" -#: builtin.c:1026 +#: builtin.c:1008 msgid "`L' is meaningless in awk formats; ignored" msgstr "'L' is betekenisloos in awk-opmaak; genegeerd" -#: builtin.c:1030 +#: builtin.c:1012 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "fataal: 'L' is niet toegestaan in POSIX awk-opmaak" -#: builtin.c:1043 +#: builtin.c:1025 msgid "`h' is meaningless in awk formats; ignored" msgstr "'h' is betekenisloos in awk-opmaak; genegeerd" -#: builtin.c:1047 +#: builtin.c:1029 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fataal: 'h' is niet toegestaan in POSIX awk-opmaak" -#: builtin.c:1463 +#: builtin.c:1055 +#, fuzzy, c-format +msgid "[s]printf: value %g is too big for %%c format" +msgstr "[s]printf: waarde %g ligt buiten toegestaan bereik voor opmaak '%%%c'" + +#: builtin.c:1068 +#, fuzzy, c-format +msgid "[s]printf: value %g is not a valid wide character" +msgstr "[s]printf: waarde %g ligt buiten toegestaan bereik voor opmaak '%%%c'" + +#: builtin.c:1454 #, 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:1561 +#: builtin.c:1552 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "onbekend opmaakteken '%c' wordt genegeerd: geen argument is geconverteerd" -#: builtin.c:1566 +#: builtin.c:1557 msgid "fatal: not enough arguments to satisfy format string" msgstr "fataal: niet genoeg argumenten voor opmaakstring" -#: builtin.c:1568 +#: builtin.c:1559 msgid "^ ran out for this one" msgstr "niet genoeg ^ voor deze" -#: builtin.c:1575 +#: builtin.c:1566 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: opmaakaanduiding mist een stuurletter" -#: builtin.c:1578 +#: builtin.c:1569 msgid "too many arguments supplied for format string" msgstr "te veel argumenten voor opmaakstring" -#: builtin.c:1634 +#: builtin.c:1625 msgid "sprintf: no arguments" msgstr "sprintf: geen argumenten" -#: builtin.c:1657 builtin.c:1668 +#: builtin.c:1648 builtin.c:1659 msgid "printf: no arguments" msgstr "printf: geen argumenten" -#: builtin.c:1711 +#: builtin.c:1702 msgid "sqrt: received non-numeric argument" msgstr "sqrt: argument is geen getal" -#: builtin.c:1715 +#: builtin.c:1706 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: argument %g is negatief" -#: builtin.c:1746 +#: builtin.c:1737 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: lengte %g is niet >= 1" -#: builtin.c:1748 +#: builtin.c:1739 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: lengte %g is niet >= 0" -#: builtin.c:1755 +#: builtin.c:1753 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: lengte %g is geen integer; wordt afgekapt" -#: builtin.c:1760 +#: builtin.c:1758 #, 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" -#: builtin.c:1772 +#: builtin.c:1770 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: startindex %g is ongeldig; 1 wordt gebruikt" -#: builtin.c:1777 +#: builtin.c:1775 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: startindex %g is geen integer; wordt afgekapt" -#: builtin.c:1802 +#: builtin.c:1798 msgid "substr: source string is zero length" msgstr "substr: bronstring heeft lengte nul" -#: builtin.c:1818 +#: builtin.c:1812 #, 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:1826 +#: builtin.c:1820 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -756,186 +771,192 @@ msgstr "" "substr: lengte %g bij startindex %g is groter dan de lengte van het eerste " "argument (%lu)" -#: builtin.c:1900 +#: builtin.c:1890 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: opmaakwaarde in PROCINFO[\"strftime\"] is numeriek" -#: builtin.c:1923 +#: builtin.c:1913 msgid "strftime: received non-numeric second argument" msgstr "strftime: tweede argument is geen getal" -#: builtin.c:1927 +#: builtin.c:1917 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:1934 +#: builtin.c:1924 msgid "strftime: received non-string first argument" msgstr "strftime: eerste argument is geen string" -#: builtin.c:1941 +#: builtin.c:1931 msgid "strftime: received empty format string" msgstr "strftime: opmaakstring is leeg" -#: builtin.c:2007 +#: builtin.c:1997 msgid "mktime: received non-string argument" msgstr "mktime: argument is geen string" -#: builtin.c:2024 +#: builtin.c:2014 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:2059 +#: builtin.c:2049 msgid "'system' function not allowed in sandbox mode" msgstr "'system'-functie is niet toegestaan in sandbox-modus" -#: builtin.c:2064 +#: builtin.c:2054 msgid "system: received non-string argument" msgstr "system: argument is geen string" -#: builtin.c:2184 +#: builtin.c:2174 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "verwijzing naar ongeïnitialiseerd veld '$%d'" -#: builtin.c:2271 +#: builtin.c:2259 msgid "tolower: received non-string argument" msgstr "tolower: argument is geen string" -#: builtin.c:2305 +#: builtin.c:2290 msgid "toupper: received non-string argument" msgstr "toupper: argument is geen string" -#: builtin.c:2341 mpfr.c:672 +#: builtin.c:2323 mpfr.c:679 msgid "atan2: received non-numeric first argument" msgstr "atan2: eerste argument is geen getal" -#: builtin.c:2343 mpfr.c:674 +#: builtin.c:2325 mpfr.c:681 msgid "atan2: received non-numeric second argument" msgstr "atan2: tweede argument is geen getal" -#: builtin.c:2362 +#: builtin.c:2344 msgid "sin: received non-numeric argument" msgstr "sin: argument is geen getal" -#: builtin.c:2378 +#: builtin.c:2360 msgid "cos: received non-numeric argument" msgstr "cos: argument is geen getal" -#: builtin.c:2431 mpfr.c:1156 +#: builtin.c:2413 mpfr.c:1176 msgid "srand: received non-numeric argument" msgstr "srand: argument is geen getal" -#: builtin.c:2462 +#: builtin.c:2444 msgid "match: third argument is not an array" msgstr "match: derde argument is geen array" -#: builtin.c:2734 -msgid "gensub: third argument of 0 treated as 1" +#: builtin.c:2705 +#, fuzzy, c-format +msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: derde argument is 0; wordt beschouwd als 1" -#: builtin.c:3030 +#: builtin.c:2720 +#, fuzzy, c-format +msgid "gensub: third argument %g treated as 1" +msgstr "gensub: derde argument is 0; wordt beschouwd als 1" + +#: builtin.c:3020 msgid "lshift: received non-numeric first argument" msgstr "lshift: eerste argument is geen getal" -#: builtin.c:3032 +#: builtin.c:3022 msgid "lshift: received non-numeric second argument" msgstr "lshift: tweede argument is geen getal" -#: builtin.c:3038 +#: builtin.c:3028 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%f, %f): negatieve waarden geven rare resultaten" -#: builtin.c:3040 +#: builtin.c:3030 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): cijfers na de komma worden afgekapt" -#: builtin.c:3042 +#: builtin.c:3032 #, 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:3067 +#: builtin.c:3057 msgid "rshift: received non-numeric first argument" msgstr "rshift: eerste argument is geen getal" -#: builtin.c:3069 +#: builtin.c:3059 msgid "rshift: received non-numeric second argument" msgstr "rshift: tweede argument is geen getal" -#: builtin.c:3075 +#: builtin.c:3065 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%f, %f): negatieve waarden geven rare resultaten" -#: builtin.c:3077 +#: builtin.c:3067 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): cijfers na de komma worden afgekapt" -#: builtin.c:3079 +#: builtin.c:3069 #, 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:3104 mpfr.c:968 +#: builtin.c:3094 mpfr.c:988 msgid "and: called with less than two arguments" msgstr "and: aangeroepen met minder dan twee argumenten" -#: builtin.c:3109 +#: builtin.c:3099 #, c-format msgid "and: argument %d is non-numeric" msgstr "and: argument %d is niet-numeriek" -#: builtin.c:3113 +#: builtin.c:3103 #, 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:3136 mpfr.c:1000 +#: builtin.c:3126 mpfr.c:1020 msgid "or: called with less than two arguments" msgstr "or: aangeroepen met minder dan twee argumenten" -#: builtin.c:3141 +#: builtin.c:3131 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: argument %d is niet-numeriek" -#: builtin.c:3145 +#: builtin.c:3135 #, 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:3167 mpfr.c:1031 +#: builtin.c:3157 mpfr.c:1051 msgid "xor: called with less than two arguments" msgstr "xor: aangeroepen met minder dan twee argumenten" -#: builtin.c:3173 +#: builtin.c:3163 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: argument %d is niet-numeriek" -#: builtin.c:3177 +#: builtin.c:3167 #, 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:3202 mpfr.c:787 +#: builtin.c:3192 mpfr.c:807 msgid "compl: received non-numeric argument" msgstr "compl: argument is geen getal" -#: builtin.c:3208 +#: builtin.c:3198 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): negatieve waarden geven rare resultaten" -#: builtin.c:3210 +#: builtin.c:3200 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): cijfers na de komma worden afgekapt" -#: builtin.c:3379 +#: builtin.c:3369 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: '%s' is geen geldige taalregio-deelcategorie" @@ -1249,40 +1270,49 @@ msgstr "up [AANTAL] - dit aantal frames naar boven in de stack gaan" msgid "watch var - set a watchpoint for a variable." msgstr "watch VAR - een kijkpunt voor een variabele zetten" -#: command.y:1011 debug.c:401 msg.c:135 +#: command.y:901 +#, fuzzy +msgid "" +"where [N] - (same as backtrace) 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:1013 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "fout: " -#: command.y:1051 +#: command.y:1053 #, c-format msgid "can't read command (%s)\n" msgstr "kan commando niet lezen (%s)\n" -#: command.y:1065 +#: command.y:1067 #, c-format msgid "can't read command (%s)" msgstr "kan commando niet lezen (%s)" -#: command.y:1116 +#: command.y:1118 msgid "invalid character in command" msgstr "ongeldig teken in commando" -#: command.y:1152 +#: command.y:1154 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "onbekend commando - \"%.*s\", probeer help" -#: command.y:1222 +#: command.y:1224 #, c-format msgid "%s" msgstr "%s" -#: command.y:1284 +#: command.y:1286 msgid "invalid character" msgstr "ongeldig teken" -#: command.y:1455 +#: command.y:1457 #, c-format msgid "undefined command: %s\n" msgstr "ongedefinieerd commando: %s\n" @@ -1811,68 +1841,70 @@ msgstr "'%s' is niet toegestaan in huidige context; statement is genegeerd" msgid "`return' not allowed in current context; statement ignored" msgstr "'return' is niet toegestaan in huidige context; statement is genegeerd" -#: debug.c:5590 +#: debug.c:5604 #, c-format msgid "No symbol `%s' in current context" msgstr "Geen symbool '%s' in huidige context" -#: 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 +#: dfa.c:1063 dfa.c:1066 dfa.c:1085 dfa.c:1095 dfa.c:1107 dfa.c:1143 +#: dfa.c:1152 dfa.c:1155 dfa.c:1160 dfa.c:1174 dfa.c:1222 msgid "unbalanced [" msgstr "ongepaarde [" -#: dfa.c:1174 +#: dfa.c:1119 msgid "invalid character class" msgstr "ongeldige tekenklasse" -#: dfa.c:1316 +#: dfa.c:1265 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "syntax van tekenklasse is [[:space:]], niet [:space:]" -#: dfa.c:1366 +#: dfa.c:1327 msgid "unfinished \\ escape" msgstr "onafgemaakte \\-stuurcode" -#: dfa.c:1513 regcomp.c:161 -msgid "Invalid content of \\{\\}" +#: dfa.c:1474 +#, fuzzy +msgid "invalid content of \\{\\}" msgstr "Ongeldige inhoud van \\{\\}" -#: dfa.c:1516 regcomp.c:176 -msgid "Regular expression too big" +#: dfa.c:1477 +#, fuzzy +msgid "regular expression too big" msgstr "Reguliere expressie is te groot" -#: dfa.c:1936 +#: dfa.c:1912 msgid "unbalanced (" msgstr "ongepaarde (" -#: dfa.c:2062 +#: dfa.c:2038 msgid "no syntax specified" msgstr "geen syntax opgegeven" -#: dfa.c:2070 +#: dfa.c:2046 msgid "unbalanced )" msgstr "ongepaarde )" -#: eval.c:394 +#: eval.c:396 #, c-format msgid "unknown nodetype %d" msgstr "onbekend knooptype %d" -#: eval.c:405 eval.c:419 +#: eval.c:407 eval.c:421 #, c-format msgid "unknown opcode %d" msgstr "onbekende opcode %d" -#: eval.c:416 +#: eval.c:418 #, c-format msgid "opcode %s not an operator or keyword" msgstr "opcode %s is geen operator noch sleutelwoord" -#: eval.c:472 +#: eval.c:474 msgid "buffer overflow in genflags2str" msgstr "bufferoverloop in genflags2str()" -#: eval.c:675 +#: eval.c:676 #, c-format msgid "" "\n" @@ -1883,215 +1915,215 @@ msgstr "" "\t# Functieaanroepen-stack:\n" "\n" -#: eval.c:704 +#: eval.c:705 msgid "`IGNORECASE' is a gawk extension" msgstr "'IGNORECASE' is een gawk-uitbreiding" -#: eval.c:736 +#: eval.c:737 msgid "`BINMODE' is a gawk extension" msgstr "'BINMODE' is een gawk-uitbreiding" -#: eval.c:794 +#: eval.c:795 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "BINMODE-waarde '%s' is ongeldig, wordt behandeld als 3" -#: eval.c:885 +#: eval.c:912 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "onjuiste opgave van '%sFMT': '%s'" -#: eval.c:969 +#: eval.c:996 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "'--lint' wordt uitgeschakeld wegens toewijzing aan 'LINT'" -#: eval.c:1147 +#: eval.c:1174 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "verwijzing naar ongeïnitialiseerd argument '%s'" -#: eval.c:1148 +#: eval.c:1175 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "verwijzing naar ongeïnitialiseerde variabele '%s'" -#: eval.c:1166 +#: eval.c:1193 msgid "attempt to field reference from non-numeric value" msgstr "veldverwijzingspoging via een waarde die geen getal is" -#: eval.c:1168 +#: eval.c:1195 msgid "attempt to field reference from null string" msgstr "veldverwijzingspoging via een lege string" -#: eval.c:1176 +#: eval.c:1203 #, c-format msgid "attempt to access field %ld" msgstr "toegangspoging tot veld %ld" -#: eval.c:1185 +#: eval.c:1212 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "verwijzing naar ongeïnitialiseerd veld '$%ld'" -#: eval.c:1272 +#: eval.c:1299 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "functie '%s' aangeroepen met meer argumenten dan gedeclareerd" -#: eval.c:1473 +#: eval.c:1500 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack(): onverwacht type '%s'" -#: eval.c:1569 +#: eval.c:1596 msgid "division by zero attempted in `/='" msgstr "deling door nul in '/='" -#: eval.c:1576 +#: eval.c:1603 #, c-format msgid "division by zero attempted in `%%='" msgstr "deling door nul in '%%='" -#: ext.c:89 ext.c:171 +#: ext.c:65 ext.c:147 msgid "extensions are not allowed in sandbox mode" msgstr "uitbreidingen zijn niet toegestaan in sandbox-modus" -#: ext.c:92 +#: ext.c:68 msgid "-l / @load are gawk extensions" msgstr "-l / '@load' zijn gawk-uitbreidingen" -#: ext.c:95 +#: ext.c:71 msgid "load_ext: received NULL lib_name" msgstr "load_ext: lege bibliotheeknaam ontvangen" -#: ext.c:98 +#: ext.c:74 #, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "load_ext: kan bibliotheek '%s' niet openen (%s)\n" -#: ext.c:104 +#: ext.c:80 #, 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" -#: ext.c:110 +#: ext.c:86 #, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "load_ext: bibliotheek '%s' kan functie '%s' niet aanroepen (%s)\n" -#: ext.c:114 +#: ext.c:90 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "load_ext: bibliotheek '%s': initialisatiefunctie '%s' is mislukt\n" -#: ext.c:174 +#: ext.c:150 msgid "`extension' is a gawk extension" msgstr "'extension' is een gawk-uitbreiding" -#: ext.c:177 +#: ext.c:153 msgid "extension: received NULL lib_name" msgstr "uitbreiding: lege bibliotheeknaam ontvangen" -#: ext.c:180 +#: ext.c:156 #, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "extension: kan bibliotheek '%s' niet openen (%s)" -#: ext.c:186 +#: ext.c:162 #, 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)" -#: ext.c:190 +#: ext.c:166 #, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "extension: bibliotheek '%s' kan functie '%s' niet aanroepen (%s)" -#: ext.c:221 +#: ext.c:197 msgid "make_builtin: missing function name" msgstr "make_builtin: ontbrekende functienaam" -#: ext.c:236 +#: ext.c:212 #, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "make_builtin: kan functie '%s' niet herdefiniëren" -#: ext.c:240 +#: ext.c:216 #, c-format msgid "make_builtin: function `%s' already defined" msgstr "make_builtin: functie '%s' is al gedefinieerd" -#: ext.c:244 +#: ext.c:220 #, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "make_builtin: functienaam '%s' is al eerder gedefinieerd" -#: ext.c:246 +#: ext.c:222 #, 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" -#: ext.c:249 ext.c:304 +#: ext.c:225 ext.c:280 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: negatief aantal argumenten voor functie '%s'" -#: ext.c:276 +#: ext.c:252 msgid "extension: missing function name" msgstr "extension: ontbrekende functienaam" -#: ext.c:279 ext.c:283 +#: ext.c:255 ext.c:259 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: ongeldig teken '%c' in functienaam '%s'" -#: ext.c:291 +#: ext.c:267 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: kan functie '%s' niet herdefiniëren" -#: ext.c:295 +#: ext.c:271 #, c-format msgid "extension: function `%s' already defined" msgstr "extension: functie '%s' is al gedefinieerd" -#: ext.c:299 +#: ext.c:275 #, c-format msgid "extension: function name `%s' previously defined" msgstr "extension: functienaam '%s' is al eerder gedefinieerd" -#: ext.c:301 +#: ext.c:277 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" msgstr "extension: kan in gawk ingebouwde '%s' niet als functienaam gebruiken" -#: ext.c:375 +#: ext.c:351 #, 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" -#: ext.c:378 +#: ext.c:354 #, c-format msgid "function `%s': missing argument #%d" msgstr "functie '%s': ontbrekend argument #%d" -#: ext.c:395 +#: ext.c:371 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "functie '%s': argument #%d: een scalair wordt gebruikt als array" -#: ext.c:399 +#: ext.c:375 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "functie '%s': argument #%d: een array wordt gebruikt als scalair" -#: ext.c:413 +#: ext.c:389 msgid "dynamic loading of library not supported" msgstr "het dynamisch laden van de bibliotheek wordt niet ondersteund" @@ -2237,7 +2269,7 @@ msgstr "wait: aangeroepen met te veel argumenten" msgid "inplace_begin: in-place editing already active" msgstr "inplace_begin(): in-situ-bewerken is al actief" -#: extension/inplace.c:133 extension/inplace.c:207 +#: extension/inplace.c:133 extension/inplace.c:210 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "inplace_begin(): verwachtte twee argumenten maar is aangeroepen met %d" @@ -2269,56 +2301,56 @@ msgstr "inplace_begin(): '%s' is geen normaal bestand" msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "inplace_begin(): mkstemp('%s') is mislukt (%s)" -#: extension/inplace.c:178 +#: extension/inplace.c:181 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "inplace_begin(): chmod is mislukt (%s)" -#: extension/inplace.c:185 +#: extension/inplace.c:188 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "inplace_begin(): dup(stdout) is mislukt (%s)" -#: extension/inplace.c:188 +#: extension/inplace.c:191 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "inplace_begin(): dup2(%d, stdout) is mislukt (%s)" -#: extension/inplace.c:191 +#: extension/inplace.c:194 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "inplace_begin(): close(%d) is mislukt (%s)" -#: extension/inplace.c:210 +#: extension/inplace.c:213 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "" "inplace_end(): kan eerste argument niet als bestandsnaamstring oppakken" -#: extension/inplace.c:217 +#: extension/inplace.c:220 msgid "inplace_end: in-place editing not active" msgstr "inplace_end(): in-situ-bewerken is niet actief" -#: extension/inplace.c:223 +#: extension/inplace.c:226 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "inplace_end(): dup2(%d, stdout) is mislukt (%s)" -#: extension/inplace.c:226 +#: extension/inplace.c:229 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "inplace_end(): close(%d) is mislukt (%s)" -#: extension/inplace.c:230 +#: extension/inplace.c:233 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "inplace_end(): fsetpos(stdout) is mislukt (%s)" -#: extension/inplace.c:243 +#: extension/inplace.c:246 #, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "inplace_end(): link('%s', '%s') is mislukt (%s)" -#: extension/inplace.c:253 +#: extension/inplace.c:256 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "inplace_end(): rename('%s', '%s') is mislukt (%s)" @@ -2360,50 +2392,54 @@ msgstr "readfile: aangeroepen met te veel argumenten" msgid "readfile: called with no arguments" msgstr "readfile: aangeroepen zonder argumenten" -#: extension/rwarray.c:124 +#: extension/revoutput.c:125 +msgid "revoutput: could not initialize REVOUT variable" +msgstr "" + +#: extension/rwarray.c:124 extension/rwarray0.c:109 msgid "writea: called with too many arguments" msgstr "writea: aangeroepen met te veel argumenten" -#: extension/rwarray.c:131 +#: extension/rwarray.c:131 extension/rwarray0.c:116 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "do_writea: argument 0 is geen string\n" -#: extension/rwarray.c:137 +#: extension/rwarray.c:137 extension/rwarray0.c:122 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "do_writea: argument 1 is geen array\n" -#: extension/rwarray.c:184 +#: extension/rwarray.c:184 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "write_array: kan array niet pletten\n" -#: extension/rwarray.c:198 +#: extension/rwarray.c:198 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "write_array: kan geplet array niet vrijgeven\n" -#: extension/rwarray.c:280 +#: extension/rwarray.c:280 extension/rwarray0.c:265 msgid "reada: called with too many arguments" msgstr "reada: aangeroepen met te veel argumenten" -#: extension/rwarray.c:287 +#: extension/rwarray.c:287 extension/rwarray0.c:272 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "do_reada: argument 0 is geen string\n" -#: extension/rwarray.c:293 +#: extension/rwarray.c:293 extension/rwarray0.c:278 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "do_reada: argument 1 is geen array\n" -#: extension/rwarray.c:337 +#: extension/rwarray.c:337 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "do_reada: clear_array() is mislukt\n" -#: extension/rwarray.c:374 +#: extension/rwarray.c:374 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "read_array: set_array_element() is mislukt\n" @@ -2432,92 +2468,92 @@ msgstr "sleep: argument is negatief" msgid "sleep: not supported on this platform" msgstr "sleep: wordt op dit platform niet ondersteund" -#: field.c:345 +#: field.c:346 msgid "NF set to negative value" msgstr "NF is op een negatieve waarde gezet" -#: field.c:971 field.c:978 field.c:982 +#: field.c:958 field.c:965 field.c:969 msgid "split: fourth argument is a gawk extension" msgstr "split: vierde argument is een gawk-uitbreiding" -#: field.c:975 +#: field.c:962 msgid "split: fourth argument is not an array" msgstr "split: vierde argument is geen array" -#: field.c:989 +#: field.c:976 msgid "split: second argument is not an array" msgstr "split: tweede argument is geen array" -#: field.c:993 +#: field.c:980 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" -#: field.c:998 +#: field.c:985 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" -#: field.c:1001 +#: field.c:988 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" -#: field.c:1032 +#: field.c:1019 msgid "split: null string for third arg is a gawk extension" msgstr "split: lege string als derde argument is een gawk-uitbreiding" -#: field.c:1072 +#: field.c:1059 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: vierde argument is geen array" -#: field.c:1077 +#: field.c:1064 msgid "patsplit: second argument is not an array" msgstr "patsplit: tweede argument is geen array" -#: field.c:1083 +#: field.c:1070 msgid "patsplit: third argument must be non-null" msgstr "patsplit: derde argument moet niet-nil zijn" -#: field.c:1087 +#: field.c:1074 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" -#: field.c:1092 +#: field.c:1079 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" -#: field.c:1095 +#: field.c:1082 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" -#: field.c:1133 +#: field.c:1120 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "'FIELDWIDTHS' is een gawk-uitbreiding" -#: field.c:1197 +#: field.c:1184 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "ongeldige waarde voor FIELDWIDTHS, nabij '%s'" -#: field.c:1270 +#: field.c:1257 msgid "null string for `FS' is a gawk extension" msgstr "een lege string als 'FS' is een gawk-uitbreiding" -#: field.c:1274 +#: field.c:1261 msgid "old awk does not support regexps as value of `FS'" msgstr "oude 'awk' staat geen reguliere expressies toe als waarde van 'FS'" -#: field.c:1393 +#: field.c:1380 msgid "`FPAT' is a gawk extension" msgstr "'FPAT' is een gawk-uitbreiding" @@ -2533,20 +2569,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:807 +#: gawkapi.c:809 msgid "remove_element: received null array" msgstr "remove_element(): leeg array ontvangen" -#: gawkapi.c:810 +#: gawkapi.c:812 msgid "remove_element: received null subscript" msgstr "remove_element(): lege index ontvangen" -#: gawkapi.c:947 +#: gawkapi.c:949 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "api_flatten_array(): kan index %d niet converteren\n" -#: gawkapi.c:952 +#: gawkapi.c:954 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "api_flatten_array(): kan waarde %d niet converteren\n" @@ -2606,307 +2642,289 @@ msgstr "%s: optie '-W %s' staat geen argument toe\n" msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: optie '-W %s' vereist een argument\n" -#: io.c:392 +#: io.c:423 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "opdrachtregelargument '%s' is een map -- overgeslagen" -#: io.c:395 io.c:513 +#: io.c:426 io.c:544 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "kan bestand '%s' niet openen om te lezen (%s)" -#: io.c:640 +#: io.c:671 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "sluiten van bestandsdescriptor %d ('%s') is mislukt (%s)" -#: io.c:716 +#: io.c:749 msgid "redirection not allowed in sandbox mode" msgstr "omleiding is niet toegestaan in sandbox-modus" -#: io.c:750 +#: io.c:783 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "expressie in omleiding '%s' heeft alleen een getal als waarde" -#: io.c:756 +#: io.c:789 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "expressie voor omleiding '%s' heeft een lege string als waarde" -#: io.c:761 +#: io.c:794 #, 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" -#: io.c:809 +#: io.c:842 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "onnodige mix van '>' en '>>' voor bestand '%.*s'" -#: io.c:863 +#: io.c:896 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "kan pijp '%s' niet openen voor uitvoer (%s)" -#: io.c:873 +#: io.c:906 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "kan pijp '%s' niet openen voor invoer (%s)" -#: io.c:904 +#: io.c:937 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" msgstr "kan tweerichtings-pijp '%s' niet openen voor in- en uitvoer (%s)" -#: io.c:986 +#: io.c:1019 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "kan niet omleiden van '%s' (%s)" -#: io.c:989 +#: io.c:1022 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "kan niet omleiden naar '%s' (%s)" -#: io.c:1040 +#: io.c:1073 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 +#: io.c:1089 #, c-format msgid "close of `%s' failed (%s)." msgstr "sluiten van '%s' is mislukt (%s)" -#: io.c:1064 +#: io.c:1097 msgid "too many pipes or input files open" msgstr "te veel pijpen of invoerbestanden geopend" -#: io.c:1086 +#: io.c:1119 msgid "close: second argument must be `to' or `from'" msgstr "close: tweede argument moet 'to' of 'from' zijn" -#: io.c:1103 +#: io.c:1136 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: '%.*s' is geen open bestand, pijp, of co-proces" -#: io.c:1108 +#: io.c:1141 msgid "close of redirection that was never opened" msgstr "sluiten van een nooit-geopende omleiding" -#: io.c:1205 +#: io.c:1238 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: omleiding '%s' is niet geopend met '|&'; tweede argument wordt " "genegeerd" -#: io.c:1222 +#: io.c:1255 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "afsluitwaarde %d bij mislukte sluiting van pijp '%s' (%s)" -#: io.c:1225 +#: io.c:1258 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "afsluitwaarde %d bij mislukte sluiting van bestand '%s' (%s)" -#: io.c:1245 +#: io.c:1278 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "geen expliciete sluiting van socket '%s' aangegeven" -#: io.c:1248 +#: io.c:1281 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "geen expliciete sluiting van co-proces '%s' aangegeven" -#: io.c:1251 +#: io.c:1284 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "geen expliciete sluiting van pijp '%s' aangegeven" -#: io.c:1254 +#: io.c:1287 #, c-format msgid "no explicit close of file `%s' provided" msgstr "geen expliciete sluiting van bestand '%s' aangegeven" -#: io.c:1284 io.c:1342 main.c:864 main.c:906 +#: io.c:1317 io.c:1375 main.c:628 main.c:670 #, c-format msgid "error writing standard output (%s)" msgstr "fout tijdens schrijven van standaarduitvoer (%s)" -#: io.c:1289 io.c:1348 main.c:866 +#: io.c:1322 io.c:1381 main.c:630 #, c-format msgid "error writing standard error (%s)" msgstr "fout tijdens schrijven van standaardfoutuitvoer (%s)" -#: io.c:1297 +#: io.c:1330 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "leegmaken van pijp '%s' is mislukt (%s)" -#: io.c:1300 +#: io.c:1333 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "leegmaken door co-proces van pijp naar '%s' is mislukt (%s)" -#: io.c:1303 +#: io.c:1336 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "leegmaken van bestand '%s' is mislukt (%s)" -#: io.c:1420 +#: io.c:1453 #, c-format msgid "local port %s invalid in `/inet'" msgstr "lokale poort %s is ongeldig in '/inet'" -#: io.c:1438 +#: io.c:1471 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "host- en poortinformatie (%s, %s) zijn ongeldig" -#: io.c:1590 -#, c-format -msgid "no (known) protocol supplied in special filename `%s'" -msgstr "geen (bekend) protocol aangegeven in speciale bestandsnaam '%s'" - -#: io.c:1604 -#, c-format -msgid "special file name `%s' is incomplete" -msgstr "speciale bestandsnaam '%s' is onvolledig" - -#: io.c:1621 -msgid "must supply a remote hostname to `/inet'" -msgstr "'/inet' heeft een gindse hostnaam nodig" - -#: io.c:1639 -msgid "must supply a remote port to `/inet'" -msgstr "'/inet' heeft een gindse poort nodig" - -#: io.c:1685 +#: io.c:1673 msgid "TCP/IP communications are not supported" msgstr "TCP/IP-communicatie wordt niet ondersteund" -#: io.c:1867 +#: io.c:1854 #, c-format msgid "could not open `%s', mode `%s'" msgstr "kan '%s' niet openen -- modus '%s'" -#: io.c:1917 +#: io.c:1904 #, c-format msgid "close of master pty failed (%s)" msgstr "kan meester-pty van dochterproces niet sluiten (%s)" -#: io.c:1919 io.c:2105 io.c:2305 +#: io.c:1906 io.c:2092 io.c:2293 #, c-format msgid "close of stdout in child failed (%s)" msgstr "kan standaarduitvoer van dochterproces niet sluiten (%s)" -#: io.c:1922 +#: io.c:1909 #, 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)" -#: io.c:1924 io.c:2110 +#: io.c:1911 io.c:2097 #, c-format msgid "close of stdin in child failed (%s)" msgstr "kan standaardinvoer van dochterproces niet sluiten (%s)" -#: io.c:1927 +#: io.c:1914 #, 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)" -#: io.c:1929 io.c:1951 +#: io.c:1916 io.c:1938 #, c-format msgid "close of slave pty failed (%s)" msgstr "kan slaaf-pty niet sluiten (%s)" -#: io.c:2040 io.c:2108 io.c:2276 io.c:2308 +#: io.c:2027 io.c:2095 io.c:2264 io.c:2296 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" "kan pijp niet overzetten naar standaarduitvoer van dochterproces (dup: %s)" -#: io.c:2047 io.c:2113 +#: io.c:2034 io.c:2100 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" "kan pijp niet overzetten naar standaardinvoer van dochterproces (dup: %s)" -#: io.c:2073 io.c:2298 +#: io.c:2060 io.c:2286 msgid "restoring stdout in parent process failed\n" msgstr "kan standaarduitvoer van ouderproces niet herstellen\n" -#: io.c:2081 +#: io.c:2068 msgid "restoring stdin in parent process failed\n" msgstr "kan standaardinvoer van ouderproces niet herstellen\n" -#: io.c:2116 io.c:2310 io.c:2324 +#: io.c:2103 io.c:2298 io.c:2313 #, c-format msgid "close of pipe failed (%s)" msgstr "kan pijp niet sluiten (%s)" -#: io.c:2174 +#: io.c:2162 msgid "`|&' not supported" msgstr "'|&' wordt niet ondersteund" -#: io.c:2261 +#: io.c:2249 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "kan pijp '%s' niet openen (%s)" -#: io.c:2318 +#: io.c:2307 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "kan voor '%s' geen dochterproces starten (fork: %s)" -#: io.c:2790 +#: io.c:2734 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser(): NULL-pointer gekregen" -#: io.c:2818 +#: io.c:2762 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "invoer-parser '%s' botst met eerder geïnstalleerde invoer-parser '%s'" -#: io.c:2825 +#: io.c:2769 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "invoer-parser '%s' kan '%s' niet openen" -#: io.c:2845 +#: io.c:2789 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper(): NULL-pointer gekregen" -#: io.c:2873 +#: io.c:2817 #, 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'" -#: io.c:2880 +#: io.c:2824 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "uitvoer-wrapper '%s' kan '%s' niet openen" -#: io.c:2901 +#: io.c:2845 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor(): NULL-pointer gekregen" -#: io.c:2930 +#: io.c:2874 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2914,213 +2932,200 @@ msgid "" msgstr "" "tweeweg-processor '%s' botst met eerder geïnstalleerde tweeweg-processor '%s'" -#: io.c:2939 +#: io.c:2883 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "tweeweg-processor '%s' kan '%s' niet openen" -#: io.c:3064 +#: io.c:3008 #, c-format msgid "data file `%s' is empty" msgstr "databestand '%s' is leeg" -#: io.c:3106 io.c:3114 +#: io.c:3050 io.c:3058 msgid "could not allocate more input memory" msgstr "kan geen extra invoergeheugen meer toewijzen" -#: io.c:3682 +#: io.c:3636 msgid "multicharacter value of `RS' is a gawk extension" msgstr "een 'RS' van meerdere tekens is een gawk-uitbreiding" -#: io.c:3771 +#: io.c:3783 msgid "IPv6 communication is not supported" msgstr "IPv6-communicatie wordt niet ondersteund" -#: main.c:405 -msgid "empty argument to `-e/--source' ignored" -msgstr "argument van '-e/--source' is leeg; genegeerd" - -#: main.c:495 -#, c-format -msgid "%s: option `-W %s' unrecognized, ignored\n" -msgstr "%s: optie '-W %s' is onbekend; genegeerd\n" - -#: main.c:541 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: optie vereist een argument -- %c\n" - -#: main.c:562 +#: main.c:321 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "omgevingsvariabele 'POSIXLY_CORRECT' is gezet: '--posix' ingeschakeld" -#: main.c:568 +#: main.c:327 msgid "`--posix' overrides `--traditional'" msgstr "'--posix' overstijgt '--traditional'" -#: main.c:579 +#: main.c:338 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "'--posix'/'--traditional' overstijgen '--non-decimal-data'" -#: main.c:583 +#: main.c:342 #, c-format msgid "running %s setuid root may be a security problem" msgstr "het uitvoeren van %s als 'setuid root' kan een veiligheidsrisico zijn" -#: main.c:588 +#: main.c:346 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "'--posix' overstijgt '--characters-as-bytes'" -#: main.c:647 +#: main.c:404 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "kan standaardinvoer niet in binaire modus zetten (%s)" -#: main.c:650 +#: main.c:407 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "kan standaarduitvoer niet in binaire modus zetten (%s)" -#: main.c:652 +#: main.c:409 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "kan standaardfoutuitvoer niet in binaire modus zetten (%s)" -#: main.c:710 +#: main.c:469 msgid "no program text at all!" msgstr "helemaal geen programmatekst!" -#: main.c:799 +#: main.c:563 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "Gebruik: %s [opties] -f programmabestand [--] bestand...\n" -#: main.c:801 +#: main.c:565 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" " of: %s [opties] [--] %cprogrammatekst%c bestand...\n" "\n" -#: main.c:806 +#: main.c:570 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "\tPOSIX-opties:\t\tEquivalente GNU-opties: (standaard)\n" -#: main.c:807 +#: main.c:571 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f programmabestand\t--file=programmabestand\n" -#: main.c:808 +#: main.c:572 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F veldscheidingsteken\t--field-separator=veldscheidingsteken\n" -#: main.c:809 +#: main.c:573 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "" "\t-v var=waarde\t\t--assign=var=waarde\n" "\n" -#: main.c:810 +#: main.c:574 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "\tKorte opties:\t\tEquivalente GNU-opties: (uitbreidingen)\n" -#: main.c:811 +#: main.c:575 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:812 +#: main.c:576 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:813 +#: main.c:577 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:814 +#: main.c:578 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[bestand]\t\t--dump-variables[=bestand]\n" -#: main.c:815 +#: main.c:579 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[bestand]\t\t--debug[=bestand]\n" -#: main.c:816 +#: main.c:580 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'programmatekst'\t--source='programmatekst'\n" -#: main.c:817 +#: main.c:581 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E bestand\t\t--exec=bestand\n" -#: main.c:818 +#: main.c:582 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:819 +#: main.c:583 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:820 +#: main.c:584 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i include-bestand\t\t--include=include-bestand\n" -#: main.c:821 +#: main.c:585 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l bibliotheek\t\t--load=bibliotheek\n" -#: main.c:822 -msgid "\t-L [fatal]\t\t--lint[=fatal]\n" +#: main.c:586 +#, fuzzy +msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L [fataal]\t\t--lint[=fataal]\n" -#: 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:824 +#: main.c:587 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:825 +#: main.c:588 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:826 +#: main.c:589 +msgid "\t-n\t\t\t--non-decimal-data\n" +msgstr "\t-n\t\t\t--non-decimal-data\n" + +#: main.c:590 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[bestand]\t\t--pretty-print[=bestand]\n" -#: main.c:827 +#: main.c:591 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:828 +#: main.c:592 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[bestand]\t\t--profile[=bestand]\n" -#: main.c:829 +#: main.c:593 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:830 +#: main.c:594 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:831 +#: main.c:595 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:832 +#: main.c:596 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:833 +#: main.c:597 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:835 +#: main.c:599 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t\t--nostalgia\n" -#: main.c:838 +#: main.c:602 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t\t--parsedebug\n" @@ -3129,7 +3134,7 @@ msgstr "\t-Y\t\t\t--parsedebug\n" #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:847 +#: main.c:611 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3142,7 +3147,7 @@ msgstr "" "Meld fouten in de vertaling aan <vertaling@vrijschrift.org>.\n" "\n" -#: main.c:851 +#: main.c:615 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3152,7 +3157,7 @@ msgstr "" "Standaard leest het van standaardinvoer en schrijft naar standaarduitvoer.\n" "\n" -#: main.c:855 +#: main.c:619 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3162,7 +3167,7 @@ msgstr "" "\tgawk '{ som += $1 }; END { print som }' bestand\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:880 +#: main.c:644 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3180,7 +3185,7 @@ msgstr "" "uitgegeven door de Free Software Foundation, naar keuze ofwel onder\n" "versie 3 of onder een nieuwere versie van die licentie.\n" -#: main.c:888 +#: main.c:652 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" @@ -3194,7 +3199,7 @@ msgstr "" "Zie de GNU General Public License voor meer details.\n" "\n" -#: main.c:894 +#: main.c:658 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" @@ -3203,16 +3208,16 @@ msgstr "" "ontvangen te hebben; is dit niet het geval, dan kunt u deze licentie\n" "ook vinden op http://www.gnu.org/licenses/.\n" -#: main.c:931 +#: main.c:695 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft maakt van FS geen tab in POSIX-awk" -#: main.c:1208 +#: main.c:982 #, c-format msgid "unknown value for field spec: %d\n" msgstr "onbekende waarde voor veldspecificatie: %d\n" -#: main.c:1306 +#: main.c:1080 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3221,99 +3226,117 @@ msgstr "" "%s: argument '%s' van '-v' is niet van de vorm 'var=waarde'\n" "\n" -#: main.c:1332 +#: main.c:1106 #, c-format msgid "`%s' is not a legal variable name" msgstr "'%s' is geen geldige variabelenaam" -#: main.c:1335 +#: main.c:1109 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "'%s' is geen variabelenaam; zoekend naar bestand '%s=%s'" -#: main.c:1339 +#: main.c:1113 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "kan in gawk ingebouwde '%s' niet als variabelenaam gebruiken" -#: main.c:1344 +#: main.c:1118 #, c-format msgid "cannot use function `%s' as variable name" msgstr "kan functie '%s' niet als variabelenaam gebruiken" -#: main.c:1397 +#: main.c:1171 msgid "floating point exception" msgstr "drijvendekomma-berekeningsfout" -#: main.c:1404 +#: main.c:1178 msgid "fatal error: internal error" msgstr "fatale fout: **interne fout**" -#: main.c:1419 +#: main.c:1193 msgid "fatal error: internal error: segfault" msgstr "fatale fout: **interne fout**: segmentatiefout" -#: main.c:1431 +#: main.c:1205 msgid "fatal error: internal error: stack overflow" msgstr "fatale fout: **interne fout**: stack is vol" -#: main.c:1490 +#: main.c:1264 #, c-format msgid "no pre-opened fd %d" msgstr "geen reeds-geopende bestandsdescriptor %d" -#: main.c:1497 +#: main.c:1271 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "kan /dev/null niet openen voor bestandsdescriptor %d" -#: mpfr.c:550 +#: main.c:1485 +msgid "empty argument to `-e/--source' ignored" +msgstr "argument van '-e/--source' is leeg; genegeerd" + +#: main.c:1556 +msgid "-M ignored: MPFR/GMP support not compiled in" +msgstr "" + +#: main.c:1577 +#, c-format +msgid "%s: option `-W %s' unrecognized, ignored\n" +msgstr "%s: optie '-W %s' is onbekend; genegeerd\n" + +#: main.c:1630 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: optie vereist een argument -- %c\n" + +#: mpfr.c:557 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "PREC-waarde '%.*s' is ongeldig" -#: mpfr.c:608 +#: mpfr.c:615 #, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "RNDMODE-waarde '%.*s' is ongeldig" -#: mpfr.c:698 +#: mpfr.c:711 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: niet-numeriek argument ontvangen" -#: mpfr.c:800 +#: mpfr.c:820 msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%Rg): negatieve waarden geven rare resultaten" -#: mpfr.c:804 +#: mpfr.c:824 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg): cijfers na de komma worden afgekapt" -#: mpfr.c:816 +#: mpfr.c:836 #, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "compl(%Zd): negatieve waarden geven rare resultaten" -#: mpfr.c:835 +#: mpfr.c:855 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: niet-numeriek argument #%d ontvangen" -#: mpfr.c:845 +#: mpfr.c:865 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: argument #%d heeft ongeldige waarde %Rg; 0 wordt gebruikt" -#: mpfr.c:857 +#: mpfr.c:877 msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "%s: negatieve waarde %2$Rg van argument #%1$d geeft rare resultaten" -#: mpfr.c:863 +#: mpfr.c:883 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" -#: mpfr.c:878 +#: mpfr.c:898 #, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "%1$s: negatieve waarde %3$Zd van argument #%2$d geeft rare resultaten" @@ -3323,24 +3346,24 @@ msgstr "%1$s: negatieve waarde %3$Zd van argument #%2$d geeft rare resultaten" msgid "cmd. line:" msgstr "commandoregel:" -#: node.c:421 +#: node.c:409 msgid "backslash at end of string" msgstr "backslash aan het einde van de string" -#: node.c:500 +#: node.c:488 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "oude 'awk' kent de stuurcodereeks '\\%c' niet" -#: node.c:551 +#: node.c:539 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX staat stuurcode '\\x' niet toe" -#: node.c:557 +#: node.c:545 msgid "no hex digits in `\\x' escape sequence" msgstr "geen hex cijfers in stuurcodereeks '\\x'" -#: node.c:579 +#: node.c:567 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3349,12 +3372,12 @@ msgstr "" "hexadecimale stuurcode \\x%.*s van %d tekens wordt waarschijnlijk niet " "afgehandeld zoals u verwacht" -#: node.c:594 +#: node.c:582 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "stuurcodereeks '\\%c' behandeld als normale '%c'" -#: node.c:739 +#: node.c:726 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3384,12 +3407,12 @@ msgid "sending profile to standard error" msgstr "profiel gaat naar standaardfoutuitvoer" #: profile.c:193 -#, c-format +#, fuzzy, c-format msgid "" -"\t# %s block(s)\n" +"\t# %s rule(s)\n" "\n" msgstr "" -"\t# %s-blok(ken)\n" +"\t# Regel(s)\n" "\n" #: profile.c:198 @@ -3406,11 +3429,11 @@ msgstr "" msgid "internal error: %s with null vname" msgstr "**interne fout**: %s met lege 'vname'" -#: profile.c:537 +#: profile.c:538 msgid "internal error: builtin with null fname" msgstr "**interne fout**: ingebouwde functie met lege 'fname'" -#: profile.c:949 +#: profile.c:958 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" @@ -3419,12 +3442,12 @@ msgstr "" "\t# Geladen uitbreidingen ('-l' en/of '@load')\n" "\n" -#: profile.c:972 +#: profile.c:981 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawk-profiel, gemaakt op %s\n" -#: profile.c:1475 +#: profile.c:1521 #, c-format msgid "" "\n" @@ -3433,7 +3456,7 @@ msgstr "" "\n" "\t# Functies, alfabetisch geordend\n" -#: profile.c:1513 +#: profile.c:1559 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str(): onbekend omleidingstype %d" @@ -3444,82 +3467,118 @@ msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" "component '%.*s' van reguliere expressie moet vermoedelijk '[%.*s]' zijn" -#: regcomp.c:131 +#: regcomp.c:139 msgid "Success" msgstr "Gelukt" -#: regcomp.c:134 +#: regcomp.c:142 msgid "No match" msgstr "Geen overeenkomsten" -#: regcomp.c:137 +#: regcomp.c:145 msgid "Invalid regular expression" msgstr "Ongeldige reguliere expressie" -#: regcomp.c:140 +#: regcomp.c:148 msgid "Invalid collation character" msgstr "Ongeldig samengesteld teken" -#: regcomp.c:143 +#: regcomp.c:151 msgid "Invalid character class name" msgstr "Ongeldige tekenklassenaam" -#: regcomp.c:146 +#: regcomp.c:154 msgid "Trailing backslash" msgstr "Backslash aan het eind" -#: regcomp.c:149 +#: regcomp.c:157 msgid "Invalid back reference" msgstr "Ongeldige terugverwijzing" -#: regcomp.c:152 -msgid "Unmatched [ or [^" +#: regcomp.c:160 +#, fuzzy +msgid "Unmatched [, [^, [:, [., or [=" msgstr "Ongepaarde [ of [^" -#: regcomp.c:155 +#: regcomp.c:163 msgid "Unmatched ( or \\(" msgstr "Ongepaarde ( of \\(" -#: regcomp.c:158 +#: regcomp.c:166 msgid "Unmatched \\{" msgstr "Ongepaarde \\{" -#: regcomp.c:164 +#: regcomp.c:169 +msgid "Invalid content of \\{\\}" +msgstr "Ongeldige inhoud van \\{\\}" + +#: regcomp.c:172 msgid "Invalid range end" msgstr "Ongeldig bereikeinde" -#: regcomp.c:167 +#: regcomp.c:175 msgid "Memory exhausted" msgstr "Onvoldoende geheugen beschikbaar" -#: regcomp.c:170 +#: regcomp.c:178 msgid "Invalid preceding regular expression" msgstr "Ongeldige voorafgaande reguliere expressie" -#: regcomp.c:173 +#: regcomp.c:181 msgid "Premature end of regular expression" msgstr "Voortijdig einde van reguliere expressie" -#: regcomp.c:179 +#: regcomp.c:184 +msgid "Regular expression too big" +msgstr "Reguliere expressie is te groot" + +#: regcomp.c:187 msgid "Unmatched ) or \\)" msgstr "Ongepaarde ) of \\)" -#: regcomp.c:704 +#: regcomp.c:712 msgid "No previous regular expression" msgstr "Geen eerdere reguliere expressie" -#: symbol.c:741 +#: symbol.c:677 +#, fuzzy, c-format +msgid "function `%s': can't use function `%s' as a parameter name" +msgstr "functie '%s': kan functienaam niet als parameternaam gebruiken" + +#: symbol.c:809 msgid "can not pop main context" msgstr "kan hoofdcontext niet poppen" +#~ msgid "`getline var' invalid inside `%s' rule" +#~ msgstr "'getline var' is ongeldig binnen een '%s'-regel" + +#~ msgid "`getline' invalid inside `%s' rule" +#~ msgstr "'getline' is ongeldig binnen een '%s'-regel" + +#~ msgid "no (known) protocol supplied in special filename `%s'" +#~ msgstr "geen (bekend) protocol aangegeven in speciale bestandsnaam '%s'" + +#~ msgid "special file name `%s' is incomplete" +#~ msgstr "speciale bestandsnaam '%s' is onvolledig" + +#~ msgid "must supply a remote hostname to `/inet'" +#~ msgstr "'/inet' heeft een gindse hostnaam nodig" + +#~ msgid "must supply a remote port to `/inet'" +#~ msgstr "'/inet' heeft een gindse poort nodig" + +#~ msgid "" +#~ "\t# %s block(s)\n" +#~ "\n" +#~ msgstr "" +#~ "\t# %s-blok(ken)\n" +#~ "\n" + #~ 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" -#~ msgid "attempt to use function `%s' as an array" -#~ msgstr "functie '%s' wordt gebruikt als array" - #~ msgid "reference to uninitialized element `%s[\"%.*s\"]'" #~ msgstr "verwijzing naar ongeïnitialiseerd element '%s[\"%.*s\"]'" @@ -3598,9 +3657,6 @@ msgstr "kan hoofdcontext niet poppen" #~ msgid "function `%s' not defined" #~ msgstr "functie '%s' is niet gedefinieerd" -#~ msgid "non-redirected `getline' invalid inside `%s' rule" -#~ msgstr "niet-omgeleide 'getline' is ongeldig binnen een '%s'-regel" - #~ msgid "`nextfile' cannot be called from a `%s' rule" #~ msgstr "'nextfile' kan niet aangeroepen worden in een '%s'-regel" @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.1.0b\n" -"Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2014-04-08 19:23+0300\n" +"Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" +"POT-Creation-Date: 2015-02-26 20:05+0200\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" @@ -39,9 +39,9 @@ msgstr "próba użycia parametru `%s' skalaru jako tablicy" msgid "attempt to use scalar `%s' as an array" msgstr "próba użycia skalaru `%s' jako tablicy" -#: 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 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 +#: builtin.c:1665 builtin.c:2092 builtin.c:2106 eval.c:1149 eval.c:1153 +#: eval.c:1558 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "próba użycia tablicy `%s' w kontekście skalaru" @@ -96,417 +96,423 @@ 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:1314 +#: array.c:1313 #, c-format msgid "`%s' is invalid as a function name" msgstr "nieprawidłowa nazwa funkcji `%s'" -#: array.c:1318 +#: array.c:1317 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "funkcja porównująca w sortowaniu `%s' nie została zdefiniowna" -#: awkgram.y:233 +#: awkgram.y:226 #, c-format msgid "%s blocks must have an action part" msgstr "%s bloków musi posiadać część dotyczącą akcji" -#: awkgram.y:236 +#: awkgram.y:229 msgid "each rule must have a pattern or an action part" msgstr "każda reguła musi posiadać wzorzec lub część dotyczącą akcji" -#: awkgram.y:325 awkgram.y:336 +#: awkgram.y:320 awkgram.y:331 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "stary awk nie wspiera wielokrotnych reguł `BEGIN' lub `END'" -#: awkgram.y:373 +#: awkgram.y:368 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "" "`%s' jest funkcją wbudowaną, więc nie może zostać ponownie zdefiniowana" -#: awkgram.y:419 +#: awkgram.y:417 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "" "stałe wyrażenie regularne `//' wygląda jak komentarz C++, ale nim nie jest" -#: awkgram.y:423 +#: awkgram.y:421 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "" "stałe wyrażenie regularne `/%s/' wygląda jak komentarz C, ale nim nie jest" -#: awkgram.y:515 +#: awkgram.y:513 #, c-format msgid "duplicate case values in switch body: %s" msgstr "powielone wartości case w ciele switch: %s" -#: awkgram.y:536 +#: awkgram.y:534 msgid "duplicate `default' detected in switch body" msgstr "wykryto powielony `default' w ciele switch" -#: awkgram.y:796 awkgram.y:3723 +#: awkgram.y:794 awkgram.y:3751 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:3715 +#: awkgram.y:803 awkgram.y:3743 msgid "`continue' is not allowed outside a loop" msgstr "instrukcja `continue' poza pętlą jest niedozwolona" -#: awkgram.y:815 +#: awkgram.y:813 #, c-format msgid "`next' used in %s action" msgstr "`next' użyty w akcji %s" -#: awkgram.y:824 +#: awkgram.y:822 #, c-format msgid "`nextfile' used in %s action" msgstr "`nextfile' użyty w akcji %s" -#: awkgram.y:848 +#: awkgram.y:846 msgid "`return' used outside function context" msgstr "`return' użyty poza kontekstem funkcji" -#: awkgram.y:922 +#: awkgram.y:920 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" "zwykły `print' w regułach BEGIN lub END powinien prawdopodobnie być jako " "`print \"\"'" -#: awkgram.y:988 awkgram.y:1037 +#: awkgram.y:986 awkgram.y:1035 msgid "`delete' is not allowed with SYMTAB" msgstr "`delete' nie jest dozwolony z SYMTAB" -#: awkgram.y:990 awkgram.y:1039 +#: awkgram.y:988 awkgram.y:1037 msgid "`delete' is not allowed with FUNCTAB" msgstr "`delete' nie jest dozwolony z FUNCTAB" -#: awkgram.y:1024 awkgram.y:1028 +#: awkgram.y:1022 awkgram.y:1026 msgid "`delete(array)' is a non-portable tawk extension" msgstr "`delete(tablica)' jest nieprzenośnym rozszerzeniem tawk" -#: awkgram.y:1149 +#: awkgram.y:1147 msgid "multistage two-way pipelines don't work" msgstr "wieloetapowe dwukierunkowe linie potokowe nie działają" -#: awkgram.y:1264 +#: awkgram.y:1262 msgid "regular expression on right of assignment" msgstr "wyrażanie regularne po prawej stronie przypisania" -#: awkgram.y:1275 +#: awkgram.y:1273 msgid "regular expression on left of `~' or `!~' operator" msgstr "wyrażenie regularne po lewej stronie operatora `~' lub `!~'" -#: awkgram.y:1291 awkgram.y:1442 +#: awkgram.y:1289 awkgram.y:1431 msgid "old awk does not support the keyword `in' except after `for'" msgstr "" "stary awk nie wspiera słowa kluczowego `in', z wyjątkiem po słowie `for'" -#: awkgram.y:1301 +#: awkgram.y:1299 msgid "regular expression on right of comparison" msgstr "wyrażenie regularne po prawej stronie porównania" -#: awkgram.y:1417 -#, c-format -msgid "`getline var' invalid inside `%s' rule" -msgstr "nieprawidłowy `getline var' wewnątrz reguły `%s'" - -#: awkgram.y:1420 +#: awkgram.y:1411 #, c-format -msgid "`getline' invalid inside `%s' rule" -msgstr "nieprawidłowy `getline' wewnątrz reguły `%s'" +msgid "non-redirected `getline' invalid inside `%s' rule" +msgstr "" +"komenda `getline' bez przekierowania jest nieprawidłowa wewnątrz reguły `%s'" -#: awkgram.y:1425 +#: awkgram.y:1414 msgid "non-redirected `getline' undefined inside END action" msgstr "" "komenda `getline' bez przekierowania nie jest zdefiniowana wewnątrz akcji END" -#: awkgram.y:1444 +#: awkgram.y:1433 msgid "old awk does not support multidimensional arrays" msgstr "stary awk nie wspiera wielowymiarowych tablic" -#: awkgram.y:1541 +#: awkgram.y:1530 msgid "call of `length' without parentheses is not portable" msgstr "wywołanie `length' bez nawiasów jest nieprzenośne" -#: awkgram.y:1607 +#: awkgram.y:1596 msgid "indirect function calls are a gawk extension" msgstr "pośrednie wywołania funkcji są rozszerzeniem gawk" -#: awkgram.y:1620 +#: awkgram.y:1609 #, c-format msgid "can not use special variable `%s' for indirect function call" msgstr "" "nie można użyć specjalnej zmiennej `%s' do pośredniego wywołania funkcji" -#: awkgram.y:1698 +#: awkgram.y:1635 +#, fuzzy, c-format +msgid "attempt to use non-function `%s' in function call" +msgstr "próba użycia funkcji `%s' jako tablicy" + +#: awkgram.y:1699 msgid "invalid subscript expression" msgstr "nieprawidłowe wyrażenie indeksowe" -#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2045 awkgram.y:2065 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "ostrzeżenie: " -#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 +#: awkgram.y:2063 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "fatalny błąd: " -#: awkgram.y:2116 +#: awkgram.y:2113 msgid "unexpected newline or end of string" msgstr "niespodziewany znak nowego wiersza lub końca łańcucha" -#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 +#: awkgram.y:2392 awkgram.y:2468 awkgram.y:2691 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:2384 awkgram.y:2509 +#: awkgram.y:2393 awkgram.y:2518 #, 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:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 +#: awkgram.y:2395 awkgram.y:2469 awkgram.y:2519 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "nieznany powód" -#: awkgram.y:2395 awkgram.y:2419 +#: awkgram.y:2404 awkgram.y:2428 #, 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:2408 +#: awkgram.y:2417 #, c-format msgid "already included source file `%s'" msgstr "plik źródłowy `%s' jest już załączony" -#: awkgram.y:2409 +#: awkgram.y:2418 #, c-format msgid "already loaded shared library `%s'" msgstr "biblioteka współdzielona jest już załadowana `%s'" -#: awkgram.y:2444 +#: awkgram.y:2453 msgid "@include is a gawk extension" msgstr "@include jest rozszerzeniem gawk" -#: awkgram.y:2450 +#: awkgram.y:2459 msgid "empty filename after @include" msgstr "pusta nazwa pliku po @include" -#: awkgram.y:2494 +#: awkgram.y:2503 msgid "@load is a gawk extension" msgstr "@load jest rozszerzeniem gawk" -#: awkgram.y:2500 +#: awkgram.y:2509 msgid "empty filename after @load" msgstr "pusta nazwa pliku po @load" -#: awkgram.y:2634 +#: awkgram.y:2643 msgid "empty program text on command line" msgstr "pusty tekst programu w linii poleceń" -#: awkgram.y:2749 +#: awkgram.y:2758 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "nie można otworzyć pliku źródłowego `%s' (%s)" -#: awkgram.y:2760 +#: awkgram.y:2769 #, c-format msgid "source file `%s' is empty" msgstr "plik źródłowy `%s' jest pusty" -#: awkgram.y:2937 +#: awkgram.y:2828 +#, c-format +msgid "PEBKAC error: invalid character '\\%03o' in source code" +msgstr "" + +#: awkgram.y:2959 msgid "source file does not end in newline" msgstr "plik źródłowy nie posiada na końcu znaku nowego wiersza" -#: awkgram.y:3042 +#: awkgram.y:3062 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:3066 +#: awkgram.y:3089 #, 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:3070 +#: awkgram.y:3093 #, 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:3077 +#: awkgram.y:3100 msgid "unterminated regexp" msgstr "niezakończone wyrażenie regularne" -#: awkgram.y:3081 +#: awkgram.y:3104 msgid "unterminated regexp at end of file" msgstr "niezakończone wyrażenie regularne na końcu pliku" -#: awkgram.y:3140 +#: awkgram.y:3162 msgid "use of `\\ #...' line continuation is not portable" msgstr "użycie `\\ #...' kontynuacji linii nie jest przenośne" -#: awkgram.y:3156 +#: awkgram.y:3178 msgid "backslash not last character on line" msgstr "backslash nie jest ostatnim znakiem w wierszu" -#: awkgram.y:3217 +#: awkgram.y:3239 msgid "POSIX does not allow operator `**='" msgstr "POSIX nie zezwala na operator `**='" -#: awkgram.y:3219 +#: awkgram.y:3241 msgid "old awk does not support operator `**='" msgstr "stary awk nie wspiera operatora `**='" -#: awkgram.y:3228 +#: awkgram.y:3250 msgid "POSIX does not allow operator `**'" msgstr "POSIX nie zezwala na operator `**'" -#: awkgram.y:3230 +#: awkgram.y:3252 msgid "old awk does not support operator `**'" msgstr "stary awk nie wspiera operatora `**'" -#: awkgram.y:3265 +#: awkgram.y:3287 msgid "operator `^=' is not supported in old awk" msgstr "operator `^=' nie jest wspierany w starym awk" -#: awkgram.y:3273 +#: awkgram.y:3295 msgid "operator `^' is not supported in old awk" msgstr "operator `^' nie jest wspierany w starym awk" -#: awkgram.y:3366 awkgram.y:3382 command.y:1178 +#: awkgram.y:3392 awkgram.y:3410 command.y:1180 msgid "unterminated string" msgstr "niezakończony łańcuch" -#: awkgram.y:3603 +#: awkgram.y:3631 #, c-format msgid "invalid char '%c' in expression" msgstr "nieprawidłowy znak '%c' w wyrażeniu" -#: awkgram.y:3650 +#: awkgram.y:3678 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s' jest rozszerzeniem gawk" -#: awkgram.y:3655 +#: awkgram.y:3683 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX nie zezwala na `%s'" -#: awkgram.y:3663 +#: awkgram.y:3691 #, c-format msgid "`%s' is not supported in old awk" msgstr "`%s' nie jest wspierany w starym awk" -#: awkgram.y:3753 +#: awkgram.y:3781 msgid "`goto' considered harmful!\n" msgstr "`goto' uważane za szkodliwe!\n" -#: awkgram.y:3787 +#: awkgram.y:3815 #, 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:3822 +#: awkgram.y:3850 #, 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:3827 +#: awkgram.y:3855 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s trzeci parametr nie jest zmiennym obiektem" -#: awkgram.y:3910 awkgram.y:3913 +#: awkgram.y:3938 awkgram.y:3941 msgid "match: third argument is a gawk extension" msgstr "match: trzeci argument jest rozszerzeniem gawk" -#: awkgram.y:3967 awkgram.y:3970 +#: awkgram.y:3995 awkgram.y:3998 msgid "close: second argument is a gawk extension" msgstr "close: drugi argument jest rozszerzeniem gawk" -#: awkgram.y:3982 +#: awkgram.y:4010 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "nieprawidłowe użycie dcgettext(_\"...\"): usuń znak podkreślenia" -#: awkgram.y:3997 +#: awkgram.y:4025 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "nieprawidłowe użycie dcngettext(_\"...\"): usuń znak podkreślenia" -#: awkgram.y:4016 +#: awkgram.y:4044 msgid "index: regexp constant as second argument is not allowed" msgstr "index: stały regexp jako drugi argument nie jest dozwolony" -#: awkgram.y:4069 +#: awkgram.y:4097 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funkcja `%s': parametr `%s' zasłania globalną zmienną" -#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4154 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:4127 +#: awkgram.y:4155 msgid "sending variable list to standard error" msgstr "wysyłanie listy zmiennych na standardowe wyjście diagnostyczne" -#: awkgram.y:4135 +#: awkgram.y:4163 #, c-format msgid "%s: close failed (%s)" msgstr "%s: zamknięcie nie powiodło się (%s)" -#: awkgram.y:4160 +#: awkgram.y:4188 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() wywołana podwójnie!" -#: awkgram.y:4168 +#: awkgram.y:4196 msgid "there were shadowed variables." msgstr "wystąpiły przykryte zmienne." -#: awkgram.y:4239 +#: awkgram.y:4267 #, c-format msgid "function name `%s' previously defined" msgstr "nazwa funkcji `%s' została zdefiniowana poprzednio" -#: awkgram.y:4285 +#: awkgram.y:4313 #, 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:4288 +#: awkgram.y:4316 #, 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:4296 +#: awkgram.y:4324 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funkcja `%s': parametr #%d, `%s', powiela parametr #%d" -#: awkgram.y:4383 awkgram.y:4389 +#: awkgram.y:4411 awkgram.y:4417 #, c-format msgid "function `%s' called but never defined" msgstr "funkcja `%s' została wywołana, ale nigdy nie została zdefiniowana" -#: awkgram.y:4393 +#: awkgram.y:4421 #, 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:4425 +#: awkgram.y:4453 #, 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:4484 +#: awkgram.y:4468 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -516,21 +522,21 @@ msgstr "" "`(',\n" "lub użyta jako zmienna lub jako tablica" -#: awkgram.y:4720 +#: awkgram.y:4674 msgid "division by zero attempted" msgstr "próba dzielenia przez zero" -#: awkgram.y:4729 +#: awkgram.y:4683 #, c-format msgid "division by zero attempted in `%%'" msgstr "próba dzielenia przez zero w `%%'" -#: awkgram.y:5049 +#: awkgram.y:5003 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 +#: awkgram.y:5006 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "nieprawidłowy cel przypisania (opcode %s)" @@ -570,193 +576,203 @@ msgstr "" 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:362 +#: builtin.c:351 msgid "index: received non-string first argument" msgstr "index: otrzymano pierwszy argument, który nie jest łańcuchem" -#: builtin.c:364 +#: builtin.c:353 msgid "index: received non-string second argument" msgstr "index: otrzymano drugi argument, który nie jest łańcuchem" -#: builtin.c:488 mpfr.c:757 +#: builtin.c:466 mpfr.c:777 msgid "int: received non-numeric argument" msgstr "int: otrzymano argument, który nie jest liczbą" -#: builtin.c:525 +#: builtin.c:503 msgid "length: received array argument" msgstr "length: otrzymano argument, który jest tablicą" -#: builtin.c:528 +#: builtin.c:506 msgid "`length(array)' is a gawk extension" msgstr "`length(tablica)' jest rozszerzeniem gawk" -#: builtin.c:544 +#: builtin.c:525 msgid "length: received non-string argument" msgstr "length: otrzymano argument, który nie jest łańcuchem" -#: builtin.c:575 +#: builtin.c:554 msgid "log: received non-numeric argument" msgstr "log: otrzymano argument, który nie jest liczbą" -#: builtin.c:578 +#: builtin.c:557 #, c-format msgid "log: received negative argument %g" msgstr "log: otrzymano ujemny argument %g" -#: builtin.c:776 builtin.c:781 +#: builtin.c:755 builtin.c:760 builtin.c:911 msgid "fatal: must use `count$' on all formats or none" msgstr "fatal: należy użyć `count$' we wszystkich formatach lub nic" -#: builtin.c:851 +#: builtin.c:830 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "szerokość pola jest ignorowana dla specyfikatora `%%'" -#: builtin.c:853 +#: builtin.c:832 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "precyzja jest ignorowana dla specyfikatora `%%'" -#: builtin.c:855 +#: builtin.c:834 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "szerokość pola i precyzja są ignorowane dla specyfikatora `%%'" -#: builtin.c:906 +#: builtin.c:885 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal: `$' jest niedozwolony w formatach awk" -#: builtin.c:915 +#: builtin.c:894 msgid "fatal: arg count with `$' must be > 0" msgstr "fatal: argument count z `$' musi być > 0" -#: builtin.c:919 +#: builtin.c:898 #, 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:923 +#: builtin.c:902 msgid "fatal: `$' not permitted after period in format" msgstr "fatal: `$' jest niedozwolony po kropce w formacie" -#: builtin.c:939 +#: builtin.c:921 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "fatal: brak `$' dla pozycyjnej szerokości pola lub precyzji" -#: builtin.c:1009 +#: builtin.c:991 msgid "`l' is meaningless in awk formats; ignored" msgstr "`l' jest bezsensowny w formatach awk; zignorowany" -#: builtin.c:1013 +#: builtin.c:995 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fatal: `l' jest niedozwolony w formatach POSIX awk" -#: builtin.c:1026 +#: builtin.c:1008 msgid "`L' is meaningless in awk formats; ignored" msgstr "`L' jest bezsensowny w formatach awk; zignorowany" -#: builtin.c:1030 +#: builtin.c:1012 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "fatal: `L' jest niedozwolony w formatach POSIX awk" -#: builtin.c:1043 +#: builtin.c:1025 msgid "`h' is meaningless in awk formats; ignored" msgstr "`h' jest bezsensowny w formatach awk; zignorowany" -#: builtin.c:1047 +#: builtin.c:1029 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fatal: `h' jest niedozwolony w formatach POSIX awk" -#: builtin.c:1463 +#: builtin.c:1055 +#, fuzzy, c-format +msgid "[s]printf: value %g is too big for %%c format" +msgstr "[s]printf: wartość %g jest poza zasięgiem dla formatu `%%%c'" + +#: builtin.c:1068 +#, fuzzy, c-format +msgid "[s]printf: value %g is not a valid wide character" +msgstr "[s]printf: wartość %g jest poza zasięgiem dla formatu `%%%c'" + +#: builtin.c:1454 #, 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:1561 +#: builtin.c:1552 #, 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:1566 +#: builtin.c:1557 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:1568 +#: builtin.c:1559 msgid "^ ran out for this one" msgstr "zabrakło ^" -#: builtin.c:1575 +#: builtin.c:1566 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: specyfikator formatu nie posiada kontrolnej litery" -#: builtin.c:1578 +#: builtin.c:1569 msgid "too many arguments supplied for format string" msgstr "zbyt dużo podanych argumentów w łańcuchu formatującym" -#: builtin.c:1634 +#: builtin.c:1625 msgid "sprintf: no arguments" msgstr "sprintf: brak argumentów" -#: builtin.c:1657 builtin.c:1668 +#: builtin.c:1648 builtin.c:1659 msgid "printf: no arguments" msgstr "printf: brak argumentów" -#: builtin.c:1711 +#: builtin.c:1702 msgid "sqrt: received non-numeric argument" msgstr "sqrt: otrzymano argument, który nie jest liczbą" -#: builtin.c:1715 +#: builtin.c:1706 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: wywołana z ujemnym argumentem %g" -#: builtin.c:1746 +#: builtin.c:1737 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: długość %g nie jest >= 1" -#: builtin.c:1748 +#: builtin.c:1739 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: długość %g nie jest >= 0" -#: builtin.c:1755 +#: builtin.c:1753 #, 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:1760 +#: builtin.c:1758 #, 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:1772 +#: builtin.c:1770 #, 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:1777 +#: builtin.c:1775 #, 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:1802 +#: builtin.c:1798 msgid "substr: source string is zero length" msgstr "substr: łańcuch źródłowy ma zerową długość" -#: builtin.c:1818 +#: builtin.c:1812 #, 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:1826 +#: builtin.c:1820 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -764,187 +780,193 @@ msgstr "" "substr: długość %g zaczynając od %g przekracza długość pierwszego argumentu " "(%lu)" -#: builtin.c:1900 +#: builtin.c:1890 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" "strftime: wartość formatu w PROCINFO[\"strftime\"] posiada typ numeryczny" -#: builtin.c:1923 +#: builtin.c:1913 msgid "strftime: received non-numeric second argument" msgstr "strftime: otrzymano drugi argument, który nie jest liczbą" -#: builtin.c:1927 +#: builtin.c:1917 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:1934 +#: builtin.c:1924 msgid "strftime: received non-string first argument" msgstr "strftime: otrzymano pierwszy argument, który nie jest łańcuchem" -#: builtin.c:1941 +#: builtin.c:1931 msgid "strftime: received empty format string" msgstr "strftime: otrzymano pusty łańcuch formatujący" -#: builtin.c:2007 +#: builtin.c:1997 msgid "mktime: received non-string argument" msgstr "mktime: otrzymano argument, który nie jest łańcuchem" -#: builtin.c:2024 +#: builtin.c:2014 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:2059 +#: builtin.c:2049 msgid "'system' function not allowed in sandbox mode" msgstr "funkcja 'system' nie jest dozwolona w trybie piaskownicy" -#: builtin.c:2064 +#: builtin.c:2054 msgid "system: received non-string argument" msgstr "system: otrzymano argument, który nie jest łańcuchem" -#: builtin.c:2184 +#: builtin.c:2174 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "odwołanie do niezainicjowanego pola `$%d'" -#: builtin.c:2271 +#: builtin.c:2259 msgid "tolower: received non-string argument" msgstr "tolower: otrzymano argument, który nie jest łańcuchem" -#: builtin.c:2305 +#: builtin.c:2290 msgid "toupper: received non-string argument" msgstr "toupper: otrzymano argument, który nie jest łańcuchem" -#: builtin.c:2341 mpfr.c:672 +#: builtin.c:2323 mpfr.c:679 msgid "atan2: received non-numeric first argument" msgstr "atan2: otrzymano pierwszy argument, który nie jest liczbą" -#: builtin.c:2343 mpfr.c:674 +#: builtin.c:2325 mpfr.c:681 msgid "atan2: received non-numeric second argument" msgstr "atan2: otrzymano drugi argument, który nie jest liczbą" -#: builtin.c:2362 +#: builtin.c:2344 msgid "sin: received non-numeric argument" msgstr "sin: otrzymano argument, który nie jest liczbą" -#: builtin.c:2378 +#: builtin.c:2360 msgid "cos: received non-numeric argument" msgstr "cos: otrzymano argument, który nie jest liczbą" -#: builtin.c:2431 mpfr.c:1156 +#: builtin.c:2413 mpfr.c:1176 msgid "srand: received non-numeric argument" msgstr "srand: otrzymano argument, który nie jest liczbą" -#: builtin.c:2462 +#: builtin.c:2444 msgid "match: third argument is not an array" msgstr "match: otrzymano trzeci argument, który nie jest tablicą" -#: builtin.c:2734 -msgid "gensub: third argument of 0 treated as 1" +#: builtin.c:2705 +#, fuzzy, c-format +msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: trzeci argument 0 potraktowany jako 1" -#: builtin.c:3030 +#: builtin.c:2720 +#, fuzzy, c-format +msgid "gensub: third argument %g treated as 1" +msgstr "gensub: trzeci argument 0 potraktowany jako 1" + +#: builtin.c:3020 msgid "lshift: received non-numeric first argument" msgstr "lshift: otrzymano pierwszy argument, który nie jest liczbą" -#: builtin.c:3032 +#: builtin.c:3022 msgid "lshift: received non-numeric second argument" msgstr "lshift: otrzymano drugi argument, który nie jest liczbą" -#: builtin.c:3038 +#: builtin.c:3028 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%f, %f): ujemne wartości spowodują dziwne wyniki" -#: builtin.c:3040 +#: builtin.c:3030 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): ułamkowe wartości zostaną obcięte" -#: builtin.c:3042 +#: builtin.c:3032 #, 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:3067 +#: builtin.c:3057 msgid "rshift: received non-numeric first argument" msgstr "rshift: otrzymano pierwszy argument, który nie jest liczbą" -#: builtin.c:3069 +#: builtin.c:3059 msgid "rshift: received non-numeric second argument" msgstr "rshift: otrzymano drugi argument, który nie jest liczbą" -#: builtin.c:3075 +#: builtin.c:3065 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%f, %f): ujemne wartości spowodują dziwne wyniki" -#: builtin.c:3077 +#: builtin.c:3067 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): ułamkowe wartości zostaną obcięte" -#: builtin.c:3079 +#: builtin.c:3069 #, 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:3104 mpfr.c:968 +#: builtin.c:3094 mpfr.c:988 msgid "and: called with less than two arguments" msgstr "and: wywołano z mniej niż dwoma argumentami" -#: builtin.c:3109 +#: builtin.c:3099 #, c-format msgid "and: argument %d is non-numeric" msgstr "and: argument %d nie jest liczbą" -#: builtin.c:3113 +#: builtin.c:3103 #, 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:3136 mpfr.c:1000 +#: builtin.c:3126 mpfr.c:1020 msgid "or: called with less than two arguments" msgstr "or: wywołano z mniej niż dwoma argumentami" -#: builtin.c:3141 +#: builtin.c:3131 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: argument %d nie jest liczbą" -#: builtin.c:3145 +#: builtin.c:3135 #, 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:3167 mpfr.c:1031 +#: builtin.c:3157 mpfr.c:1051 msgid "xor: called with less than two arguments" msgstr "xor: wywołano z mniej niż dwoma argumentami" -#: builtin.c:3173 +#: builtin.c:3163 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: argument %d nie jest liczbą" -#: builtin.c:3177 +#: builtin.c:3167 #, 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:3202 mpfr.c:787 +#: builtin.c:3192 mpfr.c:807 msgid "compl: received non-numeric argument" msgstr "compl: otrzymano argument, który nie jest liczbą" -#: builtin.c:3208 +#: builtin.c:3198 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): ujemne wartości spowodują dziwne wyniki" -#: builtin.c:3210 +#: builtin.c:3200 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): ułamkowe wartości zostaną obcięte" -#: builtin.c:3379 +#: builtin.c:3369 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s' nie jest prawidłową kategorią lokalizacji" @@ -1224,40 +1246,46 @@ msgstr "" msgid "watch var - set a watchpoint for a variable." msgstr "" -#: command.y:1011 debug.c:401 msg.c:135 +#: command.y:901 +msgid "" +"where [N] - (same as backtrace) print trace of all or N innermost (outermost " +"if N < 0) frames." +msgstr "" + +#: command.y:1013 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "błąd: " -#: command.y:1051 +#: command.y:1053 #, c-format msgid "can't read command (%s)\n" msgstr "nie można odczytać komendy (%s)\n" -#: command.y:1065 +#: command.y:1067 #, c-format msgid "can't read command (%s)" msgstr "nie można odczytać komendy (%s)" -#: command.y:1116 +#: command.y:1118 msgid "invalid character in command" msgstr "nieprawidłowy znak w komendzie" -#: command.y:1152 +#: command.y:1154 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "nieznana komenda - \"%.*s\", spróbuj pomoc" -#: command.y:1222 +#: command.y:1224 #, c-format msgid "%s" msgstr "%s" -#: command.y:1284 +#: command.y:1286 msgid "invalid character" msgstr "nieprawidłowy znak" -#: command.y:1455 +#: command.y:1457 #, c-format msgid "undefined command: %s\n" msgstr "niezdefiniowana komenda: %s\n" @@ -1778,68 +1806,70 @@ 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:5590 +#: debug.c:5604 #, c-format msgid "No symbol `%s' in current context" msgstr "Brak symbolu `%s' w bieżącym kontekście" -#: 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 +#: dfa.c:1063 dfa.c:1066 dfa.c:1085 dfa.c:1095 dfa.c:1107 dfa.c:1143 +#: dfa.c:1152 dfa.c:1155 dfa.c:1160 dfa.c:1174 dfa.c:1222 msgid "unbalanced [" msgstr "[ nie do pary" -#: dfa.c:1174 +#: dfa.c:1119 msgid "invalid character class" msgstr "nieprawidłowa klasa znaku" -#: dfa.c:1316 +#: dfa.c:1265 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "składnia klasy znaku to [[:space:]], a nie [:space:]" -#: dfa.c:1366 +#: dfa.c:1327 msgid "unfinished \\ escape" msgstr "niedokończona sekwencja ucieczki \\" -#: dfa.c:1513 regcomp.c:161 -msgid "Invalid content of \\{\\}" +#: dfa.c:1474 +#, fuzzy +msgid "invalid content of \\{\\}" msgstr "Nieprawidłowa zawartość \\{\\}" -#: dfa.c:1516 regcomp.c:176 -msgid "Regular expression too big" +#: dfa.c:1477 +#, fuzzy +msgid "regular expression too big" msgstr "Wyrażenie regularne jest zbyt duże" -#: dfa.c:1936 +#: dfa.c:1912 msgid "unbalanced (" msgstr "( nie do pary" -#: dfa.c:2062 +#: dfa.c:2038 msgid "no syntax specified" msgstr "nie podano składni" -#: dfa.c:2070 +#: dfa.c:2046 msgid "unbalanced )" msgstr ") nie do pary" -#: eval.c:394 +#: eval.c:396 #, c-format msgid "unknown nodetype %d" msgstr "nieznany typ węzła %d" -#: eval.c:405 eval.c:419 +#: eval.c:407 eval.c:421 #, c-format msgid "unknown opcode %d" msgstr "nieznany opcode %d" -#: eval.c:416 +#: eval.c:418 #, c-format msgid "opcode %s not an operator or keyword" msgstr "opcode %s nie jest operatorem ani słowem kluczowym" -#: eval.c:472 +#: eval.c:474 msgid "buffer overflow in genflags2str" msgstr "przepełnienie bufora w genflags2str" -#: eval.c:675 +#: eval.c:676 #, c-format msgid "" "\n" @@ -1850,216 +1880,216 @@ msgstr "" "\t# Stos Wywoławczy Funkcji:\n" "\n" -#: eval.c:704 +#: eval.c:705 msgid "`IGNORECASE' is a gawk extension" msgstr "`IGNORECASE' jest rozszerzeniem gawk" -#: eval.c:736 +#: eval.c:737 msgid "`BINMODE' is a gawk extension" msgstr "`BINMODE' jest rozszerzeniem gawk" -#: eval.c:794 +#: eval.c:795 #, 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:885 +#: eval.c:912 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "zła specyfikacja `%sFMT' `%s'" -#: eval.c:969 +#: eval.c:996 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "wyłączenie `--lint' z powodu przypisania do `LINT'" -#: eval.c:1147 +#: eval.c:1174 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "odwołanie do niezainicjowanego argumentu `%s'" -#: eval.c:1148 +#: eval.c:1175 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "odwołanie do niezainicjowanej zmiennej `%s'" -#: eval.c:1166 +#: eval.c:1193 msgid "attempt to field reference from non-numeric value" msgstr "próba odwołania do pola poprzez nienumeryczną wartość" -#: eval.c:1168 +#: eval.c:1195 msgid "attempt to field reference from null string" msgstr "próba odwołania z zerowego łańcucha" -#: eval.c:1176 +#: eval.c:1203 #, c-format msgid "attempt to access field %ld" msgstr "próba dostępu do pola %ld" -#: eval.c:1185 +#: eval.c:1212 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "odwołanie do niezainicjowanego pola `$%ld'" -#: eval.c:1272 +#: eval.c:1299 #, 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:1473 +#: eval.c:1500 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: niespodziewany typ `%s'" -#: eval.c:1569 +#: eval.c:1596 msgid "division by zero attempted in `/='" msgstr "próba dzielenia przez zero w `/='" -#: eval.c:1576 +#: eval.c:1603 #, c-format msgid "division by zero attempted in `%%='" msgstr "próba dzielenia przez zero w `%%='" -#: ext.c:89 ext.c:171 +#: ext.c:65 ext.c:147 msgid "extensions are not allowed in sandbox mode" msgstr "rozszerzenia nie są dozwolone w trybie piaskownicy" -#: ext.c:92 +#: ext.c:68 msgid "-l / @load are gawk extensions" msgstr "-l / @load są rozszerzeniami gawk" -#: ext.c:95 +#: ext.c:71 msgid "load_ext: received NULL lib_name" msgstr "load_ext: otrzymano NULL lib_name" -#: ext.c:98 +#: ext.c:74 #, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "load_ext: nie można otworzyć biblioteki `%s' (%s)\n" -#: ext.c:104 +#: ext.c:80 #, c-format msgid "" "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" msgstr "" "load_ext: biblioteka `%s': nie definiuje `plugin_is_GPL_compatible' (%s)\n" -#: ext.c:110 +#: ext.c:86 #, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "load_ext: biblioteka `%s': nie można wywołać funkcji `%s' (%s)\n" -#: ext.c:114 +#: ext.c:90 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "" "load_ext: funkcja inicjalizująca `%s' biblioteki `%s' nie powiodła się\n" -#: ext.c:174 +#: ext.c:150 msgid "`extension' is a gawk extension" msgstr "`extension' jest rozszerzeniem gawk" -#: ext.c:177 +#: ext.c:153 msgid "extension: received NULL lib_name" msgstr "extension: otrzymano NULL lib_name" -#: ext.c:180 +#: ext.c:156 #, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "extension: nie można otworzyć biblioteki `%s' (%s)" -#: ext.c:186 +#: ext.c:162 #, c-format msgid "" "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" msgstr "" "extension: biblioteka `%s': nie definiuje `plugin_is_GPL_compatible' (%s)" -#: ext.c:190 +#: ext.c:166 #, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "extension: biblioteka `%s': nie można wywołać funkcji `%s' (%s)" -#: ext.c:221 +#: ext.c:197 msgid "make_builtin: missing function name" msgstr "make_builtin: brakująca nazwa funkcji" -#: ext.c:236 +#: ext.c:212 #, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "make_builtin: nie można zredefiniować funkcji `%s'" -#: ext.c:240 +#: ext.c:216 #, c-format msgid "make_builtin: function `%s' already defined" msgstr "make_builtin: funkcja `%s' została już zdefiniowana" -#: ext.c:244 +#: ext.c:220 #, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "make_builtin: nazwa funkcji `%s' została zdefiniowana wcześniej" -#: ext.c:246 +#: ext.c:222 #, 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:249 ext.c:304 +#: ext.c:225 ext.c:280 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: ujemny licznik argumentów dla funkcji `%s'" -#: ext.c:276 +#: ext.c:252 msgid "extension: missing function name" msgstr "extension: brakująca nazwa funkcji" -#: ext.c:279 ext.c:283 +#: ext.c:255 ext.c:259 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: nieprawidłowy znak `%c' w nazwie funkcji `%s'" -#: ext.c:291 +#: ext.c:267 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: nie można zredefiniować funkcji `%s'" -#: ext.c:295 +#: ext.c:271 #, c-format msgid "extension: function `%s' already defined" msgstr "extension: funkcja `%s' została już zdefiniowana" -#: ext.c:299 +#: ext.c:275 #, c-format msgid "extension: function name `%s' previously defined" msgstr "extension: nazwa funkcji `%s' została zdefiniowana wcześniej" -#: ext.c:301 +#: ext.c:277 #, c-format 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:375 +#: ext.c:351 #, 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:378 +#: ext.c:354 #, c-format msgid "function `%s': missing argument #%d" msgstr "funkcja `%s': brakuje #%d argumentu" -#: ext.c:395 +#: ext.c:371 #, 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:399 +#: ext.c:375 #, 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:413 +#: ext.c:389 msgid "dynamic loading of library not supported" msgstr "dynamiczne ładowanie biblioteki nie jest wspierane" @@ -2203,7 +2233,7 @@ msgstr "wait: wywołana ze zbyt dużą ilością argumentów" msgid "inplace_begin: in-place editing already active" msgstr "inplace_begin: edycja w miejscu jest już aktywna" -#: extension/inplace.c:133 extension/inplace.c:207 +#: extension/inplace.c:133 extension/inplace.c:210 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "inplace_begin: spodziewano się 2 argumentów, a otrzymano %d" @@ -2234,55 +2264,55 @@ msgstr "inplace_begin: `%s' nie jest zwykłym plikiem" msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "inplace_begin: wywołanie mkstemp(`%s') nie powiodło się (%s)" -#: extension/inplace.c:178 +#: extension/inplace.c:181 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "inplace_begin: funkcja chmod nie powiodła się (%s)" -#: extension/inplace.c:185 +#: extension/inplace.c:188 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "inplace_begin: wywołanie dup(stdout) nie powiodło się (%s)" -#: extension/inplace.c:188 +#: extension/inplace.c:191 #, 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:191 +#: extension/inplace.c:194 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "inplace_begin: wywołanie close(%d) nie powiodło się (%s)" -#: extension/inplace.c:210 +#: extension/inplace.c:213 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:217 +#: extension/inplace.c:220 msgid "inplace_end: in-place editing not active" msgstr "inplace_end: edycja w miejscu nie jest aktywna" -#: extension/inplace.c:223 +#: extension/inplace.c:226 #, 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:226 +#: extension/inplace.c:229 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "inplace_end: wywołanie close(%d) nie powiodło się (%s)" -#: extension/inplace.c:230 +#: extension/inplace.c:233 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "inplace_end: wywołanie fsetpos(stdout) nie powiodło się (%s)" -#: extension/inplace.c:243 +#: extension/inplace.c:246 #, 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:253 +#: extension/inplace.c:256 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "inplace_end: wywołanie rename(`%s', `%s') nie powiodło się (%s)" @@ -2324,50 +2354,54 @@ msgstr "readfile: wywołana ze zbyt dużą ilością argumentów" msgid "readfile: called with no arguments" msgstr "readfile: wywołano bez argumentów" -#: extension/rwarray.c:124 +#: extension/revoutput.c:125 +msgid "revoutput: could not initialize REVOUT variable" +msgstr "" + +#: extension/rwarray.c:124 extension/rwarray0.c:109 msgid "writea: called with too many arguments" msgstr "writea: wywołana ze zbyt dużą ilością argumentów" -#: extension/rwarray.c:131 +#: extension/rwarray.c:131 extension/rwarray0.c:116 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "do_writea: argument 0 nie jest tekstem\n" -#: extension/rwarray.c:137 +#: extension/rwarray.c:137 extension/rwarray0.c:122 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "do_writea: argument 1 nie jest tablicą\n" -#: extension/rwarray.c:184 +#: extension/rwarray.c:184 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "write_array: nie można spłaszczyć tablicy\n" -#: extension/rwarray.c:198 +#: extension/rwarray.c:198 extension/rwarray0.c:183 #, 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:280 +#: extension/rwarray.c:280 extension/rwarray0.c:265 msgid "reada: called with too many arguments" msgstr "reada: wywołana ze zbyt dużą ilością argumentów" -#: extension/rwarray.c:287 +#: extension/rwarray.c:287 extension/rwarray0.c:272 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "do_reada: argument 0 nie jest tekstem\n" -#: extension/rwarray.c:293 +#: extension/rwarray.c:293 extension/rwarray0.c:278 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "do_reada: argument 1 nie jest tablicą\n" -#: extension/rwarray.c:337 +#: extension/rwarray.c:337 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "do_reada: clear_array nie powiodła się\n" -#: extension/rwarray.c:374 +#: extension/rwarray.c:374 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "read_array: set_array_element nie powiodła się\n" @@ -2396,88 +2430,88 @@ msgstr "sleep: argument jest ujemny" msgid "sleep: not supported on this platform" msgstr "sleep: funkcja nie jest wspierana na tej platformie" -#: field.c:345 +#: field.c:346 msgid "NF set to negative value" msgstr "NF ustawiony na wartość ujemną" -#: field.c:971 field.c:978 field.c:982 +#: field.c:958 field.c:965 field.c:969 msgid "split: fourth argument is a gawk extension" msgstr "split: czwarty argument jest rozszerzeniem gawk" -#: field.c:975 +#: field.c:962 msgid "split: fourth argument is not an array" msgstr "split: czwarty argument nie jest tablicą" -#: field.c:989 +#: field.c:976 msgid "split: second argument is not an array" msgstr "split: drugi argument nie jest tablicą" -#: field.c:993 +#: field.c:980 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:998 +#: field.c:985 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:1001 +#: field.c:988 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:1032 +#: field.c:1019 msgid "split: null string for third arg is a gawk extension" msgstr "split: zerowy łańcuch dla trzeciego argumentu jest rozszerzeniem gawk" -#: field.c:1072 +#: field.c:1059 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: czwarty argument nie jest tablicą" -#: field.c:1077 +#: field.c:1064 msgid "patsplit: second argument is not an array" msgstr "patsplit: drugi argument nie jest tablicą" -#: field.c:1083 +#: field.c:1070 msgid "patsplit: third argument must be non-null" msgstr "patsplit: trzeci argument nie może być pusty" -#: field.c:1087 +#: field.c:1074 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:1092 +#: field.c:1079 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:1095 +#: field.c:1082 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:1133 +#: field.c:1120 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "`FIELDWIDTHS' jest rozszerzeniem gawk" -#: field.c:1197 +#: field.c:1184 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "nieprawidłowa wartość FIELDWIDTHS, w pobliżu `%s'" -#: field.c:1270 +#: field.c:1257 msgid "null string for `FS' is a gawk extension" msgstr "zerowy łańcuch dla `FS' jest rozszerzeniem gawk" -#: field.c:1274 +#: field.c:1261 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:1393 +#: field.c:1380 msgid "`FPAT' is a gawk extension" msgstr "`FPAT' jest rozszerzeniem gawk" @@ -2493,20 +2527,20 @@ 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:807 +#: gawkapi.c:809 msgid "remove_element: received null array" msgstr "remove_element: otrzymano tablicę null" -#: gawkapi.c:810 +#: gawkapi.c:812 msgid "remove_element: received null subscript" msgstr "remove_element: otrzymano null subscript" -#: gawkapi.c:947 +#: gawkapi.c:949 #, 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:952 +#: gawkapi.c:954 #, 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" @@ -2566,318 +2600,300 @@ msgstr "%s: opcja '-W %s' nie może mieć argumentów\n" msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: opcja '-W %s' wymaga argumentu\n" -#: io.c:392 +#: io.c:423 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "argument linii poleceń `%s' jest katalogiem: pominięto" -#: io.c:395 io.c:513 +#: io.c:426 io.c:544 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "nie można otworzyć pliku `%s' do czytania (%s)" -#: io.c:640 +#: io.c:671 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "zamknięcie fd %d (`%s') nie powiodło się (%s)" -#: io.c:716 +#: io.c:749 msgid "redirection not allowed in sandbox mode" msgstr "przekierowanie nie jest dozwolone w trybie piaskownicy" -#: io.c:750 +#: io.c:783 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "wyrażenie w przekierowaniu `%s' ma tylko wartość numeryczną" -#: io.c:756 +#: io.c:789 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "wyrażenie dla przekierowania `%s' ma zerową wartość łańcucha" -#: io.c:761 +#: io.c:794 #, 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:809 +#: io.c:842 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "niepotrzebne mieszanie `>' i `>>' dla pliku `%.*s'" -#: io.c:863 +#: io.c:896 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "nie można otworzyć potoku `%s' jako wyjścia (%s)" -#: io.c:873 +#: io.c:906 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "nie można otworzyć potoku `%s' jako wejścia (%s)" -#: io.c:904 +#: io.c:937 #, 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:986 +#: io.c:1019 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "nie można przekierować z `%s' (%s)" -#: io.c:989 +#: io.c:1022 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "nie można przekierować do `%s' (%s)" -#: io.c:1040 +#: io.c:1073 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:1056 +#: io.c:1089 #, c-format msgid "close of `%s' failed (%s)." msgstr "zamknięcie `%s' nie powiodło się (%s)." -#: io.c:1064 +#: io.c:1097 msgid "too many pipes or input files open" msgstr "zbyt dużo otwartych potoków lub plików wejściowych" -#: io.c:1086 +#: io.c:1119 msgid "close: second argument must be `to' or `from'" msgstr "close: drugim argumentem musi być `to' lub `from'" -#: io.c:1103 +#: io.c:1136 #, 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:1108 +#: io.c:1141 msgid "close of redirection that was never opened" msgstr "zamknięcie przekierowania, które nigdy nie zostało otwarte" -#: io.c:1205 +#: io.c:1238 #, 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:1222 +#: io.c:1255 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "status awarii (%d) podczas zamykania potoku `%s' (%s)" -#: io.c:1225 +#: io.c:1258 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "status awarii (%d) podczas zamykania pliku `%s' (%s)" -#: io.c:1245 +#: io.c:1278 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "brak jawnego zamknięcia gniazdka `%s'" -#: io.c:1248 +#: io.c:1281 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "brak jawnego zamknięcia procesu pomocniczego `%s'" -#: io.c:1251 +#: io.c:1284 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "brak jawnego zamknięcia potoku `%s'" -#: io.c:1254 +#: io.c:1287 #, c-format msgid "no explicit close of file `%s' provided" msgstr "brak jawnego zamknięcia pliku `%s'" -#: io.c:1284 io.c:1342 main.c:864 main.c:906 +#: io.c:1317 io.c:1375 main.c:628 main.c:670 #, c-format msgid "error writing standard output (%s)" msgstr "błąd podczas zapisu na standardowe wyjście (%s)" -#: io.c:1289 io.c:1348 main.c:866 +#: io.c:1322 io.c:1381 main.c:630 #, c-format msgid "error writing standard error (%s)" msgstr "błąd podczas zapisu na standardowe wyjście diagnostyczne (%s)" -#: io.c:1297 +#: io.c:1330 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "opróżnienie potoku `%s' nie powiodło się (%s)." -#: io.c:1300 +#: io.c:1333 #, 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:1303 +#: io.c:1336 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "opróżnienie pliku `%s' nie powiodło się (%s)." -#: io.c:1420 +#: io.c:1453 #, c-format msgid "local port %s invalid in `/inet'" msgstr "nieprawidłowy lokalny port %s w `/inet'" -#: io.c:1438 +#: io.c:1471 #, 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:1590 -#, c-format -msgid "no (known) protocol supplied in special filename `%s'" -msgstr "nie dostarczono (znanego) protokołu w specjalnym pliku `%s'" - -#: io.c:1604 -#, c-format -msgid "special file name `%s' is incomplete" -msgstr "specjalna nazwa pliku `%s' jest niekompletna" - -#: io.c:1621 -msgid "must supply a remote hostname to `/inet'" -msgstr "należy dostarczyć nazwę zdalnego hosta do `/inet'" - -#: io.c:1639 -msgid "must supply a remote port to `/inet'" -msgstr "należy dostarczyć numer zdalnego portu do `/inet'" - -#: io.c:1685 +#: io.c:1673 msgid "TCP/IP communications are not supported" msgstr "Komunikacja TCP/IP nie jest wspierana" -#: io.c:1867 +#: io.c:1854 #, c-format msgid "could not open `%s', mode `%s'" msgstr "nie można otworzyć `%s', tryb `%s'" -#: io.c:1917 +#: io.c:1904 #, c-format msgid "close of master pty failed (%s)" msgstr "zamknięcie nadrzędnego pty nie powiodło się (%s)" -#: io.c:1919 io.c:2105 io.c:2305 +#: io.c:1906 io.c:2092 io.c:2293 #, 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:1922 +#: io.c:1909 #, 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:1924 io.c:2110 +#: io.c:1911 io.c:2097 #, 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:1927 +#: io.c:1914 #, 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:1929 io.c:1951 +#: io.c:1916 io.c:1938 #, c-format msgid "close of slave pty failed (%s)" msgstr "zamknięcie podległego pty nie powiodło się (%s)" -#: io.c:2040 io.c:2108 io.c:2276 io.c:2308 +#: io.c:2027 io.c:2095 io.c:2264 io.c:2296 #, 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:2047 io.c:2113 +#: io.c:2034 io.c:2100 #, 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:2073 io.c:2298 +#: io.c:2060 io.c:2286 msgid "restoring stdout in parent process failed\n" msgstr "" "odzyskanie standardowego wyjścia w procesie potomnym nie powiodło się\n" -#: io.c:2081 +#: io.c:2068 msgid "restoring stdin in parent process failed\n" msgstr "" "odzyskanie standardowego wejścia w procesie potomnym nie powiodło się\n" -#: io.c:2116 io.c:2310 io.c:2324 +#: io.c:2103 io.c:2298 io.c:2313 #, c-format msgid "close of pipe failed (%s)" msgstr "zamknięcie potoku nie powiodło się (%s)" -#: io.c:2174 +#: io.c:2162 msgid "`|&' not supported" msgstr "`|&' nie jest wspierany" -#: io.c:2261 +#: io.c:2249 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "nie można otworzyć potoku `%s' (%s)" -#: io.c:2318 +#: io.c:2307 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "nie można utworzyć procesu potomnego dla `%s' (fork: %s)" -#: io.c:2790 +#: io.c:2734 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: otrzymano wskaźnik NULL" -#: io.c:2818 +#: io.c:2762 #, 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:2825 +#: io.c:2769 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "parser wejścia `%s': nie powiodło się otwarcie `%s'" -#: io.c:2845 +#: io.c:2789 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: otrzymano wskaźnik NULL" -#: io.c:2873 +#: io.c:2817 #, 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:2880 +#: io.c:2824 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "otoczka wyjścia `%s': nie powiodło się otwarcie `%s'" -#: io.c:2901 +#: io.c:2845 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: otrzymano wskaźnik NULL" -#: io.c:2930 +#: io.c:2874 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2886,212 +2902,199 @@ msgstr "" "dwukierunkowy procesor `%s' konfliktuje z poprzednio zainstalowanym " "procesorem `%s'" -#: io.c:2939 +#: io.c:2883 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "dwukierunkowy procesor `%s' zawiódł w otwarciu `%s'" -#: io.c:3064 +#: io.c:3008 #, c-format msgid "data file `%s' is empty" msgstr "plik danych `%s' jest pusty" -#: io.c:3106 io.c:3114 +#: io.c:3050 io.c:3058 msgid "could not allocate more input memory" msgstr "nie można zarezerwować więcej pamięci wejściowej" -#: io.c:3682 +#: io.c:3636 msgid "multicharacter value of `RS' is a gawk extension" msgstr "wieloznakowa wartość `RS' jest rozszerzeniem gawk" -#: io.c:3771 +#: io.c:3783 msgid "IPv6 communication is not supported" msgstr "Komunikacja IPv6 nie jest wspierana" -#: main.c:405 -msgid "empty argument to `-e/--source' ignored" -msgstr "pusty argument dla opcji `-e/--source' został zignorowany" - -#: main.c:495 -#, c-format -msgid "%s: option `-W %s' unrecognized, ignored\n" -msgstr "%s: opcja `-W %s' nierozpoznana i zignorowana\n" - -#: main.c:541 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: opcja musi mieć argument -- %c\n" - -#: main.c:562 +#: main.c:321 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "zmienna środowiskowa `POSIXLY_CORRECT' ustawiona: `--posix' został włączony" -#: main.c:568 +#: main.c:327 msgid "`--posix' overrides `--traditional'" msgstr "opcja `--posix' zostanie użyta nad `--traditional'" -#: main.c:579 +#: main.c:338 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "`--posix'/`--traditional' użyte nad opcją `--non-decimal-data'" -#: main.c:583 +#: main.c:342 #, 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:588 +#: main.c:346 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "opcja `--posix' zostanie użyta nad `--characters-as-bytes'" -#: main.c:647 +#: main.c:404 #, 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:650 +#: main.c:407 #, 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:652 +#: main.c:409 #, 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:710 +#: main.c:469 msgid "no program text at all!" msgstr "brak tekstu programu!" -#: main.c:799 +#: main.c:563 #, 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:801 +#: main.c:565 #, 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:806 +#: main.c:570 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Opcje POSIX:\t\tDługie opcje GNU (standard):\n" -#: main.c:807 +#: main.c:571 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f program\t\t--file=program\n" -#: main.c:808 +#: main.c:572 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:809 +#: main.c:573 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v zmienna=wartość\t--assign=zmienna=wartość\n" -#: main.c:810 +#: main.c:574 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Krótkie opcje:\t\tDługie opcje GNU: (rozszerzenia)\n" -#: main.c:811 +#: main.c:575 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:812 +#: main.c:576 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:813 +#: main.c:577 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:814 +#: main.c:578 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[plik]\t\t--dump-variables[=plik]\n" -#: main.c:815 +#: main.c:579 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[plik]\t\t--debug[=plik]\n" -#: main.c:816 +#: main.c:580 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'tekst-programu'\t--source='tekst-programu'\n" -#: main.c:817 +#: main.c:581 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E plik\t\t\t--exec=plik\n" -#: main.c:818 +#: main.c:582 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:819 +#: main.c:583 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:820 +#: main.c:584 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i plikinclude\t\t--include=plikinclude\n" -#: main.c:821 +#: main.c:585 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l biblioteka\t\t--load=biblioteka\n" -#: main.c:822 -msgid "\t-L [fatal]\t\t--lint[=fatal]\n" +#: main.c:586 +#, fuzzy +msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: 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:824 +#: main.c:587 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:825 +#: main.c:588 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:826 +#: main.c:589 +msgid "\t-n\t\t\t--non-decimal-data\n" +msgstr "\t-n\t\t\t--non-decimal-data\n" + +#: main.c:590 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[plik]\t\t--pretty-print[=plik]\n" -#: main.c:827 +#: main.c:591 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:828 +#: main.c:592 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[plik]\t\t--profile[=plik]\n" -#: main.c:829 +#: main.c:593 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:830 +#: main.c:594 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:831 +#: main.c:595 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:832 +#: main.c:596 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:833 +#: main.c:597 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:835 +#: main.c:599 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:838 +#: main.c:602 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3100,7 +3103,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:847 +#: main.c:611 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3113,7 +3116,7 @@ msgstr "" "dokumentacji.\n" "\n" -#: main.c:851 +#: main.c:615 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3123,7 +3126,7 @@ msgstr "" "Program domyślnie czyta standardowe wejście i zapisuje standardowe wyjście.\n" "\n" -#: main.c:855 +#: main.c:619 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3133,7 +3136,7 @@ msgstr "" "\tgawk '{ suma += $1 }; END { print suma }' plik\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:880 +#: main.c:644 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3152,7 +3155,7 @@ msgstr "" "tej Licencji lub którejś z późniejszych wersji.\n" "\n" -#: main.c:888 +#: main.c:652 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" @@ -3167,7 +3170,7 @@ msgstr "" "Powszechną Licencję Publiczną GNU.\n" "\n" -#: main.c:894 +#: main.c:658 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" @@ -3176,16 +3179,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:931 +#: main.c:695 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft nie ustawia FS na znak tabulatora w POSIX awk" -#: main.c:1208 +#: main.c:982 #, c-format msgid "unknown value for field spec: %d\n" msgstr "nieznana wartość dla specyfikacji pola: %d\n" -#: main.c:1306 +#: main.c:1080 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3194,98 +3197,116 @@ msgstr "" "%s: argument `%s' dla `-v' nie jest zgodny ze składnią `zmienna=wartość'\n" "\n" -#: main.c:1332 +#: main.c:1106 #, c-format msgid "`%s' is not a legal variable name" msgstr "`%s' nie jest dozwoloną nazwą zmiennej" -#: main.c:1335 +#: main.c:1109 #, 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:1339 +#: main.c:1113 #, 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:1344 +#: main.c:1118 #, c-format msgid "cannot use function `%s' as variable name" msgstr "nie można użyć funkcji `%s' jako nazwy zmiennej" -#: main.c:1397 +#: main.c:1171 msgid "floating point exception" msgstr "wyjątek zmiennopozycyjny" -#: main.c:1404 +#: main.c:1178 msgid "fatal error: internal error" msgstr "fatalny błąd: wewnętrzny błąd" -#: main.c:1419 +#: main.c:1193 msgid "fatal error: internal error: segfault" msgstr "fatalny błąd: wewnętrzny błąd: błąd segmentacji" -#: main.c:1431 +#: main.c:1205 msgid "fatal error: internal error: stack overflow" msgstr "fatalny błąd: wewnętrzny błąd: przepełnienie stosu" -#: main.c:1490 +#: main.c:1264 #, c-format msgid "no pre-opened fd %d" msgstr "brak już otwartego fd %d" -#: main.c:1497 +#: main.c:1271 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "nie można otworzyć zawczasu /dev/null dla fd %d" -#: mpfr.c:550 +#: main.c:1485 +msgid "empty argument to `-e/--source' ignored" +msgstr "pusty argument dla opcji `-e/--source' został zignorowany" + +#: main.c:1556 +msgid "-M ignored: MPFR/GMP support not compiled in" +msgstr "" + +#: main.c:1577 +#, c-format +msgid "%s: option `-W %s' unrecognized, ignored\n" +msgstr "%s: opcja `-W %s' nierozpoznana i zignorowana\n" + +#: main.c:1630 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: opcja musi mieć argument -- %c\n" + +#: mpfr.c:557 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "wartość PREC `%.*s' jest nieprawidłowa" -#: mpfr.c:608 +#: mpfr.c:615 #, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "wartość RNDMODE `%.*s' jest nieprawidłowa" -#: mpfr.c:698 +#: mpfr.c:711 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: otrzymano argument, który nie jest liczbą" -#: mpfr.c:800 +#: mpfr.c:820 msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%Rg): ujemne wartości spowodują dziwne wyniki" -#: mpfr.c:804 +#: mpfr.c:824 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg): ułamkowe wartości zostaną obcięte" -#: mpfr.c:816 +#: mpfr.c:836 #, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "cmpl(%Zd): ujemne wartości spowodują dziwne wyniki" -#: mpfr.c:835 +#: mpfr.c:855 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: otrzymano argument #%d, który nie jest liczbą" -#: mpfr.c:845 +#: mpfr.c:865 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: argument #%d ma nieprawidłową wartość %Rg, użyto 0" -#: mpfr.c:857 +#: mpfr.c:877 msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "%s: argument #%d ujemna wartość %Rg spowoduje dziwne wyniki" -#: mpfr.c:863 +#: mpfr.c:883 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: argument #%d ułamkowa wartość %Rg zostanie obcięta" -#: mpfr.c:878 +#: mpfr.c:898 #, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "%s: argument #%d ujemna wartość %Zd spowoduje dziwne wyniki" @@ -3295,24 +3316,24 @@ msgstr "%s: argument #%d ujemna wartość %Zd spowoduje dziwne wyniki" msgid "cmd. line:" msgstr "linia poleceń:" -#: node.c:421 +#: node.c:409 msgid "backslash at end of string" msgstr "backslash na końcu łańcucha" -#: node.c:500 +#: node.c:488 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "stary awk nie wspiera sekwencji ucieczki `\\%c'" -#: node.c:551 +#: node.c:539 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX nie zezwala na sekwencję ucieczki `\\x'" -#: node.c:557 +#: node.c:545 msgid "no hex digits in `\\x' escape sequence" msgstr "brak liczb szesnastkowych w sekwencji ucieczki `\\x'" -#: node.c:579 +#: node.c:567 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3321,12 +3342,12 @@ msgstr "" "szesnastkowa sekwencja ucieczki \\x%.*s %d znaków prawdopodobnie nie została " "zinterpretowana jak tego oczekujesz" -#: node.c:594 +#: node.c:582 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "sekwencja ucieczki `\\%c' potraktowana jako zwykłe `%c'" -#: node.c:739 +#: node.c:726 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3354,12 +3375,12 @@ msgid "sending profile to standard error" msgstr "wysyłanie profilu na standardowe wyjście diagnostyczne" #: profile.c:193 -#, c-format +#, fuzzy, c-format msgid "" -"\t# %s block(s)\n" +"\t# %s rule(s)\n" "\n" msgstr "" -"\t# %s blok(i)\n" +"\t# Reguła(i)\n" "\n" #: profile.c:198 @@ -3376,11 +3397,11 @@ msgstr "" msgid "internal error: %s with null vname" msgstr "wewnętrzny błąd: %s z zerowym vname" -#: profile.c:537 +#: profile.c:538 msgid "internal error: builtin with null fname" msgstr "wewnętrzny błąd: builtin z fname null" -#: profile.c:949 +#: profile.c:958 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" @@ -3389,12 +3410,12 @@ msgstr "" "\t# Załadowane rozszerzenia (-l i/lub @load)\n" "\n" -#: profile.c:972 +#: profile.c:981 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# profil programu gawk, utworzony %s\n" -#: profile.c:1475 +#: profile.c:1521 #, c-format msgid "" "\n" @@ -3403,7 +3424,7 @@ msgstr "" "\n" "\t# Funkcje, spis alfabetyczny\n" -#: profile.c:1513 +#: profile.c:1559 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: nieznany typ przekierowania %d" @@ -3413,80 +3434,116 @@ msgstr "redir2str: nieznany typ przekierowania %d" msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "komponent regexp `%.*s' powinien być prawdopodobnie `[%.*s]'" -#: regcomp.c:131 +#: regcomp.c:139 msgid "Success" msgstr "Sukces" -#: regcomp.c:134 +#: regcomp.c:142 msgid "No match" msgstr "Brak dopasowania" -#: regcomp.c:137 +#: regcomp.c:145 msgid "Invalid regular expression" msgstr "Nieprawidłowe wyrażenie regularne" -#: regcomp.c:140 +#: regcomp.c:148 msgid "Invalid collation character" msgstr "Nieprawidłowy znak porównania" -#: regcomp.c:143 +#: regcomp.c:151 msgid "Invalid character class name" msgstr "Nieprawidłowa nazwa klasy znaku" -#: regcomp.c:146 +#: regcomp.c:154 msgid "Trailing backslash" msgstr "Końcowy znak backslash" -#: regcomp.c:149 +#: regcomp.c:157 msgid "Invalid back reference" msgstr "Nieprawidłowe odwołanie wsteczne" -#: regcomp.c:152 -msgid "Unmatched [ or [^" +#: regcomp.c:160 +#, fuzzy +msgid "Unmatched [, [^, [:, [., or [=" msgstr "Niedopasowany znak [ lub [^" -#: regcomp.c:155 +#: regcomp.c:163 msgid "Unmatched ( or \\(" msgstr "Niedopasowany znak ( lub \\(" -#: regcomp.c:158 +#: regcomp.c:166 msgid "Unmatched \\{" msgstr "Niedopasowany znak \\{" -#: regcomp.c:164 +#: regcomp.c:169 +msgid "Invalid content of \\{\\}" +msgstr "Nieprawidłowa zawartość \\{\\}" + +#: regcomp.c:172 msgid "Invalid range end" msgstr "Nieprawidłowy koniec zakresu" -#: regcomp.c:167 +#: regcomp.c:175 msgid "Memory exhausted" msgstr "Pamięć wyczerpana" -#: regcomp.c:170 +#: regcomp.c:178 msgid "Invalid preceding regular expression" msgstr "Nieprawidłowe poprzedzające wyrażenie regularne" -#: regcomp.c:173 +#: regcomp.c:181 msgid "Premature end of regular expression" msgstr "Przedwczesny koniec wyrażenia regularnego" -#: regcomp.c:179 +#: regcomp.c:184 +msgid "Regular expression too big" +msgstr "Wyrażenie regularne jest zbyt duże" + +#: regcomp.c:187 msgid "Unmatched ) or \\)" msgstr "Niedopasowany znak ) lub \\)" -#: regcomp.c:704 +#: regcomp.c:712 msgid "No previous regular expression" msgstr "Brak poprzedniego wyrażenia regularnego" -#: symbol.c:741 +#: symbol.c:677 +#, fuzzy, c-format +msgid "function `%s': can't use function `%s' as a parameter name" +msgstr "funkcja `%s': nie można użyć nazwy funkcji jako nazwy parametru" + +#: symbol.c:809 msgid "can not pop main context" msgstr "nie można zdjąć głównego kontekstu" +#~ msgid "`getline var' invalid inside `%s' rule" +#~ msgstr "nieprawidłowy `getline var' wewnątrz reguły `%s'" + +#~ msgid "`getline' invalid inside `%s' rule" +#~ msgstr "nieprawidłowy `getline' wewnątrz reguły `%s'" + +#~ msgid "no (known) protocol supplied in special filename `%s'" +#~ msgstr "nie dostarczono (znanego) protokołu w specjalnym pliku `%s'" + +#~ msgid "special file name `%s' is incomplete" +#~ msgstr "specjalna nazwa pliku `%s' jest niekompletna" + +#~ msgid "must supply a remote hostname to `/inet'" +#~ msgstr "należy dostarczyć nazwę zdalnego hosta do `/inet'" + +#~ msgid "must supply a remote port to `/inet'" +#~ msgstr "należy dostarczyć numer zdalnego portu do `/inet'" + +#~ msgid "" +#~ "\t# %s block(s)\n" +#~ "\n" +#~ msgstr "" +#~ "\t# %s blok(i)\n" +#~ "\n" + #~ 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" - #~ msgid "reference to uninitialized element `%s[\"%.*s\"]'" #~ msgstr "odwołanie do niezainicjowanego elementu `%s[\"%.*s\"]'" @@ -3565,11 +3622,6 @@ msgstr "nie można zdjąć głównego kontekstu" #~ msgid "function `%s' not defined" #~ msgstr "funkcja `%s' nie została zdefiniowana" -#~ msgid "non-redirected `getline' invalid inside `%s' rule" -#~ msgstr "" -#~ "komenda `getline' bez przekierowania jest nieprawidłowa wewnątrz reguły `" -#~ "%s'" - #~ msgid "error reading input file `%s': %s" #~ msgstr "błąd podczas czytania z pliku `%s': %s" @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.1.0b\n" -"Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2014-04-08 19:23+0300\n" +"Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" +"POT-Creation-Date: 2015-02-26 20:05+0200\n" "PO-Revision-Date: 2014-09-22 09:12+0200\n" "Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n" "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" @@ -39,9 +39,9 @@ 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:1615 builtin.c:1661 -#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126 -#: eval.c:1531 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 +#: builtin.c:1665 builtin.c:2092 builtin.c:2106 eval.c:1149 eval.c:1153 +#: eval.c:1558 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "försök att använda vektorn ”%s” i skalärsammanhang" @@ -100,413 +100,418 @@ msgstr "" "asorti: det går inte att använda en delvektor av andra argumentet som första " "argument" -#: array.c:1314 +#: array.c:1313 #, c-format msgid "`%s' is invalid as a function name" msgstr "”%s” är ogiltigt som ett funktionsnamn" -#: array.c:1318 +#: array.c:1317 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "jämförelsefunktionen ”%s” för sortering är inte definierad" -#: awkgram.y:233 +#: awkgram.y:226 #, c-format msgid "%s blocks must have an action part" msgstr "%s-block måste ha en åtgärdsdel" -#: awkgram.y:236 +#: awkgram.y:229 msgid "each rule must have a pattern or an action part" msgstr "varje regel måste ha ett mönster eller en åtgärdsdel" -#: awkgram.y:325 awkgram.y:336 +#: awkgram.y:320 awkgram.y:331 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "gamla awk stöder inte flera ”BEGIN”- eller ”END”-regler" -#: awkgram.y:373 +#: awkgram.y:368 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "”%s“ är en inbyggd funktion, den kan inte definieras om" -#: awkgram.y:419 +#: awkgram.y:417 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "regexp-konstanten \"//\" ser ut som en C++-kommentar men är inte det" -#: awkgram.y:423 +#: awkgram.y:421 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "regexp-konstanten \"/%s/\" ser ut som en C-kommentar men är inte det" -#: awkgram.y:515 +#: awkgram.y:513 #, c-format msgid "duplicate case values in switch body: %s" msgstr "upprepade case-värden i switch-sats: %s" -#: awkgram.y:536 +#: awkgram.y:534 msgid "duplicate `default' detected in switch body" msgstr "flera \"default\" upptäcktes i switch-sats" -#: awkgram.y:796 awkgram.y:3723 +#: awkgram.y:794 awkgram.y:3751 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:3715 +#: awkgram.y:803 awkgram.y:3743 msgid "`continue' is not allowed outside a loop" msgstr "\"continue\" är inte tillåtet utanför en slinga" -#: awkgram.y:815 +#: awkgram.y:813 #, c-format msgid "`next' used in %s action" msgstr "\"next\" använt i %s-åtgärd" -#: awkgram.y:824 +#: awkgram.y:822 #, c-format msgid "`nextfile' used in %s action" msgstr "\"nextfile\" använt i %s-åtgärd" -#: awkgram.y:848 +#: awkgram.y:846 msgid "`return' used outside function context" msgstr "\"return\" använd utanför funktion" -#: awkgram.y:922 +#: awkgram.y:920 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 \"\"'" -#: awkgram.y:988 awkgram.y:1037 +#: awkgram.y:986 awkgram.y:1035 msgid "`delete' is not allowed with SYMTAB" msgstr "”delete” är inte tillåtet med SYMTAB" -#: awkgram.y:990 awkgram.y:1039 +#: awkgram.y:988 awkgram.y:1037 msgid "`delete' is not allowed with FUNCTAB" msgstr "”delete” är inte tillåtet med FUNCTAB" -#: awkgram.y:1024 awkgram.y:1028 +#: awkgram.y:1022 awkgram.y:1026 msgid "`delete(array)' is a non-portable tawk extension" msgstr "\"delete(array)\" är en icke portabel tawk-utökning" -#: awkgram.y:1149 +#: awkgram.y:1147 msgid "multistage two-way pipelines don't work" msgstr "flerstegs dubbelriktade rör fungerar inte" -#: awkgram.y:1264 +#: awkgram.y:1262 msgid "regular expression on right of assignment" msgstr "reguljärt uttryck i högerledet av en tilldelning" -#: awkgram.y:1275 +#: awkgram.y:1273 msgid "regular expression on left of `~' or `!~' operator" msgstr "reguljärt uttryck på vänster sida om en \"~\"- eller \"!~\"-operator" -#: awkgram.y:1291 awkgram.y:1442 +#: awkgram.y:1289 awkgram.y:1431 msgid "old awk does not support the keyword `in' except after `for'" msgstr "gamla awk stöder inte operatorn \"**\"" -#: awkgram.y:1301 +#: awkgram.y:1299 msgid "regular expression on right of comparison" msgstr "reguljärt uttryck i högerledet av en jämförelse" -#: awkgram.y:1417 -#, c-format -msgid "`getline var' invalid inside `%s' rule" -msgstr "\"getline var\" är ogiltigt inuti \"%s\"-regel" - -#: awkgram.y:1420 -#, c-format -msgid "`getline' invalid inside `%s' rule" +#: awkgram.y:1411 +#, fuzzy, c-format +msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "\"getline är ogiltigt inuti \"%s\"-regel" -#: awkgram.y:1425 +#: awkgram.y:1414 msgid "non-redirected `getline' undefined inside END action" msgstr "icke omdirigerad \"getline\" odefinierad inuti END-åtgärd" -#: awkgram.y:1444 +#: awkgram.y:1433 msgid "old awk does not support multidimensional arrays" msgstr "gamla awk stöder inte flerdimensionella vektorer" -#: awkgram.y:1541 +#: awkgram.y:1530 msgid "call of `length' without parentheses is not portable" msgstr "anrop av \"length\" utan parenteser är inte portabelt" -#: awkgram.y:1607 +#: awkgram.y:1596 msgid "indirect function calls are a gawk extension" msgstr "indirekta funktionsanrop är en gawk-utökning" -#: awkgram.y:1620 +#: awkgram.y:1609 #, 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" -#: awkgram.y:1698 +#: awkgram.y:1635 +#, c-format +msgid "attempt to use non-function `%s' in function call" +msgstr "" + +#: awkgram.y:1699 msgid "invalid subscript expression" msgstr "ogiltig indexuttryck" -#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2045 awkgram.y:2065 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "varning: " -#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 +#: awkgram.y:2063 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "ödesdigert: " -#: awkgram.y:2116 +#: awkgram.y:2113 msgid "unexpected newline or end of string" msgstr "oväntat nyradstecken eller slut på strängen" -#: awkgram.y:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 +#: awkgram.y:2392 awkgram.y:2468 awkgram.y:2691 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:2384 awkgram.y:2509 +#: awkgram.y:2393 awkgram.y:2518 #, 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:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 +#: awkgram.y:2395 awkgram.y:2469 awkgram.y:2519 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "okänd anledning" -#: awkgram.y:2395 awkgram.y:2419 +#: awkgram.y:2404 awkgram.y:2428 #, 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:2408 +#: awkgram.y:2417 #, c-format msgid "already included source file `%s'" msgstr "inkluderade redan källfilen \"%s\"" -#: awkgram.y:2409 +#: awkgram.y:2418 #, c-format msgid "already loaded shared library `%s'" msgstr "inkluderade redan det delade biblioteket ”%s”" -#: awkgram.y:2444 +#: awkgram.y:2453 msgid "@include is a gawk extension" msgstr "@include är en gawk-utökning" -#: awkgram.y:2450 +#: awkgram.y:2459 msgid "empty filename after @include" msgstr "tomt filnamn efter @include" -#: awkgram.y:2494 +#: awkgram.y:2503 msgid "@load is a gawk extension" msgstr "@load är en gawk-utökning" -#: awkgram.y:2500 +#: awkgram.y:2509 msgid "empty filename after @load" msgstr "tomt filnamn efter @load" -#: awkgram.y:2634 +#: awkgram.y:2643 msgid "empty program text on command line" msgstr "tom programtext på kommandoraden" -#: awkgram.y:2749 +#: awkgram.y:2758 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "kan inte läsa källfilen \"%s\" (%s)" -#: awkgram.y:2760 +#: awkgram.y:2769 #, c-format msgid "source file `%s' is empty" msgstr "källfilen \"%s\" är tom" -#: awkgram.y:2937 +#: awkgram.y:2828 +#, c-format +msgid "PEBKAC error: invalid character '\\%03o' in source code" +msgstr "" + +#: awkgram.y:2959 msgid "source file does not end in newline" msgstr "källfilen slutar inte med en ny rad" -#: awkgram.y:3042 +#: awkgram.y:3062 msgid "unterminated regexp ends with `\\' at end of file" msgstr "oavslutat reguljärt uttryck slutar med \"\\\" i slutet av filen" -#: awkgram.y:3066 +#: awkgram.y:3089 #, 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" -#: awkgram.y:3070 +#: awkgram.y:3093 #, 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" -#: awkgram.y:3077 +#: awkgram.y:3100 msgid "unterminated regexp" msgstr "oavslutat reguljärt uttryck" -#: awkgram.y:3081 +#: awkgram.y:3104 msgid "unterminated regexp at end of file" msgstr "oavslutat reguljärt uttryck i slutet av filen" -#: awkgram.y:3140 +#: awkgram.y:3162 msgid "use of `\\ #...' line continuation is not portable" msgstr "Användning av \"\\ #...\" för radfortsättning är inte portabelt" -#: awkgram.y:3156 +#: awkgram.y:3178 msgid "backslash not last character on line" msgstr "sista tecknet på raden är inte ett omvänt snedstreck" -#: awkgram.y:3217 +#: awkgram.y:3239 msgid "POSIX does not allow operator `**='" msgstr "POSIX tillåter inte operatorn \"**=\"" -#: awkgram.y:3219 +#: awkgram.y:3241 msgid "old awk does not support operator `**='" msgstr "gamla awk stöder inte operatorn \"**=\"" -#: awkgram.y:3228 +#: awkgram.y:3250 msgid "POSIX does not allow operator `**'" msgstr "POSIX tillåter inte operatorn \"**\"" -#: awkgram.y:3230 +#: awkgram.y:3252 msgid "old awk does not support operator `**'" msgstr "gamla awk stöder inte operatorn \"**\"" -#: awkgram.y:3265 +#: awkgram.y:3287 msgid "operator `^=' is not supported in old awk" msgstr "operatorn \"^=\" stöds inte i gamla awk" -#: awkgram.y:3273 +#: awkgram.y:3295 msgid "operator `^' is not supported in old awk" msgstr "operatorn \"^\" stöds inte i gamla awk" -#: awkgram.y:3366 awkgram.y:3382 command.y:1178 +#: awkgram.y:3392 awkgram.y:3410 command.y:1180 msgid "unterminated string" msgstr "oavslutad sträng" -#: awkgram.y:3603 +#: awkgram.y:3631 #, c-format msgid "invalid char '%c' in expression" msgstr "ogiltigt tecken \"%c\" i uttryck" -#: awkgram.y:3650 +#: awkgram.y:3678 #, c-format msgid "`%s' is a gawk extension" msgstr "\"%s\" är en gawk-utökning" -#: awkgram.y:3655 +#: awkgram.y:3683 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX tillåter inte \"%s\"" -#: awkgram.y:3663 +#: awkgram.y:3691 #, c-format msgid "`%s' is not supported in old awk" msgstr "\"%s\" stöds inte i gamla awk" -#: awkgram.y:3753 +#: awkgram.y:3781 msgid "`goto' considered harmful!\n" msgstr "\"goto\" anses skadlig!\n" -#: awkgram.y:3787 +#: awkgram.y:3815 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d är ett ogiltigt antal argument för %s" -#: awkgram.y:3822 +#: awkgram.y:3850 #, 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" -#: awkgram.y:3827 +#: awkgram.y:3855 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s: tredje argumentet är inte ett ändringsbart objekt" -#: awkgram.y:3910 awkgram.y:3913 +#: awkgram.y:3938 awkgram.y:3941 msgid "match: third argument is a gawk extension" msgstr "match: tredje argumentet är en gawk-utökning" -#: awkgram.y:3967 awkgram.y:3970 +#: awkgram.y:3995 awkgram.y:3998 msgid "close: second argument is a gawk extension" msgstr "close: andra argumentet är en gawk-utökning" -#: awkgram.y:3982 +#: awkgram.y:4010 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "användandet av dcgettext(_\"...\") är felaktigt: ta bort det inledande " "understrykningstecknet" -#: awkgram.y:3997 +#: awkgram.y:4025 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "användandet av dcngettext(_\"...\") är felaktigt: ta bort det inledande " "understrykningstecknet" -#: awkgram.y:4016 +#: awkgram.y:4044 msgid "index: regexp constant as second argument is not allowed" msgstr "index: reguljäruttryck som andra argumentet är inte tillåtet" -#: awkgram.y:4069 +#: awkgram.y:4097 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funktionen \"%s\": parametern \"%s\" överskuggar en global variabel" -#: awkgram.y:4126 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4154 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:4127 +#: awkgram.y:4155 msgid "sending variable list to standard error" msgstr "skickar variabellista till standard fel" -#: awkgram.y:4135 +#: awkgram.y:4163 #, c-format msgid "%s: close failed (%s)" msgstr "%s: misslyckades att stänga (%s)" -#: awkgram.y:4160 +#: awkgram.y:4188 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() anropad två gånger!" -#: awkgram.y:4168 +#: awkgram.y:4196 msgid "there were shadowed variables." msgstr "det fanns överskuggade variabler." -#: awkgram.y:4239 +#: awkgram.y:4267 #, c-format msgid "function name `%s' previously defined" msgstr "funktionsnamnet \"%s\" är definierat sedan tidigare" -#: awkgram.y:4285 +#: awkgram.y:4313 #, 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:4288 +#: awkgram.y:4316 #, 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" -#: awkgram.y:4296 +#: awkgram.y:4324 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funktionen \"%s\": parameter %d, \"%s\", är samma som parameter %d" -#: awkgram.y:4383 awkgram.y:4389 +#: awkgram.y:4411 awkgram.y:4417 #, c-format msgid "function `%s' called but never defined" msgstr "funktionen \"%s\" anropad men aldrig definierad" -#: awkgram.y:4393 +#: awkgram.y:4421 #, c-format msgid "function `%s' defined but never called directly" msgstr "funktionen \"%s\" definierad men aldrig anropad direkt" -#: awkgram.y:4425 +#: awkgram.y:4453 #, 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:4484 +#: awkgram.y:4468 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -515,23 +520,23 @@ msgstr "" "funktionen \"%s\" anropad med blanktecken mellan namnet och \"(\",\n" "eller använd som variabel eller vektor" -#: awkgram.y:4720 +#: awkgram.y:4674 msgid "division by zero attempted" msgstr "försökte dividera med noll" -#: awkgram.y:4729 +#: awkgram.y:4683 #, c-format msgid "division by zero attempted in `%%'" msgstr "försökte dividera med noll i \"%%\"" -#: awkgram.y:5049 +#: awkgram.y:5003 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:5052 +#: awkgram.y:5006 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "ogiltigt mål för tilldelning (op-kod %s)" @@ -571,189 +576,199 @@ msgstr "" msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "fflush: \"%s\" är inte en öppen fil, rör eller koprocess" -#: builtin.c:362 +#: builtin.c:351 msgid "index: received non-string first argument" msgstr "index: första argumentet är inte en sträng" -#: builtin.c:364 +#: builtin.c:353 msgid "index: received non-string second argument" msgstr "index: andra argumentet är inte en sträng" -#: builtin.c:488 mpfr.c:757 +#: builtin.c:466 mpfr.c:777 msgid "int: received non-numeric argument" msgstr "int: fick ett ickenumeriskt argument" -#: builtin.c:525 +#: builtin.c:503 msgid "length: received array argument" msgstr "length: fick ett vektorargument" -#: builtin.c:528 +#: builtin.c:506 msgid "`length(array)' is a gawk extension" msgstr "\"length(array)\" är en gawk-utökning" -#: builtin.c:544 +#: builtin.c:525 msgid "length: received non-string argument" msgstr "length: fick ett argument som inte är en sträng" -#: builtin.c:575 +#: builtin.c:554 msgid "log: received non-numeric argument" msgstr "log: fick ett ickenumeriskt argument" -#: builtin.c:578 +#: builtin.c:557 #, c-format msgid "log: received negative argument %g" msgstr "log: fick ett negativt argumentet %g" -#: builtin.c:776 builtin.c:781 +#: builtin.c:755 builtin.c:760 builtin.c:911 msgid "fatal: must use `count$' on all formats or none" msgstr "ödesdigert: måste använda \"count$\" på alla eller inga format" -#: builtin.c:851 +#: builtin.c:830 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "fältbredd ignoreras för \"%%\"-specificerare" -#: builtin.c:853 +#: builtin.c:832 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "precision ignoreras för \"%%\"-specificerare" -#: builtin.c:855 +#: builtin.c:834 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "fältbredd och precision ignoreras för \"%%\"-specificerare" -#: builtin.c:906 +#: builtin.c:885 msgid "fatal: `$' is not permitted in awk formats" msgstr "ödesdigert: \"$\" tillåts inte i awk-format" -#: builtin.c:915 +#: builtin.c:894 msgid "fatal: arg count with `$' must be > 0" msgstr "ödesdigert: argumentantalet med \"$\" måste vara > 0" -#: builtin.c:919 +#: builtin.c:898 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "ödesdigert: argumentantalet %ld är större än antalet givna argument" -#: builtin.c:923 +#: builtin.c:902 msgid "fatal: `$' not permitted after period in format" msgstr "ödesdigert: \"$\" tillåts inte efter en punkt i formatet" -#: builtin.c:939 +#: builtin.c:921 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" "ödesdigert: inget \"$\" bifogat för positionsangiven fältbredd eller " "precision" -#: builtin.c:1009 +#: builtin.c:991 msgid "`l' is meaningless in awk formats; ignored" msgstr "\"l\" är meningslös i awk-format, ignorerad" -#: builtin.c:1013 +#: builtin.c:995 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "ödesdigert: \"l\" tillåts inte i POSIX awk-format" -#: builtin.c:1026 +#: builtin.c:1008 msgid "`L' is meaningless in awk formats; ignored" msgstr "\"L\" är meningslös i awk-format, ignorerad" -#: builtin.c:1030 +#: builtin.c:1012 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "ödesdigert: \"L\" tillåts inte i POSIX awk-format" -#: builtin.c:1043 +#: builtin.c:1025 msgid "`h' is meaningless in awk formats; ignored" msgstr "\"h\" är meningslös i awk-format, ignorerad" -#: builtin.c:1047 +#: builtin.c:1029 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "ödesdigert: \"h\" tillåts inte i POSIX awk-format" -#: builtin.c:1463 +#: builtin.c:1055 +#, fuzzy, c-format +msgid "[s]printf: value %g is too big for %%c format" +msgstr "[s]printf: värdet %g är utanför \"%%%c\"-formatets giltiga intervall" + +#: builtin.c:1068 +#, fuzzy, c-format +msgid "[s]printf: value %g is not a valid wide character" +msgstr "[s]printf: värdet %g är utanför \"%%%c\"-formatets giltiga intervall" + +#: builtin.c:1454 #, 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:1561 +#: builtin.c:1552 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "ignorerar okänt formatspecifikationstecken \"%c\": inget argument konverterat" -#: builtin.c:1566 +#: builtin.c:1557 msgid "fatal: not enough arguments to satisfy format string" msgstr "ödesdigert: för få argument för formatsträngen" -#: builtin.c:1568 +#: builtin.c:1559 msgid "^ ran out for this one" msgstr "^ tog slut här" -#: builtin.c:1575 +#: builtin.c:1566 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: formatspecificeraren har ingen kommandobokstav" -#: builtin.c:1578 +#: builtin.c:1569 msgid "too many arguments supplied for format string" msgstr "för många argument för formatsträngen" -#: builtin.c:1634 +#: builtin.c:1625 msgid "sprintf: no arguments" msgstr "sprintf: inga argument" -#: builtin.c:1657 builtin.c:1668 +#: builtin.c:1648 builtin.c:1659 msgid "printf: no arguments" msgstr "printf: inga argument" -#: builtin.c:1711 +#: builtin.c:1702 msgid "sqrt: received non-numeric argument" msgstr "sqrt: fick ickenumeriskt argument" -#: builtin.c:1715 +#: builtin.c:1706 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: anropad med negativt argument %g" -#: builtin.c:1746 +#: builtin.c:1737 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: längden %g är inte >= 1" -#: builtin.c:1748 +#: builtin.c:1739 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: längden %g är inte >= 0" -#: builtin.c:1755 +#: builtin.c:1753 #, 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:1760 +#: builtin.c:1758 #, 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:1772 +#: builtin.c:1770 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: startindex %g är ogiltigt, använder 1" -#: builtin.c:1777 +#: builtin.c:1775 #, 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:1802 +#: builtin.c:1798 msgid "substr: source string is zero length" msgstr "substr: källsträngen är tom" -#: builtin.c:1818 +#: builtin.c:1812 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: startindex %g är bortom strängens slut" -#: builtin.c:1826 +#: builtin.c:1820 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -761,186 +776,192 @@ msgstr "" "substr: längden %g vid startindex %g överskrider det första argumentets " "längd (%lu)" -#: builtin.c:1900 +#: builtin.c:1890 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: formatvärde i PROCINFO[\"strftime\"] har numerisk typ" -#: builtin.c:1923 +#: builtin.c:1913 msgid "strftime: received non-numeric second argument" msgstr "strftime: fick ett ickenumeriskt andra argument" -#: builtin.c:1927 +#: builtin.c:1917 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: andra argumentet mindre än 0 eller för stort för time_t" -#: builtin.c:1934 +#: builtin.c:1924 msgid "strftime: received non-string first argument" msgstr "strftime: fick ett första argument som inte är en sträng" -#: builtin.c:1941 +#: builtin.c:1931 msgid "strftime: received empty format string" msgstr "strftime: fick en tom formatsträng" -#: builtin.c:2007 +#: builtin.c:1997 msgid "mktime: received non-string argument" msgstr "mktime: fick ett argument som inte är en sträng" -#: builtin.c:2024 +#: builtin.c:2014 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:2059 +#: builtin.c:2049 msgid "'system' function not allowed in sandbox mode" msgstr "funktionen \"system\" är inte tillåten i sandlådeläge" -#: builtin.c:2064 +#: builtin.c:2054 msgid "system: received non-string argument" msgstr "system: fick ett argument som inte är en sträng" -#: builtin.c:2184 +#: builtin.c:2174 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "referens till icke initierat fält \"$%d\"" -#: builtin.c:2271 +#: builtin.c:2259 msgid "tolower: received non-string argument" msgstr "tolower: fick ett argument som inte är en sträng" -#: builtin.c:2305 +#: builtin.c:2290 msgid "toupper: received non-string argument" msgstr "toupper: fick ett argument som inte är en sträng" -#: builtin.c:2341 mpfr.c:672 +#: builtin.c:2323 mpfr.c:679 msgid "atan2: received non-numeric first argument" msgstr "atan2: fick ett ickenumeriskt första argument" -#: builtin.c:2343 mpfr.c:674 +#: builtin.c:2325 mpfr.c:681 msgid "atan2: received non-numeric second argument" msgstr "atan2: fick ett ickenumeriskt andra argument" -#: builtin.c:2362 +#: builtin.c:2344 msgid "sin: received non-numeric argument" msgstr "sin: fick ett ickenumeriskt argument" -#: builtin.c:2378 +#: builtin.c:2360 msgid "cos: received non-numeric argument" msgstr "cos: fick ett ickenumeriskt argument" -#: builtin.c:2431 mpfr.c:1156 +#: builtin.c:2413 mpfr.c:1176 msgid "srand: received non-numeric argument" msgstr "srand: fick ett ickenumeriskt argument" -#: builtin.c:2462 +#: builtin.c:2444 msgid "match: third argument is not an array" msgstr "match: tredje argumentet är inte en vektor" -#: builtin.c:2734 -msgid "gensub: third argument of 0 treated as 1" +#: builtin.c:2705 +#, fuzzy, c-format +msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: nollan i tredje argumentet behandlad som en etta" -#: builtin.c:3030 +#: builtin.c:2720 +#, fuzzy, c-format +msgid "gensub: third argument %g treated as 1" +msgstr "gensub: nollan i tredje argumentet behandlad som en etta" + +#: builtin.c:3020 msgid "lshift: received non-numeric first argument" msgstr "lshift: fick ett ickenumeriskt första argument" -#: builtin.c:3032 +#: builtin.c:3022 msgid "lshift: received non-numeric second argument" msgstr "lshift: fick ett ickenumeriskt andra argument" -#: builtin.c:3038 +#: builtin.c:3028 #, 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:3040 +#: builtin.c:3030 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): flyttalsvärden kommer huggas av" -#: builtin.c:3042 +#: builtin.c:3032 #, 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:3067 +#: builtin.c:3057 msgid "rshift: received non-numeric first argument" msgstr "rshift: fick ett ickenumeriskt första argument" -#: builtin.c:3069 +#: builtin.c:3059 msgid "rshift: received non-numeric second argument" msgstr "rshift: fick ett ickenumeriskt andra argument" -#: builtin.c:3075 +#: builtin.c:3065 #, 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:3077 +#: builtin.c:3067 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): flyttalsvärden kommer huggas av" -#: builtin.c:3079 +#: builtin.c:3069 #, 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:3104 mpfr.c:968 +#: builtin.c:3094 mpfr.c:988 msgid "and: called with less than two arguments" msgstr "and: anropad med mindre än två argument" -#: builtin.c:3109 +#: builtin.c:3099 #, c-format msgid "and: argument %d is non-numeric" msgstr "and: argument %d är inte numeriskt" -#: builtin.c:3113 +#: builtin.c:3103 #, 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:3136 mpfr.c:1000 +#: builtin.c:3126 mpfr.c:1020 msgid "or: called with less than two arguments" msgstr "or: anropad med färre än två argument" -#: builtin.c:3141 +#: builtin.c:3131 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: argument %d är inte numeriskt" -#: builtin.c:3145 +#: builtin.c:3135 #, 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:3167 mpfr.c:1031 +#: builtin.c:3157 mpfr.c:1051 msgid "xor: called with less than two arguments" msgstr "xor: anropad med färre än två argument" -#: builtin.c:3173 +#: builtin.c:3163 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: argument %d är inte numeriskt" -#: builtin.c:3177 +#: builtin.c:3167 #, 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:3202 mpfr.c:787 +#: builtin.c:3192 mpfr.c:807 msgid "compl: received non-numeric argument" msgstr "compl: fick ett ickenumeriskt argument" -#: builtin.c:3208 +#: builtin.c:3198 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): negativt värde kommer ge konstiga resultat" -#: builtin.c:3210 +#: builtin.c:3200 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): flyttalsvärde kommer huggas av" -#: builtin.c:3379 +#: builtin.c:3369 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: \"%s\" är inte en giltig lokalkategori" @@ -1238,40 +1259,49 @@ msgstr "up [N] - flytta N ramar uppåt i stacken." msgid "watch var - set a watchpoint for a variable." msgstr "watch var - sätt en observationspunkt för en variabel." -#: command.y:1011 debug.c:401 msg.c:135 +#: command.y:901 +#, fuzzy +msgid "" +"where [N] - (same as backtrace) 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:1013 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "fel: " -#: command.y:1051 +#: command.y:1053 #, c-format msgid "can't read command (%s)\n" msgstr "kan inte läsa kommando (%s)\n" -#: command.y:1065 +#: command.y:1067 #, c-format msgid "can't read command (%s)" msgstr "kan inte läsa kommandot (%s)" -#: command.y:1116 +#: command.y:1118 msgid "invalid character in command" msgstr "ogiltigt tecken i kommandot" -#: command.y:1152 +#: command.y:1154 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "okänt kommando - \"%.*s\", försök med help" -#: command.y:1222 +#: command.y:1224 #, c-format msgid "%s" msgstr "%s" -#: command.y:1284 +#: command.y:1286 msgid "invalid character" msgstr "ogiltigt tecken" -#: command.y:1455 +#: command.y:1457 #, c-format msgid "undefined command: %s\n" msgstr "odefinierat kommando: %s\n" @@ -1800,68 +1830,70 @@ msgid "`return' not allowed in current context; statement ignored" msgstr "" "”return” är inte tillåtet i det aktuella sammanhanget; satsen ignoreras" -#: debug.c:5590 +#: debug.c:5604 #, c-format msgid "No symbol `%s' in current context" msgstr "Ingen symbol ”%s” i aktuell omgivning" -#: 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 +#: dfa.c:1063 dfa.c:1066 dfa.c:1085 dfa.c:1095 dfa.c:1107 dfa.c:1143 +#: dfa.c:1152 dfa.c:1155 dfa.c:1160 dfa.c:1174 dfa.c:1222 msgid "unbalanced [" msgstr "obalanserad [" -#: dfa.c:1174 +#: dfa.c:1119 msgid "invalid character class" msgstr "ogiltig teckenklass" -#: dfa.c:1316 +#: dfa.c:1265 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "syntaxen för teckenklass är [[:space:]], inte [:space:]" -#: dfa.c:1366 +#: dfa.c:1327 msgid "unfinished \\ escape" msgstr "oavslutad \\-följd" -#: dfa.c:1513 regcomp.c:161 -msgid "Invalid content of \\{\\}" +#: dfa.c:1474 +#, fuzzy +msgid "invalid content of \\{\\}" msgstr "Ogiltigt innehåll i \\{\\}" -#: dfa.c:1516 regcomp.c:176 -msgid "Regular expression too big" +#: dfa.c:1477 +#, fuzzy +msgid "regular expression too big" msgstr "Reguljärt uttryck för stort" -#: dfa.c:1936 +#: dfa.c:1912 msgid "unbalanced (" msgstr "obalanserad (" -#: dfa.c:2062 +#: dfa.c:2038 msgid "no syntax specified" msgstr "ingen syntax angiven" -#: dfa.c:2070 +#: dfa.c:2046 msgid "unbalanced )" msgstr "obalanserad )" -#: eval.c:394 +#: eval.c:396 #, c-format msgid "unknown nodetype %d" msgstr "okänd nodtyp %d" -#: eval.c:405 eval.c:419 +#: eval.c:407 eval.c:421 #, c-format msgid "unknown opcode %d" msgstr "okänd op-kod %d" -#: eval.c:416 +#: eval.c:418 #, c-format msgid "opcode %s not an operator or keyword" msgstr "op-kod %s är inte en operator eller ett nyckelord" -#: eval.c:472 +#: eval.c:474 msgid "buffer overflow in genflags2str" msgstr "buffertöverflöd i genflags2str" -#: eval.c:675 +#: eval.c:676 #, c-format msgid "" "\n" @@ -1872,216 +1904,216 @@ msgstr "" "\t# Funktionsanropsstack:\n" "\n" -#: eval.c:704 +#: eval.c:705 msgid "`IGNORECASE' is a gawk extension" msgstr "\"IGNORECASE\" är en gawk-utökning" -#: eval.c:736 +#: eval.c:737 msgid "`BINMODE' is a gawk extension" msgstr "\"BINMODE\" är en gawk-utökning" -#: eval.c:794 +#: eval.c:795 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "BINMODE-värde \"%s\" är ogiltigt, behandlas som 3" -#: eval.c:885 +#: eval.c:912 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "felaktig \"%sFMT\"-specifikation \"%s\"" -#: eval.c:969 +#: eval.c:996 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "slår av \"--lint\" på grund av en tilldelning till \"LINT\"" -#: eval.c:1147 +#: eval.c:1174 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "referens till icke initierat argument \"%s\"" -#: eval.c:1148 +#: eval.c:1175 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "referens till icke initierad variabel \"%s\"" -#: eval.c:1166 +#: eval.c:1193 msgid "attempt to field reference from non-numeric value" msgstr "försök att fältreferera från ickenumeriskt värde" -#: eval.c:1168 +#: eval.c:1195 msgid "attempt to field reference from null string" msgstr "försök till fältreferens från en tom sträng" -#: eval.c:1176 +#: eval.c:1203 #, c-format msgid "attempt to access field %ld" msgstr "försök att komma åt fält nummer %ld" -#: eval.c:1185 +#: eval.c:1212 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "referens till icke initierat fält \"$%ld\"" -#: eval.c:1272 +#: eval.c:1299 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "funktionen \"%s\" anropad med fler argument än vad som deklarerats" -#: eval.c:1473 +#: eval.c:1500 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: oväntad typ \"%s\"" -#: eval.c:1569 +#: eval.c:1596 msgid "division by zero attempted in `/='" msgstr "försökte dividera med noll i \"/=\"" -#: eval.c:1576 +#: eval.c:1603 #, c-format msgid "division by zero attempted in `%%='" msgstr "försökte dividera med noll i \"%%=\"" -#: ext.c:89 ext.c:171 +#: ext.c:65 ext.c:147 msgid "extensions are not allowed in sandbox mode" msgstr "utökningar är inte tillåtna i sandlådeläge" -#: ext.c:92 +#: ext.c:68 msgid "-l / @load are gawk extensions" msgstr "-l / @load är gawk-utökningar" -#: ext.c:95 +#: ext.c:71 msgid "load_ext: received NULL lib_name" msgstr "load_ext: mottog NULL-lib_name" -#: ext.c:98 +#: ext.c:74 #, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "load_ext: kan inte öppna biblioteket ”%s” (%s)\n" -#: ext.c:104 +#: ext.c:80 #, 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" -#: ext.c:110 +#: ext.c:86 #, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "load_ext: biblioteket ”%s”: kan inte anropa funktionen ”%s” (%s)\n" -#: ext.c:114 +#: ext.c:90 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "" "load_ext: initieringsrutinen ”%2$s” i biblioteket ”%1$s” misslyckades\n" -#: ext.c:174 +#: ext.c:150 msgid "`extension' is a gawk extension" msgstr "\"extension\" är en gawk-utökning" -#: ext.c:177 +#: ext.c:153 msgid "extension: received NULL lib_name" msgstr "utökning: mottog NULL-lib_name" -#: ext.c:180 +#: ext.c:156 #, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "extension: kan inte öppna biblioteket ”%s” (%s)" -#: ext.c:186 +#: ext.c:162 #, 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)" -#: ext.c:190 +#: ext.c:166 #, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "extension: biblioteket ”%s”: kan inte anropa funktionen ”%s” (%s)" -#: ext.c:221 +#: ext.c:197 msgid "make_builtin: missing function name" msgstr "make_builtin: funktionsnamn saknas" -#: ext.c:236 +#: ext.c:212 #, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "make_builtin: det går inte att definiera om funktionen ”%s”" -#: ext.c:240 +#: ext.c:216 #, c-format msgid "make_builtin: function `%s' already defined" msgstr "make_builtin: funktionen ”%s” är redan definierad" -#: ext.c:244 +#: ext.c:220 #, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "make_builtin: funktionsnamnet ”%s” är definierat sedan tidigare" -#: ext.c:246 +#: ext.c:222 #, 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" -#: ext.c:249 ext.c:304 +#: ext.c:225 ext.c:280 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: negativt argumentantal för funktionen \"%s\"" -#: ext.c:276 +#: ext.c:252 msgid "extension: missing function name" msgstr "extension: saknar funktionsnamn" -#: ext.c:279 ext.c:283 +#: ext.c:255 ext.c:259 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: ogiltigt tecken \"%c\" i funktionsnamnet \"%s\"" -#: ext.c:291 +#: ext.c:267 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: det går inte att definiera om funktionen \"%s\"" -#: ext.c:295 +#: ext.c:271 #, c-format msgid "extension: function `%s' already defined" msgstr "extension: funktionen \"%s\" är redan definierad" -#: ext.c:299 +#: ext.c:275 #, c-format msgid "extension: function name `%s' previously defined" msgstr "extension: funktionsnamnet \"%s\" är definierat sedan tidigare" -#: ext.c:301 +#: ext.c:277 #, 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" -#: ext.c:375 +#: ext.c:351 #, c-format msgid "function `%s' defined to take no more than %d argument(s)" msgstr "funktionen \"%s\" definierades för att ta maximalt %d argument" -#: ext.c:378 +#: ext.c:354 #, c-format msgid "function `%s': missing argument #%d" msgstr "funktionen \"%s\": argument %d saknas" -#: ext.c:395 +#: ext.c:371 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "funktionen \"%s\": argument %d: försök att använda skalär som vektor" -#: ext.c:399 +#: ext.c:375 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "funktionen \"%s\": argument %d: försök att använda vektor som skalär" -#: ext.c:413 +#: ext.c:389 msgid "dynamic loading of library not supported" msgstr "dynamisk laddning av bibliotek stödjs inte" @@ -2225,7 +2257,7 @@ msgstr "wait: anropad med för många argument" msgid "inplace_begin: in-place editing already active" msgstr "inplace_begin: redigering på plats är redan aktivt" -#: extension/inplace.c:133 extension/inplace.c:207 +#: extension/inplace.c:133 extension/inplace.c:210 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "inplace_begin: förväntar sig 2 argument men anropad med %d" @@ -2255,55 +2287,55 @@ msgstr "inplace_begin: ”%s” är inte en vanlig fil" msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "inplace_begin: mkstemp(”%s”) misslyckades (%s)" -#: extension/inplace.c:178 +#: extension/inplace.c:181 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "inplace_begin: chmod misslyckades (%s)" -#: extension/inplace.c:185 +#: extension/inplace.c:188 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "inplace_begin: dup(standard ut) misslyckades (%s)" -#: extension/inplace.c:188 +#: extension/inplace.c:191 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "inplace_begin: dup2(%d, standard ut) misslyckades (%s)" -#: extension/inplace.c:191 +#: extension/inplace.c:194 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "inplace_begin: close(%d) misslyckades (%s)" -#: extension/inplace.c:210 +#: extension/inplace.c:213 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "inplace_end: kan inte hämta 1:a argumentet som en filnamnssträng" -#: extension/inplace.c:217 +#: extension/inplace.c:220 msgid "inplace_end: in-place editing not active" msgstr "inplace_end: redigering på plats är inte aktivt" -#: extension/inplace.c:223 +#: extension/inplace.c:226 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "inplace_end: dup2(%d, standard ut) misslyckades (%s)" -#: extension/inplace.c:226 +#: extension/inplace.c:229 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "inplace_end: close(%d) misslyckades (%s)" -#: extension/inplace.c:230 +#: extension/inplace.c:233 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "inplace_end: fsetpos(standard ut) misslyckades (%s)" -#: extension/inplace.c:243 +#: extension/inplace.c:246 #, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "inplace_end: link(”%s”, ”%s”) misslyckades (%s)" -#: extension/inplace.c:253 +#: extension/inplace.c:256 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "inplace_end: rename(”%s”, ”%s”) misslyckades (%s)" @@ -2345,50 +2377,54 @@ msgstr "readfile: anropad med för många argument" msgid "readfile: called with no arguments" msgstr "readfile: anropad utan argument" -#: extension/rwarray.c:124 +#: extension/revoutput.c:125 +msgid "revoutput: could not initialize REVOUT variable" +msgstr "" + +#: extension/rwarray.c:124 extension/rwarray0.c:109 msgid "writea: called with too many arguments" msgstr "writea: anropad med för många argument" -#: extension/rwarray.c:131 +#: extension/rwarray.c:131 extension/rwarray0.c:116 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "do_writea: argument 0 är inte en sträng\n" -#: extension/rwarray.c:137 +#: extension/rwarray.c:137 extension/rwarray0.c:122 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "do_writea: argument 1 är inte en vektor\n" -#: extension/rwarray.c:184 +#: extension/rwarray.c:184 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "write_array: kunde inte platta till vektor\n" -#: extension/rwarray.c:198 +#: extension/rwarray.c:198 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "write_array: kunde inte släppa en tillplattad vektor\n" -#: extension/rwarray.c:280 +#: extension/rwarray.c:280 extension/rwarray0.c:265 msgid "reada: called with too many arguments" msgstr "reada: anropad med för många argument" -#: extension/rwarray.c:287 +#: extension/rwarray.c:287 extension/rwarray0.c:272 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "do_reada: argument 0 är inte en sträng\n" -#: extension/rwarray.c:293 +#: extension/rwarray.c:293 extension/rwarray0.c:278 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "do_reada: argument 1 är inte en vektor\n" -#: extension/rwarray.c:337 +#: extension/rwarray.c:337 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "do_reada: clear_array misslyckades\n" -#: extension/rwarray.c:374 +#: extension/rwarray.c:374 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "read_array: set_array_element misslyckades\n" @@ -2417,90 +2453,90 @@ msgstr "sleep: argumentet är negativt" msgid "sleep: not supported on this platform" msgstr "sleep: stödjs inte på denna plattform" -#: field.c:345 +#: field.c:346 msgid "NF set to negative value" msgstr "NF satt till ett negativt värde" -#: field.c:971 field.c:978 field.c:982 +#: field.c:958 field.c:965 field.c:969 msgid "split: fourth argument is a gawk extension" msgstr "split: fjärde argumentet är en gawk-utökning" -#: field.c:975 +#: field.c:962 msgid "split: fourth argument is not an array" msgstr "split: fjärde argumentet är inte en vektor" -#: field.c:989 +#: field.c:976 msgid "split: second argument is not an array" msgstr "split: andra argumentet är inte en vektor" -#: field.c:993 +#: field.c:980 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" -#: field.c:998 +#: field.c:985 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" -#: field.c:1001 +#: field.c:988 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" -#: field.c:1032 +#: field.c:1019 msgid "split: null string for third arg is a gawk extension" msgstr "split: tom sträng som tredje argument är en gawk-utökning" -#: field.c:1072 +#: field.c:1059 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: fjärde argumentet är inte en vektor" -#: field.c:1077 +#: field.c:1064 msgid "patsplit: second argument is not an array" msgstr "patsplit: andra argumentet är inte en vektor" -#: field.c:1083 +#: field.c:1070 msgid "patsplit: third argument must be non-null" msgstr "patsplit: tredje argumentet får inte vara tomt" -#: field.c:1087 +#: field.c:1074 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" -#: field.c:1092 +#: field.c:1079 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" -#: field.c:1095 +#: field.c:1082 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" -#: field.c:1133 +#: field.c:1120 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "\"FIELDWIDTHS\" är en gawk-utökning" -#: field.c:1197 +#: field.c:1184 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "ogiltigt FIELDWITHS-värde i närheten av \"%s\"" -#: field.c:1270 +#: field.c:1257 msgid "null string for `FS' is a gawk extension" msgstr "tom sträng som \"FS\" är en gawk-utökning" -#: field.c:1274 +#: field.c:1261 msgid "old awk does not support regexps as value of `FS'" msgstr "gamla awk stöder inte reguljära uttryck som värden på \"FS\"" -#: field.c:1393 +#: field.c:1380 msgid "`FPAT' is a gawk extension" msgstr "\"FPAT\" är en gawk-utökning" @@ -2516,20 +2552,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:807 +#: gawkapi.c:809 msgid "remove_element: received null array" msgstr "remove_element: fick en null-vektor" -#: gawkapi.c:810 +#: gawkapi.c:812 msgid "remove_element: received null subscript" msgstr "remove_element: mottog null-index" -#: gawkapi.c:947 +#: gawkapi.c:949 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "api_flatten_array: kunde inte konvertera index %d\n" -#: gawkapi.c:952 +#: gawkapi.c:954 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "api_flatten_array: kunde inte konvertera värdet %d\n" @@ -2589,288 +2625,269 @@ msgstr "%s: flaggan \"-W %s\" tillåter inte något argument\n" msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: flaggan \"-W %s\" kräver ett argument\n" -#: io.c:392 +#: io.c:423 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "kommandoradsargumentet \"%s\" är en katalog: hoppas över" -#: io.c:395 io.c:513 +#: io.c:426 io.c:544 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "kan inte öppna filen \"%s\" för läsning (%s)" -#: io.c:640 +#: io.c:671 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "stängning av fd %d (\"%s\") misslyckades (%s)" -#: io.c:716 +#: io.c:749 msgid "redirection not allowed in sandbox mode" msgstr "omdirigering är inte tillåten i sandlådeläge" -#: io.c:750 +#: io.c:783 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "uttrycket i \"%s\"-omdirigering har bara numeriskt värde" -#: io.c:756 +#: io.c:789 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "uttrycket för \"%s\"-omdirigering har en tom sträng som värde" -#: io.c:761 +#: io.c:794 #, 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" -#: io.c:809 +#: io.c:842 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "onödig blandning av \">\" och \">>\" för filen \"%.*s\"" -#: io.c:863 +#: io.c:896 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "kan inte öppna röret \"%s\" för utmatning (%s)" -#: io.c:873 +#: io.c:906 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "kan inte öppna röret \"%s\" för inmatning (%s)" -#: io.c:904 +#: io.c:937 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" msgstr "kan inte öppna tvåvägsröret \"%s\" för in-/utmatning (%s)" -#: io.c:986 +#: io.c:1019 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "kan inte dirigera om från \"%s\" (%s)" -#: io.c:989 +#: io.c:1022 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "kan inte dirigera om till \"%s\" (%s)" -#: io.c:1040 +#: io.c:1073 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 +#: io.c:1089 #, c-format msgid "close of `%s' failed (%s)." msgstr "stängning av \"%s\" misslyckades (%s)" -#: io.c:1064 +#: io.c:1097 msgid "too many pipes or input files open" msgstr "för många rör eller indatafiler öppna" -#: io.c:1086 +#: io.c:1119 msgid "close: second argument must be `to' or `from'" msgstr "close: andra argumentet måste vara \"to\" eller \"from\"" -#: io.c:1103 +#: io.c:1136 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: \"%.*s\" är inte en öppen fil, rör eller koprocess" -#: io.c:1108 +#: io.c:1141 msgid "close of redirection that was never opened" msgstr "stängning av omdirigering som aldrig öppnades" -#: io.c:1205 +#: io.c:1238 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: omdirigeringen \"%s\" öppnades inte med \"|&\", andra argumentet " "ignorerat" -#: io.c:1222 +#: io.c:1255 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "felstatus (%d) från rörstängning av \"%s\" (%s)" -#: io.c:1225 +#: io.c:1258 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "felstatus (%d) från filstängning av \"%s\" (%s)" -#: io.c:1245 +#: io.c:1278 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "ingen explicit stängning av uttaget \"%s\" tillhandahållen" -#: io.c:1248 +#: io.c:1281 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "ingen explicit stängning av koprocessen \"%s\" tillhandahållen" -#: io.c:1251 +#: io.c:1284 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "ingen explicit stängning av röret \"%s\" tillhandahållen" -#: io.c:1254 +#: io.c:1287 #, c-format msgid "no explicit close of file `%s' provided" msgstr "ingen explicit stängning av filen \"%s\" tillhandahållen" -#: io.c:1284 io.c:1342 main.c:864 main.c:906 +#: io.c:1317 io.c:1375 main.c:628 main.c:670 #, c-format msgid "error writing standard output (%s)" msgstr "fel vid skrivning till standard ut (%s)" -#: io.c:1289 io.c:1348 main.c:866 +#: io.c:1322 io.c:1381 main.c:630 #, c-format msgid "error writing standard error (%s)" msgstr "fel vid skrivning till standard fel (%s)" -#: io.c:1297 +#: io.c:1330 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "rörspolning av \"%s\" misslyckades (%s)" -#: io.c:1300 +#: io.c:1333 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "koprocesspolning av röret till \"%s\" misslyckades (%s)" -#: io.c:1303 +#: io.c:1336 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "filspolning av \"%s\" misslyckades (%s)" -#: io.c:1420 +#: io.c:1453 #, c-format msgid "local port %s invalid in `/inet'" msgstr "lokal port %s ogiltig i \"/inet\"" -#: io.c:1438 +#: io.c:1471 #, c-format msgid "remote host and port information (%s, %s) invalid" 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\"" - -#: io.c:1604 -#, c-format -msgid "special file name `%s' is incomplete" -msgstr "speciellt filnamn \"%s\" är ofullständigt" - -#: io.c:1621 -msgid "must supply a remote hostname to `/inet'" -msgstr "måste tillhandahålla ett fjärrdatornamn till \"/inet\"" - -#: io.c:1639 -msgid "must supply a remote port to `/inet'" -msgstr "måste tillhandahålla en fjärrport till \"/inet\"" - -#: io.c:1685 +#: io.c:1673 msgid "TCP/IP communications are not supported" msgstr "TCP/IP-kommunikation stöds inte" -#: io.c:1867 +#: io.c:1854 #, c-format msgid "could not open `%s', mode `%s'" msgstr "kunde inte öppna \"%s\", läge \"%s\"" -#: io.c:1917 +#: io.c:1904 #, c-format msgid "close of master pty failed (%s)" msgstr "stängning av huvudpty misslyckades (%s)" -#: io.c:1919 io.c:2105 io.c:2305 +#: io.c:1906 io.c:2092 io.c:2293 #, c-format msgid "close of stdout in child failed (%s)" msgstr "stängning av standard ut i barnet misslyckades (%s)" -#: io.c:1922 +#: io.c:1909 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "flyttandet av slavpty till standard ut i barnet misslyckades (dup: %s)" -#: io.c:1924 io.c:2110 +#: io.c:1911 io.c:2097 #, c-format msgid "close of stdin in child failed (%s)" msgstr "stängning av standard in i barnet misslyckades (%s)" -#: io.c:1927 +#: io.c:1914 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "flyttandet av slavpty till standard in i barnet misslyckades (dup: %s)" -#: io.c:1929 io.c:1951 +#: io.c:1916 io.c:1938 #, c-format msgid "close of slave pty failed (%s)" msgstr "stängning av slavpty misslyckades (%s)" -#: io.c:2040 io.c:2108 io.c:2276 io.c:2308 +#: io.c:2027 io.c:2095 io.c:2264 io.c:2296 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "flyttande av rör till standard ut i barnet misslyckades (dup: %s)" -#: io.c:2047 io.c:2113 +#: io.c:2034 io.c:2100 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "flyttande av rör till standard in i barnet misslyckades (dup: %s)" -#: io.c:2073 io.c:2298 +#: io.c:2060 io.c:2286 msgid "restoring stdout in parent process failed\n" msgstr "återställande av standard ut i föräldraprocessen misslyckades\n" -#: io.c:2081 +#: io.c:2068 msgid "restoring stdin in parent process failed\n" msgstr "återställande av standard in i föräldraprocessen misslyckades\n" -#: io.c:2116 io.c:2310 io.c:2324 +#: io.c:2103 io.c:2298 io.c:2313 #, c-format msgid "close of pipe failed (%s)" msgstr "stängning av röret misslyckades (%s)" -#: io.c:2174 +#: io.c:2162 msgid "`|&' not supported" msgstr "\"|&\" stöds inte" -#: io.c:2261 +#: io.c:2249 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "kan inte öppna röret \"%s\" (%s)" -#: io.c:2318 +#: io.c:2307 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "kan inte skapa barnprocess för \"%s\" (fork: %s)" -#: io.c:2790 +#: io.c:2734 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: mottog NULL-pekare" -#: io.c:2818 +#: io.c:2762 #, 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”" -#: io.c:2825 +#: io.c:2769 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "inmatningstolken ”%s” misslyckades att öppna ”%s”" -#: io.c:2845 +#: io.c:2789 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: mottog NULL-pekare" -#: io.c:2873 +#: io.c:2817 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" @@ -2878,16 +2895,16 @@ msgstr "" "utmatningsomslag ”%s” står i konflikt med tidigare installerat " "utmatningsomslag ”%s”" -#: io.c:2880 +#: io.c:2824 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "utmatningsomslag ”%s” misslyckades att öppna ”%s”" -#: io.c:2901 +#: io.c:2845 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: mottog NULL-pekare" -#: io.c:2930 +#: io.c:2874 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2896,210 +2913,197 @@ msgstr "" "tvåvägsprocessorn ”%s” står i konflikt med tidigare installerad " "tvåvägsprocessor ”%s”" -#: io.c:2939 +#: io.c:2883 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "tvåvägsprocessorn ”%s” misslyckades att öppna ”%s”" -#: io.c:3064 +#: io.c:3008 #, c-format msgid "data file `%s' is empty" msgstr "datafilen \"%s\" är tom" -#: io.c:3106 io.c:3114 +#: io.c:3050 io.c:3058 msgid "could not allocate more input memory" msgstr "kunde inte allokera mer indataminne" -#: io.c:3682 +#: io.c:3636 msgid "multicharacter value of `RS' is a gawk extension" msgstr "flerteckensvärdet av \"RS\" är en gawk-utökning" -#: io.c:3771 +#: io.c:3783 msgid "IPv6 communication is not supported" msgstr "IPv6-kommunikation stöds inte" -#: main.c:405 -msgid "empty argument to `-e/--source' ignored" -msgstr "tomt argument till \"-e/--source\" ignorerat" - -#: main.c:495 -#, c-format -msgid "%s: option `-W %s' unrecognized, ignored\n" -msgstr "%s: flaggan \"-W %s\" okänd, ignorerad\n" - -#: main.c:541 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: flaggan kräver ett argument -- %c\n" - -#: main.c:562 +#: main.c:321 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "miljövariabeln \"POSIXLY_CORRECT\" satt: slår på \"--posix\"" -#: main.c:568 +#: main.c:327 msgid "`--posix' overrides `--traditional'" msgstr "\"--posix\" åsidosätter \"--traditional\"" -#: main.c:579 +#: main.c:338 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "\"--posix\"/\"--traditional\" åsidosätter \"--non-decimal-data\"" -#: main.c:583 +#: main.c:342 #, c-format msgid "running %s setuid root may be a security problem" msgstr "att köra %s setuid root kan vara ett säkerhetsproblem" -#: main.c:588 +#: main.c:346 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "”--posix” åsidosätter ”--character-as-bytes”" -#: main.c:647 +#: main.c:404 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "kan inte sätta binärläge på standard in (%s)" -#: main.c:650 +#: main.c:407 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "kan inte sätta binärläge på standard ut (%s)" -#: main.c:652 +#: main.c:409 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "kan inte sätta binärläge på standard fel (%s)" -#: main.c:710 +#: main.c:469 msgid "no program text at all!" msgstr "ingen programtext alls!" -#: main.c:799 +#: main.c:563 #, 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" -#: main.c:801 +#: main.c:565 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "Användning: %s [POSIX- eller GNU-stilsflaggor] %cprogram%c fil ...\n" -#: main.c:806 +#: main.c:570 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX-flaggor:\t\tGNU långa flaggor: (standard)\n" -#: main.c:807 +#: main.c:571 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f progfil\t\t--file=progfil\n" -#: main.c:808 +#: main.c:572 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:809 +#: main.c:573 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=värde\t\t--assign=var=värde\n" -#: main.c:810 +#: main.c:574 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Korta flaggor:\t\tGNU långa flaggor: (utökningar)\n" -#: main.c:811 +#: main.c:575 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:812 +#: main.c:576 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:813 +#: main.c:577 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:814 +#: main.c:578 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[fil]\t\t\t--dump-variables[=fil]\n" -#: main.c:815 +#: main.c:579 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[fil]\t\t\t--debug[=fil]\n" -#: main.c:816 +#: main.c:580 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'programtext'\t--source='programtext'\n" -#: main.c:817 +#: main.c:581 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E fil\t\t\t--exec=fil\n" -#: main.c:818 +#: main.c:582 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:819 +#: main.c:583 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:820 +#: main.c:584 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i inkluderingsfil\t--include=inkluderingsfil\n" -#: main.c:821 +#: main.c:585 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l bibliotek\t\t--load=bibliotek\n" -#: main.c:822 -msgid "\t-L [fatal]\t\t--lint[=fatal]\n" +#: main.c:586 +#, fuzzy +msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: 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:824 +#: main.c:587 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:825 +#: main.c:588 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:826 +#: main.c:589 +msgid "\t-n\t\t\t--non-decimal-data\n" +msgstr "\t-n\t\t\t--non-decimal-data\n" + +#: main.c:590 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[fil]\t\t\t--pretty-print[=fil]\n" -#: main.c:827 +#: main.c:591 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:828 +#: main.c:592 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[fil]\t\t\t--profile[=fil]\n" -#: main.c:829 +#: main.c:593 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:830 +#: main.c:594 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:831 +#: main.c:595 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:832 +#: main.c:596 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:833 +#: main.c:597 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:835 +#: main.c:599 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:838 +#: main.c:602 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3108,7 +3112,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:847 +#: main.c:611 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3122,7 +3126,7 @@ msgstr "" "Rapportera synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\n" "\n" -#: main.c:851 +#: main.c:615 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3132,7 +3136,7 @@ msgstr "" "Normalt läser det från standard in och skriver till standard ut.\n" "\n" -#: main.c:855 +#: main.c:619 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3142,7 +3146,7 @@ msgstr "" "\tgawk '{ sum += $1 }; END { print sum }' fil\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:880 +#: main.c:644 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3161,7 +3165,7 @@ msgstr "" "någon senare version.\n" "\n" -#: main.c:888 +#: main.c:652 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" @@ -3175,7 +3179,7 @@ msgstr "" "General Public License för ytterligare information.\n" "\n" -#: main.c:894 +#: main.c:658 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" @@ -3183,114 +3187,132 @@ msgstr "" "Du bör ha fått en kopia av GNU General Public License tillsammans\n" "med detta program. Om inte, se http://www.gnu.org/licenses/.\n" -#: main.c:931 +#: main.c:695 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft sätter inte FS till tab i POSIX-awk" -#: main.c:1208 +#: main.c:982 #, c-format msgid "unknown value for field spec: %d\n" msgstr "okänt värde till fältspecifikation: %d\n" -#: main.c:1306 +#: main.c:1080 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" "\n" msgstr "%s: Argumentet \"%s\" till \"-v\" är inte på formatet \"var=värde\"\n" -#: main.c:1332 +#: main.c:1106 #, c-format msgid "`%s' is not a legal variable name" msgstr "\"%s\" är inte ett giltigt variabelnamn" -#: main.c:1335 +#: main.c:1109 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "\"%s\" är inte ett variabelnamn, letar efter filen \"%s=%s\"" -#: main.c:1339 +#: main.c:1113 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "kan inte använda gawks inbyggda \"%s\" som ett funktionsnamn" -#: main.c:1344 +#: main.c:1118 #, c-format msgid "cannot use function `%s' as variable name" msgstr "kan inte använda funktionen \"%s\" som variabelnamn" -#: main.c:1397 +#: main.c:1171 msgid "floating point exception" msgstr "flyttalsundantag" -#: main.c:1404 +#: main.c:1178 msgid "fatal error: internal error" msgstr "ödesdigert fel: internt fel" -#: main.c:1419 +#: main.c:1193 msgid "fatal error: internal error: segfault" msgstr "ödesdigert fel: internt fel: segmenteringsfel" -#: main.c:1431 +#: main.c:1205 msgid "fatal error: internal error: stack overflow" msgstr "ödesdigert fel: internt fel: stackspill" -#: main.c:1490 +#: main.c:1264 #, c-format msgid "no pre-opened fd %d" msgstr "ingen föröppnad fd %d" -#: main.c:1497 +#: main.c:1271 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "kunde inte föröppna /dev/null för fd %d" -#: mpfr.c:550 +#: main.c:1485 +msgid "empty argument to `-e/--source' ignored" +msgstr "tomt argument till \"-e/--source\" ignorerat" + +#: main.c:1556 +msgid "-M ignored: MPFR/GMP support not compiled in" +msgstr "" + +#: main.c:1577 +#, c-format +msgid "%s: option `-W %s' unrecognized, ignored\n" +msgstr "%s: flaggan \"-W %s\" okänd, ignorerad\n" + +#: main.c:1630 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: flaggan kräver ett argument -- %c\n" + +#: mpfr.c:557 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "PREC-värdet ”%.*s” är ogiltigt" -#: mpfr.c:608 +#: mpfr.c:615 #, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "RNDMODE-värdet ”%.*s” är ogiltigt" -#: mpfr.c:698 +#: mpfr.c:711 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: fick ett ickenumeriskt argument" -#: mpfr.c:800 +#: mpfr.c:820 msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%Rg): negativt värde kommer ge konstiga resultat" -#: mpfr.c:804 +#: mpfr.c:824 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg): flyttalsvärden kommer huggas av" -#: mpfr.c:816 +#: mpfr.c:836 #, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "cmpl(%Zd): negativt värde kommer ge konstiga resultat" -#: mpfr.c:835 +#: mpfr.c:855 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: fick ett ickenumeriskt argument nr. %d" -#: mpfr.c:845 +#: mpfr.c:865 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: argument nr. %d har ogiltigt värde %Rg, använder 0" -#: mpfr.c:857 +#: mpfr.c:877 msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "%s: argument nr. %d negativa värde %Rg kommer ge konstiga resultat" -#: mpfr.c:863 +#: mpfr.c:883 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: argument nr. %d flyttalsvärde %Rg kommer huggas av" -#: mpfr.c:878 +#: mpfr.c:898 #, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "%s: argument nr. %d negativa värde %Zd kommer ge konstiga resultat" @@ -3300,24 +3322,24 @@ msgstr "%s: argument nr. %d negativa värde %Zd kommer ge konstiga resultat" msgid "cmd. line:" msgstr "kommandorad:" -#: node.c:421 +#: node.c:409 msgid "backslash at end of string" msgstr "omvänt snedstreck i slutet av strängen" -#: node.c:500 +#: node.c:488 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "gamla awk stöder inte kontrollsekvensen \"\\%c\"" -#: node.c:551 +#: node.c:539 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX tillåter inte \"\\x\"-kontrollsekvenser" -#: node.c:557 +#: node.c:545 msgid "no hex digits in `\\x' escape sequence" msgstr "inga hexadecimala siffror i \"\\x\"-kontrollsekvenser" -#: node.c:579 +#: node.c:567 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3326,12 +3348,12 @@ msgstr "" "hexkod \\x%.*s med %d tecken tolkas förmodligen inte på det sätt du " "förväntar dig" -#: node.c:594 +#: node.c:582 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "kontrollsekvensen \"\\%c\" behandlad som bara \"%c\"" -#: node.c:739 +#: node.c:726 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3359,12 +3381,12 @@ msgid "sending profile to standard error" msgstr "skickar profilen till standard fel" #: profile.c:193 -#, c-format +#, fuzzy, c-format msgid "" -"\t# %s block(s)\n" +"\t# %s rule(s)\n" "\n" msgstr "" -"\t# %s-block\n" +"\t# Regel/regler\n" "\n" #: profile.c:198 @@ -3381,11 +3403,11 @@ msgstr "" msgid "internal error: %s with null vname" msgstr "internt fel: %s med null vname" -#: profile.c:537 +#: profile.c:538 msgid "internal error: builtin with null fname" msgstr "internt fel: inbyggd med tomt fname" -#: profile.c:949 +#: profile.c:958 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" @@ -3394,12 +3416,12 @@ msgstr "" "\t# Laddade utvidgningar (-l och/eller @load)\n" "\n" -#: profile.c:972 +#: profile.c:981 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawkprofil, skapad %s\n" -#: profile.c:1475 +#: profile.c:1521 #, c-format msgid "" "\n" @@ -3408,7 +3430,7 @@ msgstr "" "\n" "\t# Funktioner, listade alfabetiskt\n" -#: profile.c:1513 +#: profile.c:1559 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: okänd omdirigeringstyp %d" @@ -3419,70 +3441,107 @@ msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" "komponenten \"%.*s\" i reguljäruttryck skall förmodligen vara \"[%.*s]\"" -#: regcomp.c:131 +#: regcomp.c:139 msgid "Success" msgstr "Lyckades" -#: regcomp.c:134 +#: regcomp.c:142 msgid "No match" msgstr "Misslyckades" -#: regcomp.c:137 +#: regcomp.c:145 msgid "Invalid regular expression" msgstr "Ogiltigt reguljärt uttryck" -#: regcomp.c:140 +#: regcomp.c:148 msgid "Invalid collation character" msgstr "Ogiltigt kollationeringstecken" -#: regcomp.c:143 +#: regcomp.c:151 msgid "Invalid character class name" msgstr "Ogiltigt teckenklassnamn" -#: regcomp.c:146 +#: regcomp.c:154 msgid "Trailing backslash" msgstr "Eftersläpande omvänt snedstreck" -#: regcomp.c:149 +#: regcomp.c:157 msgid "Invalid back reference" msgstr "Ogiltig bakåtrerefens" -#: regcomp.c:152 -msgid "Unmatched [ or [^" +#: regcomp.c:160 +#, fuzzy +msgid "Unmatched [, [^, [:, [., or [=" msgstr "Obalanserad [ eller [^" -#: regcomp.c:155 +#: regcomp.c:163 msgid "Unmatched ( or \\(" msgstr "Obalanserad ( eller \\(" -#: regcomp.c:158 +#: regcomp.c:166 msgid "Unmatched \\{" msgstr "Obalanserad \\{" -#: regcomp.c:164 +#: regcomp.c:169 +msgid "Invalid content of \\{\\}" +msgstr "Ogiltigt innehåll i \\{\\}" + +#: regcomp.c:172 msgid "Invalid range end" msgstr "Ogiltigt omfångsslut" -#: regcomp.c:167 +#: regcomp.c:175 msgid "Memory exhausted" msgstr "Minnet slut" -#: regcomp.c:170 +#: regcomp.c:178 msgid "Invalid preceding regular expression" msgstr "Ogiltigt föregående reguljärt uttryck" -#: regcomp.c:173 +#: regcomp.c:181 msgid "Premature end of regular expression" msgstr "För tidigt slut på reguljärt uttryck" -#: regcomp.c:179 +#: regcomp.c:184 +msgid "Regular expression too big" +msgstr "Reguljärt uttryck för stort" + +#: regcomp.c:187 msgid "Unmatched ) or \\)" msgstr "Obalanserad ) eller \\)" -#: regcomp.c:704 +#: regcomp.c:712 msgid "No previous regular expression" msgstr "Inget föregående reguljärt uttryck" -#: symbol.c:741 +#: symbol.c:677 +#, fuzzy, c-format +msgid "function `%s': can't use function `%s' as a parameter name" +msgstr "funktionen \"%s\": kan inte använda funktionsnamn som parameternamn" + +#: symbol.c:809 msgid "can not pop main context" msgstr "kan inte poppa huvudsammanhang" + +#~ msgid "`getline var' invalid inside `%s' rule" +#~ msgstr "\"getline var\" är ogiltigt inuti \"%s\"-regel" + +#~ msgid "no (known) protocol supplied in special filename `%s'" +#~ msgstr "" +#~ "inget (känt) protokoll tillhandahållet i det speciella filnamnet \"%s\"" + +#~ msgid "special file name `%s' is incomplete" +#~ msgstr "speciellt filnamn \"%s\" är ofullständigt" + +#~ msgid "must supply a remote hostname to `/inet'" +#~ msgstr "måste tillhandahålla ett fjärrdatornamn till \"/inet\"" + +#~ msgid "must supply a remote port to `/inet'" +#~ msgstr "måste tillhandahålla en fjärrport till \"/inet\"" + +#~ msgid "" +#~ "\t# %s block(s)\n" +#~ "\n" +#~ msgstr "" +#~ "\t# %s-block\n" +#~ "\n" Binary files differ@@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: gawk-4.1.0b\n" -"Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2014-04-08 19:23+0300\n" +"Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" +"POT-Creation-Date: 2015-02-26 20:05+0200\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,9 +40,9 @@ 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:1615 builtin.c:1661 -#: builtin.c:1674 builtin.c:2102 builtin.c:2116 eval.c:1122 eval.c:1126 -#: eval.c:1531 +#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 +#: builtin.c:1665 builtin.c:2092 builtin.c:2106 eval.c:1149 eval.c:1153 +#: eval.c:1558 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "cố gắng dùng mảng “%s” trong một ngữ cảnh vô hướng" @@ -101,422 +101,427 @@ 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 +#: array.c:1313 #, c-format msgid "`%s' is invalid as a function name" msgstr "“%s” không phải là tên hàm hợp lệ" -#: array.c:1318 +#: array.c:1317 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "chưa định nghĩa hàm so sánh xắp xếp “%s”" -#: awkgram.y:233 +#: awkgram.y:226 #, c-format msgid "%s blocks must have an action part" msgstr "Mọi khối %s phải có một phần kiểu hành động" -#: awkgram.y:236 +#: awkgram.y:229 msgid "each rule must have a pattern or an action part" 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 +#: awkgram.y:320 awkgram.y:331 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)" -#: awkgram.y:373 +#: awkgram.y:368 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "“%s” là một hàm có sẵn nên nó không thể được định nghĩa lại." -#: awkgram.y:419 +#: awkgram.y:417 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" -#: awkgram.y:423 +#: awkgram.y:421 #, 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" -#: awkgram.y:515 +#: awkgram.y:513 #, c-format msgid "duplicate case values in switch body: %s" msgstr "gặp giá trị case trùng trong thân chuyển đổi (switch body): %s" -#: awkgram.y:536 +#: awkgram.y:534 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)" -#: awkgram.y:796 awkgram.y:3723 +#: awkgram.y:794 awkgram.y:3751 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" -#: awkgram.y:805 awkgram.y:3715 +#: awkgram.y:803 awkgram.y:3743 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" -#: awkgram.y:815 +#: awkgram.y:813 #, c-format msgid "`next' used in %s action" msgstr "“next” (kế tiếp) được dùng trong hành động %s" -#: awkgram.y:824 +#: awkgram.y:822 #, c-format msgid "`nextfile' used in %s action" msgstr "“nextfile” (tập tin kế tiếp) được dùng trong hành động %s" -#: awkgram.y:848 +#: awkgram.y:846 msgid "`return' used outside function context" msgstr "“return” (trở về) được dùng ở ngoại ngữ cảnh hàm" -#: awkgram.y:922 +#: awkgram.y:920 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”””" -#: awkgram.y:988 awkgram.y:1037 +#: awkgram.y:986 awkgram.y:1035 msgid "`delete' is not allowed with SYMTAB" msgstr "“delete” không được phép với SYMTAB" -#: awkgram.y:990 awkgram.y:1039 +#: awkgram.y:988 awkgram.y:1037 msgid "`delete' is not allowed with FUNCTAB" msgstr "“delete” không được phép với FUNCTAB" -#: awkgram.y:1024 awkgram.y:1028 +#: awkgram.y:1022 awkgram.y:1026 msgid "`delete(array)' is a non-portable tawk extension" msgstr "“delete array” (xoá mảng) là phần mở rộng gawk không khả chuyển" -#: awkgram.y:1149 +#: awkgram.y:1147 msgid "multistage two-way pipelines don't work" msgstr "đường ống dẫn hai chiếu đa giai đoạn không phải hoạt động được" -#: awkgram.y:1264 +#: awkgram.y:1262 msgid "regular expression on right of assignment" msgstr "biểu thức chính quy nằm bên phải phép gán" -#: awkgram.y:1275 +#: awkgram.y:1273 msgid "regular expression on left of `~' or `!~' operator" msgstr "biểu thức chính quy nằm bên trái toán tử “~” hay “!~”" -#: awkgram.y:1291 awkgram.y:1442 +#: awkgram.y:1289 awkgram.y:1431 msgid "old awk does not support the keyword `in' except after `for'" msgstr "awk cũ không hỗ trợ từ khoá “in”, trừ khi nằm sau “for”" -#: awkgram.y:1301 +#: awkgram.y:1299 msgid "regular expression on right of comparison" msgstr "biểu thức chính quy nằm bên phải sự so sánh" -#: awkgram.y:1417 -#, c-format -msgid "`getline var' invalid inside `%s' rule" -msgstr "“getline var” không hợp lệ bên trong quy tắc “%s”" - -#: awkgram.y:1420 -#, c-format -msgid "`getline' invalid inside `%s' rule" +#: awkgram.y:1411 +#, fuzzy, c-format +msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "“getline” không hợp lệ trong quy tắc “%s”" -#: awkgram.y:1425 +#: awkgram.y:1414 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." -#: awkgram.y:1444 +#: awkgram.y:1433 msgid "old awk does not support multidimensional arrays" msgstr "awk cũ không hỗ trợ mảng đa chiều" -#: awkgram.y:1541 +#: awkgram.y:1530 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" -#: awkgram.y:1607 +#: awkgram.y:1596 msgid "indirect function calls are a gawk extension" msgstr "cuộc gọi hàm gián tiếp là một phần mở rộng gawk" -#: awkgram.y:1620 +#: awkgram.y:1609 #, c-format msgid "can not use special variable `%s' for indirect function call" msgstr "không thể dùng biến đặc biệt “%s” cho cú gọi hàm gián tiếp" -#: awkgram.y:1698 +#: awkgram.y:1635 +#, fuzzy, c-format +msgid "attempt to use non-function `%s' in function call" +msgstr "cố gắng dùng hàm “%s” như mảng" + +#: awkgram.y:1699 msgid "invalid subscript expression" msgstr "biểu thức in thấp không hợp lệ" -#: awkgram.y:2048 awkgram.y:2068 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2045 awkgram.y:2065 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "cảnh báo: " -#: awkgram.y:2066 gawkapi.c:192 gawkapi.c:221 msg.c:158 +#: awkgram.y:2063 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "lỗi nghiêm trọng: " -#: awkgram.y:2116 +#: awkgram.y:2113 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:2383 awkgram.y:2459 awkgram.y:2682 debug.c:523 debug.c:539 +#: awkgram.y:2392 awkgram.y:2468 awkgram.y:2691 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:2384 awkgram.y:2509 +#: awkgram.y:2393 awkgram.y:2518 #, 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:2386 awkgram.y:2460 awkgram.y:2510 builtin.c:135 debug.c:5206 +#: awkgram.y:2395 awkgram.y:2469 awkgram.y:2519 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "không rõ lý do" -#: awkgram.y:2395 awkgram.y:2419 +#: awkgram.y:2404 awkgram.y:2428 #, 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:2408 +#: awkgram.y:2417 #, c-format msgid "already included source file `%s'" msgstr "đã sẵn bao gồm tập tin nguồn “%s”" -#: awkgram.y:2409 +#: awkgram.y:2418 #, 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:2444 +#: awkgram.y:2453 msgid "@include is a gawk extension" msgstr "@include là phần mở rộng của gawk" -#: awkgram.y:2450 +#: awkgram.y:2459 msgid "empty filename after @include" msgstr "tập tin trống sau @include" -#: awkgram.y:2494 +#: awkgram.y:2503 msgid "@load is a gawk extension" msgstr "@load là một phần mở rộng gawk" -#: awkgram.y:2500 +#: awkgram.y:2509 msgid "empty filename after @load" msgstr "tên tập tin trống sau @load" -#: awkgram.y:2634 +#: awkgram.y:2643 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:2749 +#: awkgram.y:2758 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "không thể đọc tập tin nguồn “%s” (%s)" -#: awkgram.y:2760 +#: awkgram.y:2769 #, c-format msgid "source file `%s' is empty" msgstr "tập tin nguồn “%s” là rỗng" -#: awkgram.y:2937 +#: awkgram.y:2828 +#, c-format +msgid "PEBKAC error: invalid character '\\%03o' in source code" +msgstr "" + +#: awkgram.y:2959 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:3042 +#: awkgram.y:3062 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" -#: awkgram.y:3066 +#: awkgram.y:3089 #, 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" -#: awkgram.y:3070 +#: awkgram.y:3093 #, 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" -#: awkgram.y:3077 +#: awkgram.y:3100 msgid "unterminated regexp" msgstr "biểu thức chính quy chưa được chấm dứt" -#: awkgram.y:3081 +#: awkgram.y:3104 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:3140 +#: awkgram.y:3162 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:3156 +#: awkgram.y:3178 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:3217 +#: awkgram.y:3239 msgid "POSIX does not allow operator `**='" msgstr "POSIX không cho phép toán tử “**=”" -#: awkgram.y:3219 +#: awkgram.y:3241 msgid "old awk does not support operator `**='" msgstr "awk cũ không hỗ trợ toán tử “**=”" -#: awkgram.y:3228 +#: awkgram.y:3250 msgid "POSIX does not allow operator `**'" msgstr "POSIX không cho phép toán tử “**”" -#: awkgram.y:3230 +#: awkgram.y:3252 msgid "old awk does not support operator `**'" msgstr "awk cũ không hỗ trợ toán tử “**”" -#: awkgram.y:3265 +#: awkgram.y:3287 msgid "operator `^=' is not supported in old awk" msgstr "awk cũ không hỗ trợ toán tử “^=”" -#: awkgram.y:3273 +#: awkgram.y:3295 msgid "operator `^' is not supported in old awk" msgstr "awk cũ không hỗ trợ toán tử “^”" -#: awkgram.y:3366 awkgram.y:3382 command.y:1178 +#: awkgram.y:3392 awkgram.y:3410 command.y:1180 msgid "unterminated string" msgstr "chuỗi không được chấm dứt" -#: awkgram.y:3603 +#: awkgram.y:3631 #, 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:3650 +#: awkgram.y:3678 #, c-format msgid "`%s' is a gawk extension" msgstr "“%s” là một phần mở rộng gawk" -#: awkgram.y:3655 +#: awkgram.y:3683 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX không cho phép “%s”" -#: awkgram.y:3663 +#: awkgram.y:3691 #, c-format msgid "`%s' is not supported in old awk" msgstr "awk kiểu cũ không hỗ trợ “%s”" -#: awkgram.y:3753 +#: awkgram.y:3781 msgid "`goto' considered harmful!\n" msgstr "“goto” được xem là có hại!\n" -#: awkgram.y:3787 +#: awkgram.y:3815 #, 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:3822 +#: awkgram.y:3850 #, 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" -#: awkgram.y:3827 +#: awkgram.y:3855 #, 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:3910 awkgram.y:3913 +#: awkgram.y:3938 awkgram.y:3941 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:3967 awkgram.y:3970 +#: awkgram.y:3995 awkgram.y:3998 msgid "close: second argument is a gawk extension" msgstr "close: (đóng) đối số thứ hai là phần mở rộng gawk" -#: awkgram.y:3982 +#: awkgram.y:4010 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:3997 +#: awkgram.y:4025 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:4016 +#: awkgram.y:4044 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" -#: awkgram.y:4069 +#: awkgram.y:4097 #, 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:4126 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4154 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:4127 +#: awkgram.y:4155 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:4135 +#: awkgram.y:4163 #, c-format msgid "%s: close failed (%s)" msgstr "%s: gặp lỗi khi đóng (%s)" -#: awkgram.y:4160 +#: awkgram.y:4188 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() (hàm bóng) được gọi hai lần!" -#: awkgram.y:4168 +#: awkgram.y:4196 msgid "there were shadowed variables." msgstr "có biến bị bóng." -#: awkgram.y:4239 +#: awkgram.y:4267 #, 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:4285 +#: awkgram.y:4313 #, 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:4288 +#: awkgram.y:4316 #, 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:4296 +#: awkgram.y:4324 #, 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:4383 awkgram.y:4389 +#: awkgram.y:4411 awkgram.y:4417 #, 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:4393 +#: awkgram.y:4421 #, 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:4425 +#: awkgram.y:4453 #, 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:4484 +#: awkgram.y:4468 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -525,21 +530,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:4720 +#: awkgram.y:4674 msgid "division by zero attempted" msgstr "gặp phép chia cho số không" -#: awkgram.y:4729 +#: awkgram.y:4683 #, c-format msgid "division by zero attempted in `%%'" msgstr "gặp phép chia cho số không trong “%%”" -#: awkgram.y:5049 +#: awkgram.y:5003 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:5052 +#: awkgram.y:5006 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "gán đich không hợp lệ (mã thi hành “%s”)" @@ -582,194 +587,204 @@ 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ở" -#: builtin.c:362 +#: builtin.c:351 msgid "index: received non-string first argument" msgstr "index: (chỉ số) đã nhận đối số thứ nhất không phải là chuỗi" -#: builtin.c:364 +#: builtin.c:353 msgid "index: received non-string second argument" msgstr "index: (chỉ số) đã nhận đối số thứ hai không phải là chuỗi" -#: builtin.c:488 mpfr.c:757 +#: builtin.c:466 mpfr.c:777 msgid "int: received non-numeric argument" msgstr "int: (số nguyên?) đã nhận đối số không phải thuộc số" -#: builtin.c:525 +#: builtin.c:503 msgid "length: received array argument" msgstr "length: (chiều dài) đã nhận mảng đối số" -#: builtin.c:528 +#: builtin.c:506 msgid "`length(array)' is a gawk extension" msgstr "“length(array)” (độ dài mảng) là một phần mở rộng gawk" -#: builtin.c:544 +#: builtin.c:525 msgid "length: received non-string argument" msgstr "length: (chiều dài) đã nhận đối số không phải chuỗi" -#: builtin.c:575 +#: builtin.c:554 msgid "log: received non-numeric argument" msgstr "log: (nhật ký) đã nhận đối số không phải thuộc số" -#: builtin.c:578 +#: builtin.c:557 #, c-format msgid "log: received negative argument %g" msgstr "log: (nhật ký) đã nhận đối số âm “%g”" -#: builtin.c:776 builtin.c:781 +#: builtin.c:755 builtin.c:760 builtin.c:911 msgid "fatal: must use `count$' on all formats or none" msgstr "lỗi nghiêm trọng: phải dùng “count$” với mọi dạng thức hay không gì cả" -#: builtin.c:851 +#: builtin.c:830 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "chiều rộng trường bị bỏ qua đối với bộ chỉ định “%%”" -#: builtin.c:853 +#: builtin.c:832 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "độ chính xác bị bỏ qua đối với bộ chỉ định “%%”" -#: builtin.c:855 +#: builtin.c:834 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "chiều rộng trường và độ chính xác bị bỏ qua đối với bộ chỉ định “%%”" -#: builtin.c:906 +#: builtin.c:885 msgid "fatal: `$' is not permitted in awk formats" msgstr "lỗi nghiêm trọng: không cho phép “$” trong định dạng awk" -#: builtin.c:915 +#: builtin.c:894 msgid "fatal: arg count with `$' must be > 0" msgstr "lỗi nghiêm trọng: số lượng đối số với “$” phải >0" -#: builtin.c:919 +#: builtin.c:898 #, 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" -#: builtin.c:923 +#: builtin.c:902 msgid "fatal: `$' not permitted after period in format" msgstr "lỗi nghiêm trọng: không cho phép “$” nằm sau dấu chấm trong định dạng" -#: builtin.c:939 +#: builtin.c:921 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" -#: builtin.c:1009 +#: builtin.c:991 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:1013 +#: builtin.c:995 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:1026 +#: builtin.c:1008 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:1030 +#: builtin.c:1012 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:1043 +#: builtin.c:1025 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:1047 +#: builtin.c:1029 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:1463 +#: builtin.c:1055 +#, fuzzy, c-format +msgid "[s]printf: value %g is too big for %%c format" +msgstr "[s]printf: giá trị %g ở ngoại phạm vi cho dạng thức “%%%c”" + +#: builtin.c:1068 +#, fuzzy, c-format +msgid "[s]printf: value %g is not a valid wide character" +msgstr "[s]printf: giá trị %g ở ngoại phạm vi cho dạng thức “%%%c”" + +#: builtin.c:1454 #, 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:1561 +#: builtin.c:1552 #, 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" -#: builtin.c:1566 +#: builtin.c:1557 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:1568 +#: builtin.c:1559 msgid "^ ran out for this one" msgstr "bị hết “^” cho cái này" -#: builtin.c:1575 +#: builtin.c:1566 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:1578 +#: builtin.c:1569 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:1634 +#: builtin.c:1625 msgid "sprintf: no arguments" msgstr "sprintf: không có đối số" -#: builtin.c:1657 builtin.c:1668 +#: builtin.c:1648 builtin.c:1659 msgid "printf: no arguments" msgstr "printf: không có đối số" -#: builtin.c:1711 +#: builtin.c:1702 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:1715 +#: builtin.c:1706 #, 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:1746 +#: builtin.c:1737 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: (chuỗi con) độ dài %g không phải ≥1" -#: builtin.c:1748 +#: builtin.c:1739 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: (chuỗi con) độ dài %g không phải ≥0" -#: builtin.c:1755 +#: builtin.c:1753 #, 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:1760 +#: builtin.c:1758 #, 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" -#: builtin.c:1772 +#: builtin.c:1770 #, 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:1777 +#: builtin.c:1775 #, 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" -#: builtin.c:1802 +#: builtin.c:1798 msgid "substr: source string is zero length" msgstr "substr: (chuỗi con) chuỗi nguồn có độ dài số không" -#: builtin.c:1818 +#: builtin.c:1812 #, 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:1826 +#: builtin.c:1820 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -777,191 +792,197 @@ 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:1900 +#: builtin.c:1890 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ố" -#: builtin.c:1923 +#: builtin.c:1913 msgid "strftime: received non-numeric second argument" msgstr "strftime: đã nhận đối số thứ hai khác thuộc số" -#: builtin.c:1927 +#: builtin.c:1917 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:1934 +#: builtin.c:1924 msgid "strftime: received non-string first argument" msgstr "strftime: đã nhận đối số thứ nhất khác chuỗi" -#: builtin.c:1941 +#: builtin.c:1931 msgid "strftime: received empty format string" msgstr "strftime: đã nhận chuỗi định dạng rỗng" -#: builtin.c:2007 +#: builtin.c:1997 msgid "mktime: received non-string argument" msgstr "mktime: đã nhận đối số khác chuỗi" -#: builtin.c:2024 +#: builtin.c:2014 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:2059 +#: builtin.c:2049 msgid "'system' function not allowed in sandbox mode" msgstr "hàm “system” không cho phép ở chế độ khuôn đúc" -#: builtin.c:2064 +#: builtin.c:2054 msgid "system: received non-string argument" msgstr "system: (hệ thống) đã nhận đối số khác chuỗi" -#: builtin.c:2184 +#: builtin.c:2174 #, 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:2271 +#: builtin.c:2259 msgid "tolower: received non-string argument" msgstr "tolower: (đến thấp hơn) đã nhận đối số khác chuỗi" -#: builtin.c:2305 +#: builtin.c:2290 msgid "toupper: received non-string argument" msgstr "toupper: (đến cao hơn) đã nhận đối số khác chuỗi" -#: builtin.c:2341 mpfr.c:672 +#: builtin.c:2323 mpfr.c:679 msgid "atan2: received non-numeric first argument" msgstr "atan2: đã nhận đối số thứ nhất khác thuộc số" -#: builtin.c:2343 mpfr.c:674 +#: builtin.c:2325 mpfr.c:681 msgid "atan2: received non-numeric second argument" msgstr "atan2: đã nhận đối số thứ hai khác thuộc số" -#: builtin.c:2362 +#: builtin.c:2344 msgid "sin: received non-numeric argument" msgstr "sin: đã nhận đối số không phải thuộc số" -#: builtin.c:2378 +#: builtin.c:2360 msgid "cos: received non-numeric argument" msgstr "cos: đã nhận đối số không phải thuộc số" -#: builtin.c:2431 mpfr.c:1156 +#: builtin.c:2413 mpfr.c:1176 msgid "srand: received non-numeric argument" msgstr "srand: đã nhận đối số không phải thuộc số" -#: builtin.c:2462 +#: builtin.c:2444 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:2734 -msgid "gensub: third argument of 0 treated as 1" +#: builtin.c:2705 +#, fuzzy, c-format +msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: đối số thứ ba của 0 được xử lý như 1" -#: builtin.c:3030 +#: builtin.c:2720 +#, fuzzy, c-format +msgid "gensub: third argument %g treated as 1" +msgstr "gensub: đối số thứ ba của 0 được xử lý như 1" + +#: builtin.c:3020 msgid "lshift: received non-numeric first argument" msgstr "lshift: đã nhận đối số đầu không phải thuộc số" -#: builtin.c:3032 +#: builtin.c:3022 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:3038 +#: builtin.c:3028 #, 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:3040 +#: builtin.c:3030 #, 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:3042 +#: builtin.c:3032 #, 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" -#: builtin.c:3067 +#: builtin.c:3057 msgid "rshift: received non-numeric first argument" msgstr "rshift: đã nhận đối số thứ nhất khác thuộc số" -#: builtin.c:3069 +#: builtin.c:3059 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:3075 +#: builtin.c:3065 #, 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:3077 +#: builtin.c:3067 #, 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:3079 +#: builtin.c:3069 #, 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" -#: builtin.c:3104 mpfr.c:968 +#: builtin.c:3094 mpfr.c:988 msgid "and: called with less than two arguments" msgstr "and: được gọi với ít hơn hai đối số" -#: builtin.c:3109 +#: builtin.c:3099 #, c-format msgid "and: argument %d is non-numeric" msgstr "and: đối số %d không phải thuộc số" -#: builtin.c:3113 +#: builtin.c:3103 #, 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" -#: builtin.c:3136 mpfr.c:1000 +#: builtin.c:3126 mpfr.c:1020 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:3141 +#: builtin.c:3131 #, 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:3145 +#: builtin.c:3135 #, 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" -#: builtin.c:3167 mpfr.c:1031 +#: builtin.c:3157 mpfr.c:1051 msgid "xor: called with less than two arguments" msgstr "xor: được gọi với ít hơn hai đối số" -#: builtin.c:3173 +#: builtin.c:3163 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: đối số %d không thuộc kiểu số" -#: builtin.c:3177 +#: builtin.c:3167 #, 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:3202 mpfr.c:787 +#: builtin.c:3192 mpfr.c:807 msgid "compl: received non-numeric argument" msgstr "compl: (biên dịch) đã nhận được đối số không-phải-số" -#: builtin.c:3208 +#: builtin.c:3198 #, 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:3210 +#: builtin.c:3200 #, 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:3379 +#: builtin.c:3369 #, 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ệ" @@ -1261,40 +1282,49 @@ msgstr "up [N] - chuyển xuống N khung stack." msgid "watch var - set a watchpoint for a variable." msgstr "watch var - đặt điểm theo dõi cho một biến." -#: command.y:1011 debug.c:401 msg.c:135 +#: command.y:901 +#, fuzzy +msgid "" +"where [N] - (same as backtrace) 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:1013 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "lỗi: " -#: command.y:1051 +#: command.y:1053 #, c-format msgid "can't read command (%s)\n" msgstr "không thể đọc lệnh (%s)\n" -#: command.y:1065 +#: command.y:1067 #, c-format msgid "can't read command (%s)" msgstr "không thể đọc lệnh (%s)" -#: command.y:1116 +#: command.y:1118 msgid "invalid character in command" msgstr "ký tự trong câu lệnh không hợp lệ" -#: command.y:1152 +#: command.y:1154 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "không hiểu lệnh - “%.*s”, hãy gõ lệnh trợ giúp “help”" -#: command.y:1222 +#: command.y:1224 #, c-format msgid "%s" msgstr "%s" -#: command.y:1284 +#: command.y:1286 msgid "invalid character" msgstr "ký tự không hợp lệ" -#: command.y:1455 +#: command.y:1457 #, c-format msgid "undefined command: %s\n" msgstr "lệnh chưa định nghĩa: %s\n" @@ -1821,68 +1851,70 @@ msgstr "“%s” không được phép trong ngữ cảnh hiện hành; câu l msgid "`return' not allowed in current context; statement ignored" msgstr "“return” không được phép trong ngữ cảnh hiện hành; câu lệnh bị bỏ qua" -#: debug.c:5590 +#: debug.c:5604 #, c-format 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: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 +#: dfa.c:1063 dfa.c:1066 dfa.c:1085 dfa.c:1095 dfa.c:1107 dfa.c:1143 +#: dfa.c:1152 dfa.c:1155 dfa.c:1160 dfa.c:1174 dfa.c:1222 msgid "unbalanced [" msgstr "thiếu dấu ngoặc vuông mở [" -#: dfa.c:1174 +#: dfa.c:1119 msgid "invalid character class" msgstr "sai lớp ký tự" -#: dfa.c:1316 +#: dfa.c:1265 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:1366 +#: dfa.c:1327 msgid "unfinished \\ escape" msgstr "chưa kết thúc dãy thoát \\" -#: dfa.c:1513 regcomp.c:161 -msgid "Invalid content of \\{\\}" +#: dfa.c:1474 +#, fuzzy +msgid "invalid content of \\{\\}" msgstr "Nội dung của “\\{\\}” không hợp lệ" -#: dfa.c:1516 regcomp.c:176 -msgid "Regular expression too big" +#: dfa.c:1477 +#, fuzzy +msgid "regular expression too big" msgstr "Biểu thức chính quy quá lớn" -#: dfa.c:1936 +#: dfa.c:1912 msgid "unbalanced (" msgstr "thiếu dấu (" -#: dfa.c:2062 +#: dfa.c:2038 msgid "no syntax specified" msgstr "chưa chỉ rõ cú pháp" -#: dfa.c:2070 +#: dfa.c:2046 msgid "unbalanced )" msgstr "thiếu dấu )" -#: eval.c:394 +#: eval.c:396 #, c-format msgid "unknown nodetype %d" msgstr "không biết kiểu nút %d" -#: eval.c:405 eval.c:419 +#: eval.c:407 eval.c:421 #, c-format msgid "unknown opcode %d" msgstr "gặp opcode (mã thao tác) không rõ %d" -#: eval.c:416 +#: eval.c:418 #, c-format msgid "opcode %s not an operator or keyword" msgstr "mã lệnh %s không phải là một toán tử hoặc từ khoá" -#: eval.c:472 +#: eval.c:474 msgid "buffer overflow in genflags2str" msgstr "tràn bộ đệm trong “genflags2str” (tạo ra cờ đến chuỗi)" -#: eval.c:675 +#: eval.c:676 #, c-format msgid "" "\n" @@ -1893,217 +1925,217 @@ msgstr "" "\t# Ngăn xếp gọi hàm:\n" "\n" -#: eval.c:704 +#: eval.c:705 msgid "`IGNORECASE' is a gawk extension" msgstr "“IGNORECASE” (bỏ qua chữ HOA/thường) là phần mở rộng gawk" -#: eval.c:736 +#: eval.c:737 msgid "`BINMODE' is a gawk extension" msgstr "“BINMODE” (chế độ nhị phân) là phần mở rộng gawk" -#: eval.c:794 +#: eval.c:795 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "Giá trị BINMODE (chế độ nhị phân) “%s” không hợp lệ nên đã coi là 3" -#: eval.c:885 +#: eval.c:912 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "đặc tả “%sFMT” sai “%s”" -#: eval.c:969 +#: eval.c:996 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "đang tắt “--lint” do việc gán cho “LINT”" -#: eval.c:1147 +#: eval.c:1174 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "gặp tham chiếu đến đối số chưa được khởi tạo “%s”" -#: eval.c:1148 +#: eval.c:1175 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "gặp tham chiếu đến biến chưa được khởi tạo “%s”" -#: eval.c:1166 +#: eval.c:1193 msgid "attempt to field reference from non-numeric value" msgstr "cố gắng tham chiếu trường từ giá trị khác thuộc số" -#: eval.c:1168 +#: eval.c:1195 msgid "attempt to field reference from null string" msgstr "cố gắng tham chiếu trường từ chuỗi trống rỗng" -#: eval.c:1176 +#: eval.c:1203 #, c-format msgid "attempt to access field %ld" msgstr "cố gắng để truy cập trường %ld" -#: eval.c:1185 +#: eval.c:1212 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "tham chiếu đến trường chưa được khởi tạo “$%ld”" -#: eval.c:1272 +#: eval.c:1299 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "hàm “%s” được gọi với nhiều số đối số hơn số được khai báo" -#: eval.c:1473 +#: eval.c:1500 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: không cần kiểu “%s”" -#: eval.c:1569 +#: eval.c:1596 msgid "division by zero attempted in `/='" msgstr "gặp phép chia cho số không trong “/=”" -#: eval.c:1576 +#: eval.c:1603 #, c-format msgid "division by zero attempted in `%%='" msgstr "gặp phép chia cho số không trong “%%=”" -#: ext.c:89 ext.c:171 +#: ext.c:65 ext.c:147 msgid "extensions are not allowed in sandbox mode" msgstr "phần mở rộng không cho phép ở chế độ khuôn đúc" -#: ext.c:92 +#: ext.c:68 msgid "-l / @load are gawk extensions" msgstr "-l / @load là một phần mở rộng gawk" -#: ext.c:95 +#: ext.c:71 msgid "load_ext: received NULL lib_name" msgstr "load_ext: nhận được NULL lib_name" -#: ext.c:98 +#: ext.c:74 #, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "load_ext: không thể mở thư viện “%s” (%s)\n" -#: ext.c:104 +#: ext.c:80 #, 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" -#: ext.c:110 +#: ext.c:86 #, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "load_ext: thư viện “%s”: không thể gọi hàm “%s” (%s)\n" -#: ext.c:114 +#: ext.c:90 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "load_ext: thư viện “%s” thủ tục khởi tạo “%s” gặp lỗi\n" -#: ext.c:174 +#: ext.c:150 msgid "`extension' is a gawk extension" msgstr "“extension” là một phần mở rộng gawk" -#: ext.c:177 +#: ext.c:153 msgid "extension: received NULL lib_name" msgstr "extension: nhận được NULL lib_name" -#: ext.c:180 +#: ext.c:156 #, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "phần mở rộng: không thể mở thư viện “%s” (%s)" -#: ext.c:186 +#: ext.c:162 #, 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)" -#: ext.c:190 +#: ext.c:166 #, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "phần mở rộng: thư viện “%s”: không thể gọi hàm “%s” (%s)" -#: ext.c:221 +#: ext.c:197 msgid "make_builtin: missing function name" msgstr "make_builtin: thiếu tên hàm" -#: ext.c:236 +#: ext.c:212 #, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "make_builtin: không thể định nghĩa lại hàm “%s”" -#: ext.c:240 +#: ext.c:216 #, c-format msgid "make_builtin: function `%s' already defined" msgstr "make_builtin: hàm “%s” đã được định nghĩa rồi" -#: ext.c:244 +#: ext.c:220 #, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "make_builtin: hàm “%s” đã được định nghĩa trước đây rồi" -#: ext.c:246 +#: ext.c:222 #, 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" -#: ext.c:249 ext.c:304 +#: ext.c:225 ext.c:280 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: đối số dành cho số đếm bị âm cho hàm “%s”" -#: ext.c:276 +#: ext.c:252 msgid "extension: missing function name" msgstr "extension: (phần mở rộng) tên hàm còn thiếu" -#: ext.c:279 ext.c:283 +#: ext.c:255 ext.c:259 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: (phần mở rộng) gặp ký tự cấm “%c” nằm trong tên hàm “%s”" -#: ext.c:291 +#: ext.c:267 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: (phần mở rộng) không thể định nghĩa lại hàm “%s”" -#: ext.c:295 +#: ext.c:271 #, c-format msgid "extension: function `%s' already defined" msgstr "extension: (phần mở rộng) hàm “%s” đã được định nghĩa" -#: ext.c:299 +#: ext.c:275 #, c-format msgid "extension: function name `%s' previously defined" msgstr "tên hàm “%s” đã được định nghĩa trước đó" -#: ext.c:301 +#: ext.c:277 #, 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" -#: ext.c:375 +#: ext.c:351 #, c-format msgid "function `%s' defined to take no more than %d argument(s)" msgstr "hàm “%s” được định nghĩa để chấp nhấn %d đối số tối đa" -#: ext.c:378 +#: ext.c:354 #, c-format msgid "function `%s': missing argument #%d" msgstr "hàm “%s”: thiếu đối số #%d" -#: ext.c:395 +#: ext.c:371 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "hàm “%s”: đối số thứ %d: cố gắng dùng kiểu vô hướng như là mảng" -#: ext.c:399 +#: ext.c:375 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "hàm “%s”: đối số thứ %d: cố gắng dùng mảng như là kiểu vô hướng" -#: ext.c:413 +#: ext.c:389 msgid "dynamic loading of library not supported" msgstr "tải động của thư viện không được hỗ trợ" @@ -2247,7 +2279,7 @@ msgstr "wait: được gọi với quá nhiều đối số" msgid "inplace_begin: in-place editing already active" msgstr "inplace_begin: sửa in-place đã sẵn được kích hoạt rồi" -#: extension/inplace.c:133 extension/inplace.c:207 +#: extension/inplace.c:133 extension/inplace.c:210 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "inplace_begin: cần 2 đối số như lại được gọi với %d" @@ -2276,55 +2308,55 @@ msgstr "inplace_begin: “%s” không phải là tập tin thường" msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "inplace_begin: mkstemp(“%s”) gặp lỗi (%s)" -#: extension/inplace.c:178 +#: extension/inplace.c:181 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "inplace_begin: chmod gặp lỗi (%s)" -#: extension/inplace.c:185 +#: extension/inplace.c:188 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "inplace_begin: dup(stdout) gặp lỗi (%s)" -#: extension/inplace.c:188 +#: extension/inplace.c:191 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "inplace_begin: dup2(%d, stdout) gặp lỗi (%s)" -#: extension/inplace.c:191 +#: extension/inplace.c:194 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "inplace_begin: close(%d) gặp lỗi (%s)" -#: extension/inplace.c:210 +#: extension/inplace.c:213 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "inplace_end: không thể lấy lại đối số thứ nhất như là một tên tập tin" -#: extension/inplace.c:217 +#: extension/inplace.c:220 msgid "inplace_end: in-place editing not active" msgstr "inplace_end: việc sửa in-place không được kích hoạt" -#: extension/inplace.c:223 +#: extension/inplace.c:226 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "inplace_end: dup2(%d, stdout) gặp lỗi (%s)" -#: extension/inplace.c:226 +#: extension/inplace.c:229 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "inplace_end: close(%d) gặp lỗi (%s)" -#: extension/inplace.c:230 +#: extension/inplace.c:233 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "inplace_end: fsetpos(stdout) gặp lỗi (%s)" -#: extension/inplace.c:243 +#: extension/inplace.c:246 #, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "inplace_end: link(“%s”, “%s”) gặp lỗi (%s)" -#: extension/inplace.c:253 +#: extension/inplace.c:256 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "inplace_end: rename(“%s”, “%s”) gặp lỗi (%s)" @@ -2366,50 +2398,54 @@ msgstr "readfile: được gọi với quá nhiều đối số" msgid "readfile: called with no arguments" msgstr "readfile: được gọi mà không có đối số" -#: extension/rwarray.c:124 +#: extension/revoutput.c:125 +msgid "revoutput: could not initialize REVOUT variable" +msgstr "" + +#: extension/rwarray.c:124 extension/rwarray0.c:109 msgid "writea: called with too many arguments" msgstr "writea: được gọi với quá nhiều đối số" -#: extension/rwarray.c:131 +#: extension/rwarray.c:131 extension/rwarray0.c:116 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "do_writea: đối số 0 không phải là một chuỗi\n" -#: extension/rwarray.c:137 +#: extension/rwarray.c:137 extension/rwarray0.c:122 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "do_writea: đối số 1 không phải là một mảng\n" -#: extension/rwarray.c:184 +#: extension/rwarray.c:184 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "write_array: không thể làm phẳng mảng\n" -#: extension/rwarray.c:198 +#: extension/rwarray.c:198 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "write_array: không thể giải phóng mảng được làm phẳng\n" -#: extension/rwarray.c:280 +#: extension/rwarray.c:280 extension/rwarray0.c:265 msgid "reada: called with too many arguments" msgstr "reada: được gọi với quá nhiều đối số" -#: extension/rwarray.c:287 +#: extension/rwarray.c:287 extension/rwarray0.c:272 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "do_reada: đối số 0 không phải là một chuỗi\n" -#: extension/rwarray.c:293 +#: extension/rwarray.c:293 extension/rwarray0.c:278 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "do_reada: đối số 1 không phải là một mảng\n" -#: extension/rwarray.c:337 +#: extension/rwarray.c:337 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "do_reada: clear_array gặp lỗi\n" -#: extension/rwarray.c:374 +#: extension/rwarray.c:374 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "read_array: set_array_element gặp lỗi\n" @@ -2438,93 +2474,93 @@ msgstr "sleep: đối số âm" msgid "sleep: not supported on this platform" msgstr "sleep: không được hỗ trợ trên nền tảng này" -#: field.c:345 +#: field.c:346 msgid "NF set to negative value" msgstr "“NF” được đặt thành giá trị âm" -#: field.c:971 field.c:978 field.c:982 +#: field.c:958 field.c:965 field.c:969 msgid "split: fourth argument is a gawk extension" msgstr "split (chia tách): đối số thứ tư là phần mở rộng gawk" -#: field.c:975 +#: field.c:962 msgid "split: fourth argument is not an array" msgstr "split (chia tách): đối số thứ tư không phải là mảng" -#: field.c:989 +#: field.c:976 msgid "split: second argument is not an array" msgstr "split: (chia tách) đối số thứ hai không phải là mảng" -#: field.c:993 +#: field.c:980 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ư" -#: field.c:998 +#: field.c:985 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ư" -#: field.c:1001 +#: field.c:988 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" -#: field.c:1032 +#: field.c:1019 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" -#: field.c:1072 +#: field.c:1059 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: đối số thứ tư không phải là mảng" -#: field.c:1077 +#: field.c:1064 msgid "patsplit: second argument is not an array" msgstr "patsplit: đối số thứ hai không phải là mảng" -#: field.c:1083 +#: field.c:1070 msgid "patsplit: third argument must be non-null" msgstr "patsplit: đối số thứ ba không phải không rỗng" -#: field.c:1087 +#: field.c:1074 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ư" -#: field.c:1092 +#: field.c:1079 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ư" -#: field.c:1095 +#: field.c:1082 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" -#: field.c:1133 +#: field.c:1120 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "“FIELDWIDTHS” (độ rộng trường) là phần mở rộng gawk" -#: field.c:1197 +#: field.c:1184 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "giá trị FIELDWIDTHS (độ rộng trường) không hợp lệ, gần “%s”" -#: field.c:1270 +#: field.c:1257 msgid "null string for `FS' is a gawk extension" msgstr "chuỗi vô giá trị cho “FS” là phần mở rộng gawk" -#: field.c:1274 +#: field.c:1261 msgid "old awk does not support regexps as value of `FS'" msgstr "awk cũ không hỗ trợ biểu thức chính quy làm giá trị của “FS”" -#: field.c:1393 +#: field.c:1380 msgid "`FPAT' is a gawk extension" msgstr "“FPAT” là phần mở rộng của gawk" @@ -2540,20 +2576,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:807 +#: gawkapi.c:809 msgid "remove_element: received null array" msgstr "remove_element: mảng nhận được là null" -#: gawkapi.c:810 +#: gawkapi.c:812 msgid "remove_element: received null subscript" msgstr "remove_element: nhận được là null" -#: gawkapi.c:947 +#: gawkapi.c:949 #, 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:952 +#: gawkapi.c:954 #, 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" @@ -2613,313 +2649,295 @@ msgstr "%s: tùy chọn “-W %s” không cho phép đối số\n" msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: tùy chọn “-W %s” yêu cầu một đối số\n" -#: io.c:392 +#: io.c:423 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "tham số dòng lệnh “%s” là một thư mục: đã bị bỏ qua" -#: io.c:395 io.c:513 +#: io.c:426 io.c:544 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "không mở được tập tin “%s” để đọc (%s)" -#: io.c:640 +#: io.c:671 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "lỗi đóng fd %d (“%s”) (%s)" -#: io.c:716 +#: io.c:749 msgid "redirection not allowed in sandbox mode" msgstr "chuyển hướng không cho phép ở chế độ khuôn đúc" -#: io.c:750 +#: io.c:783 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "biểu thức trong điều chuyển hướng “%s” chỉ có giá trị thuộc số" -#: io.c:756 +#: io.c:789 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "biểu thức cho điều chuyển hướng “%s” có giá trị chuỗi vô giá trị" -#: io.c:761 +#: io.c:794 #, 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ý" -#: io.c:809 +#: io.c:842 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "không cần hợp “>” và “>>” cho tập tin “%.*s”" -#: io.c:863 +#: io.c:896 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "không thể mở ống dẫn “%s” để xuất (%s)" -#: io.c:873 +#: io.c:906 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "không thể mở ống dẫn “%s” để nhập (%s)" -#: io.c:904 +#: io.c:937 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" msgstr "không thể mở ống dẫn hai chiều “%s” để nhập/xuất (%s)" -#: io.c:986 +#: io.c:1019 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "không thể chuyển hướng từ “%s” (%s)" -#: io.c:989 +#: io.c:1022 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "không thể chuyển hướng đến “%s” (%s)" -#: io.c:1040 +#: io.c:1073 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 +#: io.c:1089 #, c-format msgid "close of `%s' failed (%s)." msgstr "lỗi đóng “%s” (%s)" -#: io.c:1064 +#: io.c:1097 msgid "too many pipes or input files open" msgstr "quá nhiều ống dẫn hay tập tin nhập được mở" -#: io.c:1086 +#: io.c:1119 msgid "close: second argument must be `to' or `from'" msgstr "close: (đóng) đối số thứ hai phải là “to” (đến) hay “from” (từ)" -#: io.c:1103 +#: io.c:1136 #, 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ở" -#: io.c:1108 +#: io.c:1141 msgid "close of redirection that was never opened" msgstr "đóng một chuyển hướng mà nó chưa từng được mở" -#: io.c:1205 +#: io.c:1238 #, 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" -#: io.c:1222 +#: io.c:1255 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "trạng thái thất bại (%d) khi đóng ống dẫn “%s” (%s)" -#: io.c:1225 +#: io.c:1258 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "trạng thái thất bại (%d) khi đóng tập tin “%s” (%s)" -#: io.c:1245 +#: io.c:1278 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "không cung cấp lệnh đóng ổ cắm “%s” rõ ràng" -#: io.c:1248 +#: io.c:1281 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "không cung cấp lệnh đóng đồng tiến trình “%s” rõ ràng" -#: io.c:1251 +#: io.c:1284 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "không cung cấp lệnh đóng đường ống dẫn lệnh “%s” rõ ràng" -#: io.c:1254 +#: io.c:1287 #, c-format msgid "no explicit close of file `%s' provided" msgstr "không cung cấp lệnh đóng tập tin “%s” rõ ràng" -#: io.c:1284 io.c:1342 main.c:864 main.c:906 +#: io.c:1317 io.c:1375 main.c:628 main.c:670 #, c-format msgid "error writing standard output (%s)" msgstr "gặp lỗi khi ghi đầu ra tiêu chuẩn (%s)" -#: io.c:1289 io.c:1348 main.c:866 +#: io.c:1322 io.c:1381 main.c:630 #, c-format msgid "error writing standard error (%s)" msgstr "gặp lỗi khi ghi thiết bị lỗi chuẩn (%s)" -#: io.c:1297 +#: io.c:1330 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "lỗi xoá sạch ống dẫn “%s” (%s)" -#: io.c:1300 +#: io.c:1333 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "lỗi xoá sạch ống dẫn đồng tiến trình đến “%s” (%s)" -#: io.c:1303 +#: io.c:1336 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "lỗi xoá sạch tập tin “%s” (%s)" -#: io.c:1420 +#: io.c:1453 #, c-format msgid "local port %s invalid in `/inet'" msgstr "cổng cục bộ %s không hợp lệ trong “/inet”" -#: io.c:1438 +#: io.c:1471 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "thông tin về máy/cổng ở xa (%s, %s) không phải hợp lệ" -#: io.c:1590 -#, c-format -msgid "no (known) protocol supplied in special filename `%s'" -msgstr "trong tên tập tin đặc biệt “%s” không cung cấp giao thức (đã biết) nào" - -#: io.c:1604 -#, c-format -msgid "special file name `%s' is incomplete" -msgstr "tên tập tin đặc biệt “%s” chưa xong" - -#: io.c:1621 -msgid "must supply a remote hostname to `/inet'" -msgstr "phải cung cấp một tên máy chủ cho </inet>" - -#: io.c:1639 -msgid "must supply a remote port to `/inet'" -msgstr "phải cung cấp một cổng máy chủ cho </inet>" - -#: io.c:1685 +#: io.c:1673 msgid "TCP/IP communications are not supported" msgstr "truyền thông TCP/IP không được hỗ trợ" -#: io.c:1867 +#: io.c:1854 #, c-format msgid "could not open `%s', mode `%s'" msgstr "không mở được “%s”, chế độ “%s”" -#: io.c:1917 +#: io.c:1904 #, c-format msgid "close of master pty failed (%s)" msgstr "gặp lỗi khi đóng thiết bị cuối giả (%s)" -#: io.c:1919 io.c:2105 io.c:2305 +#: io.c:1906 io.c:2092 io.c:2293 #, c-format msgid "close of stdout in child failed (%s)" msgstr "lỗi đóng đầu ra tiêu chuẩn trong tiến trình con (%s)" -#: io.c:1922 +#: io.c:1909 #, 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)" -#: io.c:1924 io.c:2110 +#: io.c:1911 io.c:2097 #, c-format msgid "close of stdin in child failed (%s)" msgstr "lỗi đóng thiết bị nhập chuẩn trong tiến trình con (%s)" -#: io.c:1927 +#: io.c:1914 #, 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)" -#: io.c:1929 io.c:1951 +#: io.c:1916 io.c:1938 #, c-format msgid "close of slave pty failed (%s)" 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 +#: io.c:2027 io.c:2095 io.c:2264 io.c:2296 #, 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)" -#: io.c:2047 io.c:2113 +#: io.c:2034 io.c:2100 #, 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)" -#: io.c:2073 io.c:2298 +#: io.c:2060 io.c:2286 msgid "restoring stdout in parent process failed\n" msgstr "phục hồi đầu ra tiêu chuẩn trong tiến trình mẹ gặp lỗi\n" -#: io.c:2081 +#: io.c:2068 msgid "restoring stdin in parent process failed\n" msgstr "phục hồi đầu vào tiêu chuẩn trong tiến trình mẹ gặp lỗi\n" -#: io.c:2116 io.c:2310 io.c:2324 +#: io.c:2103 io.c:2298 io.c:2313 #, c-format msgid "close of pipe failed (%s)" msgstr "đóng ống dẫn gặp lỗi (%s)" -#: io.c:2174 +#: io.c:2162 msgid "`|&' not supported" msgstr "“|&” không được hỗ trợ" -#: io.c:2261 +#: io.c:2249 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "không thể mở ống dẫn “%s” (%s)" -#: io.c:2318 +#: io.c:2307 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "không thể tạo tiến trình con cho “%s” (fork: %s)" -#: io.c:2790 +#: io.c:2734 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: nhận được con trỏ NULL" -#: io.c:2818 +#: io.c:2762 #, 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”" -#: io.c:2825 +#: io.c:2769 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "bộ phân tích đầu vào “%s” gặp lỗi khi mở “%s”" -#: io.c:2845 +#: io.c:2789 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: nhận được con trỏ NULL" -#: io.c:2873 +#: io.c:2817 #, 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”" -#: io.c:2880 +#: io.c:2824 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "bộ bao kết xuất “%s” gặp lỗi khi mở “%s”" -#: io.c:2901 +#: io.c:2845 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: nhận được con trỏ NULL" -#: io.c:2930 +#: io.c:2874 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2928,221 +2946,208 @@ 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 +#: io.c:2883 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "bộ xử lý hai hướng “%s” gặp lỗi khi mở “%s”" -#: io.c:3064 +#: io.c:3008 #, c-format msgid "data file `%s' is empty" msgstr "tập tin dữ liệu “%s” là rỗng" -#: io.c:3106 io.c:3114 +#: io.c:3050 io.c:3058 msgid "could not allocate more input memory" msgstr "không thể cấp phát bộ nhớ nhập thêm nữa" -#: io.c:3682 +#: io.c:3636 msgid "multicharacter value of `RS' is a gawk extension" msgstr "giá trị đa ký tự của “RS” là phần mở rộng gawk" -#: io.c:3771 +#: io.c:3783 msgid "IPv6 communication is not supported" msgstr "Truyền thông trên IPv6 không được hỗ trợ" -#: main.c:405 -msgid "empty argument to `-e/--source' ignored" -msgstr "đối số rỗng cho tuỳ chọn “-e/--source” bị bỏ qua" - -#: main.c:495 -#, c-format -msgid "%s: option `-W %s' unrecognized, ignored\n" -msgstr "%s: tùy chọn “-W %s” không được nhận diện nên bị bỏ qua\n" - -#: main.c:541 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: tùy chọn cần đến đối số “-- %c”\n" - -#: main.c:562 +#: main.c:321 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”" -#: main.c:568 +#: main.c:327 msgid "`--posix' overrides `--traditional'" msgstr "tùy chọn “--posix” có quyền cao hơn “--traditional” (truyền thống)" -#: main.c:579 +#: main.c:338 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)" -#: main.c:583 +#: main.c:342 #, c-format msgid "running %s setuid root may be a security problem" msgstr "việc chạy %s với tư cách “setuid root” có thể rủi rỏ bảo mật" -#: main.c:588 +#: main.c:346 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "“--posix” đè lên “--characters-as-bytes”" -#: main.c:647 +#: main.c:404 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "không thể đặt chế độ nhị phân trên đầu vào tiêu chuẩn (%s)" -#: main.c:650 +#: main.c:407 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "không thể đặt chế độ nhị phân trên đầu ra tiêu chuẩn (%s)" -#: main.c:652 +#: main.c:409 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "không thể đặt chế độ nhị phân trên đầu ra lỗi tiêu chuẩn (%s)" -#: main.c:710 +#: main.c:469 msgid "no program text at all!" msgstr "không có đoạn chữ chương trình nào cả!" -#: main.c:799 +#: main.c:563 #, 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" -#: main.c:801 +#: main.c:565 #, 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" -#: main.c:806 +#: main.c:570 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Tùy chọn POSIX:\t\t\tTùy chọn dài GNU: (tiêu chuẩn)\n" -#: main.c:807 +#: main.c:571 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f tập_tin_chương_trình\t--file=tập_tin_chương_trình\n" -#: main.c:808 +#: main.c:572 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=ký_hiệu_phân_cách_trường\n" -#: main.c:809 +#: main.c:573 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "" "\t-v var=giá_trị\t\t--assign=biến=giá_trị\n" "(assign: gán)\n" -#: main.c:810 +#: main.c:574 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Tuỳ chọn ngắn:\t\t\tTuỳ chọn GNU dạng dài: (mở rộng)\n" -#: main.c:811 +#: main.c:575 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:812 +#: main.c:576 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:813 +#: main.c:577 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:814 +#: main.c:578 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[tập_tin]\t\t--dump-variables[=tập_tin]\n" -#: main.c:815 +#: main.c:579 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[tập_tin]\t\t--debug[=tập_tin]\n" -#: main.c:816 +#: main.c:580 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e “program-text”\t--source=“program-text”\n" -#: main.c:817 +#: main.c:581 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E file\t\t\t--exec=tập_tin\n" -#: main.c:818 +#: main.c:582 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:819 +#: main.c:583 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:820 +#: main.c:584 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i includefile\t\t--include=tập-tin-bao-gồm\n" -#: main.c:821 +#: main.c:585 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l library\t\t--load=thư-viện\n" -#: main.c:822 -msgid "\t-L [fatal]\t\t--lint[=fatal]\n" +#: main.c:586 +#, fuzzy +msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: 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:824 +#: main.c:587 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:825 +#: main.c:588 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:826 +#: main.c:589 +msgid "\t-n\t\t\t--non-decimal-data\n" +msgstr "\t-n\t\t\t--non-decimal-data\n" + +#: main.c:590 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[tập_tin]\t\t--pretty-print[=tập_tin]\n" -#: main.c:827 +#: main.c:591 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize (tạm dịch: tối_ưu_hoá)\n" -#: main.c:828 +#: main.c:592 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[tập_tin]\t\t--profile[=tập_tin]\n" -#: main.c:829 +#: main.c:593 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:830 +#: main.c:594 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:831 +#: main.c:595 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:832 +#: main.c:596 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:833 +#: main.c:597 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:835 +#: main.c:599 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "" "\t-W nostalgia\t\t--nostalgia\n" "(nỗi luyến tiếc quá khứ)\n" -#: main.c:838 +#: main.c:602 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3151,7 +3156,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:847 +#: main.c:611 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3166,7 +3171,7 @@ msgstr "" "Thông báo lỗi dịch cho: <http://translationproject.org/team/vi.html>.\n" "\n" -#: main.c:851 +#: main.c:615 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3176,7 +3181,7 @@ msgstr "" "Mặc định, nó đọc từ đầu vào tiêu chuẩn và ghi ra đầu ra tiêu chuẩn.\n" "\n" -#: main.c:855 +#: main.c:619 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3186,7 +3191,7 @@ msgstr "" "\tgawk \"{ sum += $1 }; END { print sum }\" file\n" "\tgawk -F: \"{ print $1 }\" /etc/passwd\n" -#: main.c:880 +#: main.c:644 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3205,7 +3210,7 @@ msgstr "" "của Giấy Phép này, hoặc là (tùy chọn) bất kỳ phiên bản mới hơn.\n" "\n" -#: main.c:888 +#: main.c:652 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" @@ -3219,7 +3224,7 @@ msgstr "" "Hãy xem Giấy phép Công Chung GNU (GPL) để biết chi tiết.\n" "\n" -#: main.c:894 +#: main.c:658 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" @@ -3227,16 +3232,16 @@ msgstr "" "Bạn nên nhận một bản sao của Giấy Phép Công Cộng GNU cùng với chương\n" "trình này. Nếu chưa có, bạn xem tại <http://www.gnu.org/licenses/>.\n" -#: main.c:931 +#: main.c:695 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft không đặt FS (hệ thống tập tin?) vào tab trong awk POSIX" -#: main.c:1208 +#: main.c:982 #, c-format msgid "unknown value for field spec: %d\n" msgstr "không hiểu giá trị dành cho đặc tả trường: %d\n" -#: main.c:1306 +#: main.c:1080 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3245,98 +3250,116 @@ msgstr "" "%s: đối số “%s” cho “-v” không có dạng “biến=giá_trị”\n" "\n" -#: main.c:1332 +#: main.c:1106 #, c-format msgid "`%s' is not a legal variable name" msgstr "“%s” không phải là tên biến hợp lệ" -#: main.c:1335 +#: main.c:1109 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "“%s” không phải là tên biến; đang tìm tập tin “%s=%s”" -#: main.c:1339 +#: main.c:1113 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "không thể dùng builtin (dựng sẵn) của gawk “%s” như là tên biến" -#: main.c:1344 +#: main.c:1118 #, c-format msgid "cannot use function `%s' as variable name" msgstr "không thể dùng hàm “%s” như là tên biến" -#: main.c:1397 +#: main.c:1171 msgid "floating point exception" msgstr "ngoại lệ số thực dấu chấm động" -#: main.c:1404 +#: main.c:1178 msgid "fatal error: internal error" msgstr "lỗi nghiêm trọng: lỗi nội bộ" -#: main.c:1419 +#: main.c:1193 msgid "fatal error: internal error: segfault" msgstr "lỗi nghiêm trọng: lỗi nội bộ: lỗi phân đoạn" -#: main.c:1431 +#: main.c:1205 msgid "fatal error: internal error: stack overflow" msgstr "lỗi nghiêm trọng: lỗi nội bộ: tràn ngăn xếp" -#: main.c:1490 +#: main.c:1264 #, c-format msgid "no pre-opened fd %d" msgstr "không có fd (bộ mô tả tập tin) %d đã mở trước" -#: main.c:1497 +#: main.c:1271 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "không thể mở trước “/dev/null” cho fd %d" -#: mpfr.c:550 +#: main.c:1485 +msgid "empty argument to `-e/--source' ignored" +msgstr "đối số rỗng cho tuỳ chọn “-e/--source” bị bỏ qua" + +#: main.c:1556 +msgid "-M ignored: MPFR/GMP support not compiled in" +msgstr "" + +#: main.c:1577 +#, c-format +msgid "%s: option `-W %s' unrecognized, ignored\n" +msgstr "%s: tùy chọn “-W %s” không được nhận diện nên bị bỏ qua\n" + +#: main.c:1630 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: tùy chọn cần đến đối số “-- %c”\n" + +#: mpfr.c:557 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "giá trị PREC “%.*s” là không hợp lệ" -#: mpfr.c:608 +#: mpfr.c:615 #, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "giá trị RNDMODE “%.*s” là không hợp lệ" -#: mpfr.c:698 +#: mpfr.c:711 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: đã nhận đối số không phải thuộc số" -#: mpfr.c:800 +#: mpfr.c:820 msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%Rg): giá trị âm sẽ gây ra kết quả không như mong muốn" -#: mpfr.c:804 +#: mpfr.c:824 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg): giá trị thuộc phân số sẽ bị cắt ngắn" -#: mpfr.c:816 +#: mpfr.c:836 #, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "cmpl(%Zd): giá trị âm sẽ gây ra kết quả không như mong muốn" -#: mpfr.c:835 +#: mpfr.c:855 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: đã nhận đối số không phải thuộc số #%d" -#: mpfr.c:845 +#: mpfr.c:865 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: đối số #%d có giá trị không hợp lệ %Rg, dùng 0" -#: mpfr.c:857 +#: mpfr.c:877 msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "%s: đối số #%d giá trị âm %Rg sẽ gây ra kết quả không như mong muốn" -#: mpfr.c:863 +#: mpfr.c:883 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: đối số #%d giá trị phần phân số %Rg sẽ bị cắt cụt" -#: mpfr.c:878 +#: mpfr.c:898 #, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "%s: đối số #%d có giá trị âm %Zd sẽ đưa ra kết quả không như mong muốn" @@ -3346,24 +3369,24 @@ msgstr "%s: đối số #%d có giá trị âm %Zd sẽ đưa ra kết quả kh msgid "cmd. line:" msgstr "dòng lệnh:" -#: node.c:421 +#: node.c:409 msgid "backslash at end of string" msgstr "gặp dấu gạch ngược tại kết thúc của chuỗi" -#: node.c:500 +#: node.c:488 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "awk cũ không hỗ trợ thoát chuỗi “\\%c”" -#: node.c:551 +#: node.c:539 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX không cho phép thoát chuỗi “\\x”" -#: node.c:557 +#: node.c:545 msgid "no hex digits in `\\x' escape sequence" msgstr "không có số thập lúc nằm trong thoát chuỗi “\\x”" -#: node.c:579 +#: node.c:567 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3372,12 +3395,12 @@ 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 +#: node.c:582 #, c-format 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 +#: node.c:726 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3407,12 +3430,12 @@ msgid "sending profile to standard error" msgstr "đang gởi hồ sơ cho thiết bị lỗi chuẩn" #: profile.c:193 -#, c-format +#, fuzzy, c-format msgid "" -"\t# %s block(s)\n" +"\t# %s rule(s)\n" "\n" msgstr "" -"\t# %s khối\n" +"\t# Quy tắc\n" "\n" #: profile.c:198 @@ -3429,11 +3452,11 @@ msgstr "" msgid "internal error: %s with null vname" msgstr "lỗi nội bộ: %s với vname (tên biến?) vô giá trị" -#: profile.c:537 +#: profile.c:538 msgid "internal error: builtin with null fname" msgstr "lỗi nội bộ: phần dựng sẵn với fname là null" -#: profile.c:949 +#: profile.c:958 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" @@ -3442,12 +3465,12 @@ msgstr "" "\t# Các phần mở rộng được tải (-l và/hoặc @load)\n" "\n" -#: profile.c:972 +#: profile.c:981 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# hồ sơ gawk, được tạo %s\n" -#: profile.c:1475 +#: profile.c:1521 #, c-format msgid "" "\n" @@ -3456,7 +3479,7 @@ msgstr "" "\n" "\t# Danh sách các hàm theo thứ tự abc\n" -#: profile.c:1513 +#: profile.c:1559 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: không hiểu kiểu chuyển hướng %d" @@ -3468,80 +3491,114 @@ 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 +#: regcomp.c:139 msgid "Success" msgstr "Thành công" -#: regcomp.c:134 +#: regcomp.c:142 msgid "No match" msgstr "Không khớp" -#: regcomp.c:137 +#: regcomp.c:145 msgid "Invalid regular expression" msgstr "Biểu thức chính quy không hợp lệ" -#: regcomp.c:140 +#: regcomp.c:148 msgid "Invalid collation character" msgstr "Ký tự đối chiếu không hợp lệ" -#: regcomp.c:143 +#: regcomp.c:151 msgid "Invalid character class name" msgstr "Tên hạng ký tự không hợp lệ" -#: regcomp.c:146 +#: regcomp.c:154 msgid "Trailing backslash" msgstr "Gặp dấu gạch ngược thừa" -#: regcomp.c:149 +#: regcomp.c:157 msgid "Invalid back reference" msgstr "Tham chiếu ngược không hợp lệ" -#: regcomp.c:152 -msgid "Unmatched [ or [^" +#: regcomp.c:160 +#, fuzzy +msgid "Unmatched [, [^, [:, [., or [=" msgstr "Chưa khớp “[” hay “[^”" -#: regcomp.c:155 +#: regcomp.c:163 msgid "Unmatched ( or \\(" msgstr "Chưa khớp “(” hay “\\(”" -#: regcomp.c:158 +#: regcomp.c:166 msgid "Unmatched \\{" msgstr "Chưa khớp “\\{”" -#: regcomp.c:164 +#: regcomp.c:169 +msgid "Invalid content of \\{\\}" +msgstr "Nội dung của “\\{\\}” không hợp lệ" + +#: regcomp.c:172 msgid "Invalid range end" msgstr "Kết thúc phạm vi không hợp lệ" -#: regcomp.c:167 +#: regcomp.c:175 msgid "Memory exhausted" msgstr "Hết bộ nhớ" -#: regcomp.c:170 +#: regcomp.c:178 msgid "Invalid preceding regular expression" msgstr "Biểu thức chính quy nằm trước không hợp lệ" -#: regcomp.c:173 +#: regcomp.c:181 msgid "Premature end of regular expression" msgstr "Kết thúc quá sớm của biểu thức chính quy" -#: regcomp.c:179 +#: regcomp.c:184 +msgid "Regular expression too big" +msgstr "Biểu thức chính quy quá lớn" + +#: regcomp.c:187 msgid "Unmatched ) or \\)" msgstr "Chưa khớp “)” hoặc “\\)”" -#: regcomp.c:704 +#: regcomp.c:712 msgid "No previous regular expression" msgstr "Không có biểu thức chính quy nằm trước" -#: symbol.c:741 +#: symbol.c:677 +#, fuzzy, c-format +msgid "function `%s': can't use function `%s' as a parameter name" +msgstr "hàm “%s”: không thể dùng tên hàm như là tên tham số" + +#: symbol.c:809 msgid "can not pop main context" msgstr "không thể pop (lấy ra) ngữ cảnh chính" +#~ msgid "`getline var' invalid inside `%s' rule" +#~ msgstr "“getline var” không hợp lệ bên trong quy tắc “%s”" + +#~ msgid "no (known) protocol supplied in special filename `%s'" +#~ msgstr "" +#~ "trong tên tập tin đặc biệt “%s” không cung cấp giao thức (đã biết) nào" + +#~ msgid "special file name `%s' is incomplete" +#~ msgstr "tên tập tin đặc biệt “%s” chưa xong" + +#~ msgid "must supply a remote hostname to `/inet'" +#~ msgstr "phải cung cấp một tên máy chủ cho </inet>" + +#~ msgid "must supply a remote port to `/inet'" +#~ msgstr "phải cung cấp một cổng máy chủ cho </inet>" + +#~ msgid "" +#~ "\t# %s block(s)\n" +#~ "\n" +#~ msgstr "" +#~ "\t# %s khối\n" +#~ "\n" + #~ msgid "range of the form `[%c-%c]' is locale dependent" #~ msgstr "vùng của dạng thức “[%c-%c]” phụ thuộc vào vị trí" -#~ msgid "attempt to use function `%s' as an array" -#~ msgstr "cố gắng dùng hàm “%s” như mảng" - #~ msgid "reference to uninitialized element `%s[\"%.*s\"]'" #~ msgstr "tham chiếu đến phần tử chưa khởi tạo “%s[”%.*s”]”" @@ -226,6 +226,7 @@ pprint(INSTRUCTION *startp, INSTRUCTION *endp, bool in_for_header) if (do_profile && ! rule_count[rule]++) fprintf(prof_fp, _("\t# Rule(s)\n\n")); ip1 = pc->nexti; + indent(ip1->exec_count); if (ip1 != (pc + 1)->firsti) { /* non-empty pattern */ pprint(ip1->nexti, (pc + 1)->firsti, false); /* Allow for case where the "pattern" is just a comment */ @@ -1389,16 +1390,30 @@ pp_number(NODE *n) { #define PP_PRECISION 6 char *str; + size_t count; - emalloc(str, char *, PP_PRECISION + 10, "pp_number"); #ifdef HAVE_MPFR - if (is_mpg_float(n)) - mpfr_sprintf(str, "%0.*R*g", PP_PRECISION, ROUND_MODE, n->mpg_numbr); - else if (is_mpg_integer(n)) + if (is_mpg_float(n)) { + count = mpfr_get_prec(n->mpg_numbr) / 3; /* ~ 3.22 binary digits per decimal digit */ + emalloc(str, char *, count, "pp_number"); + /* + * 3/2015: Format string used to be "%0.*R*g". That padded + * with leading zeros. But it doesn't do that for regular + * numbers in the non-MPFR case. + */ + mpfr_sprintf(str, "%.*R*g", PP_PRECISION, ROUND_MODE, n->mpg_numbr); + } else if (is_mpg_integer(n)) { + count = mpz_sizeinbase(n->mpg_i, 10) + 2; /* +1 for sign, +1 for NUL at end */ + emalloc(str, char *, count, "pp_number"); mpfr_sprintf(str, "%Zd", n->mpg_i); - else + } else #endif - sprintf(str, "%0.*g", PP_PRECISION, n->numbr); + { + count = PP_PRECISION + 10; + emalloc(str, char *, count, "pp_number"); + sprintf(str, "%0.*g", PP_PRECISION, n->numbr); + } + return str; #undef PP_PRECISION } @@ -616,40 +616,3 @@ again: done: s[length] = save; } - -/* regexflags2str --- make regex flags printable */ - -const char * -regexflags2str(int flags) -{ - static const struct flagtab regextab[] = { - { RE_BACKSLASH_ESCAPE_IN_LISTS, "RE_BACKSLASH_ESCAPE_IN_LISTS" }, - { RE_BK_PLUS_QM, "RE_BK_PLUS_QM" }, - { RE_CHAR_CLASSES, "RE_CHAR_CLASSES" }, - { RE_CONTEXT_INDEP_ANCHORS, "RE_CONTEXT_INDEP_ANCHORS" }, - { RE_CONTEXT_INDEP_OPS, "RE_CONTEXT_INDEP_OPS" }, - { RE_CONTEXT_INVALID_OPS, "RE_CONTEXT_INVALID_OPS" }, - { RE_DOT_NEWLINE, "RE_DOT_NEWLINE" }, - { RE_DOT_NOT_NULL, "RE_DOT_NOT_NULL" }, - { RE_HAT_LISTS_NOT_NEWLINE, "RE_HAT_LISTS_NOT_NEWLINE" }, - { RE_INTERVALS, "RE_INTERVALS" }, - { RE_LIMITED_OPS, "RE_LIMITED_OPS" }, - { RE_NEWLINE_ALT, "RE_NEWLINE_ALT" }, - { RE_NO_BK_BRACES, "RE_NO_BK_BRACES" }, - { RE_NO_BK_PARENS, "RE_NO_BK_PARENS" }, - { RE_NO_BK_REFS, "RE_NO_BK_REFS" }, - { RE_NO_BK_VBAR, "RE_NO_BK_VBAR" }, - { RE_NO_EMPTY_RANGES, "RE_NO_EMPTY_RANGES" }, - { RE_UNMATCHED_RIGHT_PAREN_ORD, "RE_UNMATCHED_RIGHT_PAREN_ORD" }, - { RE_NO_POSIX_BACKTRACKING, "RE_NO_POSIX_BACKTRACKING" }, - { RE_NO_GNU_OPS, "RE_NO_GNU_OPS" }, - { RE_DEBUG, "RE_DEBUG" }, - { RE_INVALID_INTERVAL_ORD, "RE_INVALID_INTERVAL_ORD" }, - { RE_ICASE, "RE_ICASE" }, - { RE_CARET_ANCHORS_HERE, "RE_CARET_ANCHORS_HERE" }, - { RE_CONTEXT_INVALID_DUP, "RE_CONTEXT_INVALID_DUP" }, - { 0, NULL } - }; - - return genflags2str(flags, regextab); -} @@ -1,5 +1,5 @@ /* Extended regular expression matching and search library. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>. @@ -17,6 +17,14 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ +#ifdef HAVE_STDINT_H +#include <stdint.h> +#endif + +#ifdef _LIBC +# include <locale/weight.h> +#endif + static reg_errcode_t re_compile_internal (regex_t *preg, const char * pattern, size_t length, reg_syntax_t syntax); static void re_compile_fastmap_iter (regex_t *bufp, @@ -3163,6 +3171,7 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token, re_token_t token2; start_elem.opr.name = start_name_buf; + start_elem.type = COLL_SYM; ret = parse_bracket_element (&start_elem, regexp, token, token_len, dfa, syntax, first_round); if (BE (ret != REG_NOERROR, 0)) @@ -3206,6 +3215,7 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token, if (is_range_exp == 1) { end_elem.opr.name = end_name_buf; + end_elem.type = COLL_SYM; ret = parse_bracket_element (&end_elem, regexp, &token2, token_len2, dfa, syntax, 1); if (BE (ret != REG_NOERROR, 0)) @@ -3479,8 +3489,6 @@ build_equiv_class (bitset_t sbcset, const unsigned char *name) int32_t idx1, idx2; unsigned int ch; size_t len; - /* This #include defines a local function! */ -# include <locale/weight.h> /* Calculate the index for equivalence class. */ cp = name; table = (const int32_t *) _NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEMB); @@ -3490,7 +3498,7 @@ build_equiv_class (bitset_t sbcset, const unsigned char *name) _NL_COLLATE_EXTRAMB); indirect = (const int32_t *) _NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTMB); - idx1 = findidx (&cp, -1); + idx1 = findidx (table, indirect, extra, &cp, -1); if (BE (idx1 == 0 || *cp != '\0', 0)) /* This isn't a valid character. */ return REG_ECOLLATE; @@ -3502,7 +3510,7 @@ build_equiv_class (bitset_t sbcset, const unsigned char *name) { char_buf[0] = ch; cp = char_buf; - idx2 = findidx (&cp, 1); + idx2 = findidx (table, indirect, extra, &cp, 1); /* idx2 = table[ch]; */ @@ -1,5 +1,5 @@ /* Extended regular expression matching and search library. - Copyright (C) 2002-2014 Free Software Foundation, Inc. + Copyright (C) 2002-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>. @@ -1,6 +1,6 @@ /* Definitions for data structures and routines for the regular expression library. - Copyright (C) 1985, 1989-2014 Free Software Foundation, Inc. + Copyright (C) 1985, 1989-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or diff --git a/regex_internal.c b/regex_internal.c index 9e427081..5a5b9363 100644 --- a/regex_internal.c +++ b/regex_internal.c @@ -1,5 +1,5 @@ /* Extended regular expression matching and search library. - Copyright (C) 2002-2014 Free Software Foundation, Inc. + Copyright (C) 2002-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>. diff --git a/regex_internal.h b/regex_internal.h index 3fc2fc58..9aab5e52 100644 --- a/regex_internal.h +++ b/regex_internal.h @@ -1,5 +1,5 @@ /* Extended regular expression matching and search library. - Copyright (C) 2002-2014 Free Software Foundation, Inc. + Copyright (C) 2002-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>. @@ -79,7 +79,6 @@ is_blank (int c) # ifndef _RE_DEFINE_LOCALE_FUNCTIONS # define _RE_DEFINE_LOCALE_FUNCTIONS 1 # include <locale/localeinfo.h> -# include <locale/elem-hash.h> # include <locale/coll-lookup.h> # endif #endif @@ -792,7 +791,7 @@ re_string_elem_size_at (const re_string_t *pstr, int idx) indirect = (const int32_t *) _NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTMB); p = pstr->mbs + idx; - findidx (&p, pstr->len - idx); + findidx (table, indirect, extra, &p, pstr->len - idx); return p - pstr->mbs - idx; } else @@ -1,5 +1,5 @@ /* Extended regular expression matching and search library. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>. @@ -3762,6 +3762,10 @@ group_nodes_into_DFAstates (const re_dfa_t *dfa, const re_dfastate_t *state, one collating element like '.', '[a-z]', opposite to the other nodes can only accept one byte. */ +# ifdef _LIBC +# include <locale/weight.h> +# endif + static int internal_function check_node_accept_bytes (const re_dfa_t *dfa, int node_idx, @@ -3883,8 +3887,6 @@ check_node_accept_bytes (const re_dfa_t *dfa, int node_idx, const int32_t *table, *indirect; const unsigned char *weights, *extra; const char *collseqwc; - /* This #include defines a local function! */ -# include <locale/weight.h> /* match with collating_symbol? */ if (cset->ncoll_syms) @@ -3940,7 +3942,7 @@ check_node_accept_bytes (const re_dfa_t *dfa, int node_idx, _NL_CURRENT (LC_COLLATE, _NL_COLLATE_EXTRAMB); indirect = (const int32_t *) _NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTMB); - int32_t idx = findidx (&cp, elem_len); + int32_t idx = findidx (table, indirect, extra, &cp, elem_len); if (idx > 0) for (i = 0; i < cset->nequiv_classes; ++i) { @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2013 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991-2015 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -642,7 +642,7 @@ check_param_names(void) max = func_table->table_size * 2; - memset(& n, sizeof n, 0); + memset(& n, 0, sizeof n); n.type = Node_val; n.flags = STRING|STRCUR; n.stfmt = -1; diff --git a/test/ChangeLog b/test/ChangeLog index 4d332e49..69b5b60d 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,74 @@ +2015-03-17 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * inplace1.ok, inplace2.ok, inplace3.ok: Update error message line + numbers to reflect changes to inplace.awk. + +2015-03-17 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (mpfrmemok1): New test. + * mpfrmemok1.awk, mpfrmemok1.ok: New files. + +2015-03-10 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (fpat4): New test. + * fpat4.awk, fpat4.ok: New files. + +2015-03-08 Arnold D. Robbins <arnold@skeeve.com> + + * nonfatal3.awk, nonfatal3.ok: Adjust for portability. + Thanks to Hermann Peifer for the report. + +2015-03-06 Arnold D. Robbins <arnold@skeeve.com> + + * charasbytes.awk, ofs1.awk, range1.awk, sortglos.awk, + sortglos.in: Remove execute permission. + +2015-03-02 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * nonfatal1.awk: Do not print ERRNO, since the value appears to be + platform-dependent. Instead, print (ERRNO != ""). + * nonfatal1.ok: Update. + +2015-02-28 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * Makefile.am (EXTRA_DIST): Add nonfatal3.{awk,ok}. + (GAWK_EXT_TESTS): Add nonfatal3. + * nonfatal1.awk: Replace "ti10/357" with "local:host/25", since + "local:host" should be a universally bad hostname due to the + invalid ":" character. + * nonfatal1.ok: Update. + * nonfatal3.{awk,ok}: New test for connecting to a TCP port where + nobody is listening. + +2015-02-27 Arnold D. Robbins <arnold@skeeve.com> + + * nonfatal1.ok: Update after code changes. + +2015-02-26 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (EXTRA_DIST): Add profile0.in which got forgotten + earlier. Ooops. + +2015-02-24 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (crlf): New test. + * crlf.awk, crlf.ok: New files. + +2015-02-10 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (profile0): New test. + * profile0.awk, profile0.in, profile0.ok: New files. + +2015-02-08 Arnold D. Robbins <arnold@skeeve.com> + + * nonfatal1.awk, nonfatal2.awk: String is now "NONFATAL". + +2015-02-06 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (nonfatal1, nonfatal2): New tests. + * nonfatal1.awk, nonfatal1.ok: New files. + * nonfatal2.awk, nonfatal2.ok: New files. + 2015-02-01 Arnold D. Robbins <arnold@skeeve.com> * Makefile.am (paramasfunc1, paramasfunc2): Now need --posix. diff --git a/test/Makefile.am b/test/Makefile.am index 873b0a7c..2d3e353d 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -169,6 +169,8 @@ EXTRA_DIST = \ concat4.ok \ convfmt.awk \ convfmt.ok \ + crlf.awk \ + crlf.ok \ datanonl.awk \ datanonl.in \ datanonl.ok \ @@ -288,6 +290,8 @@ EXTRA_DIST = \ fpat3.awk \ fpat3.in \ fpat3.ok \ + fpat4.awk \ + fpat4.ok \ fpatnull.awk \ fpatnull.in \ fpatnull.ok \ @@ -540,6 +544,8 @@ EXTRA_DIST = \ mpfrexprange.ok \ mpfrieee.awk \ mpfrieee.ok \ + mpfrmemok1.awk \ + mpfrmemok1.ok \ mpfrnegzero.awk \ mpfrnegzero.ok \ mpfrnr.awk \ @@ -604,6 +610,12 @@ EXTRA_DIST = \ nondec.ok \ nondec2.awk \ nondec2.ok \ + nonfatal1.awk \ + nonfatal1.ok \ + nonfatal2.awk \ + nonfatal2.ok \ + nonfatal3.awk \ + nonfatal3.ok \ nonl.awk \ nonl.ok \ noparms.awk \ @@ -717,6 +729,9 @@ EXTRA_DIST = \ prmreuse.ok \ procinfs.awk \ procinfs.ok \ + profile0.awk \ + profile0.in \ + profile0.ok \ profile2.ok \ profile3.awk \ profile3.ok \ @@ -1041,8 +1056,8 @@ UNIX_TESTS = \ GAWK_EXT_TESTS = \ aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \ backw badargs beginfile1 beginfile2 binmode1 charasbytes \ - colonwarn clos1way dbugeval delsub devfd devfd1 devfd2 dumpvars errno exit \ - fieldwdth fpat1 fpat2 fpat3 fpatnull fsfwfs funlen \ + colonwarn clos1way crlf dbugeval delsub devfd devfd1 devfd2 dumpvars errno exit \ + fieldwdth fpat1 fpat2 fpat3 fpat4 fpatnull fsfwfs funlen \ functab1 functab2 functab3 fwtest fwtest2 fwtest3 \ genpot gensub gensub2 getlndir gnuops2 gnuops3 gnureops \ icasefs icasers id igncdym igncfs ignrcas2 ignrcase \ @@ -1051,8 +1066,9 @@ GAWK_EXT_TESTS = \ lint lintold lintwarn \ manyfiles match1 match2 match3 mbstr1 \ nastyparm next nondec nondec2 \ + nonfatal1 nonfatal2 nonfatal3 \ patsplit posix printfbad1 printfbad2 printfbad3 printfbad4 printhuge procinfs \ - profile1 profile2 profile3 profile4 profile5 profile6 profile7 \ + profile0 profile1 profile2 profile3 profile4 profile5 profile6 profile7 \ profile8 pty1 \ rebuf regnul1 regnul2 regx8bit reginttrad reint reint2 rsgetline rsglstdin rsstart1 \ rsstart2 rsstart3 rstest6 shadow sortfor sortu split_after_fpat \ @@ -1067,8 +1083,8 @@ INET_TESTS = inetdayu inetdayt inetechu inetecht MACHINE_TESTS = double1 double2 fmtspcl intformat -MPFR_TESTS = mpfrnr mpfrnegzero mpfrrem mpfrrnd mpfrieee mpfrexprange \ - mpfrsort mpfrsqrt mpfrbigint +MPFR_TESTS = mpfrnr mpfrnegzero mpfrmemok1 mpfrrem mpfrrnd mpfrieee \ + mpfrexprange mpfrsort mpfrsqrt mpfrbigint LOCALE_CHARSET_TESTS = \ asort asorti backbigs1 backsmalls1 backsmalls2 \ @@ -1709,6 +1725,12 @@ dumpvars:: @grep -v ENVIRON < awkvars.out | grep -v PROCINFO > _$@; rm awkvars.out @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +profile0: + @echo $@ + @$(AWK) --profile=ap-$@.out -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in > /dev/null + @sed 1,2d < ap-$@.out > _$@; rm ap-$@.out + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + profile1: @echo $@ @$(AWK) -f "$(srcdir)"/xref.awk "$(srcdir)"/dtdgport.awk > _$@.out1 @@ -1823,6 +1845,11 @@ mpfrrem: @$(AWK) -M -f "$(srcdir)"/$@.awk > _$@ 2>&1 @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +mpfrmemok1: + @echo $@ + @$(AWK) -p/dev/stdout -M -f "$(srcdir)"/$@.awk 2>&1 | sed 1d > _$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + jarebug:: @echo $@ @"$(srcdir)"/$@.sh "$(AWKPROG)" "$(srcdir)"/$@.awk "$(srcdir)"/$@.in "_$@" diff --git a/test/Makefile.in b/test/Makefile.in index 09de6713..5a3f5b0d 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -426,6 +426,8 @@ EXTRA_DIST = \ concat4.ok \ convfmt.awk \ convfmt.ok \ + crlf.awk \ + crlf.ok \ datanonl.awk \ datanonl.in \ datanonl.ok \ @@ -545,6 +547,8 @@ EXTRA_DIST = \ fpat3.awk \ fpat3.in \ fpat3.ok \ + fpat4.awk \ + fpat4.ok \ fpatnull.awk \ fpatnull.in \ fpatnull.ok \ @@ -797,6 +801,8 @@ EXTRA_DIST = \ mpfrexprange.ok \ mpfrieee.awk \ mpfrieee.ok \ + mpfrmemok1.awk \ + mpfrmemok1.ok \ mpfrnegzero.awk \ mpfrnegzero.ok \ mpfrnr.awk \ @@ -861,6 +867,12 @@ EXTRA_DIST = \ nondec.ok \ nondec2.awk \ nondec2.ok \ + nonfatal1.awk \ + nonfatal1.ok \ + nonfatal2.awk \ + nonfatal2.ok \ + nonfatal3.awk \ + nonfatal3.ok \ nonl.awk \ nonl.ok \ noparms.awk \ @@ -974,6 +986,9 @@ EXTRA_DIST = \ prmreuse.ok \ procinfs.awk \ procinfs.ok \ + profile0.awk \ + profile0.in \ + profile0.ok \ profile2.ok \ profile3.awk \ profile3.ok \ @@ -1297,8 +1312,8 @@ UNIX_TESTS = \ GAWK_EXT_TESTS = \ aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \ backw badargs beginfile1 beginfile2 binmode1 charasbytes \ - colonwarn clos1way dbugeval delsub devfd devfd1 devfd2 dumpvars errno exit \ - fieldwdth fpat1 fpat2 fpat3 fpatnull fsfwfs funlen \ + colonwarn clos1way crlf dbugeval delsub devfd devfd1 devfd2 dumpvars errno exit \ + fieldwdth fpat1 fpat2 fpat3 fpat4 fpatnull fsfwfs funlen \ functab1 functab2 functab3 fwtest fwtest2 fwtest3 \ genpot gensub gensub2 getlndir gnuops2 gnuops3 gnureops \ icasefs icasers id igncdym igncfs ignrcas2 ignrcase \ @@ -1307,8 +1322,9 @@ GAWK_EXT_TESTS = \ lint lintold lintwarn \ manyfiles match1 match2 match3 mbstr1 \ nastyparm next nondec nondec2 \ + nonfatal1 nonfatal2 nonfatal3 \ patsplit posix printfbad1 printfbad2 printfbad3 printfbad4 printhuge procinfs \ - profile1 profile2 profile3 profile4 profile5 profile6 profile7 \ + profile0 profile1 profile2 profile3 profile4 profile5 profile6 profile7 \ profile8 pty1 \ rebuf regnul1 regnul2 regx8bit reginttrad reint reint2 rsgetline rsglstdin rsstart1 \ rsstart2 rsstart3 rstest6 shadow sortfor sortu split_after_fpat \ @@ -1320,8 +1336,8 @@ GAWK_EXT_TESTS = \ EXTRA_TESTS = inftest regtest INET_TESTS = inetdayu inetdayt inetechu inetecht MACHINE_TESTS = double1 double2 fmtspcl intformat -MPFR_TESTS = mpfrnr mpfrnegzero mpfrrem mpfrrnd mpfrieee mpfrexprange \ - mpfrsort mpfrsqrt mpfrbigint +MPFR_TESTS = mpfrnr mpfrnegzero mpfrmemok1 mpfrrem mpfrrnd mpfrieee \ + mpfrexprange mpfrsort mpfrsqrt mpfrbigint LOCALE_CHARSET_TESTS = \ asort asorti backbigs1 backsmalls1 backsmalls2 \ @@ -2147,6 +2163,12 @@ dumpvars:: @grep -v ENVIRON < awkvars.out | grep -v PROCINFO > _$@; rm awkvars.out @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +profile0: + @echo $@ + @$(AWK) --profile=ap-$@.out -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in > /dev/null + @sed 1,2d < ap-$@.out > _$@; rm ap-$@.out + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + profile1: @echo $@ @$(AWK) -f "$(srcdir)"/xref.awk "$(srcdir)"/dtdgport.awk > _$@.out1 @@ -2260,6 +2282,11 @@ mpfrrem: @$(AWK) -M -f "$(srcdir)"/$@.awk > _$@ 2>&1 @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +mpfrmemok1: + @echo $@ + @$(AWK) -p/dev/stdout -M -f "$(srcdir)"/$@.awk 2>&1 | sed 1d > _$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + jarebug:: @echo $@ @"$(srcdir)"/$@.sh "$(AWKPROG)" "$(srcdir)"/$@.awk "$(srcdir)"/$@.in "_$@" @@ -3460,6 +3487,11 @@ backw: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +crlf: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + delsub: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -3485,6 +3517,11 @@ fpat3: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +fpat4: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + fpatnull: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -3645,6 +3682,21 @@ nondec: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +nonfatal1: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +nonfatal2: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +nonfatal3: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + patsplit: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff --git a/test/Maketests b/test/Maketests index b25bba42..703e91e1 100644 --- a/test/Maketests +++ b/test/Maketests @@ -962,6 +962,11 @@ backw: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +crlf: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + delsub: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -987,6 +992,11 @@ fpat3: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +fpat4: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + fpatnull: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1147,6 +1157,21 @@ nondec: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +nonfatal1: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +nonfatal2: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +nonfatal3: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + patsplit: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff --git a/test/charasbytes.awk b/test/charasbytes.awk index feb195c8..feb195c8 100755..100644 --- a/test/charasbytes.awk +++ b/test/charasbytes.awk diff --git a/test/crlf.awk b/test/crlf.awk new file mode 100644 index 00000000..79be9eb6 --- /dev/null +++ b/test/crlf.awk @@ -0,0 +1,11 @@ +BEGIN {
+ print \
+ "hi there"
+ print "hello \
+world"
+ if ("foo" ~ /fo\
+o/)
+ print "matches"
+ else
+ print "does not match!"
+}
diff --git a/test/crlf.ok b/test/crlf.ok new file mode 100644 index 00000000..0ba071b5 --- /dev/null +++ b/test/crlf.ok @@ -0,0 +1,3 @@ +hi there +hello world +matches diff --git a/test/fpat4.awk b/test/fpat4.awk new file mode 100644 index 00000000..79cd6a7f --- /dev/null +++ b/test/fpat4.awk @@ -0,0 +1,105 @@ +BEGIN { + false = 0 + true = 1 + + fpat[1] = "([^,]*)|(\"[^\"]+\")" + fpat[2] = fpat[1] + fpat[3] = fpat[1] + fpat[4] = "aa+" + fpat[5] = fpat[4] + fpat[6] = "[a-z]" + + data[1] = "Robbins,,Arnold," + data[2] = "Smith,,\"1234 A Pretty Place, NE\",Sometown,NY,12345-6789,USA" + data[3] = "Robbins,Arnold,\"1234 A Pretty Place, NE\",Sometown,NY,12345-6789,USA" + data[4] = "bbbaaacccdddaaaaaqqqq" + data[5] = "bbbaaacccdddaaaaaqqqqa" # should get trailing qqqa + data[6] = "aAbBcC" + + for (i = 1; i in data; i++) { + printf("Splitting: <%s>\n", data[i]) + n = mypatsplit(data[i], fields, fpat[i], seps) + m = patsplit(data[i], fields2, fpat[i], seps2) + print "n =", n, "m =", m + if (n != m) { + printf("ERROR: counts wrong!\n") > "/dev/stderr" + exit 1 + } + for (j = 1; j <= n; j++) { + printf("fields[%d] = <%s>\tfields2[%d] = <%s>\n", j, fields[j], j, fields2[j]) + if (fields[j] != fields2[j]) { + printf("ERROR: data %d, field %d mismatch!\n", i, j) > "/dev/stderr" + exit 1 + } + } + for (j = 0; j in seps; j++) { + printf("seps[%d] = <%s>\tseps2[%d] = <%s>\n", j, seps[j], j, seps2[j]) + if (seps[j] != seps2[j]) { + printf("ERROR: data %d, separator %d mismatch!\n", i, j) > "/dev/stderr" + exit 1 + } + } + } +} + +function mypatsplit(string, array, pattern, seps, + eosflag, non_empty, nf) # locals +{ + delete array + delete seps + if (length(string) == 0) + return 0 + + eosflag = non_empty = false + nf = 0 + while (match(string, pattern)) { + if (RLENGTH > 0) { # easy case + non_empty = true + if (! (nf in seps)) { + if (RSTART == 1) # match at front of string + seps[nf] = "" + else + seps[nf] = substr(string, 1, RSTART - 1) + } + array[++nf] = substr(string, RSTART, RLENGTH) + string = substr(string, RSTART+RLENGTH) + if (length(string) == 0) + break + } else if (non_empty) { + # last match was non-empty, and at the + # current character we get a zero length match, + # which we don't want, so skip over it + non_empty = false + seps[nf] = substr(string, 1, 1) + string = substr(string, 2) + } else { + # 0 length match + if (! (nf in seps)) { + if (RSTART == 1) + seps[nf] = "" + else + seps[nf] = substr(string, 1, RSTART - 1) + } + array[++nf] = "" + if (! non_empty && ! eosflag) { # prev was empty + seps[nf] = substr(string, 1, 1) + } + if (RSTART == 1) { + string = substr(string, 2) + } else { + string = substr(string, RSTART + 1) + } + non_empty = false + } + if (length(string) == 0) { + if (eosflag) + break + else + eosflag = true + } + } + if (length(string) > 0) + seps[nf] = string + + return length(array) +} diff --git a/test/fpat4.ok b/test/fpat4.ok new file mode 100644 index 00000000..b4430aba --- /dev/null +++ b/test/fpat4.ok @@ -0,0 +1,65 @@ +Splitting: <Robbins,,Arnold,> +n = 4 m = 4 +fields[1] = <Robbins> fields2[1] = <Robbins> +fields[2] = <> fields2[2] = <> +fields[3] = <Arnold> fields2[3] = <Arnold> +fields[4] = <> fields2[4] = <> +seps[0] = <> seps2[0] = <> +seps[1] = <,> seps2[1] = <,> +seps[2] = <,> seps2[2] = <,> +seps[3] = <,> seps2[3] = <,> +Splitting: <Smith,,"1234 A Pretty Place, NE",Sometown,NY,12345-6789,USA> +n = 7 m = 7 +fields[1] = <Smith> fields2[1] = <Smith> +fields[2] = <> fields2[2] = <> +fields[3] = <"1234 A Pretty Place, NE"> fields2[3] = <"1234 A Pretty Place, NE"> +fields[4] = <Sometown> fields2[4] = <Sometown> +fields[5] = <NY> fields2[5] = <NY> +fields[6] = <12345-6789> fields2[6] = <12345-6789> +fields[7] = <USA> fields2[7] = <USA> +seps[0] = <> seps2[0] = <> +seps[1] = <,> seps2[1] = <,> +seps[2] = <,> seps2[2] = <,> +seps[3] = <,> seps2[3] = <,> +seps[4] = <,> seps2[4] = <,> +seps[5] = <,> seps2[5] = <,> +seps[6] = <,> seps2[6] = <,> +Splitting: <Robbins,Arnold,"1234 A Pretty Place, NE",Sometown,NY,12345-6789,USA> +n = 7 m = 7 +fields[1] = <Robbins> fields2[1] = <Robbins> +fields[2] = <Arnold> fields2[2] = <Arnold> +fields[3] = <"1234 A Pretty Place, NE"> fields2[3] = <"1234 A Pretty Place, NE"> +fields[4] = <Sometown> fields2[4] = <Sometown> +fields[5] = <NY> fields2[5] = <NY> +fields[6] = <12345-6789> fields2[6] = <12345-6789> +fields[7] = <USA> fields2[7] = <USA> +seps[0] = <> seps2[0] = <> +seps[1] = <,> seps2[1] = <,> +seps[2] = <,> seps2[2] = <,> +seps[3] = <,> seps2[3] = <,> +seps[4] = <,> seps2[4] = <,> +seps[5] = <,> seps2[5] = <,> +seps[6] = <,> seps2[6] = <,> +Splitting: <bbbaaacccdddaaaaaqqqq> +n = 2 m = 2 +fields[1] = <aaa> fields2[1] = <aaa> +fields[2] = <aaaaa> fields2[2] = <aaaaa> +seps[0] = <bbb> seps2[0] = <bbb> +seps[1] = <cccddd> seps2[1] = <cccddd> +seps[2] = <qqqq> seps2[2] = <qqqq> +Splitting: <bbbaaacccdddaaaaaqqqqa> +n = 2 m = 2 +fields[1] = <aaa> fields2[1] = <aaa> +fields[2] = <aaaaa> fields2[2] = <aaaaa> +seps[0] = <bbb> seps2[0] = <bbb> +seps[1] = <cccddd> seps2[1] = <cccddd> +seps[2] = <qqqqa> seps2[2] = <qqqqa> +Splitting: <aAbBcC> +n = 3 m = 3 +fields[1] = <a> fields2[1] = <a> +fields[2] = <b> fields2[2] = <b> +fields[3] = <c> fields2[3] = <c> +seps[0] = <> seps2[0] = <> +seps[1] = <A> seps2[1] = <A> +seps[2] = <B> seps2[2] = <B> +seps[3] = <C> seps2[3] = <C> diff --git a/test/inplace1.ok b/test/inplace1.ok index ffcb768d..82562235 100644 --- a/test/inplace1.ok +++ b/test/inplace1.ok @@ -1,5 +1,5 @@ before -gawk: inplace:9: warning: inplace_begin: disabling in-place editing for invalid FILENAME `-' +gawk: inplace:14: warning: inplace_begin: disabling in-place editing for invalid FILENAME `-' stdin start is bar replaced? stdin end diff --git a/test/inplace2.ok b/test/inplace2.ok index ffcb768d..82562235 100644 --- a/test/inplace2.ok +++ b/test/inplace2.ok @@ -1,5 +1,5 @@ before -gawk: inplace:9: warning: inplace_begin: disabling in-place editing for invalid FILENAME `-' +gawk: inplace:14: warning: inplace_begin: disabling in-place editing for invalid FILENAME `-' stdin start is bar replaced? stdin end diff --git a/test/inplace3.ok b/test/inplace3.ok index 7cd960bc..a7b7254f 100644 --- a/test/inplace3.ok +++ b/test/inplace3.ok @@ -1,11 +1,11 @@ before -gawk: inplace:9: warning: inplace_begin: disabling in-place editing for invalid FILENAME `-' +gawk: inplace:14: warning: inplace_begin: disabling in-place editing for invalid FILENAME `-' stdin start is bar replaced? stdin end after Before -gawk: inplace:9: warning: inplace_begin: disabling in-place editing for invalid FILENAME `-' +gawk: inplace:14: warning: inplace_begin: disabling in-place editing for invalid FILENAME `-' stdin start is foo replaced? stdin end diff --git a/test/mpfrmemok1.awk b/test/mpfrmemok1.awk new file mode 100644 index 00000000..9331a34d --- /dev/null +++ b/test/mpfrmemok1.awk @@ -0,0 +1,7 @@ +# This program tests that -M works with profiling. +# It does not do anything real, but there should not be glibc memory +# errors and it should be valgrind-clean too. + +BEGIN { + v = 0x0100000000000000000000000000000000 +} diff --git a/test/mpfrmemok1.ok b/test/mpfrmemok1.ok new file mode 100644 index 00000000..2389a2d5 --- /dev/null +++ b/test/mpfrmemok1.ok @@ -0,0 +1,7 @@ + + # BEGIN rule(s) + + BEGIN { + 1 v = 340282366920938463463374607431768211456 + } + diff --git a/test/nonfatal1.awk b/test/nonfatal1.awk new file mode 100644 index 00000000..a9228f3a --- /dev/null +++ b/test/nonfatal1.awk @@ -0,0 +1,6 @@ +BEGIN { + PROCINFO["NONFATAL"] + # note that ":" is not a valid hostname character + print |& "/inet/tcp/0/local:host/25" + print (ERRNO != "") +} diff --git a/test/nonfatal1.ok b/test/nonfatal1.ok new file mode 100644 index 00000000..51583f2c --- /dev/null +++ b/test/nonfatal1.ok @@ -0,0 +1,2 @@ +gawk: nonfatal1.awk:4: warning: remote host and port information (local:host, 25) invalid +1 diff --git a/test/nonfatal2.awk b/test/nonfatal2.awk new file mode 100644 index 00000000..fedbba43 --- /dev/null +++ b/test/nonfatal2.awk @@ -0,0 +1,5 @@ +BEGIN { + PROCINFO["NONFATAL"] = 1 + print > "/dev/no/such/file" + print ERRNO +} diff --git a/test/nonfatal2.ok b/test/nonfatal2.ok new file mode 100644 index 00000000..ddc88691 --- /dev/null +++ b/test/nonfatal2.ok @@ -0,0 +1 @@ +No such file or directory diff --git a/test/nonfatal3.awk b/test/nonfatal3.awk new file mode 100644 index 00000000..b2a4ec9e --- /dev/null +++ b/test/nonfatal3.awk @@ -0,0 +1,6 @@ +BEGIN { + PROCINFO["NONFATAL"] + # valid host but bogus port + print |& "/inet/tcp/0/localhost/0" + print ERRNO != "" +} diff --git a/test/nonfatal3.ok b/test/nonfatal3.ok new file mode 100644 index 00000000..d00491fd --- /dev/null +++ b/test/nonfatal3.ok @@ -0,0 +1 @@ +1 diff --git a/test/ofs1.awk b/test/ofs1.awk index 83b3c2a5..83b3c2a5 100755..100644 --- a/test/ofs1.awk +++ b/test/ofs1.awk diff --git a/test/profile0.awk b/test/profile0.awk new file mode 100644 index 00000000..a42e94df --- /dev/null +++ b/test/profile0.awk @@ -0,0 +1 @@ +NR == 1 diff --git a/test/profile0.in b/test/profile0.in new file mode 100644 index 00000000..7bba8c8e --- /dev/null +++ b/test/profile0.in @@ -0,0 +1,2 @@ +line 1 +line 2 diff --git a/test/profile0.ok b/test/profile0.ok new file mode 100644 index 00000000..2e3c5728 --- /dev/null +++ b/test/profile0.ok @@ -0,0 +1,6 @@ + # Rule(s) + + 2 NR == 1 { # 1 + 1 print $0 + } + diff --git a/test/range1.awk b/test/range1.awk index aca5db50..aca5db50 100755..100644 --- a/test/range1.awk +++ b/test/range1.awk diff --git a/test/sortglos.awk b/test/sortglos.awk index e4f910d7..e4f910d7 100755..100644 --- a/test/sortglos.awk +++ b/test/sortglos.awk diff --git a/test/sortglos.in b/test/sortglos.in index b24373de..b24373de 100755..100644 --- a/test/sortglos.in +++ b/test/sortglos.in |