aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog279
-rw-r--r--FUTURES2
-rw-r--r--INSTALL212
-rw-r--r--Makefile.am3
-rw-r--r--Makefile.in244
-rw-r--r--NEWS13
-rw-r--r--README6
-rw-r--r--README.git57
-rw-r--r--README_d/ChangeLog12
-rw-r--r--README_d/README.hacking11
-rw-r--r--README_d/README.mpfr25
-rw-r--r--TODO2
-rw-r--r--aclocal.m4309
-rw-r--r--array.c157
-rw-r--r--awk.h187
-rw-r--r--awkgram.c591
-rw-r--r--awkgram.y330
-rw-r--r--awklib/ChangeLog4
-rw-r--r--awklib/Makefile.in100
-rw-r--r--builtin.c326
-rw-r--r--cint_array.c20
-rw-r--r--cmd.h13
-rw-r--r--command.c212
-rw-r--r--command.y46
-rwxr-xr-xconfig.guess528
-rwxr-xr-xconfig.sub313
-rw-r--r--configh.in52
-rwxr-xr-xconfigure789
-rw-r--r--configure.ac23
-rw-r--r--debug.c105
-rwxr-xr-xdepcomp289
-rw-r--r--dfa.c2290
-rw-r--r--dfa.h19
-rw-r--r--doc/ChangeLog41
-rw-r--r--doc/Makefile.in133
-rw-r--r--doc/awkcard.in28
-rw-r--r--doc/gawk.143
-rw-r--r--doc/gawk.info2176
-rw-r--r--doc/gawk.texi944
-rw-r--r--doc/texinfo.tex1302
-rw-r--r--eval.c222
-rw-r--r--ext.c15
-rw-r--r--extension/ChangeLog9
-rw-r--r--field.c29
-rw-r--r--getopt.c133
-rw-r--r--getopt.h11
-rw-r--r--getopt1.c10
-rw-r--r--getopt_int.h5
-rwxr-xr-xinstall-sh258
-rw-r--r--int_array.c31
-rw-r--r--interpret.h237
-rw-r--r--io.c547
-rw-r--r--m4/ChangeLog23
-rw-r--r--m4/codeset.m412
-rw-r--r--m4/glibc2.m418
-rw-r--r--m4/glibc21.m418
-rw-r--r--m4/intdiv0.m450
-rw-r--r--m4/intl.m4119
-rw-r--r--m4/intldir.m46
-rw-r--r--m4/intlmacosx.m412
-rw-r--r--m4/intmax.m412
-rw-r--r--m4/inttypes-pri.m412
-rw-r--r--m4/inttypes_h.m429
-rw-r--r--m4/lcmessage.m411
-rw-r--r--m4/lock.m4308
-rw-r--r--m4/longlong.m4106
-rw-r--r--m4/mpfr.m462
-rw-r--r--m4/noreturn.m438
-rw-r--r--m4/printf-posix.m415
-rw-r--r--m4/size_max.m437
-rw-r--r--m4/stdint_h.m429
-rw-r--r--m4/uintmax_t.m414
-rw-r--r--m4/visibility.m434
-rw-r--r--m4/wchar_t.m410
-rw-r--r--m4/wint_t.m420
-rw-r--r--m4/xsize.m46
-rw-r--r--main.c117
-rw-r--r--mbsupport.h8
-rwxr-xr-xmissing183
-rw-r--r--missing_d/ChangeLog8
-rw-r--r--missing_d/gawkbool.h40
-rw-r--r--missing_d/snprintf.c4
-rwxr-xr-xmkinstalldirs9
-rw-r--r--mpfr.c1620
-rw-r--r--msg.c16
-rw-r--r--node.c93
-rw-r--r--pc/ChangeLog96
-rw-r--r--pc/Makefile107
-rw-r--r--pc/Makefile.tst153
-rw-r--r--pc/config.h58
-rw-r--r--pc/config.sed26
-rw-r--r--pc/gawkmisc.pc23
-rw-r--r--pc/testoutcmp.awk19
-rw-r--r--po/ChangeLog4
-rw-r--r--po/LINGUAS1
-rw-r--r--po/da.gmobin48739 -> 46123 bytes
-rw-r--r--po/da.po1494
-rw-r--r--po/de.gmobin52166 -> 49358 bytes
-rw-r--r--po/de.po1109
-rw-r--r--po/es.gmobin51471 -> 48746 bytes
-rw-r--r--po/es.po1112
-rw-r--r--po/fi.gmobin51684 -> 48930 bytes
-rw-r--r--po/fi.po1108
-rw-r--r--po/fr.gmobin53311 -> 50390 bytes
-rw-r--r--po/fr.po1109
-rw-r--r--po/gawk.pot1002
-rw-r--r--po/it.gmobin44316 -> 41479 bytes
-rw-r--r--po/it.po1146
-rw-r--r--po/ja.gmobin55596 -> 52218 bytes
-rw-r--r--po/ja.po1097
-rw-r--r--po/nl.gmobin49267 -> 46629 bytes
-rw-r--r--po/nl.po1110
-rw-r--r--po/pl.gmobin50946 -> 48745 bytes
-rw-r--r--po/pl.po1128
-rw-r--r--po/sv.gmobin48752 -> 46113 bytes
-rw-r--r--po/sv.po1110
-rw-r--r--po/vi.gmobin0 -> 55101 bytes
-rw-r--r--po/vi.po1827
-rw-r--r--posix/ChangeLog4
-rw-r--r--profile.c17
-rw-r--r--re.c57
-rw-r--r--regcomp.c42
-rw-r--r--regex.c11
-rw-r--r--regex.h18
-rw-r--r--regex_internal.c37
-rw-r--r--regex_internal.h10
-rw-r--r--regexec.c27
-rw-r--r--replace.c3
-rw-r--r--str_array.c35
-rw-r--r--test/ChangeLog40
-rwxr-xr-xtest/Gentests19
-rw-r--r--test/Makefile.am152
-rw-r--r--test/Makefile.in692
-rw-r--r--test/Maketests492
-rw-r--r--test/badargs.ok1
-rw-r--r--test/dumpvars.ok2
-rw-r--r--test/fmtspcl-mpfr.ok0
-rw-r--r--test/fnarydel-mpfr.ok27
-rw-r--r--test/fnparydl-mpfr.ok10
-rw-r--r--test/jarebug.awk1
-rw-r--r--test/jarebug.in4
-rw-r--r--test/jarebug.ok4
-rw-r--r--test/mpfrbigint.awk11
-rw-r--r--test/mpfrbigint.ok5
-rw-r--r--test/mpfrexprange.awk7
-rw-r--r--test/mpfrexprange.ok2
-rw-r--r--test/mpfrieee.awk13
-rw-r--r--test/mpfrieee.ok12
-rw-r--r--test/mpfrnr.awk10
-rw-r--r--test/mpfrnr.in3
-rw-r--r--test/mpfrnr.ok1
-rw-r--r--test/mpfrrnd.awk15
-rw-r--r--test/mpfrrnd.ok10
-rw-r--r--test/mpfrsort.awk8
-rw-r--r--test/mpfrsort.ok11
-rw-r--r--test/printfbad3.awk22
-rw-r--r--test/printfbad3.ok1
-rw-r--r--test/rand-mpfr.ok1
-rw-r--r--test/rand-mpfr1.ok1
-rw-r--r--vms/ChangeLog24
-rw-r--r--vms/descrip.mms2
-rw-r--r--vms/vms-conf.h20
-rw-r--r--vms/vmsbuild.com2
-rw-r--r--vms/vmstest.com16
-rw-r--r--xalloc.h10
-rwxr-xr-x[-rw-r--r--]ylwrap54
166 files changed, 20194 insertions, 13453 deletions
diff --git a/ChangeLog b/ChangeLog
index 0d405abf..7f6c886f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -109,6 +109,285 @@
to the ENVIRON array.
(load_environ): Call path_environ for AWKPATH and AWKLIBPATH.
+2012-05-09 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Added AC_HEADER_STDBOOL
+ * awk.h, dfa.c, regex.c: Reworked to use results
+ of test and include missing_d/gawkbool.h.
+
+2012-05-07 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (prnode): Add casts to void* for %p format.
+ * debug.c (print_instruction): Ditto.
+ * builtin.c: Fix %lf format to be %f everywhere.
+
+ Unrelated:
+
+ * replace.c: Don't include "config.h", awk.h gets it for us.
+
+2012-05-04 Arnold D. Robbins <arnold@skeeve.com>
+
+ * getopt.c [DJGPP]: Change to __DJGPP__.
+ * mbsupport.h [DJGPP]: Change to __DJGPP__.
+
+ Unrelated:
+
+ * awk.h: Workarounds for _TANDEM_SOURCE.
+
+2012-05-01 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c: Sync with GNU grep. RRI code now there, needed additional
+ change for gawk.
+ * configure.ac: Add check for stdbool.h.
+ * regex.c: Add check for if not have stdbool.h, then define the
+ bool stuff.
+
+2012-04-27 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c: Sync with GNU grep.
+ * xalloc.h (xmemdup): Added, from grep, for dfa.c. Sigh.
+
+2012-04-27 Arnold D. Robbins <arnold@skeeve.com>
+
+ Update to autoconf 2.69, automake 1.12.
+
+ * INSTALL, aclocal.m4, configh.in, depcomp, install-sh, missing,
+ mkinstalldirs, ylwrap: Updated.
+ * configure.ac (AC_TYPE_LONG_LONG_INT, AC_TYPE_UNSIGNED_LONG_LONG_INT,
+ AC_TYPE_INTMAX_T, AC_TYPE_UINTMAX_T): Renamed from gl_* versions.
+ * configure: Regenerated.
+
+2012-04-24 Arnold D. Robbins <arnold@skeeve.com>
+
+ * cmd.h (dPrompt, commands_Prompt, eval_Prompt, dgawk_Prompt): Changed
+ to dbg_prompt, commands_prompt, eval_prompt, dgawk_prompt.
+ * debug.c: Ditto.
+ * command.y: Ditto. Some minor whitespace and comments cleanup.
+
+2012-04-24 Arnold D. Robbins <arnold@skeeve.com>
+
+ io.c cleanup and some speedup for RS as regexp parsing.
+
+ * awk.h (Regexp): New members has_meta and maybe_long.
+ (enum redirval): Add redirect_none as value 0.
+ (remaybelong): Remove function declaration.
+ * awkgram.y: Use redirect_none instead of 0 for no redirect cases.
+ * io.c (go_getline_redir): Second arg now of type enum redirval.
+ Changed intovar into into_variable.
+ (comments and whitespace): Lots of general cleanup.
+ (socket_open): readle changed to read_len.
+ (two_way_open): Add additional calls to os_close_on_exec.
+ (rsrescan): Simplify code a bit and use RS->maybe_long.
+ * re.c (make_regexp): Set up new members in Regexp struct.
+ (remaybelong): Remove function.
+ (reisstring): Simplified code.
+
+2012-04-16 Eli Zaretskii <eliz@gnu.org>
+
+ * io.c (read_with_timeout) [__MINGW32__]: Just call the blocking
+ 'read', as 'select' is only available for sockets.
+ * mpfr.c (set_ROUNDMODE) [!HAVE_MPFR]: Renamed from set_RNDMODE.
+ * main.c (load_procinfo): Declare name[] also when HAVE_MPFR is
+ defined even though HAVE_GETGROUPS etc. are not.
+
+2012-04-12 John Haque <j.eh@mchsi.com>
+
+ * array.c, awk.h, awkgram.y, builtin.c, command.y, debug.c,
+ field.c, mpfr.c, profile.c: Change RND_MODE to ROUND_MODE.
+
+2012-04-11 John Haque <j.eh@mchsi.com>
+
+ * main.c (varinit): Change RNDMODE to ROUNDMODE.
+
+2012-04-11 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c: Change --arbitrary-precision to --bignum.
+
+2012-04-02 John Haque <j.eh@mchsi.com>
+
+ Add support for arbitrary-precision arithmetic.
+
+ * mpfr.c: New file.
+ * awk.h (struct exp_node): Add union to handle different number types.
+ (MPFN, MPZN): New flag values.
+ (DO_MPFR, do_mpfr): New defines.
+ (PREC_node, RNDMODE_node): Add declarations.
+ (PRECISION, RND_MODE, MNR, MFNR, mpzval, do_ieee_fmt): Add declarations.
+ (make_number, str2number, format_val, cmp_numbers): Ditto.
+ (force_number): Change definition.
+ (Func_pre_exec, Func_post_exec): New typedefs.
+ (POP_NUMBER, TOP_NUMBER): Change definitions.
+ (get_number_ui, get_number_si, get_number_d, get_number_uj,
+ iszero, IEEE_FMT, mpg_float, mpg_integer, mpg_float,
+ mpg_integer): New defines.
+ * awkgram.y (tokentab): Add alternate function entries for MPFR/GMP.
+ (snode): Choose the appropriate function.
+ (negate_num): New function to negate a number.
+ (grammar): Use it.
+ (yylex): Adjust number handling code.
+ * array.c (value_info, asort_actual, sort_user_func): Adjust for
+ MPFR/GMP numbers.
+ (do_adump, indent): Minor changes.
+ (sort_up_index_number, sort_up_value_number, sort_up_value_type): Use
+ cmp_numbers() for numeric comparisons.
+ * builtin.c (mpz2mpfr): New function.
+ (format_tree): Adjust to handle MPFR and GMP numbers.
+ * eval.c (register_exec_hook): New function to manage interpreter hooks.
+ (num_exec_hook, pre_execute, post_execute): New and adjusted definitions.
+ (h_interpret): Renamed from debug_interpret.
+ (init_interpret): Changed to use the new name.
+ (flags2str): New entries for MPFN and MPZN.
+ (cmp_nodes): Reworked to use seperate routine for numeric comparisons.
+ (set_IGNORECASE, set_BINMODE, set_LINT, update_NR, update_FNR,
+ update_NF): Adjust code and some cleanup.
+ * field.c (rebuild_record): Field copying code reworked to handle
+ MPFR/GMP numbers.
+ (set_NF): Minor adjustment.
+ * io.c (INCREMENT_REC): New macro.
+ (inrec, do_getline): Use the new macro.
+ (nextfile, set_NR, set_FNR, get_read_timeout, pty_vs_pipe): Adjust code
+ to handle MPFR/GMP numbers.
+ * interpret.h (r_interpret): Adjust TOP_NUMBER/POP_NUMBER usage.
+ (EXEC_HOOK): New macro and definition.
+ (DEBUGGING): Removed.
+ * main.c (DEFAULT_PREC, DEFAULT_RNDMODE): New defines.
+ (opttab): New entry for option arbitrary-precision.
+ (main): Handle the new option.
+ (usage): Add to usage message.
+ (varinit): Add PREC and RNDMODE.
+ (load_procinfo): Install MPFR and GMP related items.
+ (version): Append MPFR and GMP versions to message.
+ * msg.c (err) : Adjust FNR handling with MPFR/GMP.
+ * node.c (r_format_val): Renamed from format_val.
+ (r_force_number): Return NODE * instead of AWKNUM.
+ (make_number, str2number, format_val, cmp_numpers: Defined and initialized.
+ (r_unref): Free MPFR/MPZ numbers.
+ (get_numbase): Renamed from isnondecimal and return the base.
+ (cmp_awknums): New function to compare two AWKNUMs.
+ * command.y (yylex): Adjust number handling code.
+ (grammar): Minor adjustments to handle negative numbers.
+ * debug.c (init_debug): New function.
+ (do_info, do_set_var, watchpoint_triggered, serialize,
+ initialize_watch_item, do_watch, print_watch_item): Minor adjustments.
+ (debug_pre_execute): Adjusted to handle MPFR and GMP numbers.
+
+2012-04-09 Arnold D. Robbins <arnold@skeeve.com>
+
+ * INSTALL, config.guess, config.sub, depcomp, install-sh,
+ missing, mkinstalldirs, ylwrap: Update to latest from automake 1.11.4.
+
+2012-04-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Update various files to automake 1.11.4.
+
+2012-03-30 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac (GAWK_AC_NORETURN): Do as macro instead of inline.
+
+2012-03-29 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.h, dfa.c: Sync with grep. Major cleanups and some changes
+ there.
+ * re.c (research): Pass size_t* to dfaexec to match type change.
+ * configure.ac (AH_VERBATIM[_Noreturn]): Added from Paul Eggert to
+ ease compiling.
+ (AC_INIT): Bump version.
+ * configure, configh.in, version.c: Regenerated.
+
+2012-03-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.0.1: Release tar ball made.
+
+2012-03-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * getopt.c: Add DJGPP to list of platforms where it's ok
+ to include <stdlib.h>.
+ * awkgram.y, builtin.c, ext.c, mbsupport.h, re.c: Update
+ copyright year.
+
+2012-03-21 Corinna Vinschen <vinschen@redhat.com>
+
+ * getopt.c: Add Cygwin to list of platforms where it's ok
+ to include <stdlib.h>.
+
+2012-03-20 Arnold D. Robbins <arnold@skeeve.com>
+
+ Get new getopt to work on Linux and C90 compilers:
+
+ * getopt.c: Undef ELIDE_CODE for gawk.
+ (_getopt_internal_r): Init first.needs_free to 0. In test for -W
+ move executable code to after declarations for C90 compilers.
+ * getopt1.c: Undef ELIDE_CODE for gawk.
+
+ Minor bug fix with printf, thanks to John Haque:
+
+ * builtin.c (format_tree): Initialize base to zero at the top
+ of the while loop.
+
+ Getting next tar ball ready:
+
+ * configure.ac: Remove duplicate check for wcscoll. Thanks
+ to Stepan Kasal.
+
+2012-03-16 Arnold D. Robbins <arnold@skeeve.com>
+
+ * getopt.c, getopt.h, getopt1.c, getopt_int.h, regcomp.c,
+ regex.c, regex.h, regex_internal.c, regex_internal.h,
+ regexec.c: Sync with GLIBC, what the heck.
+
+2012-03-14 Eli Zaretskii <eliz@gnu.org>
+
+ * mbsupport.h (btowc): Change for non-DJGPP.
+ * re.c (dfaerror): Add call to exit for DJGPP.
+
+2012-03-14 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regex_internal.c (re_string_skip_chars): Fix calculation of
+ remain_len with m.b. chars. Thanks to Stanislav Brabec
+ <sbrabec@suse.cz>.
+
+2012-02-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (init_groupset): Make `getgroups' failing a non-fatal
+ error. After all, what's the big deal? Should help on Plan 9.
+
+2012-02-27 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c (parse_bracket_exp): Revert changes 2012-02-15 to stay
+ in sync with grep.
+ * dfa.h (dfarerror): Add __attribute__ from grep.
+
+2012-02-15 Arnold D. Robbins <arnold@skeeve.com>
+
+ Fix warnings from GCC 4.6.2 -Wall option.
+
+ * awkgram.y (newline_eof): New function to replace body of
+ NEWLINE_EOF macro.
+ (yylex): Replace body of NEWLINE_EOF macro.
+ * dfa.c (parse_bracket_exp): Init variables to zero.
+ * ext.c (dummy, junk): Remove.
+ * regex_internal.c (re_string_reconstruct): Remove buf array. It was
+ set but not used.
+
+2012-02-10 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c: Sync with GNU grep.
+
+2012-02-07 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (main): Move init of `output_fp' to before parsing of
+ program so that error messages from msg.c don't dump core.
+ Thanks to Michael Haardt <michael@moria.de>.
+
+2012-01-13 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c [is_valid_unibtye_character]: Fix from GNU grep to
+ bug reported by me from Scott Deifik for DJGPP.
+
+2012-01-03 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c: Sync with GNU grep.
+
2012-01-02 Arnold D. Robbins <arnold@skeeve.com>
* io.c (Read_can_timeout, Read_timeout, Read_default_timeout):
diff --git a/FUTURES b/FUTURES
index 03fe71dc..62225b12 100644
--- a/FUTURES
+++ b/FUTURES
@@ -22,7 +22,7 @@ For 4.1
Merge xmlgawk XML extensions
- Integrate MPFR to provide high precision arithmetic.
+ DONE: Integrate MPFR to provide high precision arithmetic.
Continue code reviews / code cleanup
diff --git a/INSTALL b/INSTALL
index 5458714e..6e90e07d 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,19 +1,25 @@
Installation Instructions
*************************
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
-2006 Free Software Foundation, Inc.
+Copyright (C) 1994-1996, 1999-2002, 2004-2012 Free Software Foundation,
+Inc.
-This file is free documentation; the Free Software Foundation gives
-unlimited permission to copy, distribute and modify it.
+ Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved. This file is offered as-is,
+without warranty of any kind.
Basic Installation
==================
-Briefly, the shell commands `./configure; make; make install' should
+ Briefly, the shell commands `./configure; make; make install' should
configure, build, and install this package. The following
more-detailed instructions are generic; see the `README' file for
-instructions specific to this package.
+instructions specific to this package. Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below. The lack of an optional feature in a given package is not
+necessarily a bug. More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
@@ -42,7 +48,7 @@ may remove or edit it.
you want to change it or regenerate `configure' using a newer version
of `autoconf'.
-The simplest way to compile this package is:
+ The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system.
@@ -53,12 +59,22 @@ The simplest way to compile this package is:
2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with
- the package.
+ the package, generally using the just-built uninstalled binaries.
4. Type `make install' to install the programs and any data files and
- documentation.
-
- 5. You can remove the program binaries and object files from the
+ documentation. When installing into a prefix owned by root, it is
+ recommended that the package be configured and built as a regular
+ user, and only the `make install' phase executed with root
+ privileges.
+
+ 5. Optionally, type `make installcheck' to repeat any self-tests, but
+ this time using the binaries in their final installed location.
+ This target does not install anything. Running this target as a
+ regular user, particularly if the prior `make install' required
+ root privileges, verifies that the installation completed
+ correctly.
+
+ 6. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
@@ -67,12 +83,22 @@ The simplest way to compile this package is:
all sorts of other programs in order to regenerate files that came
with the distribution.
+ 7. Often, you can also type `make uninstall' to remove the installed
+ files again. In practice, not all packages have tested that
+ uninstallation works correctly, even though it is required by the
+ GNU Coding Standards.
+
+ 8. Some packages, particularly those that use Automake, provide `make
+ distcheck', which can by used by developers to test that all other
+ targets like `make install' and `make uninstall' work correctly.
+ This target is generally not run by end users.
+
Compilers and Options
=====================
-Some systems require unusual options for compilation or linking that the
-`configure' script does not know about. Run `./configure --help' for
-details on some of the pertinent environment variables.
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. Run `./configure --help'
+for details on some of the pertinent environment variables.
You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
@@ -85,25 +111,41 @@ is an example:
Compiling For Multiple Architectures
====================================
-You can compile the package for more than one kind of computer at the
+ You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you can use GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
+source code in the directory that `configure' is in and in `..'. This
+is known as a "VPATH" build.
With a non-GNU `make', it is safer to compile the package for one
architecture at a time in the source code directory. After you have
installed the package for one architecture, use `make distclean' before
reconfiguring for another architecture.
+ On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor. Like
+this:
+
+ ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CPP="gcc -E" CXXCPP="g++ -E"
+
+ This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
Installation Names
==================
-By default, `make install' installs the package's commands under
+ By default, `make install' installs the package's commands under
`/usr/local/bin', include files under `/usr/local/include', etc. You
can specify an installation prefix other than `/usr/local' by giving
-`configure' the option `--prefix=PREFIX'.
+`configure' the option `--prefix=PREFIX', where PREFIX must be an
+absolute file name.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
@@ -114,16 +156,47 @@ Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
+you can set and what kinds of files go in them. In general, the
+default for these options is expressed in terms of `${prefix}', so that
+specifying just `--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+ The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+ The first method involves providing an override variable for each
+affected directory. For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'. Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated. The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+ The second method involves providing the `DESTDIR' variable. For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names. The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters. On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
+
+Optional Features
+=================
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-Optional Features
-=================
-
-Some packages pay attention to `--enable-FEATURE' options to
+ Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
@@ -135,14 +208,58 @@ find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
+ Some packages offer the ability to configure how verbose the
+execution of `make' will be. For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with `make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with `make V=0'.
+
+Particular systems
+==================
+
+ On HP-UX, the default C compiler is not ANSI C compatible. If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+ ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+ HP-UX `make' updates targets which have the same time stamps as
+their prerequisites, which makes it generally unusable when shipped
+generated files such as `configure' are involved. Use GNU `make'
+instead.
+
+ On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file. The option `-nodtk' can be used as
+a workaround. If GNU CC is not installed, it is therefore recommended
+to try
+
+ ./configure CC="cc"
+
+and if that doesn't work, try
+
+ ./configure CC="cc -nodtk"
+
+ On Solaris, don't put `/usr/ucb' early in your `PATH'. This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+ On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'. It is recommended to use the following options:
+
+ ./configure --prefix=/boot/common
+
Specifying the System Type
==========================
-There may be some features `configure' cannot figure out automatically,
-but needs to determine by the type of machine the package will run on.
-Usually, assuming the package is built to be run on the _same_
-architectures, `configure' can figure that out, but if it prints a
-message saying it cannot guess the machine type, give it the
+ There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on. Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
`--build=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name which has the form:
@@ -150,7 +267,8 @@ type, such as `sun4', or a canonical name which has the form:
where SYSTEM can have one of these forms:
- OS KERNEL-OS
+ OS
+ KERNEL-OS
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
@@ -168,9 +286,9 @@ eventually be run) with `--host=TYPE'.
Sharing Defaults
================
-If you want to set default values for `configure' scripts to share, you
-can create a site shell script called `config.site' that gives default
-values for variables like `CC', `cache_file', and `prefix'.
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
@@ -179,7 +297,7 @@ A warning: not all `configure' scripts look for a site script.
Defining Variables
==================
-Variables not defined in a site shell script can be set in the
+ Variables not defined in a site shell script can be set in the
environment passed to `configure'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
@@ -191,18 +309,27 @@ causes the specified `gcc' to be used as the C compiler (unless it is
overridden in the site shell script).
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
-an Autoconf bug. Until the bug is fixed you can use this workaround:
+an Autoconf limitation. Until the limitation is lifted, you can use
+this workaround:
- CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+ CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
`configure' Invocation
======================
-`configure' recognizes the following options to control how it operates.
+ `configure' recognizes the following options to control how it
+operates.
`--help'
`-h'
- Print a summary of the options to `configure', and exit.
+ Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+ Print a summary of the options unique to this package's
+ `configure', and exit. The `short' variant lists options used
+ only in the top level, while the `recursive' variant lists options
+ also present in any nested packages.
`--version'
`-V'
@@ -229,6 +356,15 @@ an Autoconf bug. Until the bug is fixed you can use this workaround:
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
+`--prefix=DIR'
+ Use DIR as the installation prefix. *note Installation Names::
+ for more details, including other options available for fine-tuning
+ the installation locations.
+
+`--no-create'
+`-n'
+ Run the configure checks, but stop before creating any output
+ files.
+
`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.
-
diff --git a/Makefile.am b/Makefile.am
index 5c37dcda..d92920b1 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -110,6 +110,7 @@ base_sources = \
io.c \
mbsupport.h \
main.c \
+ mpfr.c \
msg.c \
node.c \
profile.c \
@@ -128,7 +129,7 @@ base_sources = \
gawk_SOURCES = $(base_sources)
# Get extra libs as needed, Automake will supply LIBINTL and SOCKET_LIBS.
-LDADD = $(LIBSIGSEGV) $(LIBINTL) $(SOCKET_LIBS) @LIBREADLINE@
+LDADD = $(LIBSIGSEGV) $(LIBINTL) $(SOCKET_LIBS) @LIBREADLINE@ @LIBMPFR@
# Directory for gawk's data files. Automake supplies datadir.
pkgdatadir = $(datadir)/awk
diff --git a/Makefile.in b/Makefile.in
index 3083c4c3..79c9a008 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,9 +1,9 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -39,6 +39,23 @@
#
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
@@ -68,14 +85,13 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/arch.m4 \
$(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/gettext.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/intmax_t.m4 $(top_srcdir)/m4/inttypes_h.m4 \
$(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lcmessage.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libsigsegv.m4 \
- $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/mpfr.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/noreturn.m4 \
$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
$(top_srcdir)/m4/readline.m4 $(top_srcdir)/m4/socket.m4 \
- $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/uintmax_t.m4 \
$(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
@@ -92,10 +108,10 @@ am__objects_1 = array.$(OBJEXT) awkgram.$(OBJEXT) builtin.$(OBJEXT) \
dfa.$(OBJEXT) eval.$(OBJEXT) ext.$(OBJEXT) field.$(OBJEXT) \
floatcomp.$(OBJEXT) gawkmisc.$(OBJEXT) getopt.$(OBJEXT) \
getopt1.$(OBJEXT) int_array.$(OBJEXT) io.$(OBJEXT) \
- main.$(OBJEXT) msg.$(OBJEXT) node.$(OBJEXT) profile.$(OBJEXT) \
- random.$(OBJEXT) re.$(OBJEXT) regex.$(OBJEXT) \
- replace.$(OBJEXT) str_array.$(OBJEXT) symbol.$(OBJEXT) \
- version.$(OBJEXT)
+ main.$(OBJEXT) mpfr.$(OBJEXT) msg.$(OBJEXT) node.$(OBJEXT) \
+ profile.$(OBJEXT) random.$(OBJEXT) re.$(OBJEXT) \
+ regex.$(OBJEXT) replace.$(OBJEXT) str_array.$(OBJEXT) \
+ symbol.$(OBJEXT) version.$(OBJEXT)
am_gawk_OBJECTS = $(am__objects_1)
gawk_OBJECTS = $(am_gawk_OBJECTS)
gawk_LDADD = $(LDADD)
@@ -110,7 +126,9 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS)
+am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \
+ -e s/c++$$/h++/ -e s/c$$/h/
+YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS)
YLWRAP = $(top_srcdir)/ylwrap
SOURCES = $(gawk_SOURCES)
DIST_SOURCES = $(gawk_SOURCES)
@@ -121,21 +139,30 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
- distdir dist dist-all distcheck
+ cscope distdir dist dist-all distcheck
ETAGS = etags
CTAGS = ctags
+CSCOPE = cscope
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
- { test ! -d "$(distdir)" \
- || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
- && rm -fr "$(distdir)"; }; }
+ if test -d "$(distdir)"; then \
+ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -rf "$(distdir)" \
+ || { sleep 5 && rm -rf "$(distdir)"; }; \
+ else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
am__relativize = \
dir0=`pwd`; \
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
@@ -163,7 +190,10 @@ am__relativize = \
reldir="$$dir2"
DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.xz
GZIP_ENV = --best
+DIST_TARGETS = dist-xz dist-gzip
distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
# Directory for gawk's data files. Automake supplies datadir.
pkgdatadir = $(datadir)/awk
@@ -179,7 +209,7 @@ CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
-DEFS = -DDEFPATH=$(DEFPATH) -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"$(datadir)/locale"'
+DEFS = -DDEFPATH=$(DEFPATH) -DDEFLIBPATH=$(DEFLIBPATH) -DSHLIBEXT=$(SHLIBEXT) -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"$(datadir)/locale"'
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
@@ -201,6 +231,7 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
LDFLAGS = @LDFLAGS@
LIBICONV = @LIBICONV@
LIBINTL = @LIBINTL@
+LIBMPFR = @LIBMPFR@
LIBOBJS = @LIBOBJS@
LIBREADLINE = @LIBREADLINE@
LIBS = @LIBS@
@@ -242,6 +273,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+acl_shlibext = @acl_shlibext@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@@ -276,6 +308,7 @@ mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
+pkgextensiondir = @pkgextensiondir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
@@ -313,7 +346,6 @@ EXTRA_DIST = \
config.rpath \
config.sub \
depcomp \
- extension \
m4 \
missing \
missing_d \
@@ -343,6 +375,7 @@ SUBDIRS = \
awklib \
doc \
po \
+ extension \
test
@@ -375,6 +408,7 @@ base_sources = \
io.c \
mbsupport.h \
main.c \
+ mpfr.c \
msg.c \
node.c \
profile.c \
@@ -393,11 +427,15 @@ base_sources = \
gawk_SOURCES = $(base_sources)
# Get extra libs as needed, Automake will supply LIBINTL and SOCKET_LIBS.
-LDADD = $(LIBSIGSEGV) $(LIBINTL) $(SOCKET_LIBS) @LIBREADLINE@
+LDADD = $(LIBSIGSEGV) $(LIBINTL) $(SOCKET_LIBS) @LIBREADLINE@ @LIBMPFR@
# stuff for compiling gawk/pgawk
DEFPATH = '".$(PATH_SEPARATOR)$(pkgdatadir)"'
+# shared library support:
+SHLIBEXT = "\"$(acl_shlibext)"\"
+DEFLIBPATH = "\"$(pkgextensiondir)\""
+
# Get rid of core files when cleaning
CLEANFILES = core core.*
MAINTAINERCLEANFILES = version.c
@@ -409,7 +447,7 @@ all: config.h
.SUFFIXES:
.SUFFIXES: .c .o .obj .y
-am--refresh:
+am--refresh: Makefile
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
@@ -445,10 +483,8 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
$(am__aclocal_m4_deps):
config.h: stamp-h1
- @if test ! -f $@; then \
- rm -f stamp-h1; \
- $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
- else :; fi
+ @if test ! -f $@; then rm -f stamp-h1; else :; fi
+ @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
stamp-h1: $(srcdir)/configh.in $(top_builddir)/config.status
@rm -f stamp-h1
@@ -462,8 +498,11 @@ distclean-hdr:
-rm -f config.h stamp-h1
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
- test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
while read p p1; do if test -f $$p; \
@@ -497,7 +536,7 @@ uninstall-binPROGRAMS:
clean-binPROGRAMS:
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
-gawk$(EXEEXT): $(gawk_OBJECTS) $(gawk_DEPENDENCIES)
+gawk$(EXEEXT): $(gawk_OBJECTS) $(gawk_DEPENDENCIES) $(EXTRA_gawk_DEPENDENCIES)
@rm -f gawk$(EXEEXT)
$(LINK) $(gawk_OBJECTS) $(gawk_LDADD) $(LIBS)
@@ -524,6 +563,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/int_array.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpfr.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/node.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/profile.Po@am__quote@
@@ -550,14 +590,14 @@ distclean-compile:
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
.y.c:
- $(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE)
+ $(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE)
# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-# (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
$(RECURSIVE_TARGETS):
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
@@ -621,6 +661,10 @@ ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
+cscopelist-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
+ done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -684,8 +728,32 @@ GTAGS:
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+ test ! -s cscope.files \
+ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+
+clean-cscope:
+ -rm -f cscope.files
+
+cscope.files: clean-cscope cscopelist-recursive cscopelist
+
+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+ -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
distdir: $(DISTFILES)
$(am__remove_distdir)
@@ -721,13 +789,10 @@ distdir: $(DISTFILES)
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
- test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
@@ -759,36 +824,35 @@ distdir: $(DISTFILES)
|| chmod -R a+r "$(distdir)"
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
dist-bzip2: distdir
- tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
- $(am__remove_distdir)
+ tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+ $(am__post_remove_distdir)
-dist-lzma: distdir
- tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
- $(am__remove_distdir)
+dist-lzip: distdir
+ tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+ $(am__post_remove_distdir)
dist-xz: distdir
- tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
- $(am__remove_distdir)
+ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+ $(am__post_remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
-dist dist-all: distdir
- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
- tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
- $(am__remove_distdir)
+dist dist-all:
+ $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+ $(am__post_remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
@@ -799,8 +863,8 @@ distcheck: dist
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
- *.tar.lzma*) \
- lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+ *.tar.lz*) \
+ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
*.tar.xz*) \
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
*.tar.Z*) \
@@ -820,6 +884,7 @@ distcheck: dist
&& am__cwd=`pwd` \
&& $(am__cd) $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(AM_DISTCHECK_CONFIGURE_FLAGS) \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
@@ -843,13 +908,21 @@ distcheck: dist
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
&& cd "$$am__cwd" \
|| exit 1
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
distuninstallcheck:
- @$(am__cd) '$(distuninstallcheck_dir)' \
- && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+ @test -n '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: trying to run $@ with an empty' \
+ '$$(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ $(am__cd) '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
@@ -884,10 +957,15 @@ install-am: all-am
installcheck: installcheck-recursive
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
@@ -977,26 +1055,27 @@ ps-am:
uninstall-am: uninstall-binPROGRAMS
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check-am \
- ctags-recursive install-am install-exec-am install-strip \
- tags-recursive
+ cscopelist-recursive ctags-recursive install-am \
+ install-exec-am install-strip tags-recursive
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
all all-am am--refresh check check-am check-local clean \
- clean-binPROGRAMS clean-generic ctags ctags-recursive dist \
- dist-all dist-bzip2 dist-gzip dist-hook dist-lzma dist-shar \
- dist-tarZ dist-xz dist-zip distcheck distclean \
- distclean-compile distclean-generic distclean-hdr \
- distclean-tags distcleancheck distdir distuninstallcheck dvi \
- dvi-am html html-am info info-am install install-am \
- install-binPROGRAMS install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-exec-hook \
- install-html install-html-am install-info install-info-am \
- install-man install-pdf install-pdf-am install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs installdirs-am maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic pdf pdf-am ps ps-am tags tags-recursive \
- uninstall uninstall-am uninstall-binPROGRAMS
+ clean-binPROGRAMS clean-cscope clean-generic cscope cscopelist \
+ cscopelist-recursive ctags ctags-recursive dist dist-all \
+ dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar dist-tarZ \
+ dist-xz dist-zip distcheck distclean distclean-compile \
+ distclean-generic distclean-hdr distclean-tags distcleancheck \
+ distdir distuninstallcheck dvi dvi-am html html-am info \
+ info-am install install-am install-binPROGRAMS install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-exec-hook install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs installdirs-am \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+ tags tags-recursive uninstall uninstall-am \
+ uninstall-binPROGRAMS
# First, add a link from gawk to gawk-X.Y.Z.
@@ -1059,7 +1138,12 @@ diffout valgrind-scan:
valgrind:
cd test; rm -f log.[0-9]*; \
- make check AWK="valgrind --leak-check=full --log-file=log.%p ../gawk"; \
+ make check VALGRIND="valgrind --leak-check=full --log-file=log.%p"; \
+ make valgrind-scan
+
+valgrind-noleak:
+ cd test; rm -f log.[0-9]*; \
+ make check VALGRIND="valgrind --leak-check=no --log-file=log.%p"; \
make valgrind-scan
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/NEWS b/NEWS
index 803c1d52..04f2a87b 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,4 @@
- Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+ Copyright (C) 2010, 2011, 2012 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
@@ -16,6 +16,11 @@ Changes from 4.0.1 to 4.1
2. The new -l option is used for loading dynamic extensions.
+Changes from 4.0.1 to 4.0.2
+---------------------------
+
+1. Infrastructure upgrades: Autoconf 2.69, Automake 1.12.
+
Changes from 4.0.0 to 4.0.1
---------------------------
@@ -23,7 +28,11 @@ Changes from 4.0.0 to 4.0.1
the behavior of 3.1. It was silly to think I could break compatibility that
way, even for standards compliance.
-XXX. Lots of minor bugs fixed and portability clean-ups along the way. See
+2. Completed the implementation of Rational Range Interpretation.
+
+3. Failure to get the group set is no longer a fatal error.
+
+4. Lots of minor bugs fixed and portability clean-ups along the way. See
the ChangeLog for details.
Changes from 3.1.8 to 4.0.0
diff --git a/README b/README
index 3e009c5c..b752c65a 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
- Copyright (C) 2005, 2006, 2007, 2009, 2010, 2011
+ Copyright (C) 2005, 2006, 2007, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
@@ -7,11 +7,11 @@
README:
-This is GNU Awk 4.0.0. It is upwardly compatible with Brian Kernighan's
+This is GNU Awk 4.0.1. It is upwardly compatible with Brian Kernighan's
version of Unix awk. It is almost completely compliant with the
2008 POSIX 1003.1 standard for awk. (See the note below about POSIX.)
-This is a major new release. See NEWS and ChangeLog for details.
+This is a bug fix release. See NEWS and ChangeLog for details.
Work to be done is described briefly in the FUTURES file. Changes in this
version are summarized in the NEWS file. Please read the LIMITATIONS file.
diff --git a/README.git b/README.git
index 490558ab..9de8575d 100644
--- a/README.git
+++ b/README.git
@@ -20,10 +20,18 @@ Really.
You can find gawk's GIT repository at Savannah
https://savannah.gnu.org/git/?group=gawk
+
Detailed instructions on using and contributing to gawk can also be
-found there
-http://savannah.gnu.org/maintenance/UsingGit
+found at Savannah, see http://savannah.gnu.org/maintenance/UsingGit
+
+Thanks,
+
+Arnold Robbins
+Gawk Maintainer
+=====================================================================
+Here are some questions and answers related to using git compiled
+by several of the gawk maintainers.
- How can I check out the GIT repository ?
@@ -265,9 +273,48 @@ This is useful for inspecting the settings of local and remote branches that tra
vi .git/config
+- I'm a devoted user of Bazaar, and don't want to switch to git. Is
+ there any way for me to track Gawk development with bzr?
+Yes, there is. First, install the latest version of bzr (2.5.0 or
+later is required). If it doesn't come with the bzr-git plugin,
+download and install it from https://launchpad.net/bzr-git. You will
+also need dulwich, which is a Python implementation of the git
+protocol; get it from http://www.samba.org/~jelmer/dulwich/.
-Thanks,
+(To know whether you have bzr-git, type "bzr plugins".)
-Arnold Robbins
-Gawk Maintainer
+Next, clone the Gawk git repository with this command:
+
+ bzr git-import git://git.savannah.gnu.org/gawk.git gawk
+
+This will create a directory called 'gawk' with meta-data of the
+repository, but without any working trees. To checkout the files,
+chdir to that directory and type:
+
+ bzr checkout
+
+This will checkout the files for the default branch. To see the list
+of branches, type
+
+ bzr branches
+
+To switch to another branch, type
+
+ bzr switch --force BRANCH
+
+where BRANCH is the name of the branch, e.g. 'xgawk'. (The --force
+option is a workaround for an annoying misfeature in bzr 2.5.0, which
+will most probably be resolved in the near future.)
+
+To sync the current branch with upstream, type
+
+ bzr pull
+
+If you want to update several branches, "bzr switch" to each one in
+turn, followed by "bzr pull" to sync the branch.
+
+- How do I manage things if I want to undo a commit?
+
+It depends upon if you have pushed the commit or not. Lots of good
+info is at http://stackoverflow.com/questions/927358/git-undo-last-commit .
diff --git a/README_d/ChangeLog b/README_d/ChangeLog
index 945ba215..0310bd8d 100644
--- a/README_d/ChangeLog
+++ b/README_d/ChangeLog
@@ -1,3 +1,15 @@
+2012-04-11 John Haque <j.eh@mchsi.com>
+
+ * README.hacking: New file.
+
+2012-04-01 John Haque <j.eh@mchsi.com>
+
+ * README.mpfr: New file.
+
+2012-03-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.0.1: Release tar ball made.
+
2011-07-29 Arnold D. Robbins <arnold@skeeve.com>
* README.pc: Add download location info for DJGPP version.
diff --git a/README_d/README.hacking b/README_d/README.hacking
new file mode 100644
index 00000000..dcb57359
--- /dev/null
+++ b/README_d/README.hacking
@@ -0,0 +1,11 @@
+* Use one of the following macros to access the value of a numeric NODE:
+ Macro Returned C type
+ ---------------------------------------
+ get_number_ui(n) unsigned long
+ get_number_si(n) long
+ get_number_d(n) double
+ get_number_uj(n) uintmax_t
+
+* Use iszero(n) to test if a numeric NODE is zero.
+
+ \ No newline at end of file
diff --git a/README_d/README.mpfr b/README_d/README.mpfr
new file mode 100644
index 00000000..b12c19b6
--- /dev/null
+++ b/README_d/README.mpfr
@@ -0,0 +1,25 @@
+Sat Mar 17 07:32:01 CDT 2012
+=============================
+
+The MPFR and GMP versions known to work for Mac OS X on PPC:
+GNU MPFR 3.1.0, GNU MP 4.3.1
+
+----
+Precompiled binaries for GMP and MPFR in Windows may be available
+from here:
+
+ http://sourceforge.net/projects/ezwinports/files/
+
+or here:
+
+ http://sourceforge.net/projects/mingw/files/MinGW/Base/mpfr/
+ http://sourceforge.net/projects/mingw/files/MinGW/Base/gmp/
+
+You should try to use libraries downloaded from the same site
+to avoid possible incompatibilities.
+
+----
+Gawk has been compiled and tested using the following combinations
+of MPFR and GMP versions on GNU/Linux:
+GNU MPFR 2.4.2, GNU MP 4.3.2
+GNU MPFR 3.1.0, GNU MP 5.0.3
diff --git a/TODO b/TODO
index ab38248c..0b79c026 100644
--- a/TODO
+++ b/TODO
@@ -11,6 +11,8 @@ Really make failure to open a socket a non-fatal error (for 4.1).
?? Scope IDs for IPv6 addresses ??
+Merge the chapter and the appendix on floating-point math (for 4.1).
+
------
Code Review:
diff --git a/aclocal.m4 b/aclocal.m4
index 742da619..1ae4be15 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,7 +1,8 @@
-# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.12 -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
+# Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -13,28 +14,30 @@
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],,
-[m4_warning([this file was generated for autoconf 2.68.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
-To do so, use the procedure documented by the package, typically `autoreconf'.])])
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
-# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
+# serial 8
+
# AM_AUTOMAKE_VERSION(VERSION)
# ----------------------------
# Automake X.Y traces this macro to ensure aclocal.m4 has been
# generated from the m4 files accompanying Automake X.Y.
# (This private macro should not be called outside this file.)
AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.11'
+[am__api_version='1.12'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.11.1], [],
+m4_if([$1], [1.12], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -50,22 +53,24 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.11.1])dnl
+[AM_AUTOMAKE_VERSION([1.12])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
+# serial 2
+
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
-# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
#
# Of course, Automake must honor this variable whenever it calls a
# tool from the auxiliary directory. The problem is that $srcdir (and
@@ -84,7 +89,7 @@ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
#
# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
# are both prefixed by $srcdir. In an in-source build this is usually
-# harmless because $srcdir is `.', but things will broke when you
+# harmless because $srcdir is '.', but things will broke when you
# start a VPATH build or use an absolute $srcdir.
#
# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
@@ -110,22 +115,21 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
# AM_CONDITIONAL -*- Autoconf -*-
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 9
+# serial 10
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
# -------------------------------------
# Define a conditional.
AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ(2.52)dnl
- ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
- [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
AC_SUBST([$1_TRUE])dnl
AC_SUBST([$1_FALSE])dnl
_AM_SUBST_NOTMAKE([$1_TRUE])dnl
@@ -144,16 +148,15 @@ AC_CONFIG_COMMANDS_PRE(
Usually this means the macro was only invoked conditionally.]])
fi])])
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
-# Free Software Foundation, Inc.
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 10
+# serial 16
-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
# written in clear, in which case automake, when reading aclocal.m4,
# will think it sees a *use*, and therefore will trigger all it's
# C support machinery. Also note that it means that autoscan, seeing
@@ -176,12 +179,12 @@ AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
AC_REQUIRE([AM_MAKE_INCLUDE])dnl
AC_REQUIRE([AM_DEP_TRACK])dnl
-ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
- [$1], CXX, [depcc="$CXX" am_compiler_list=],
- [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
- [$1], UPC, [depcc="$UPC" am_compiler_list=],
- [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
- [depcc="$$1" am_compiler_list=])
+m4_if([$1], [CC], [depcc="$CC" am_compiler_list=],
+ [$1], [CXX], [depcc="$CXX" am_compiler_list=],
+ [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], [UPC], [depcc="$UPC" am_compiler_list=],
+ [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
AC_CACHE_CHECK([dependency style of $depcc],
[am_cv_$1_dependencies_compiler_type],
@@ -189,8 +192,9 @@ AC_CACHE_CHECK([dependency style of $depcc],
# We make a subdir and do the tests there. Otherwise we can end up
# making bogus files that we don't know about and never remove. For
# instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named `D' -- because `-MD' means `put the output
- # in D'.
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won't find it if we're
# using a relative directory.
@@ -229,16 +233,16 @@ AC_CACHE_CHECK([dependency style of $depcc],
: > sub/conftest.c
for i in 1 2 3 4 5 6; do
echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
- # Solaris 8's {/usr,}/bin/sh.
- touch sub/conftst$i.h
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
done
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
- # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
# mode. It turns out that the SunPro C++ compiler does not properly
- # handle `-M -o', and we need to detect this. Also, some Intel
- # versions had trouble with output in subdirs
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
am__obj=sub/conftest.${OBJEXT-o}
am__minus_obj="-o $am__obj"
case $depmode in
@@ -247,16 +251,16 @@ AC_CACHE_CHECK([dependency style of $depcc],
test "$am__universal" = false || continue
;;
nosideeffect)
- # after this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
if test "x$enable_dependency_tracking" = xyes; then
continue
else
break
fi
;;
- msvisualcpp | msvcmsys)
- # This compiler won't grok `-c -o', but also, the minuso test has
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
# not run yet. These depmodes are late enough in the game, and
# so weak that their functioning should not be impacted.
am__obj=conftest.${OBJEXT-o}
@@ -304,7 +308,7 @@ AM_CONDITIONAL([am__fastdep$1], [
# AM_SET_DEPDIR
# -------------
# Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
AC_DEFUN([AM_SET_DEPDIR],
[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
@@ -314,28 +318,34 @@ AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
# AM_DEP_TRACK
# ------------
AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE(dependency-tracking,
-[ --disable-dependency-tracking speeds up one-time build
- --enable-dependency-tracking do not reject slow dependency extractors])
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+ [--enable-dependency-tracking],
+ [do not reject slow dependency extractors])
+AS_HELP_STRING(
+ [--disable-dependency-tracking],
+ [speeds up one-time build])])
if test "x$enable_dependency_tracking" != xno; then
am_depcomp="$ac_aux_dir/depcomp"
AMDEPBACKSLASH='\'
+ am__nodep='_no'
fi
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
AC_SUBST([AMDEPBACKSLASH])dnl
_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
])
# Generate code to set up dependency tracking. -*- Autoconf -*-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-#serial 5
+# serial 6
# _AM_OUTPUT_DEPENDENCY_COMMANDS
# ------------------------------
@@ -354,7 +364,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
# Strip MF so we end up with the name of the file.
mf=`echo "$mf" | sed -e 's/:.*$//'`
# Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named `Makefile.in', but
+ # We used to match only the files named 'Makefile.in', but
# some people rename them; so instead we look at the file content.
# Grep'ing the first line is not enough: some people post-process
# each Makefile.in and add a new line on top of each file to say so.
@@ -366,21 +376,19 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
continue
fi
# Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running `make'.
+ # from the Makefile without running 'make'.
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
test -z "am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # When using ansi2knr, U may be empty or an underscore; expand it
- U=`sed -n 's/^U = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
# simplest approach to changing $(DEPDIR) to its actual value in the
# expansion.
for file in `sed -n "
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
fdir=`AS_DIRNAME(["$file"])`
@@ -398,7 +406,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
# This macro should only be invoked once -- use via AC_REQUIRE.
#
# This code is only required when automatic dependency tracking
-# is enabled. FIXME. This creates each `.P' file that we will
+# is enabled. FIXME. This creates each '.P' file that we will
# need in order to bootstrap the dependency handling code.
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
[AC_CONFIG_COMMANDS([depfiles],
@@ -408,14 +416,13 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
# Do all the work for Automake. -*- Autoconf -*-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 16
+# serial 18
# This macro actually does too much. Some checks are only needed if
# your package does certain things. But this isn't really a big deal.
@@ -466,23 +473,25 @@ m4_ifval([$2],
AC_SUBST([VERSION], [$2])],
[_AM_SET_OPTIONS([$1])dnl
dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+m4_if(
+ m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+ [ok:ok],,
[m4_fatal([AC_INIT should be called with package and version arguments])])dnl
AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
# Some tools Automake needs.
AC_REQUIRE([AM_SANITY_CHECK])dnl
AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
-AM_MISSING_PROG(AUTOCONF, autoconf)
-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
-AM_MISSING_PROG(AUTOHEADER, autoheader)
-AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
AC_REQUIRE([AM_PROG_MKDIR_P])dnl
@@ -496,28 +505,28 @@ _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
[_AM_PROG_TAR([v7])])])
_AM_IF_OPTION([no-dependencies],,
[AC_PROVIDE_IFELSE([AC_PROG_CC],
- [_AM_DEPENDENCIES(CC)],
+ [_AM_DEPENDENCIES([CC])],
[define([AC_PROG_CC],
- defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
AC_PROVIDE_IFELSE([AC_PROG_CXX],
- [_AM_DEPENDENCIES(CXX)],
+ [_AM_DEPENDENCIES([CXX])],
[define([AC_PROG_CXX],
- defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
AC_PROVIDE_IFELSE([AC_PROG_OBJC],
- [_AM_DEPENDENCIES(OBJC)],
+ [_AM_DEPENDENCIES([OBJC])],
[define([AC_PROG_OBJC],
- defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
])
_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
-dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
-dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
+dnl The 'parallel-tests' driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
AC_CONFIG_COMMANDS_PRE(dnl
[m4_provide_if([_AM_COMPILER_EXEEXT],
[AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
])
-dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
dnl mangled by Autoconf and run in a shell conditional statement.
m4_define([_AC_COMPILER_EXEEXT],
@@ -545,12 +554,14 @@ for _am_header in $config_headers :; do
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
+# serial 8
+
# AM_PROG_INSTALL_SH
# ------------------
# Define $install_sh.
@@ -564,9 +575,9 @@ if test x"${install_sh}" != xset; then
install_sh="\${SHELL} $am_aux_dir/install-sh"
esac
fi
-AC_SUBST(install_sh)])
+AC_SUBST([install_sh])])
-# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -589,13 +600,13 @@ AC_SUBST([am__leading_dot])])
# Check to see how 'make' treats includes. -*- Autoconf -*-
-# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 4
+# serial 5
# AM_MAKE_INCLUDE()
# -----------------
@@ -614,7 +625,7 @@ am__quote=
_am_result=none
# First try GNU make style include.
echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
+# Ignore all kinds of additional output from 'make'.
case `$am_make -s -f confmf 2> /dev/null` in #(
*the\ am__doit\ target*)
am__include=include
@@ -641,14 +652,13 @@ rm -f confinc confmf
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 6
+# serial 7
# AM_MISSING_PROG(NAME, PROGRAM)
# ------------------------------
@@ -678,19 +688,21 @@ if eval "$MISSING --run true"; then
am_missing_run="$MISSING --run "
else
am_missing_run=
- AC_MSG_WARN([`missing' script is too old or missing])
+ AC_MSG_WARN(['missing' script is too old or missing])
fi
])
-# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
+# serial 2
+
# AM_PROG_MKDIR_P
# ---------------
-# Check for `mkdir -p'.
+# Check for 'mkdir -p'.
AC_DEFUN([AM_PROG_MKDIR_P],
[AC_PREREQ([2.60])dnl
AC_REQUIRE([AC_PROG_MKDIR_P])dnl
@@ -710,13 +722,13 @@ esac
# Helper functions for option handling. -*- Autoconf -*-
-# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 4
+# serial 6
# _AM_MANGLE_OPTION(NAME)
# -----------------------
@@ -724,13 +736,13 @@ AC_DEFUN([_AM_MANGLE_OPTION],
[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
# _AM_SET_OPTION(NAME)
-# ------------------------------
+# --------------------
# Set option NAME. Presently that only means defining a flag for this option.
AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
# _AM_SET_OPTIONS(OPTIONS)
-# ----------------------------------
+# ------------------------
# OPTIONS is a space-separated list of Automake options.
AC_DEFUN([_AM_SET_OPTIONS],
[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
@@ -743,22 +755,18 @@ AC_DEFUN([_AM_IF_OPTION],
# Check to make sure that the build environment is sane. -*- Autoconf -*-
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 5
+# serial 9
# AM_SANITY_CHECK
# ---------------
AC_DEFUN([AM_SANITY_CHECK],
[AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftest.file
# Reject unsafe characters in $srcdir or the absolute working directory
# name. Accept space and tab only in the latter.
am_lf='
@@ -769,32 +777,40 @@ case `pwd` in
esac
case $srcdir in
*[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
- AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+ AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
esac
-# Do `set' in a subshell so we don't clobber the current shell's
+# Do 'set' in a subshell so we don't clobber the current shell's
# arguments. Must try -L first in case configure is actually a
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
if (
- set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
- if test "$[*]" = "X"; then
- # -L didn't work.
- set X `ls -t "$srcdir/configure" conftest.file`
- fi
- rm -f conftest.file
- if test "$[*]" != "X $srcdir/configure conftest.file" \
- && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
-alias in your environment])
- fi
-
+ am_has_slept=no
+ for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+ alias in your environment])
+ fi
+ if test "$[2]" = conftest.file || test $am_try -eq 2; then
+ break
+ fi
+ # Just in case.
+ sleep 1
+ am_has_slept=yes
+ done
test "$[2]" = conftest.file
)
then
@@ -804,43 +820,61 @@ else
AC_MSG_ERROR([newly created file is older than distributed files!
Check your system clock])
fi
-AC_MSG_RESULT(yes)])
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+ ( sleep 1 ) &
+ am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+ [AC_MSG_CHECKING([that generated files are newer than configure])
+ if test -n "$am_sleep_pid"; then
+ # Hide warnings about reused PIDs.
+ wait $am_sleep_pid 2>/dev/null
+ fi
+ AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
+# serial 2
+
# AM_PROG_INSTALL_STRIP
# ---------------------
-# One issue with vendor `install' (even GNU) is that you can't
+# One issue with vendor 'install' (even GNU) is that you can't
# specify the program used to strip binaries. This is especially
# annoying in cross-compiling environments, where the build's strip
# is unlikely to handle the host's binaries.
# Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in `make install-strip', and initialize
+# always use install-sh in "make install-strip", and initialize
# STRIPPROG with the value of the STRIP variable (set by the user).
AC_DEFUN([AM_PROG_INSTALL_STRIP],
[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'. However `strip' might not be the right
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip". However 'strip' might not be the right
# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
if test "$cross_compiling" != no; then
AC_CHECK_TOOL([STRIP], [strip], :)
fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
-# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 2
+# serial 3
# _AM_SUBST_NOTMAKE(VARIABLE)
# ---------------------------
@@ -849,24 +883,24 @@ AC_SUBST([INSTALL_STRIP_PROGRAM])])
AC_DEFUN([_AM_SUBST_NOTMAKE])
# AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
+# --------------------------
# Public sister of _AM_SUBST_NOTMAKE.
AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*-
-# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 2
+# serial 3
# _AM_PROG_TAR(FORMAT)
# --------------------
# Check how to create a tarball in format FORMAT.
-# FORMAT should be one of `v7', `ustar', or `pax'.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
#
# Substitute a variable $(am__tar) that is a command
# writing to stdout a FORMAT-tarball containing the directory
@@ -877,10 +911,11 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# a tarball read from stdin.
# $(am__untar) < result.tar
AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.
-AM_MISSING_PROG([AMTAR], [tar])
+[# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
m4_if([$1], [v7],
- [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
[m4_case([$1], [ustar],, [pax],,
[m4_fatal([Unknown tar format])])
AC_MSG_CHECKING([how to create a $1 tar archive])
@@ -888,7 +923,7 @@ AC_MSG_CHECKING([how to create a $1 tar archive])
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of `-'.
+# Solaris sh will not grok spaces in the rhs of '-'.
for _am_tool in $_am_tools
do
case $_am_tool in
@@ -954,8 +989,6 @@ m4_include([m4/codeset.m4])
m4_include([m4/gettext.m4])
m4_include([m4/iconv.m4])
m4_include([m4/intlmacosx.m4])
-m4_include([m4/intmax_t.m4])
-m4_include([m4/inttypes_h.m4])
m4_include([m4/isc-posix.m4])
m4_include([m4/lcmessage.m4])
m4_include([m4/lib-ld.m4])
@@ -963,11 +996,11 @@ m4_include([m4/lib-link.m4])
m4_include([m4/lib-prefix.m4])
m4_include([m4/libsigsegv.m4])
m4_include([m4/longlong.m4])
+m4_include([m4/mpfr.m4])
m4_include([m4/nls.m4])
+m4_include([m4/noreturn.m4])
m4_include([m4/po.m4])
m4_include([m4/progtest.m4])
m4_include([m4/readline.m4])
m4_include([m4/socket.m4])
-m4_include([m4/stdint_h.m4])
-m4_include([m4/uintmax_t.m4])
m4_include([m4/ulonglong.m4])
diff --git a/array.c b/array.c
index e3bdbf54..c8e230f7 100644
--- a/array.c
+++ b/array.c
@@ -48,9 +48,6 @@ static array_ptr null_array_func[] = {
null_afunc,
null_afunc,
null_dump,
-#ifdef ARRAYDEBUG
- null_afunc
-#endif
};
#define MAX_ATYPE 10
@@ -88,8 +85,10 @@ void
array_init()
{
(void) register_array_func(str_array_func); /* the default */
- (void) register_array_func(int_array_func);
- (void) register_array_func(cint_array_func);
+ if (! do_mpfr) {
+ (void) register_array_func(int_array_func);
+ (void) register_array_func(cint_array_func);
+ }
}
@@ -662,7 +661,6 @@ do_delete_loop(NODE *symbol, NODE **lhs)
/* value_info --- print scalar node info */
-
static void
value_info(NODE *n)
{
@@ -678,11 +676,29 @@ value_info(NODE *n)
if ((n->flags & (STRING|STRCUR)) != 0) {
fprintf(output_fp, "<");
fprintf(output_fp, "\"%.*s\"", PREC_STR, n->stptr);
- if ((n->flags & (NUMBER|NUMCUR)) != 0)
+ if ((n->flags & (NUMBER|NUMCUR)) != 0) {
+#ifdef HAVE_MPFR
+ if (is_mpg_float(n))
+ fprintf(output_fp, ":%s",
+ mpg_fmt("%.*R*g", PREC_NUM, ROUND_MODE, n->mpg_numbr));
+ else if (is_mpg_integer(n))
+ fprintf(output_fp, ":%s", mpg_fmt("%Zd", n->mpg_i));
+ else
+#endif
fprintf(output_fp, ":%.*g", PREC_NUM, n->numbr);
+ }
fprintf(output_fp, ">");
- } else
+ } else {
+#ifdef HAVE_MPFR
+ if (is_mpg_float(n))
+ fprintf(output_fp, "<%s>",
+ mpg_fmt("%.*R*g", PREC_NUM, ROUND_MODE, n->mpg_numbr));
+ else if (is_mpg_integer(n))
+ fprintf(output_fp, "<%s>", mpg_fmt("%Zd", n->mpg_i));
+ else
+#endif
fprintf(output_fp, "<%.*g>", PREC_NUM, n->numbr);
+ }
fprintf(output_fp, ":%s", flags2str(n->flags));
@@ -703,32 +719,6 @@ value_info(NODE *n)
}
-#ifdef ARRAYDEBUG
-
-NODE *
-do_aoption(int nargs)
-{
- int ret = -1;
- NODE *opt, *val;
- int i;
- array_ptr *afunc;
-
- val = POP_SCALAR();
- opt = POP_SCALAR();
- for (i = 0; i < num_atypes; i++) {
- afunc = atypes[i];
- if (afunc[NUM_AFUNCS] && (*afunc[NUM_AFUNCS])(opt, val) != NULL) {
- ret = 0;
- break;
- }
- }
- DEREF(opt);
- DEREF(val);
- return make_number((AWKNUM) ret);
-}
-
-#endif
-
void
indent(int indent_level)
{
@@ -747,7 +737,7 @@ assoc_info(NODE *subs, NODE *val, NODE *ndump, const char *aname)
indent_level++;
indent(indent_level);
fprintf(output_fp, "I: [%s:", aname);
- if ((subs->flags & INTIND) != 0)
+ if ((subs->flags & (MPFN|MPZN|INTIND)) == INTIND)
fprintf(output_fp, "<%ld>", (long) subs->numbr);
else
value_info(subs);
@@ -785,8 +775,8 @@ do_adump(int nargs)
*/
if (nargs == 2) {
- tmp = POP_SCALAR();
- depth = (long) force_number(tmp);
+ tmp = POP_NUMBER();
+ depth = get_number_si(tmp);
DEREF(tmp);
}
symbol = POP_PARAM();
@@ -885,21 +875,19 @@ asort_actual(int nargs, SORT_CTXT ctxt)
result->parent_array = array->parent_array;
}
- subs = make_number((AWKNUM) 0.0);
-
if (ctxt == ASORTI) {
/* We want the indices of the source array. */
for (i = 1, ptr = list; i <= num_elems; i++, ptr += 2) {
- subs->numbr = (AWKNUM) i;
- r = *ptr;
- *assoc_lookup(result, subs) = r;
+ subs = make_number(i);
+ *assoc_lookup(result, subs) = *ptr;
+ unref(subs);
}
} else {
/* We want the values of the source array. */
for (i = 1, ptr = list; i <= num_elems; i++) {
- subs->numbr = (AWKNUM) i;
+ subs = make_number(i);
/* free index node */
r = *ptr++;
@@ -908,8 +896,6 @@ asort_actual(int nargs, SORT_CTXT ctxt)
/* value node */
r = *ptr++;
- /* FIXME: asort(a) optimization */
-
if (r->type == Node_val)
*assoc_lookup(result, subs) = dupnode(r);
else {
@@ -922,10 +908,10 @@ asort_actual(int nargs, SORT_CTXT ctxt)
arr->parent_array = array; /* actual parent, not the temporary one. */
*assoc_lookup(result, subs) = assoc_copy(r, arr);
}
+ unref(subs);
}
}
- unref(subs);
efree(list);
if (result != dest) {
@@ -958,13 +944,13 @@ do_asorti(int nargs)
/*
- * cmp_string --- compare two strings; logic similar to cmp_nodes() in eval.c
+ * cmp_strings --- compare two strings; logic similar to cmp_nodes() in eval.c
* except the extra case-sensitive comparison when the case-insensitive
* result is a match.
*/
static int
-cmp_string(const NODE *n1, const NODE *n2)
+cmp_strings(const NODE *n1, const NODE *n2)
{
char *s1, *s2;
size_t len1, len2;
@@ -1010,7 +996,6 @@ cmp_string(const NODE *n1, const NODE *n2)
return (len1 < len2) ? -1 : 1;
}
-
/* sort_up_index_string --- qsort comparison function; ascending index strings. */
static int
@@ -1021,7 +1006,7 @@ sort_up_index_string(const void *p1, const void *p2)
/* Array indices are strings */
t1 = *((const NODE *const *) p1);
t2 = *((const NODE *const *) p2);
- return cmp_string(t1, t2);
+ return cmp_strings(t1, t2);
}
@@ -1054,15 +1039,14 @@ sort_up_index_number(const void *p1, const void *p2)
t1 = *((const NODE *const *) p1);
t2 = *((const NODE *const *) p2);
- if (t1->numbr < t2->numbr)
- ret = -1;
- else
- ret = (t1->numbr > t2->numbr);
+ ret = cmp_numbers(t1, t2);
+ if (ret != 0)
+ return ret;
/* break a tie with the index string itself */
- if (ret == 0)
- return cmp_string(t1, t2);
- return ret;
+ t1 = force_string((NODE *) t1);
+ t2 = force_string((NODE *) t2);
+ return cmp_strings(t1, t2);
}
/* sort_down_index_number --- qsort comparison function; descending index numbers */
@@ -1092,7 +1076,7 @@ sort_up_value_string(const void *p1, const void *p2)
return -1; /* t1 (scalar) < t2 (sub-array) */
/* t1 and t2 both have string values */
- return cmp_string(t1, t2);
+ return cmp_strings(t1, t2);
}
@@ -1123,23 +1107,17 @@ sort_up_value_number(const void *p1, const void *p2)
if (t2->type == Node_var_array)
return -1; /* t1 (scalar) < t2 (sub-array) */
- /* t1 and t2 both Node_val, and force_number'ed */
- if (t1->numbr < t2->numbr)
- ret = -1;
- else
- ret = (t1->numbr > t2->numbr);
-
- if (ret == 0) {
- /*
- * Use string value to guarantee same sort order on all
- * versions of qsort().
- */
- t1 = force_string(t1);
- t2 = force_string(t2);
- ret = cmp_string(t1, t2);
- }
+ ret = cmp_numbers(t1, t2);
+ if (ret != 0)
+ return ret;
- return ret;
+ /*
+ * Use string value to guarantee same sort order on all
+ * versions of qsort().
+ */
+ t1 = force_string(t1);
+ t2 = force_string(t2);
+ return cmp_strings(t1, t2);
}
@@ -1186,12 +1164,7 @@ sort_up_value_type(const void *p1, const void *p2)
(void) force_string(n2);
if ((n1->flags & NUMBER) != 0 && (n2->flags & NUMBER) != 0) {
- if (n1->numbr < n2->numbr)
- return -1;
- else if (n1->numbr > n2->numbr)
- return 1;
- else
- return 0;
+ return cmp_numbers(n1, n2);
}
/* 3. All numbers are less than all strings. This is aribitrary. */
@@ -1202,7 +1175,7 @@ sort_up_value_type(const void *p1, const void *p2)
}
/* 4. Two strings */
- return cmp_string(n1, n2);
+ return cmp_strings(n1, n2);
}
/* sort_down_value_type --- qsort comparison function; descending value type */
@@ -1218,8 +1191,8 @@ sort_down_value_type(const void *p1, const void *p2)
static int
sort_user_func(const void *p1, const void *p2)
{
- NODE *idx1, *idx2, *val1, *val2;
- AWKNUM ret;
+ NODE *idx1, *idx2, *val1, *val2, *r;
+ int ret;
INSTRUCTION *code;
idx1 = *((NODE *const *) p1);
@@ -1246,9 +1219,21 @@ sort_user_func(const void *p1, const void *p2)
(void) (*interpret)(code);
/* return value of the comparison function */
- POP_NUMBER(ret);
-
- return (ret < 0.0) ? -1 : (ret > 0.0);
+ r = POP_NUMBER();
+#ifdef HAVE_MPFR
+ /*
+ * mpfr_sgn(mpz_sgn): Returns a positive value if op > 0,
+ * zero if op = 0, and a negative value if op < 0.
+ */
+ if (is_mpg_float(r))
+ ret = mpfr_sgn(r->mpg_numbr);
+ else if (is_mpg_integer(r))
+ ret = mpz_sgn(r->mpg_i);
+ else
+#endif
+ ret = (r->numbr < 0.0) ? -1 : (r->numbr > 0.0);
+ DEREF(r);
+ return ret;
}
diff --git a/awk.h b/awk.h
index 26c87177..b1f61338 100644
--- a/awk.h
+++ b/awk.h
@@ -30,6 +30,15 @@
* any system headers. Otherwise, extreme death, destruction
* and loss of life results.
*/
+#if defined(_TANDEM_SOURCE)
+/*
+ * config.h forces this even on non-tandem systems but it
+ * causes problems elsewhere if used in the check below.
+ * so workaround it. bleah.
+ */
+#define tandem_for_real 1
+#endif
+
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
@@ -38,7 +47,7 @@
#define _GNU_SOURCE 1 /* enable GNU extensions */
#endif /* _GNU_SOURCE */
-#if defined(_TANDEM_SOURCE) && ! defined(_SCO_DS)
+#if defined(tandem_for_real) && ! defined(_SCO_DS)
#define _XOPEN_SOURCE_EXTENDED 1
#endif
@@ -80,6 +89,12 @@ extern int errno;
#include <stdlib.h>
#endif /* not STDC_HEADERS */
+#ifdef HAVE_STDBOOL_H
+#include <stdbool.h>
+#else
+#include "missing_d/gawkbool.h"
+#endif
+
#include "mbsupport.h" /* defines MBS_SUPPORT */
#if MBS_SUPPORT
@@ -195,6 +210,18 @@ typedef void *stackoverflow_context_t;
this is a hack but it gives us the right semantics */
#define lintwarn (*(set_loc(__FILE__, __LINE__),lintfunc))
+#ifdef HAVE_MPFR
+#include <gmp.h>
+#include <mpfr.h>
+#ifndef MPFR_RNDN
+/* for compatibility with MPFR 2.X */
+#define MPFR_RNDN GMP_RNDN
+#define MPFR_RNDZ GMP_RNDZ
+#define MPFR_RNDU GMP_RNDU
+#define MPFR_RNDD GMP_RNDD
+#endif
+#endif
+
#include "regex.h"
#include "dfa.h"
typedef struct Regexp {
@@ -204,6 +231,8 @@ typedef struct Regexp {
short dfa;
short has_anchor; /* speed up of avoid_dfa kludge, temporary */
short non_empty; /* for use in fpat_parse_field */
+ short has_meta; /* re has meta chars so (probably) isn't simple string */
+ short maybe_long; /* re has meta chars that can match long text */
} Regexp;
#define RESTART(rp,s) (rp)->regs.start[0]
#define REEND(rp,s) (rp)->regs.end[0]
@@ -369,9 +398,17 @@ typedef struct exp_node {
} nodep;
struct {
+#ifdef HAVE_MPFR
+ union {
+ AWKNUM fltnum;
+ mpfr_t mpnum;
+ mpz_t mpi;
+ } nm;
+#else
AWKNUM fltnum; /* this is here for optimal packing of
* the structure on many machines
*/
+#endif
char *sp;
size_t slen;
long sref;
@@ -402,12 +439,14 @@ typedef struct exp_node {
* lazy conversion to string.
*/
# define WSTRCUR 0x0400 /* wide str value is current */
+# define MPFN 0x0800 /* arbitrary-precision floating-point number */
+# define MPZN 0x1000 /* arbitrary-precision integer */
/* type = Node_var_array */
-# define ARRAYMAXED 0x0800 /* array is at max size */
-# define HALFHAT 0x1000 /* half-capacity Hashed Array Tree;
+# define ARRAYMAXED 0x2000 /* array is at max size */
+# define HALFHAT 0x4000 /* half-capacity Hashed Array Tree;
* See cint_array.c */
-# define XARRAY 0x2000
+# define XARRAY 0x8000
} NODE;
#define vname sub.nodep.name
@@ -446,7 +485,13 @@ typedef struct exp_node {
#define stfmt sub.val.idx
#define wstptr sub.val.wsp
#define wstlen sub.val.wslen
-#define numbr sub.val.fltnum
+#ifdef HAVE_MPFR
+#define mpg_numbr sub.val.nm.mpnum
+#define mpg_i sub.val.nm.mpi
+#define numbr sub.val.nm.fltnum
+#else
+#define numbr sub.val.fltnum
+#endif
/* Node_arrayfor */
#define for_list sub.nodep.r.av
@@ -602,7 +647,7 @@ typedef enum opcodeval {
Op_indirect_func_call,
Op_push, /* scalar variable */
- Op_push_arg, /* variable type (scalar or array) argument to built-in */
+ Op_push_arg, /* variable type (scalar or array) argument to built-in */
Op_push_i, /* number, string */
Op_push_re, /* regex */
Op_push_array,
@@ -655,7 +700,8 @@ typedef enum opcodeval {
enum redirval {
/* I/O redirections */
- redirect_output = 1,
+ redirect_none = 0,
+ redirect_output,
redirect_append,
redirect_pipe,
redirect_pipein,
@@ -990,13 +1036,20 @@ extern NODE *FNR_node, *FS_node, *IGNORECASE_node, *NF_node;
extern NODE *NR_node, *OFMT_node, *OFS_node, *ORS_node, *RLENGTH_node;
extern NODE *RSTART_node, *RS_node, *RT_node, *SUBSEP_node, *PROCINFO_node;
extern NODE *LINT_node, *ERRNO_node, *TEXTDOMAIN_node, *FPAT_node;
+extern NODE *PREC_node, *ROUNDMODE_node;
extern NODE *Nnull_string;
extern NODE *Null_field;
extern NODE **fields_arr;
extern int sourceline;
extern char *source;
extern int (*interpret)(INSTRUCTION *); /* interpreter routine */
+extern NODE *(*make_number)(double); /* double instead of AWKNUM on purpose */
+extern NODE *(*str2number)(NODE *);
+extern NODE *(*format_val)(const char *, int, NODE *);
+extern int (*cmp_numbers)(const NODE *, const NODE *);
+typedef int (*Func_pre_exec)(INSTRUCTION **);
+typedef void (*Func_post_exec)(INSTRUCTION *);
#if __GNUC__ < 2
extern NODE *_t; /* used as temporary in macros */
@@ -1036,7 +1089,8 @@ extern int do_flags;
#define DO_PROFILE 0x1000
/* debug the program */
#define DO_DEBUG 0x2000
-
+/* arbitrary-precision floating-point math */
+#define DO_MPFR 0x4000
#define do_traditional (do_flags & DO_TRADITIONAL)
#define do_posix (do_flags & DO_POSIX)
@@ -1049,7 +1103,7 @@ extern int do_flags;
#define do_tidy_mem (do_flags & DO_TIDY_MEM)
#define do_sandbox (do_flags & DO_SANDBOX)
#define do_debug (do_flags & DO_DEBUG)
-
+#define do_mpfr (do_flags & DO_MPFR)
extern int do_optimize;
extern int use_lc_numeric;
@@ -1077,6 +1131,16 @@ extern int ngroups;
extern struct lconv loc;
#endif /* HAVE_LOCALE_H */
+#ifdef HAVE_MPFR
+extern mpfr_prec_t PRECISION;
+extern mpfr_rnd_t ROUND_MODE;
+extern mpz_t MNR;
+extern mpz_t MFNR;
+extern mpz_t mpzval;
+extern int do_ieee_fmt; /* emulate IEEE 754 floating-point format */
+#endif
+
+
extern const char *myname;
extern const char def_strftime_format[];
@@ -1135,9 +1199,6 @@ extern STACK_ITEM *stack_top;
#define POP_PARAM() ({ NODE *_t = POP(); \
_t->type == Node_var_array ? _t : get_array(_t, FALSE); })
-#define POP_NUMBER(x) ({ NODE *_t = POP_SCALAR(); x = force_number(_t); DEREF(_t); })
-#define TOP_NUMBER(x) ({ NODE *_t = TOP_SCALAR(); x = force_number(_t); DEREF(_t); })
-
#define POP_SCALAR() ({ NODE *_t = POP(); _t->type != Node_var_array ? _t \
: (fatal(_("attempt to use array `%s' in a scalar context"), array_vname(_t)), _t);})
#define TOP_SCALAR() ({ NODE *_t = TOP(); _t->type != Node_var_array ? _t \
@@ -1154,9 +1215,6 @@ extern STACK_ITEM *stack_top;
#define POP_PARAM() (_t = POP(), \
_t->type == Node_var_array ? _t : get_array(_t, FALSE))
-#define POP_NUMBER(x) (_t = POP_SCALAR(), x = force_number(_t), DEREF(_t))
-#define TOP_NUMBER(x) (_t = TOP_SCALAR(), x = force_number(_t), DEREF(_t))
-
#define POP_SCALAR() (_t = POP(), _t->type != Node_var_array ? _t \
: (fatal(_("attempt to use array `%s' in a scalar context"), array_vname(_t)), _t))
#define TOP_SCALAR() (_t = TOP(), _t->type != Node_var_array ? _t \
@@ -1167,7 +1225,48 @@ extern STACK_ITEM *stack_top;
#endif /* __GNUC__ */
+#define POP_NUMBER() force_number(POP_SCALAR())
+#define TOP_NUMBER() force_number(TOP_SCALAR())
+
/* ------------------------- Pseudo-functions ------------------------- */
+#ifdef HAVE_MPFR
+/* conversion to C types */
+#define get_number_ui(n) (((n)->flags & MPFN) ? mpfr_get_ui((n)->mpg_numbr, ROUND_MODE) \
+ : ((n)->flags & MPZN) ? mpz_get_ui((n)->mpg_i) \
+ : (unsigned long) (n)->numbr)
+#define get_number_si(n) (((n)->flags & MPFN) ? mpfr_get_si((n)->mpg_numbr, ROUND_MODE) \
+ : ((n)->flags & MPZN) ? mpz_get_si((n)->mpg_i) \
+ : (long) (n)->numbr)
+#define get_number_d(n) (((n)->flags & MPFN) ? mpfr_get_d((n)->mpg_numbr, ROUND_MODE) \
+ : ((n)->flags & MPZN) ? mpz_get_d((n)->mpg_i) \
+ : (double) (n)->numbr)
+#define get_number_uj(n) (((n)->flags & MPFN) ? mpfr_get_uj((n)->mpg_numbr, ROUND_MODE) \
+ : ((n)->flags & MPZN) ? (uintmax_t) mpz_get_d((n)->mpg_i) \
+ : (uintmax_t) (n)->numbr)
+
+#define iszero(n) (((n)->flags & MPFN) ? mpfr_zero_p((n)->mpg_numbr) \
+ : ((n)->flags & MPZN) ? (mpz_sgn((n)->mpg_i) == 0) \
+ : ((n)->numbr == 0.0))
+
+#define IEEE_FMT(r, t) (void) (do_ieee_fmt && format_ieee(r, t))
+
+#define mpg_float() mpg_node(MPFN)
+#define mpg_integer() mpg_node(MPZN)
+#define is_mpg_float(n) (((n)->flags & MPFN) != 0)
+#define is_mpg_integer(n) (((n)->flags & MPZN) != 0)
+#define is_mpg_number(n) (((n)->flags & (MPZN|MPFN)) != 0)
+#else
+#define get_number_ui(n) (unsigned long) (n)->numbr
+#define get_number_si(n) (long) (n)->numbr
+#define get_number_d(n) (double) (n)->numbr
+#define get_number_uj(n) (uintmax_t) (n)->numbr
+
+#define is_mpg_number(n) 0
+#define is_mpg_float(n) 0
+#define is_mpg_integer(n) 0
+#define iszero(n) ((n)->numbr == 0.0)
+#endif
+
#define is_identchar(c) (isalnum(c) || (c) == '_')
#define var_uninitialized(n) ((n)->var_value == Nnull_string)
@@ -1207,7 +1306,7 @@ extern STACK_ITEM *stack_top;
#define efree(p) free(p)
#ifdef GAWKDEBUG
-#define force_number r_force_number
+#define force_number str2number
#define dupnode r_dupnode
#define unref r_unref
#define m_force_string r_force_string
@@ -1225,8 +1324,8 @@ extern NODE *r_force_string(NODE *s);
#define dupnode(n) __extension__ ({ NODE *_tn = (n); \
(_tn->flags & MALLOC) ? (_tn->valref++, _tn) : r_dupnode(_tn); })
-#define force_number(n) __extension__ ({ NODE *_tn = (n);\
- (_tn->flags & NUMCUR) ? _tn->numbr : r_force_number(_tn); })
+#define force_number(n) __extension__ ({ NODE *_tn = (n); \
+ (_tn->flags & NUMCUR) ? _tn : str2number(_tn); })
#define force_string(s) __extension__ ({ NODE *_ts = (s); m_force_string(_ts); })
@@ -1234,7 +1333,7 @@ extern NODE *r_force_string(NODE *s);
#define dupnode(n) (_t = (n), \
(_t->flags & MALLOC) ? (_t->valref++, _t) : r_dupnode(_t))
-#define force_number r_force_number
+#define force_number str2number
#define force_string(s) (_t = (s), m_force_string(_t))
#endif /* __GNUC__ */
#endif /* GAWKDEBUG */
@@ -1316,6 +1415,7 @@ extern SRCFILE *add_srcfile(int stype, char *src, SRCFILE *curr, int *already_in
extern void register_deferred_variable(const char *name, NODE *(*load_func)(void));
extern int files_are_same(char *path, SRCFILE *src);
extern void valinfo(NODE *n, Func_print print_func, FILE *fp);
+extern void negate_num(NODE *n);
/* builtin.c */
extern double double_to_int(double d);
extern NODE *do_exp(int nargs);
@@ -1365,9 +1465,8 @@ extern int strncasecmpmbs(const unsigned char *,
extern void PUSH_CODE(INSTRUCTION *cp);
extern INSTRUCTION *POP_CODE(void);
extern void init_interpret(void);
-extern int r_interpret(INSTRUCTION *);
-extern int debug_interpret(INSTRUCTION *);
-extern int cmp_nodes(NODE *p1, NODE *p2);
+extern int cmp_nodes(NODE *t1, NODE *t2);
+extern int cmp_awknums(const NODE *t1, const NODE *t2);
extern void set_IGNORECASE(void);
extern void set_OFS(void);
extern void set_ORS(void);
@@ -1388,13 +1487,13 @@ extern const char *flags2str(int);
extern const char *genflags2str(int flagval, const struct flagtab *tab);
extern const char *nodetype2str(NODETYPE type);
extern void load_casetable(void);
-
extern AWKNUM calc_exp(AWKNUM x1, AWKNUM x2);
extern const char *opcode2str(OPCODE type);
extern const char *op2str(OPCODE type);
extern NODE **r_get_lhs(NODE *n, int reference);
extern STACK_ITEM *grow_stack(void);
extern void dump_fcall_stack(FILE *fp);
+extern int register_exec_hook(Func_pre_exec preh, Func_post_exec posth);
/* ext.c */
NODE *do_ext(int nargs);
NODE *load_ext(const char *lib_name, const char *init_func, NODE *obj);
@@ -1454,7 +1553,7 @@ extern int close_io(int *stdio_problem);
extern int devopen(const char *name, const char *mode);
extern int srcopen(SRCFILE *s);
extern char *find_source(const char *src, struct stat *stb, int *errcode, int is_extlib);
-extern NODE *do_getline_redir(int intovar, int redirtype);
+extern NODE *do_getline_redir(int intovar, enum redirval redirtype);
extern NODE *do_getline(int intovar, IOBUF *iop);
extern struct redirect *getredirect(const char *str, int len);
extern int inrec(IOBUF *iop, int *errcode);
@@ -1465,6 +1564,36 @@ extern int is_std_var(const char *var);
extern char *estrdup(const char *str, size_t len);
extern void update_global_values();
extern long getenv_long(const char *name);
+
+/* mpfr.c */
+extern void set_PREC(void);
+extern void set_ROUNDMODE(void);
+#ifdef HAVE_MPFR
+extern int mpg_cmp(const NODE *, const NODE *);
+extern int format_ieee(mpfr_ptr, int);
+extern NODE *mpg_update_var(NODE *);
+extern long mpg_set_var(NODE *);
+extern NODE *do_mpfr_and(int);
+extern NODE *do_mpfr_atan2(int);
+extern NODE *do_mpfr_compl(int);
+extern NODE *do_mpfr_cos(int);
+extern NODE *do_mpfr_exp(int);
+extern NODE *do_mpfr_int(int);
+extern NODE *do_mpfr_log(int);
+extern NODE *do_mpfr_lshift(int);
+extern NODE *do_mpfr_or(int);
+extern NODE *do_mpfr_rand(int);
+extern NODE *do_mpfr_rhift(int);
+extern NODE *do_mpfr_sin(int);
+extern NODE *do_mpfr_sqrt(int);
+extern NODE *do_mpfr_srand(int);
+extern NODE *do_mpfr_strtonum(int);
+extern NODE *do_mpfr_xor(int);
+extern void init_mpfr(mpfr_prec_t, const char *);
+extern NODE *mpg_node(unsigned int);
+extern const char *mpg_fmt(const char *, ...);
+extern int mpg_strtoui(mpz_ptr, char *, size_t, char **, int);
+#endif
/* msg.c */
extern void gawk_exit(int status);
extern void err(const char *s, const char *emsg, va_list argp) ATTRIBUTE_PRINTF(2, 0);
@@ -1483,17 +1612,16 @@ extern void init_profiling(int *flag, const char *def_file);
extern void init_profiling_signals(void);
extern void set_prof_file(const char *filename);
extern void dump_prog(INSTRUCTION *code);
-extern char *pp_number(AWKNUM d);
+extern char *pp_number(NODE *n);
extern char *pp_string(const char *in_str, size_t len, int delim);
extern char *pp_node(NODE *n);
extern int pp_func(INSTRUCTION *pc, void *);
extern void pp_string_fp(Func_print print_func, FILE *fp, const char *str,
size_t namelen, int delim, int breaklines);
/* node.c */
-extern AWKNUM r_force_number(NODE *n);
-extern NODE *format_val(const char *format, int index, NODE *s);
+extern NODE *r_force_number(NODE *n);
+extern NODE *r_format_val(const char *format, int index, NODE *s);
extern NODE *r_dupnode(NODE *n);
-extern NODE *make_number(AWKNUM x);
extern NODE *r_make_str_node(const char *s, size_t len, int flags);
extern void *more_blocks(int id);
extern void r_unref(NODE *tmp);
@@ -1524,8 +1652,7 @@ extern void resyntax(int syntax);
extern void resetup(void);
extern int avoid_dfa(NODE *re, char *str, size_t len);
extern int reisstring(const char *text, size_t len, Regexp *re, const char *buf);
-extern int remaybelong(const char *text, size_t len);
-extern int isnondecimal(const char *str, int use_locale);
+extern int get_numbase(const char *str, int use_locale);
/* symbol.c */
extern NODE *install_symbol(char *name, NODETYPE type);
diff --git a/awkgram.c b/awkgram.c
index 24c102d4..761b839b 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -708,20 +708,20 @@ static const yytype_uint16 yyrline[] =
318, 327, 337, 339, 341, 347, 352, 353, 357, 376,
375, 409, 411, 416, 417, 430, 435, 436, 440, 442,
444, 451, 541, 583, 625, 738, 745, 752, 762, 771,
- 780, 789, 804, 820, 819, 843, 855, 855, 949, 949,
- 974, 997, 1003, 1004, 1010, 1011, 1018, 1023, 1035, 1049,
- 1051, 1057, 1062, 1064, 1072, 1074, 1083, 1084, 1092, 1097,
- 1097, 1108, 1112, 1120, 1121, 1124, 1126, 1131, 1132, 1141,
- 1142, 1147, 1152, 1158, 1160, 1162, 1169, 1170, 1176, 1177,
- 1182, 1184, 1189, 1191, 1193, 1195, 1201, 1208, 1210, 1212,
- 1228, 1238, 1245, 1247, 1252, 1254, 1256, 1264, 1266, 1271,
- 1273, 1278, 1280, 1282, 1332, 1334, 1336, 1338, 1340, 1342,
- 1344, 1346, 1369, 1374, 1379, 1404, 1410, 1412, 1414, 1416,
- 1418, 1420, 1425, 1429, 1460, 1462, 1468, 1474, 1487, 1488,
- 1489, 1494, 1499, 1503, 1507, 1520, 1533, 1538, 1574, 1592,
- 1593, 1599, 1600, 1605, 1607, 1614, 1631, 1648, 1650, 1657,
- 1662, 1670, 1680, 1692, 1701, 1705, 1709, 1713, 1717, 1721,
- 1724, 1726, 1730, 1734, 1738
+ 780, 789, 804, 820, 819, 843, 855, 855, 953, 953,
+ 978, 1001, 1007, 1008, 1014, 1015, 1022, 1027, 1039, 1053,
+ 1055, 1063, 1068, 1070, 1078, 1080, 1089, 1090, 1098, 1103,
+ 1103, 1114, 1118, 1126, 1127, 1130, 1132, 1137, 1138, 1147,
+ 1148, 1153, 1158, 1164, 1166, 1168, 1175, 1176, 1182, 1183,
+ 1188, 1190, 1195, 1197, 1199, 1201, 1207, 1214, 1216, 1218,
+ 1234, 1244, 1251, 1253, 1258, 1260, 1262, 1270, 1272, 1277,
+ 1279, 1284, 1286, 1288, 1338, 1340, 1342, 1344, 1346, 1348,
+ 1350, 1352, 1375, 1380, 1385, 1410, 1416, 1418, 1420, 1422,
+ 1424, 1426, 1431, 1435, 1467, 1469, 1475, 1481, 1494, 1495,
+ 1496, 1501, 1506, 1510, 1514, 1529, 1542, 1547, 1583, 1601,
+ 1602, 1608, 1609, 1614, 1616, 1623, 1640, 1657, 1659, 1666,
+ 1671, 1679, 1689, 1701, 1710, 1714, 1718, 1722, 1726, 1730,
+ 1733, 1735, 1739, 1743, 1747
};
#endif
@@ -2651,16 +2651,16 @@ yyreduce:
} else {
INSTRUCTION *tbreak, *tcont;
- /* [ Op_push_array a ]
- * [ Op_arrayfor_init | ib ]
- * ic:[ Op_arrayfor_incr | ib ]
- * [ Op_var_assign if any ]
- *
- * body
- *
- * [Op_jmp | ic ]
- * ib:[Op_arrayfor_final ]
- */
+ /* [ Op_push_array a ]
+ * [ Op_arrayfor_init | ib ]
+ * ic:[ Op_arrayfor_incr | ib ]
+ * [ Op_var_assign if any ]
+ *
+ * body
+ *
+ * [Op_jmp | ic ]
+ * ib:[Op_arrayfor_final ]
+ */
regular_loop:
ip = (yyvsp[(5) - (8)]);
ip->nexti->opcode = Op_push_array;
@@ -2892,8 +2892,7 @@ regular_loop:
|| ((yyvsp[(3) - (4)])->lasti->opcode == Op_field_spec
&& (yyvsp[(3) - (4)])->nexti->nexti->nexti == (yyvsp[(3) - (4)])->lasti
&& (yyvsp[(3) - (4)])->nexti->nexti->opcode == Op_push_i
- && (yyvsp[(3) - (4)])->nexti->nexti->memory->type == Node_val
- && (yyvsp[(3) - (4)])->nexti->nexti->memory->numbr == 0.0)
+ && (yyvsp[(3) - (4)])->nexti->nexti->memory->type == Node_val)
)
) {
static short warned = FALSE;
@@ -2907,11 +2906,16 @@ regular_loop:
*/
if ((yyvsp[(3) - (4)]) != NULL) {
- bcfree((yyvsp[(3) - (4)])->lasti); /* Op_field_spec */
- unref((yyvsp[(3) - (4)])->nexti->nexti->memory); /* Node_val */
+ NODE *n = (yyvsp[(3) - (4)])->nexti->nexti->memory;
+
+ if (! iszero(n))
+ goto regular_print;
+
+ bcfree((yyvsp[(3) - (4)])->lasti); /* Op_field_spec */
+ unref(n); /* Node_val */
bcfree((yyvsp[(3) - (4)])->nexti->nexti); /* Op_push_i */
- bcfree((yyvsp[(3) - (4)])->nexti); /* Op_list */
- bcfree((yyvsp[(3) - (4)])); /* Op_list */
+ bcfree((yyvsp[(3) - (4)])->nexti); /* Op_list */
+ bcfree((yyvsp[(3) - (4)])); /* Op_list */
} else {
if (do_lint && (rule == BEGIN || rule == END) && ! warned) {
warned = TRUE;
@@ -2923,7 +2927,7 @@ regular_loop:
(yyvsp[(1) - (4)])->expr_count = 0;
(yyvsp[(1) - (4)])->opcode = Op_K_print_rec;
if ((yyvsp[(4) - (4)]) == NULL) { /* no redircetion */
- (yyvsp[(1) - (4)])->redir_type = 0;
+ (yyvsp[(1) - (4)])->redir_type = redirect_none;
(yyval) = list_create((yyvsp[(1) - (4)]));
} else {
INSTRUCTION *ip;
@@ -2943,16 +2947,16 @@ regular_loop:
* [$1 | NULL | redir_type | expr_count]
*
*/
-
+regular_print:
if ((yyvsp[(4) - (4)]) == NULL) { /* no redirection */
if ((yyvsp[(3) - (4)]) == NULL) { /* printf without arg */
(yyvsp[(1) - (4)])->expr_count = 0;
- (yyvsp[(1) - (4)])->redir_type = 0;
+ (yyvsp[(1) - (4)])->redir_type = redirect_none;
(yyval) = list_create((yyvsp[(1) - (4)]));
} else {
INSTRUCTION *t = (yyvsp[(3) - (4)]);
(yyvsp[(1) - (4)])->expr_count = count_expressions(&t, FALSE);
- (yyvsp[(1) - (4)])->redir_type = 0;
+ (yyvsp[(1) - (4)])->redir_type = redirect_none;
(yyval) = list_append(t, (yyvsp[(1) - (4)]));
}
} else {
@@ -2977,14 +2981,14 @@ regular_loop:
case 58:
/* Line 1806 of yacc.c */
-#line 949 "awkgram.y"
+#line 953 "awkgram.y"
{ sub_counter = 0; }
break;
case 59:
/* Line 1806 of yacc.c */
-#line 950 "awkgram.y"
+#line 954 "awkgram.y"
{
char *arr = (yyvsp[(2) - (4)])->lextok;
@@ -3014,7 +3018,7 @@ regular_loop:
case 60:
/* Line 1806 of yacc.c */
-#line 979 "awkgram.y"
+#line 983 "awkgram.y"
{
static short warned = FALSE;
char *arr = (yyvsp[(3) - (4)])->lextok;
@@ -3038,35 +3042,35 @@ regular_loop:
case 61:
/* Line 1806 of yacc.c */
-#line 998 "awkgram.y"
+#line 1002 "awkgram.y"
{ (yyval) = optimize_assignment((yyvsp[(1) - (1)])); }
break;
case 62:
/* Line 1806 of yacc.c */
-#line 1003 "awkgram.y"
+#line 1007 "awkgram.y"
{ (yyval) = NULL; }
break;
case 63:
/* Line 1806 of yacc.c */
-#line 1005 "awkgram.y"
+#line 1009 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 64:
/* Line 1806 of yacc.c */
-#line 1010 "awkgram.y"
+#line 1014 "awkgram.y"
{ (yyval) = NULL; }
break;
case 65:
/* Line 1806 of yacc.c */
-#line 1012 "awkgram.y"
+#line 1016 "awkgram.y"
{
if ((yyvsp[(1) - (2)]) == NULL)
(yyval) = list_create((yyvsp[(2) - (2)]));
@@ -3078,14 +3082,14 @@ regular_loop:
case 66:
/* Line 1806 of yacc.c */
-#line 1019 "awkgram.y"
+#line 1023 "awkgram.y"
{ (yyval) = NULL; }
break;
case 67:
/* Line 1806 of yacc.c */
-#line 1024 "awkgram.y"
+#line 1028 "awkgram.y"
{
INSTRUCTION *casestmt = (yyvsp[(5) - (5)]);
if ((yyvsp[(5) - (5)]) == NULL)
@@ -3102,7 +3106,7 @@ regular_loop:
case 68:
/* Line 1806 of yacc.c */
-#line 1036 "awkgram.y"
+#line 1040 "awkgram.y"
{
INSTRUCTION *casestmt = (yyvsp[(4) - (4)]);
if ((yyvsp[(4) - (4)]) == NULL)
@@ -3118,16 +3122,18 @@ regular_loop:
case 69:
/* Line 1806 of yacc.c */
-#line 1050 "awkgram.y"
+#line 1054 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 70:
/* Line 1806 of yacc.c */
-#line 1052 "awkgram.y"
+#line 1056 "awkgram.y"
{
- (yyvsp[(2) - (2)])->memory->numbr = -(force_number((yyvsp[(2) - (2)])->memory));
+ NODE *n = (yyvsp[(2) - (2)])->memory;
+ (void) force_number(n);
+ negate_num(n);
bcfree((yyvsp[(1) - (2)]));
(yyval) = (yyvsp[(2) - (2)]);
}
@@ -3136,7 +3142,7 @@ regular_loop:
case 71:
/* Line 1806 of yacc.c */
-#line 1058 "awkgram.y"
+#line 1064 "awkgram.y"
{
bcfree((yyvsp[(1) - (2)]));
(yyval) = (yyvsp[(2) - (2)]);
@@ -3146,14 +3152,14 @@ regular_loop:
case 72:
/* Line 1806 of yacc.c */
-#line 1063 "awkgram.y"
+#line 1069 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 73:
/* Line 1806 of yacc.c */
-#line 1065 "awkgram.y"
+#line 1071 "awkgram.y"
{
(yyvsp[(1) - (1)])->opcode = Op_push_re;
(yyval) = (yyvsp[(1) - (1)]);
@@ -3163,21 +3169,21 @@ regular_loop:
case 74:
/* Line 1806 of yacc.c */
-#line 1073 "awkgram.y"
+#line 1079 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 75:
/* Line 1806 of yacc.c */
-#line 1075 "awkgram.y"
+#line 1081 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 77:
/* Line 1806 of yacc.c */
-#line 1085 "awkgram.y"
+#line 1091 "awkgram.y"
{
(yyval) = (yyvsp[(2) - (3)]);
}
@@ -3186,7 +3192,7 @@ regular_loop:
case 78:
/* Line 1806 of yacc.c */
-#line 1092 "awkgram.y"
+#line 1098 "awkgram.y"
{
in_print = FALSE;
in_parens = 0;
@@ -3197,14 +3203,14 @@ regular_loop:
case 79:
/* Line 1806 of yacc.c */
-#line 1097 "awkgram.y"
+#line 1103 "awkgram.y"
{ in_print = FALSE; in_parens = 0; }
break;
case 80:
/* Line 1806 of yacc.c */
-#line 1098 "awkgram.y"
+#line 1104 "awkgram.y"
{
if ((yyvsp[(1) - (3)])->redir_type == redirect_twoway
&& (yyvsp[(3) - (3)])->lasti->opcode == Op_K_getline_redir
@@ -3217,7 +3223,7 @@ regular_loop:
case 81:
/* Line 1806 of yacc.c */
-#line 1109 "awkgram.y"
+#line 1115 "awkgram.y"
{
(yyval) = mk_condition((yyvsp[(3) - (6)]), (yyvsp[(1) - (6)]), (yyvsp[(6) - (6)]), NULL, NULL);
}
@@ -3226,7 +3232,7 @@ regular_loop:
case 82:
/* Line 1806 of yacc.c */
-#line 1114 "awkgram.y"
+#line 1120 "awkgram.y"
{
(yyval) = mk_condition((yyvsp[(3) - (9)]), (yyvsp[(1) - (9)]), (yyvsp[(6) - (9)]), (yyvsp[(7) - (9)]), (yyvsp[(9) - (9)]));
}
@@ -3235,14 +3241,14 @@ regular_loop:
case 87:
/* Line 1806 of yacc.c */
-#line 1131 "awkgram.y"
+#line 1137 "awkgram.y"
{ (yyval) = NULL; }
break;
case 88:
/* Line 1806 of yacc.c */
-#line 1133 "awkgram.y"
+#line 1139 "awkgram.y"
{
bcfree((yyvsp[(1) - (2)]));
(yyval) = (yyvsp[(2) - (2)]);
@@ -3252,21 +3258,21 @@ regular_loop:
case 89:
/* Line 1806 of yacc.c */
-#line 1141 "awkgram.y"
+#line 1147 "awkgram.y"
{ (yyval) = NULL; }
break;
case 90:
/* Line 1806 of yacc.c */
-#line 1143 "awkgram.y"
+#line 1149 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]) ; }
break;
case 91:
/* Line 1806 of yacc.c */
-#line 1148 "awkgram.y"
+#line 1154 "awkgram.y"
{
(yyvsp[(1) - (1)])->param_count = 0;
(yyval) = list_create((yyvsp[(1) - (1)]));
@@ -3276,7 +3282,7 @@ regular_loop:
case 92:
/* Line 1806 of yacc.c */
-#line 1153 "awkgram.y"
+#line 1159 "awkgram.y"
{
(yyvsp[(3) - (3)])->param_count = (yyvsp[(1) - (3)])->lasti->param_count + 1;
(yyval) = list_append((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));
@@ -3287,63 +3293,63 @@ regular_loop:
case 93:
/* Line 1806 of yacc.c */
-#line 1159 "awkgram.y"
+#line 1165 "awkgram.y"
{ (yyval) = NULL; }
break;
case 94:
/* Line 1806 of yacc.c */
-#line 1161 "awkgram.y"
+#line 1167 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (2)]); }
break;
case 95:
/* Line 1806 of yacc.c */
-#line 1163 "awkgram.y"
+#line 1169 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (3)]); }
break;
case 96:
/* Line 1806 of yacc.c */
-#line 1169 "awkgram.y"
+#line 1175 "awkgram.y"
{ (yyval) = NULL; }
break;
case 97:
/* Line 1806 of yacc.c */
-#line 1171 "awkgram.y"
+#line 1177 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 98:
/* Line 1806 of yacc.c */
-#line 1176 "awkgram.y"
+#line 1182 "awkgram.y"
{ (yyval) = NULL; }
break;
case 99:
/* Line 1806 of yacc.c */
-#line 1178 "awkgram.y"
+#line 1184 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 100:
/* Line 1806 of yacc.c */
-#line 1183 "awkgram.y"
+#line 1189 "awkgram.y"
{ (yyval) = mk_expression_list(NULL, (yyvsp[(1) - (1)])); }
break;
case 101:
/* Line 1806 of yacc.c */
-#line 1185 "awkgram.y"
+#line 1191 "awkgram.y"
{
(yyval) = mk_expression_list((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));
yyerrok;
@@ -3353,35 +3359,35 @@ regular_loop:
case 102:
/* Line 1806 of yacc.c */
-#line 1190 "awkgram.y"
+#line 1196 "awkgram.y"
{ (yyval) = NULL; }
break;
case 103:
/* Line 1806 of yacc.c */
-#line 1192 "awkgram.y"
+#line 1198 "awkgram.y"
{ (yyval) = NULL; }
break;
case 104:
/* Line 1806 of yacc.c */
-#line 1194 "awkgram.y"
+#line 1200 "awkgram.y"
{ (yyval) = NULL; }
break;
case 105:
/* Line 1806 of yacc.c */
-#line 1196 "awkgram.y"
+#line 1202 "awkgram.y"
{ (yyval) = NULL; }
break;
case 106:
/* Line 1806 of yacc.c */
-#line 1202 "awkgram.y"
+#line 1208 "awkgram.y"
{
if (do_lint && (yyvsp[(3) - (3)])->lasti->opcode == Op_match_rec)
lintwarn_ln((yyvsp[(2) - (3)])->source_line,
@@ -3393,21 +3399,21 @@ regular_loop:
case 107:
/* Line 1806 of yacc.c */
-#line 1209 "awkgram.y"
+#line 1215 "awkgram.y"
{ (yyval) = mk_boolean((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
case 108:
/* Line 1806 of yacc.c */
-#line 1211 "awkgram.y"
+#line 1217 "awkgram.y"
{ (yyval) = mk_boolean((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
case 109:
/* Line 1806 of yacc.c */
-#line 1213 "awkgram.y"
+#line 1219 "awkgram.y"
{
if ((yyvsp[(1) - (3)])->lasti->opcode == Op_match_rec)
warning_ln((yyvsp[(2) - (3)])->source_line,
@@ -3428,7 +3434,7 @@ regular_loop:
case 110:
/* Line 1806 of yacc.c */
-#line 1229 "awkgram.y"
+#line 1235 "awkgram.y"
{
if (do_lint_old)
warning_ln((yyvsp[(2) - (3)])->source_line,
@@ -3443,7 +3449,7 @@ regular_loop:
case 111:
/* Line 1806 of yacc.c */
-#line 1239 "awkgram.y"
+#line 1245 "awkgram.y"
{
if (do_lint && (yyvsp[(3) - (3)])->lasti->opcode == Op_match_rec)
lintwarn_ln((yyvsp[(2) - (3)])->source_line,
@@ -3455,35 +3461,35 @@ regular_loop:
case 112:
/* Line 1806 of yacc.c */
-#line 1246 "awkgram.y"
+#line 1252 "awkgram.y"
{ (yyval) = mk_condition((yyvsp[(1) - (5)]), (yyvsp[(2) - (5)]), (yyvsp[(3) - (5)]), (yyvsp[(4) - (5)]), (yyvsp[(5) - (5)])); }
break;
case 113:
/* Line 1806 of yacc.c */
-#line 1248 "awkgram.y"
+#line 1254 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 114:
/* Line 1806 of yacc.c */
-#line 1253 "awkgram.y"
+#line 1259 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 115:
/* Line 1806 of yacc.c */
-#line 1255 "awkgram.y"
+#line 1261 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 116:
/* Line 1806 of yacc.c */
-#line 1257 "awkgram.y"
+#line 1263 "awkgram.y"
{
(yyvsp[(2) - (2)])->opcode = Op_assign_quotient;
(yyval) = (yyvsp[(2) - (2)]);
@@ -3493,49 +3499,49 @@ regular_loop:
case 117:
/* Line 1806 of yacc.c */
-#line 1265 "awkgram.y"
+#line 1271 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 118:
/* Line 1806 of yacc.c */
-#line 1267 "awkgram.y"
+#line 1273 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 119:
/* Line 1806 of yacc.c */
-#line 1272 "awkgram.y"
+#line 1278 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 120:
/* Line 1806 of yacc.c */
-#line 1274 "awkgram.y"
+#line 1280 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 121:
/* Line 1806 of yacc.c */
-#line 1279 "awkgram.y"
+#line 1285 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 122:
/* Line 1806 of yacc.c */
-#line 1281 "awkgram.y"
+#line 1287 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 123:
/* Line 1806 of yacc.c */
-#line 1283 "awkgram.y"
+#line 1289 "awkgram.y"
{
int count = 2;
int is_simple_var = FALSE;
@@ -3587,49 +3593,49 @@ regular_loop:
case 125:
/* Line 1806 of yacc.c */
-#line 1335 "awkgram.y"
+#line 1341 "awkgram.y"
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
case 126:
/* Line 1806 of yacc.c */
-#line 1337 "awkgram.y"
+#line 1343 "awkgram.y"
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
case 127:
/* Line 1806 of yacc.c */
-#line 1339 "awkgram.y"
+#line 1345 "awkgram.y"
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
case 128:
/* Line 1806 of yacc.c */
-#line 1341 "awkgram.y"
+#line 1347 "awkgram.y"
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
case 129:
/* Line 1806 of yacc.c */
-#line 1343 "awkgram.y"
+#line 1349 "awkgram.y"
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
case 130:
/* Line 1806 of yacc.c */
-#line 1345 "awkgram.y"
+#line 1351 "awkgram.y"
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
case 131:
/* Line 1806 of yacc.c */
-#line 1347 "awkgram.y"
+#line 1353 "awkgram.y"
{
/*
* In BEGINFILE/ENDFILE, allow `getline var < file'
@@ -3657,7 +3663,7 @@ regular_loop:
case 132:
/* Line 1806 of yacc.c */
-#line 1370 "awkgram.y"
+#line 1376 "awkgram.y"
{
(yyvsp[(2) - (2)])->opcode = Op_postincrement;
(yyval) = mk_assignment((yyvsp[(1) - (2)]), NULL, (yyvsp[(2) - (2)]));
@@ -3667,7 +3673,7 @@ regular_loop:
case 133:
/* Line 1806 of yacc.c */
-#line 1375 "awkgram.y"
+#line 1381 "awkgram.y"
{
(yyvsp[(2) - (2)])->opcode = Op_postdecrement;
(yyval) = mk_assignment((yyvsp[(1) - (2)]), NULL, (yyvsp[(2) - (2)]));
@@ -3677,7 +3683,7 @@ regular_loop:
case 134:
/* Line 1806 of yacc.c */
-#line 1380 "awkgram.y"
+#line 1386 "awkgram.y"
{
if (do_lint_old) {
warning_ln((yyvsp[(4) - (5)])->source_line,
@@ -3702,7 +3708,7 @@ regular_loop:
case 135:
/* Line 1806 of yacc.c */
-#line 1405 "awkgram.y"
+#line 1411 "awkgram.y"
{
(yyval) = mk_getline((yyvsp[(3) - (4)]), (yyvsp[(4) - (4)]), (yyvsp[(1) - (4)]), (yyvsp[(2) - (4)])->redir_type);
bcfree((yyvsp[(2) - (4)]));
@@ -3712,49 +3718,49 @@ regular_loop:
case 136:
/* Line 1806 of yacc.c */
-#line 1411 "awkgram.y"
+#line 1417 "awkgram.y"
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
case 137:
/* Line 1806 of yacc.c */
-#line 1413 "awkgram.y"
+#line 1419 "awkgram.y"
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
case 138:
/* Line 1806 of yacc.c */
-#line 1415 "awkgram.y"
+#line 1421 "awkgram.y"
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
case 139:
/* Line 1806 of yacc.c */
-#line 1417 "awkgram.y"
+#line 1423 "awkgram.y"
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
case 140:
/* Line 1806 of yacc.c */
-#line 1419 "awkgram.y"
+#line 1425 "awkgram.y"
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
case 141:
/* Line 1806 of yacc.c */
-#line 1421 "awkgram.y"
+#line 1427 "awkgram.y"
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
case 142:
/* Line 1806 of yacc.c */
-#line 1426 "awkgram.y"
+#line 1432 "awkgram.y"
{
(yyval) = list_create((yyvsp[(1) - (1)]));
}
@@ -3763,7 +3769,7 @@ regular_loop:
case 143:
/* Line 1806 of yacc.c */
-#line 1430 "awkgram.y"
+#line 1436 "awkgram.y"
{
if ((yyvsp[(2) - (2)])->opcode == Op_match_rec) {
(yyvsp[(2) - (2)])->opcode = Op_nomatch;
@@ -3774,6 +3780,7 @@ regular_loop:
} else {
if (do_optimize > 1 && (yyvsp[(2) - (2)])->nexti == (yyvsp[(2) - (2)])->lasti
&& (yyvsp[(2) - (2)])->nexti->opcode == Op_push_i
+ && ((yyvsp[(2) - (2)])->nexti->memory->flags & (MPFN|MPZN)) == 0
) {
NODE *n = (yyvsp[(2) - (2)])->nexti->memory;
if ((n->flags & (STRCUR|STRING)) != 0) {
@@ -3799,14 +3806,14 @@ regular_loop:
case 144:
/* Line 1806 of yacc.c */
-#line 1461 "awkgram.y"
+#line 1468 "awkgram.y"
{ (yyval) = (yyvsp[(2) - (3)]); }
break;
case 145:
/* Line 1806 of yacc.c */
-#line 1463 "awkgram.y"
+#line 1470 "awkgram.y"
{
(yyval) = snode((yyvsp[(3) - (4)]), (yyvsp[(1) - (4)]));
if ((yyval) == NULL)
@@ -3817,7 +3824,7 @@ regular_loop:
case 146:
/* Line 1806 of yacc.c */
-#line 1469 "awkgram.y"
+#line 1476 "awkgram.y"
{
(yyval) = snode((yyvsp[(3) - (4)]), (yyvsp[(1) - (4)]));
if ((yyval) == NULL)
@@ -3828,7 +3835,7 @@ regular_loop:
case 147:
/* Line 1806 of yacc.c */
-#line 1475 "awkgram.y"
+#line 1482 "awkgram.y"
{
static short warned1 = FALSE;
@@ -3846,7 +3853,7 @@ regular_loop:
case 150:
/* Line 1806 of yacc.c */
-#line 1490 "awkgram.y"
+#line 1497 "awkgram.y"
{
(yyvsp[(1) - (2)])->opcode = Op_preincrement;
(yyval) = mk_assignment((yyvsp[(2) - (2)]), NULL, (yyvsp[(1) - (2)]));
@@ -3856,7 +3863,7 @@ regular_loop:
case 151:
/* Line 1806 of yacc.c */
-#line 1495 "awkgram.y"
+#line 1502 "awkgram.y"
{
(yyvsp[(1) - (2)])->opcode = Op_predecrement;
(yyval) = mk_assignment((yyvsp[(2) - (2)]), NULL, (yyvsp[(1) - (2)]));
@@ -3866,7 +3873,7 @@ regular_loop:
case 152:
/* Line 1806 of yacc.c */
-#line 1500 "awkgram.y"
+#line 1507 "awkgram.y"
{
(yyval) = list_create((yyvsp[(1) - (1)]));
}
@@ -3875,7 +3882,7 @@ regular_loop:
case 153:
/* Line 1806 of yacc.c */
-#line 1504 "awkgram.y"
+#line 1511 "awkgram.y"
{
(yyval) = list_create((yyvsp[(1) - (1)]));
}
@@ -3884,12 +3891,14 @@ regular_loop:
case 154:
/* Line 1806 of yacc.c */
-#line 1508 "awkgram.y"
+#line 1515 "awkgram.y"
{
if ((yyvsp[(2) - (2)])->lasti->opcode == Op_push_i
&& ((yyvsp[(2) - (2)])->lasti->memory->flags & (STRCUR|STRING)) == 0
) {
- (yyvsp[(2) - (2)])->lasti->memory->numbr = -(force_number((yyvsp[(2) - (2)])->lasti->memory));
+ NODE *n = (yyvsp[(2) - (2)])->lasti->memory;
+ (void) force_number(n);
+ negate_num(n);
(yyval) = (yyvsp[(2) - (2)]);
bcfree((yyvsp[(1) - (2)]));
} else {
@@ -3902,7 +3911,7 @@ regular_loop:
case 155:
/* Line 1806 of yacc.c */
-#line 1521 "awkgram.y"
+#line 1530 "awkgram.y"
{
/*
* was: $$ = $2
@@ -3917,7 +3926,7 @@ regular_loop:
case 156:
/* Line 1806 of yacc.c */
-#line 1534 "awkgram.y"
+#line 1543 "awkgram.y"
{
func_use((yyvsp[(1) - (1)])->lasti->func_name, FUNC_USE);
(yyval) = (yyvsp[(1) - (1)]);
@@ -3927,7 +3936,7 @@ regular_loop:
case 157:
/* Line 1806 of yacc.c */
-#line 1539 "awkgram.y"
+#line 1548 "awkgram.y"
{
/* indirect function call */
INSTRUCTION *f, *t;
@@ -3965,7 +3974,7 @@ regular_loop:
case 158:
/* Line 1806 of yacc.c */
-#line 1575 "awkgram.y"
+#line 1584 "awkgram.y"
{
param_sanity((yyvsp[(3) - (4)]));
(yyvsp[(1) - (4)])->opcode = Op_func_call;
@@ -3984,42 +3993,42 @@ regular_loop:
case 159:
/* Line 1806 of yacc.c */
-#line 1592 "awkgram.y"
+#line 1601 "awkgram.y"
{ (yyval) = NULL; }
break;
case 160:
/* Line 1806 of yacc.c */
-#line 1594 "awkgram.y"
+#line 1603 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 161:
/* Line 1806 of yacc.c */
-#line 1599 "awkgram.y"
+#line 1608 "awkgram.y"
{ (yyval) = NULL; }
break;
case 162:
/* Line 1806 of yacc.c */
-#line 1601 "awkgram.y"
+#line 1610 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (2)]); }
break;
case 163:
/* Line 1806 of yacc.c */
-#line 1606 "awkgram.y"
+#line 1615 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 164:
/* Line 1806 of yacc.c */
-#line 1608 "awkgram.y"
+#line 1617 "awkgram.y"
{
(yyval) = list_merge((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
}
@@ -4028,7 +4037,7 @@ regular_loop:
case 165:
/* Line 1806 of yacc.c */
-#line 1615 "awkgram.y"
+#line 1624 "awkgram.y"
{
INSTRUCTION *ip = (yyvsp[(1) - (1)])->lasti;
int count = ip->sub_count; /* # of SUBSEP-seperated expressions */
@@ -4047,7 +4056,7 @@ regular_loop:
case 166:
/* Line 1806 of yacc.c */
-#line 1632 "awkgram.y"
+#line 1641 "awkgram.y"
{
INSTRUCTION *t = (yyvsp[(2) - (3)]);
if ((yyvsp[(2) - (3)]) == NULL) {
@@ -4066,14 +4075,14 @@ regular_loop:
case 167:
/* Line 1806 of yacc.c */
-#line 1649 "awkgram.y"
+#line 1658 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 168:
/* Line 1806 of yacc.c */
-#line 1651 "awkgram.y"
+#line 1660 "awkgram.y"
{
(yyval) = list_merge((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
}
@@ -4082,14 +4091,14 @@ regular_loop:
case 169:
/* Line 1806 of yacc.c */
-#line 1658 "awkgram.y"
+#line 1667 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (2)]); }
break;
case 170:
/* Line 1806 of yacc.c */
-#line 1663 "awkgram.y"
+#line 1672 "awkgram.y"
{
char *var_name = (yyvsp[(1) - (1)])->lextok;
@@ -4102,7 +4111,7 @@ regular_loop:
case 171:
/* Line 1806 of yacc.c */
-#line 1671 "awkgram.y"
+#line 1680 "awkgram.y"
{
char *arr = (yyvsp[(1) - (2)])->lextok;
(yyvsp[(1) - (2)])->memory = variable((yyvsp[(1) - (2)])->source_line, arr, Node_var_new);
@@ -4114,7 +4123,7 @@ regular_loop:
case 172:
/* Line 1806 of yacc.c */
-#line 1681 "awkgram.y"
+#line 1690 "awkgram.y"
{
INSTRUCTION *ip = (yyvsp[(1) - (1)])->nexti;
if (ip->opcode == Op_push
@@ -4131,7 +4140,7 @@ regular_loop:
case 173:
/* Line 1806 of yacc.c */
-#line 1693 "awkgram.y"
+#line 1702 "awkgram.y"
{
(yyval) = list_append((yyvsp[(2) - (3)]), (yyvsp[(1) - (3)]));
if ((yyvsp[(3) - (3)]) != NULL)
@@ -4142,7 +4151,7 @@ regular_loop:
case 174:
/* Line 1806 of yacc.c */
-#line 1702 "awkgram.y"
+#line 1711 "awkgram.y"
{
(yyvsp[(1) - (1)])->opcode = Op_postincrement;
}
@@ -4151,7 +4160,7 @@ regular_loop:
case 175:
/* Line 1806 of yacc.c */
-#line 1706 "awkgram.y"
+#line 1715 "awkgram.y"
{
(yyvsp[(1) - (1)])->opcode = Op_postdecrement;
}
@@ -4160,49 +4169,49 @@ regular_loop:
case 176:
/* Line 1806 of yacc.c */
-#line 1709 "awkgram.y"
+#line 1718 "awkgram.y"
{ (yyval) = NULL; }
break;
case 178:
/* Line 1806 of yacc.c */
-#line 1717 "awkgram.y"
+#line 1726 "awkgram.y"
{ yyerrok; }
break;
case 179:
/* Line 1806 of yacc.c */
-#line 1721 "awkgram.y"
+#line 1730 "awkgram.y"
{ yyerrok; }
break;
case 182:
/* Line 1806 of yacc.c */
-#line 1730 "awkgram.y"
+#line 1739 "awkgram.y"
{ yyerrok; }
break;
case 183:
/* Line 1806 of yacc.c */
-#line 1734 "awkgram.y"
+#line 1743 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); yyerrok; }
break;
case 184:
/* Line 1806 of yacc.c */
-#line 1738 "awkgram.y"
+#line 1747 "awkgram.y"
{ yyerrok; }
break;
/* Line 1806 of yacc.c */
-#line 4218 "awkgram.c"
+#line 4227 "awkgram.c"
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
@@ -4433,7 +4442,7 @@ yyreturn:
/* Line 2067 of yacc.c */
-#line 1740 "awkgram.y"
+#line 1749 "awkgram.y"
struct token {
@@ -4452,6 +4461,7 @@ struct token {
# define CONTINUE 0x2000 /* continue allowed inside */
NODE *(*ptr)(int); /* function that implements this keyword */
+ NODE *(*ptr2)(int); /* alternate arbitrary-precision function */
};
#if 'a' == 0x81 /* it's EBCDIC */
@@ -4475,81 +4485,84 @@ tokcompare(const void *l, const void *r)
* Function pointers come from declarations in awk.h.
*/
-static const struct token tokentab[] = {
-{"BEGIN", Op_rule, LEX_BEGIN, 0, 0},
-{"BEGINFILE", Op_rule, LEX_BEGINFILE, GAWKX, 0},
-{"END", Op_rule, LEX_END, 0, 0},
-{"ENDFILE", Op_rule, LEX_ENDFILE, GAWKX, 0},
-#ifdef ARRAYDEBUG
-{"adump", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2), do_adump},
+#ifdef HAVE_MPFR
+#define MPF(F) do_mpfr_##F
+#else
+#define MPF(F) 0
#endif
-{"and", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_and},
+
+static const struct token tokentab[] = {
+{"BEGIN", Op_rule, LEX_BEGIN, 0, 0, 0},
+{"BEGINFILE", Op_rule, LEX_BEGINFILE, GAWKX, 0, 0},
+{"END", Op_rule, LEX_END, 0, 0, 0},
+{"ENDFILE", Op_rule, LEX_ENDFILE, GAWKX, 0, 0},
#ifdef ARRAYDEBUG
-{"aoption", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_aoption},
+{"adump", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2), do_adump, 0},
#endif
-{"asort", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2)|A(3), do_asort},
-{"asorti", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2)|A(3), do_asorti},
-{"atan2", Op_builtin, LEX_BUILTIN, NOT_OLD|A(2), do_atan2},
-{"bindtextdomain", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2), do_bindtextdomain},
-{"break", Op_K_break, LEX_BREAK, 0, 0},
-{"case", Op_K_case, LEX_CASE, GAWKX, 0},
-{"close", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1)|A(2), do_close},
-{"compl", Op_builtin, LEX_BUILTIN, GAWKX|A(1), do_compl},
-{"continue", Op_K_continue, LEX_CONTINUE, 0, 0},
-{"cos", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_cos},
-{"dcgettext", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2)|A(3), do_dcgettext},
-{"dcngettext", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2)|A(3)|A(4)|A(5), do_dcngettext},
-{"default", Op_K_default, LEX_DEFAULT, GAWKX, 0},
-{"delete", Op_K_delete, LEX_DELETE, NOT_OLD, 0},
-{"do", Op_K_do, LEX_DO, NOT_OLD|BREAK|CONTINUE, 0},
-{"else", Op_K_else, LEX_ELSE, 0, 0},
-{"eval", Op_symbol, LEX_EVAL, 0, 0},
-{"exit", Op_K_exit, LEX_EXIT, 0, 0},
-{"exp", Op_builtin, LEX_BUILTIN, A(1), do_exp},
-{"extension", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_ext},
-{"fflush", Op_builtin, LEX_BUILTIN, RESX|A(0)|A(1), do_fflush},
-{"for", Op_K_for, LEX_FOR, BREAK|CONTINUE, 0},
-{"func", Op_func, LEX_FUNCTION, NOT_POSIX|NOT_OLD, 0},
-{"function",Op_func, LEX_FUNCTION, NOT_OLD, 0},
-{"gensub", Op_sub_builtin, LEX_BUILTIN, GAWKX|A(3)|A(4), 0},
-{"getline", Op_K_getline_redir, LEX_GETLINE, NOT_OLD, 0},
-{"gsub", Op_sub_builtin, LEX_BUILTIN, NOT_OLD|A(2)|A(3), 0},
-{"if", Op_K_if, LEX_IF, 0, 0},
-{"in", Op_symbol, LEX_IN, 0, 0},
-{"include", Op_symbol, LEX_INCLUDE, GAWKX, 0},
-{"index", Op_builtin, LEX_BUILTIN, A(2), do_index},
-{"int", Op_builtin, LEX_BUILTIN, A(1), do_int},
-{"isarray", Op_builtin, LEX_BUILTIN, GAWKX|A(1), do_isarray},
-{"length", Op_builtin, LEX_LENGTH, A(0)|A(1), do_length},
-{"log", Op_builtin, LEX_BUILTIN, A(1), do_log},
-{"lshift", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_lshift},
-{"match", Op_builtin, LEX_BUILTIN, NOT_OLD|A(2)|A(3), do_match},
-{"mktime", Op_builtin, LEX_BUILTIN, GAWKX|A(1), do_mktime},
-{"next", Op_K_next, LEX_NEXT, 0, 0},
-{"nextfile", Op_K_nextfile, LEX_NEXTFILE, GAWKX, 0},
-{"or", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_or},
-{"patsplit", Op_builtin, LEX_BUILTIN, GAWKX|A(2)|A(3)|A(4), do_patsplit},
-{"print", Op_K_print, LEX_PRINT, 0, 0},
-{"printf", Op_K_printf, LEX_PRINTF, 0, 0},
-{"rand", Op_builtin, LEX_BUILTIN, NOT_OLD|A(0), do_rand},
-{"return", Op_K_return, LEX_RETURN, NOT_OLD, 0},
-{"rshift", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_rshift},
-{"sin", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_sin},
-{"split", Op_builtin, LEX_BUILTIN, A(2)|A(3)|A(4), do_split},
-{"sprintf", Op_builtin, LEX_BUILTIN, 0, do_sprintf},
-{"sqrt", Op_builtin, LEX_BUILTIN, A(1), do_sqrt},
-{"srand", Op_builtin, LEX_BUILTIN, NOT_OLD|A(0)|A(1), do_srand},
-{"strftime", Op_builtin, LEX_BUILTIN, GAWKX|A(0)|A(1)|A(2)|A(3), do_strftime},
-{"strtonum", Op_builtin, LEX_BUILTIN, GAWKX|A(1), do_strtonum},
-{"sub", Op_sub_builtin, LEX_BUILTIN, NOT_OLD|A(2)|A(3), 0},
-{"substr", Op_builtin, LEX_BUILTIN, A(2)|A(3), do_substr},
-{"switch", Op_K_switch, LEX_SWITCH, GAWKX|BREAK, 0},
-{"system", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_system},
-{"systime", Op_builtin, LEX_BUILTIN, GAWKX|A(0), do_systime},
-{"tolower", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_tolower},
-{"toupper", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_toupper},
-{"while", Op_K_while, LEX_WHILE, BREAK|CONTINUE, 0},
-{"xor", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_xor},
+{"and", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_and, MPF(and)},
+{"asort", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2)|A(3), do_asort, 0},
+{"asorti", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2)|A(3), do_asorti, 0},
+{"atan2", Op_builtin, LEX_BUILTIN, NOT_OLD|A(2), do_atan2, MPF(atan2)},
+{"bindtextdomain", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2), do_bindtextdomain, 0},
+{"break", Op_K_break, LEX_BREAK, 0, 0, 0},
+{"case", Op_K_case, LEX_CASE, GAWKX, 0, 0},
+{"close", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1)|A(2), do_close, 0},
+{"compl", Op_builtin, LEX_BUILTIN, GAWKX|A(1), do_compl, MPF(compl)},
+{"continue", Op_K_continue, LEX_CONTINUE, 0, 0, 0},
+{"cos", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_cos, MPF(cos)},
+{"dcgettext", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2)|A(3), do_dcgettext, 0},
+{"dcngettext", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2)|A(3)|A(4)|A(5), do_dcngettext, 0},
+{"default", Op_K_default, LEX_DEFAULT, GAWKX, 0, 0},
+{"delete", Op_K_delete, LEX_DELETE, NOT_OLD, 0, 0},
+{"do", Op_K_do, LEX_DO, NOT_OLD|BREAK|CONTINUE, 0, 0},
+{"else", Op_K_else, LEX_ELSE, 0, 0, 0},
+{"eval", Op_symbol, LEX_EVAL, 0, 0, 0},
+{"exit", Op_K_exit, LEX_EXIT, 0, 0, 0},
+{"exp", Op_builtin, LEX_BUILTIN, A(1), do_exp, MPF(exp)},
+{"extension", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_ext, 0},
+{"fflush", Op_builtin, LEX_BUILTIN, RESX|A(0)|A(1), do_fflush, 0},
+{"for", Op_K_for, LEX_FOR, BREAK|CONTINUE, 0, 0},
+{"func", Op_func, LEX_FUNCTION, NOT_POSIX|NOT_OLD, 0, 0},
+{"function",Op_func, LEX_FUNCTION, NOT_OLD, 0, 0},
+{"gensub", Op_sub_builtin, LEX_BUILTIN, GAWKX|A(3)|A(4), 0, 0},
+{"getline", Op_K_getline_redir, LEX_GETLINE, NOT_OLD, 0, 0},
+{"gsub", Op_sub_builtin, LEX_BUILTIN, NOT_OLD|A(2)|A(3), 0, 0},
+{"if", Op_K_if, LEX_IF, 0, 0, 0},
+{"in", Op_symbol, LEX_IN, 0, 0, 0},
+{"include", Op_symbol, LEX_INCLUDE, GAWKX, 0, 0},
+{"index", Op_builtin, LEX_BUILTIN, A(2), do_index, 0},
+{"int", Op_builtin, LEX_BUILTIN, A(1), do_int, MPF(int)},
+{"isarray", Op_builtin, LEX_BUILTIN, GAWKX|A(1), do_isarray, 0},
+{"length", Op_builtin, LEX_LENGTH, A(0)|A(1), do_length, 0},
+{"log", Op_builtin, LEX_BUILTIN, A(1), do_log, MPF(log)},
+{"lshift", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_lshift, MPF(lshift)},
+{"match", Op_builtin, LEX_BUILTIN, NOT_OLD|A(2)|A(3), do_match, 0},
+{"mktime", Op_builtin, LEX_BUILTIN, GAWKX|A(1), do_mktime, 0},
+{"next", Op_K_next, LEX_NEXT, 0, 0, 0},
+{"nextfile", Op_K_nextfile, LEX_NEXTFILE, GAWKX, 0, 0},
+{"or", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_or, MPF(or)},
+{"patsplit", Op_builtin, LEX_BUILTIN, GAWKX|A(2)|A(3)|A(4), do_patsplit, 0},
+{"print", Op_K_print, LEX_PRINT, 0, 0, 0},
+{"printf", Op_K_printf, LEX_PRINTF, 0, 0, 0},
+{"rand", Op_builtin, LEX_BUILTIN, NOT_OLD|A(0), do_rand, MPF(rand)},
+{"return", Op_K_return, LEX_RETURN, NOT_OLD, 0, 0},
+{"rshift", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_rshift, MPF(rhift)},
+{"sin", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_sin, MPF(sin)},
+{"split", Op_builtin, LEX_BUILTIN, A(2)|A(3)|A(4), do_split, 0},
+{"sprintf", Op_builtin, LEX_BUILTIN, 0, do_sprintf, 0},
+{"sqrt", Op_builtin, LEX_BUILTIN, A(1), do_sqrt, MPF(sqrt)},
+{"srand", Op_builtin, LEX_BUILTIN, NOT_OLD|A(0)|A(1), do_srand, MPF(srand)},
+{"strftime", Op_builtin, LEX_BUILTIN, GAWKX|A(0)|A(1)|A(2)|A(3), do_strftime, 0},
+{"strtonum", Op_builtin, LEX_BUILTIN, GAWKX|A(1), do_strtonum, MPF(strtonum)},
+{"sub", Op_sub_builtin, LEX_BUILTIN, NOT_OLD|A(2)|A(3), 0, 0},
+{"substr", Op_builtin, LEX_BUILTIN, A(2)|A(3), do_substr, 0},
+{"switch", Op_K_switch, LEX_SWITCH, GAWKX|BREAK, 0, 0},
+{"system", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_system, 0},
+{"systime", Op_builtin, LEX_BUILTIN, GAWKX|A(0), do_systime, 0},
+{"tolower", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_tolower, 0},
+{"toupper", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_toupper, 0},
+{"while", Op_K_while, LEX_WHILE, BREAK|CONTINUE, 0, 0},
+{"xor", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_xor, MPF(xor)},
};
#if MBS_SUPPORT
@@ -4585,6 +4598,23 @@ getfname(NODE *(*fptr)(int))
return NULL;
}
+/* negate_num --- negate a number in NODE */
+
+void
+negate_num(NODE *n)
+{
+#ifdef HAVE_MPFR
+ if (is_mpg_float(n)) {
+ int tval;
+ tval = mpfr_neg(n->mpg_numbr, n->mpg_numbr, ROUND_MODE);
+ IEEE_FMT(n->mpg_numbr, tval);
+ } else if (is_mpg_integer(n)) {
+ mpz_neg(n->mpg_i, n->mpg_i);
+ } else
+#endif
+ n->numbr = -n->numbr;
+}
+
/* print_included_from --- print `Included from ..' file names and locations */
static void
@@ -5450,6 +5480,32 @@ allow_newline(void)
}
}
+/* newline_eof --- return newline or EOF as needed and adjust variables */
+
+/*
+ * This routine used to be a macro, however GCC 4.6.2 warned about
+ * the result of a computation not being used. Converting to a function
+ * removes the warnings.
+ */
+
+static int newline_eof()
+{
+ /* NB: a newline at end does not start a source line. */
+ if (lasttok != NEWLINE) {
+ pushback();
+ if (do_lint && ! eof_warned) {
+ lintwarn(_("source file does not end in newline"));
+ eof_warned = TRUE;
+ }
+ sourceline++;
+ return NEWLINE;
+ }
+
+ sourceline--;
+ eof_warned = FALSE;
+ return LEX_EOF;
+}
+
/* yylex --- Read the input and turn it into tokens. */
static int
@@ -5460,6 +5516,7 @@ yylex(void)
int seen_point = FALSE;
int esc_seen; /* for literal strings */
int mid;
+ int base;
static int did_newline = FALSE;
char *tokkey;
int inhex = FALSE;
@@ -5468,15 +5525,7 @@ yylex(void)
#define GET_INSTRUCTION(op) bcalloc(op, 1, sourceline)
- /* NB: a newline at end does not start a source line. */
-
-#define NEWLINE_EOF \
- (lasttok != NEWLINE ? \
- (pushback(), do_lint && ! eof_warned && \
- (lintwarn(_("source file does not end in newline")), \
- eof_warned = TRUE), sourceline++, NEWLINE) : \
- (sourceline--, eof_warned = FALSE, LEX_EOF))
-
+#define NEWLINE_EOF newline_eof()
yylval = (INSTRUCTION *) NULL;
if (lasttok == SUBSCRIPT) {
@@ -6036,17 +6085,42 @@ retry:
tokadd('\0');
yylval = GET_INSTRUCTION(Op_push_i);
- if (! do_traditional && isnondecimal(tokstart, FALSE)) {
+
+ base = 10;
+ if (! do_traditional) {
+ base = get_numbase(tokstart, FALSE);
if (do_lint) {
- if (isdigit((unsigned char) tokstart[1])) /* not an 'x' or 'X' */
+ if (base == 8)
lintwarn("numeric constant `%.*s' treated as octal",
(int) strlen(tokstart)-1, tokstart);
- else if (tokstart[1] == 'x' || tokstart[1] == 'X')
+ else if (base == 16)
lintwarn("numeric constant `%.*s' treated as hexadecimal",
(int) strlen(tokstart)-1, tokstart);
}
+ }
+
+#ifdef HAVE_MPFR
+ if (do_mpfr) {
+ NODE *r;
+
+ if (! seen_point && ! seen_e) {
+ r = mpg_integer();
+ mpg_strtoui(r->mpg_i, tokstart, strlen(tokstart), NULL, base);
+ errno = 0;
+ } else {
+ int tval;
+ r = mpg_float();
+ tval = mpfr_strtofr(r->mpg_numbr, tokstart, NULL, base, ROUND_MODE);
+ errno = 0;
+ IEEE_FMT(r->mpg_numbr, tval);
+ }
+ yylval->memory = r;
+ return lasttok = YNUMBER;
+ }
+#endif
+ if (base != 10)
d = nondec2awknum(tokstart, strlen(tokstart));
- } else
+ else
d = atof(tokstart);
yylval->memory = make_number(d);
if (d <= INT32_MAX && d >= INT32_MIN && d == (int32_t) d)
@@ -6332,7 +6406,13 @@ snode(INSTRUCTION *subn, INSTRUCTION *r)
}
}
- r->builtin = tokentab[idx].ptr;
+#ifdef HAVE_MPFR
+ /* N.B.: There isn't any special processing for an alternate function below */
+ if (do_mpfr && tokentab[idx].ptr2)
+ r->builtin = tokentab[idx].ptr2;
+ else
+#endif
+ r->builtin = tokentab[idx].ptr;
/* special case processing for a few builtins */
@@ -6538,14 +6618,28 @@ valinfo(NODE *n, Func_print print_func, FILE *fp)
else if (n->flags & STRING) {
pp_string_fp(print_func, fp, n->stptr, n->stlen, '"', FALSE);
print_func(fp, "\n");
- } else if (n->flags & NUMBER)
+ } else if (n->flags & NUMBER) {
+#ifdef HAVE_MPFR
+ if (is_mpg_float(n))
+ print_func(fp, "%s\n", mpg_fmt("%.17R*g", ROUND_MODE, n->mpg_numbr));
+ else if (is_mpg_integer(n))
+ print_func(fp, "%s\n", mpg_fmt("%Zd", n->mpg_i));
+ else
+#endif
print_func(fp, "%.17g\n", n->numbr);
- else if (n->flags & STRCUR) {
+ } else if (n->flags & STRCUR) {
pp_string_fp(print_func, fp, n->stptr, n->stlen, '"', FALSE);
print_func(fp, "\n");
- } else if (n->flags & NUMCUR)
+ } else if (n->flags & NUMCUR) {
+#ifdef HAVE_MPFR
+ if (is_mpg_float(n))
+ print_func(fp, "%s\n", mpg_fmt("%.17R*g", ROUND_MODE, n->mpg_numbr));
+ else if (is_mpg_integer(n))
+ print_func(fp, "%s\n", mpg_fmt("%Zd", n->mpg_i));
+ else
+#endif
print_func(fp, "%.17g\n", n->numbr);
- else
+ } else
print_func(fp, "?? flags %s\n", flags2str(n->flags));
}
@@ -7092,11 +7186,11 @@ mk_binary(INSTRUCTION *s1, INSTRUCTION *s2, INSTRUCTION *op)
ip1 = s1->nexti;
if (do_optimize > 1
&& ip1 == s1->lasti && ip1->opcode == Op_push_i
- && (ip1->memory->flags & (STRCUR|STRING)) == 0
- && (ip2->memory->flags & (STRCUR|STRING)) == 0
+ && (ip1->memory->flags & (MPFN|MPZN|STRCUR|STRING)) == 0
+ && (ip2->memory->flags & (MPFN|MPZN|STRCUR|STRING)) == 0
) {
NODE *n1 = ip1->memory, *n2 = ip2->memory;
- res = force_number(n1);
+ res = force_number(n1)->numbr;
(void) force_number(n2);
switch (op->opcode) {
case Op_times:
@@ -7679,7 +7773,7 @@ mk_getline(INSTRUCTION *op, INSTRUCTION *var, INSTRUCTION *redir, int redirtype)
else
ip = list_create(op);
op->into_var = (var != NULL);
- op->redir_type = (redir != NULL) ? redirtype : 0;
+ op->redir_type = (redir != NULL) ? redirtype : redirect_none;
return (asgn == NULL ? ip : list_append(ip, asgn));
}
@@ -8048,3 +8142,4 @@ one_line_close(int fd)
}
+
diff --git a/awkgram.y b/awkgram.y
index fb394600..4145c5f5 100644
--- a/awkgram.y
+++ b/awkgram.y
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1986, 1988, 1989, 1991-2011 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-2012 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -694,16 +694,16 @@ statement
} else {
INSTRUCTION *tbreak, *tcont;
- /* [ Op_push_array a ]
- * [ Op_arrayfor_init | ib ]
- * ic:[ Op_arrayfor_incr | ib ]
- * [ Op_var_assign if any ]
- *
- * body
- *
- * [Op_jmp | ic ]
- * ib:[Op_arrayfor_final ]
- */
+ /* [ Op_push_array a ]
+ * [ Op_arrayfor_init | ib ]
+ * ic:[ Op_arrayfor_incr | ib ]
+ * [ Op_var_assign if any ]
+ *
+ * body
+ *
+ * [Op_jmp | ic ]
+ * ib:[Op_arrayfor_final ]
+ */
regular_loop:
ip = $5;
ip->nexti->opcode = Op_push_array;
@@ -886,8 +886,7 @@ simple_stmt
|| ($3->lasti->opcode == Op_field_spec
&& $3->nexti->nexti->nexti == $3->lasti
&& $3->nexti->nexti->opcode == Op_push_i
- && $3->nexti->nexti->memory->type == Node_val
- && $3->nexti->nexti->memory->numbr == 0.0)
+ && $3->nexti->nexti->memory->type == Node_val)
)
) {
static short warned = FALSE;
@@ -901,11 +900,16 @@ simple_stmt
*/
if ($3 != NULL) {
- bcfree($3->lasti); /* Op_field_spec */
- unref($3->nexti->nexti->memory); /* Node_val */
+ NODE *n = $3->nexti->nexti->memory;
+
+ if (! iszero(n))
+ goto regular_print;
+
+ bcfree($3->lasti); /* Op_field_spec */
+ unref(n); /* Node_val */
bcfree($3->nexti->nexti); /* Op_push_i */
- bcfree($3->nexti); /* Op_list */
- bcfree($3); /* Op_list */
+ bcfree($3->nexti); /* Op_list */
+ bcfree($3); /* Op_list */
} else {
if (do_lint && (rule == BEGIN || rule == END) && ! warned) {
warned = TRUE;
@@ -917,7 +921,7 @@ simple_stmt
$1->expr_count = 0;
$1->opcode = Op_K_print_rec;
if ($4 == NULL) { /* no redircetion */
- $1->redir_type = 0;
+ $1->redir_type = redirect_none;
$$ = list_create($1);
} else {
INSTRUCTION *ip;
@@ -937,16 +941,16 @@ simple_stmt
* [$1 | NULL | redir_type | expr_count]
*
*/
-
+regular_print:
if ($4 == NULL) { /* no redirection */
if ($3 == NULL) { /* printf without arg */
$1->expr_count = 0;
- $1->redir_type = 0;
+ $1->redir_type = redirect_none;
$$ = list_create($1);
} else {
INSTRUCTION *t = $3;
$1->expr_count = count_expressions(&t, FALSE);
- $1->redir_type = 0;
+ $1->redir_type = redirect_none;
$$ = list_append(t, $1);
}
} else {
@@ -1071,7 +1075,9 @@ case_value
{ $$ = $1; }
| '-' YNUMBER %prec UNARY
{
- $2->memory->numbr = -(force_number($2->memory));
+ NODE *n = $2->memory;
+ (void) force_number(n);
+ negate_num(n);
bcfree($1);
$$ = $2;
}
@@ -1458,6 +1464,7 @@ non_post_simp_exp
} else {
if (do_optimize > 1 && $2->nexti == $2->lasti
&& $2->nexti->opcode == Op_push_i
+ && ($2->nexti->memory->flags & (MPFN|MPZN)) == 0
) {
NODE *n = $2->nexti->memory;
if ((n->flags & (STRCUR|STRING)) != 0) {
@@ -1530,7 +1537,9 @@ non_post_simp_exp
if ($2->lasti->opcode == Op_push_i
&& ($2->lasti->memory->flags & (STRCUR|STRING)) == 0
) {
- $2->lasti->memory->numbr = -(force_number($2->lasti->memory));
+ NODE *n = $2->lasti->memory;
+ (void) force_number(n);
+ negate_num(n);
$$ = $2;
bcfree($1);
} else {
@@ -1776,6 +1785,7 @@ struct token {
# define CONTINUE 0x2000 /* continue allowed inside */
NODE *(*ptr)(int); /* function that implements this keyword */
+ NODE *(*ptr2)(int); /* alternate arbitrary-precision function */
};
#if 'a' == 0x81 /* it's EBCDIC */
@@ -1799,82 +1809,84 @@ tokcompare(const void *l, const void *r)
* Function pointers come from declarations in awk.h.
*/
-static const struct token tokentab[] = {
-{"BEGIN", Op_rule, LEX_BEGIN, 0, 0},
-{"BEGINFILE", Op_rule, LEX_BEGINFILE, GAWKX, 0},
-{"END", Op_rule, LEX_END, 0, 0},
-{"ENDFILE", Op_rule, LEX_ENDFILE, GAWKX, 0},
-#ifdef ARRAYDEBUG
-{"adump", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2), do_adump},
+#ifdef HAVE_MPFR
+#define MPF(F) do_mpfr_##F
+#else
+#define MPF(F) 0
#endif
-{"and", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_and},
+
+static const struct token tokentab[] = {
+{"BEGIN", Op_rule, LEX_BEGIN, 0, 0, 0},
+{"BEGINFILE", Op_rule, LEX_BEGINFILE, GAWKX, 0, 0},
+{"END", Op_rule, LEX_END, 0, 0, 0},
+{"ENDFILE", Op_rule, LEX_ENDFILE, GAWKX, 0, 0},
#ifdef ARRAYDEBUG
-{"aoption", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_aoption},
+{"adump", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2), do_adump, 0},
#endif
-{"asort", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2)|A(3), do_asort},
-{"asorti", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2)|A(3), do_asorti},
-{"atan2", Op_builtin, LEX_BUILTIN, NOT_OLD|A(2), do_atan2},
-{"bindtextdomain", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2), do_bindtextdomain},
-{"break", Op_K_break, LEX_BREAK, 0, 0},
-{"case", Op_K_case, LEX_CASE, GAWKX, 0},
-{"close", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1)|A(2), do_close},
-{"compl", Op_builtin, LEX_BUILTIN, GAWKX|A(1), do_compl},
-{"continue", Op_K_continue, LEX_CONTINUE, 0, 0},
-{"cos", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_cos},
-{"dcgettext", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2)|A(3), do_dcgettext},
-{"dcngettext", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2)|A(3)|A(4)|A(5), do_dcngettext},
-{"default", Op_K_default, LEX_DEFAULT, GAWKX, 0},
-{"delete", Op_K_delete, LEX_DELETE, NOT_OLD, 0},
-{"do", Op_K_do, LEX_DO, NOT_OLD|BREAK|CONTINUE, 0},
-{"else", Op_K_else, LEX_ELSE, 0, 0},
-{"eval", Op_symbol, LEX_EVAL, 0, 0},
-{"exit", Op_K_exit, LEX_EXIT, 0, 0},
-{"exp", Op_builtin, LEX_BUILTIN, A(1), do_exp},
-{"extension", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_ext},
-{"fflush", Op_builtin, LEX_BUILTIN, RESX|A(0)|A(1), do_fflush},
-{"for", Op_K_for, LEX_FOR, BREAK|CONTINUE, 0},
-{"func", Op_func, LEX_FUNCTION, NOT_POSIX|NOT_OLD, 0},
-{"function",Op_func, LEX_FUNCTION, NOT_OLD, 0},
-{"gensub", Op_sub_builtin, LEX_BUILTIN, GAWKX|A(3)|A(4), 0},
-{"getline", Op_K_getline_redir, LEX_GETLINE, NOT_OLD, 0},
-{"gsub", Op_sub_builtin, LEX_BUILTIN, NOT_OLD|A(2)|A(3), 0},
-{"if", Op_K_if, LEX_IF, 0, 0},
-{"in", Op_symbol, LEX_IN, 0, 0},
-{"include", Op_symbol, LEX_INCLUDE, GAWKX, 0},
-{"index", Op_builtin, LEX_BUILTIN, A(2), do_index},
-{"int", Op_builtin, LEX_BUILTIN, A(1), do_int},
-{"isarray", Op_builtin, LEX_BUILTIN, GAWKX|A(1), do_isarray},
-{"length", Op_builtin, LEX_LENGTH, A(0)|A(1), do_length},
-{"load", Op_symbol, LEX_LOAD, GAWKX, 0},
-{"log", Op_builtin, LEX_BUILTIN, A(1), do_log},
-{"lshift", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_lshift},
-{"match", Op_builtin, LEX_BUILTIN, NOT_OLD|A(2)|A(3), do_match},
-{"mktime", Op_builtin, LEX_BUILTIN, GAWKX|A(1), do_mktime},
-{"next", Op_K_next, LEX_NEXT, 0, 0},
-{"nextfile", Op_K_nextfile, LEX_NEXTFILE, GAWKX, 0},
-{"or", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_or},
-{"patsplit", Op_builtin, LEX_BUILTIN, GAWKX|A(2)|A(3)|A(4), do_patsplit},
-{"print", Op_K_print, LEX_PRINT, 0, 0},
-{"printf", Op_K_printf, LEX_PRINTF, 0, 0},
-{"rand", Op_builtin, LEX_BUILTIN, NOT_OLD|A(0), do_rand},
-{"return", Op_K_return, LEX_RETURN, NOT_OLD, 0},
-{"rshift", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_rshift},
-{"sin", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_sin},
-{"split", Op_builtin, LEX_BUILTIN, A(2)|A(3)|A(4), do_split},
-{"sprintf", Op_builtin, LEX_BUILTIN, 0, do_sprintf},
-{"sqrt", Op_builtin, LEX_BUILTIN, A(1), do_sqrt},
-{"srand", Op_builtin, LEX_BUILTIN, NOT_OLD|A(0)|A(1), do_srand},
-{"strftime", Op_builtin, LEX_BUILTIN, GAWKX|A(0)|A(1)|A(2)|A(3), do_strftime},
-{"strtonum", Op_builtin, LEX_BUILTIN, GAWKX|A(1), do_strtonum},
-{"sub", Op_sub_builtin, LEX_BUILTIN, NOT_OLD|A(2)|A(3), 0},
-{"substr", Op_builtin, LEX_BUILTIN, A(2)|A(3), do_substr},
-{"switch", Op_K_switch, LEX_SWITCH, GAWKX|BREAK, 0},
-{"system", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_system},
-{"systime", Op_builtin, LEX_BUILTIN, GAWKX|A(0), do_systime},
-{"tolower", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_tolower},
-{"toupper", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_toupper},
-{"while", Op_K_while, LEX_WHILE, BREAK|CONTINUE, 0},
-{"xor", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_xor},
+{"and", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_and, MPF(and)},
+{"asort", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2)|A(3), do_asort, 0},
+{"asorti", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2)|A(3), do_asorti, 0},
+{"atan2", Op_builtin, LEX_BUILTIN, NOT_OLD|A(2), do_atan2, MPF(atan2)},
+{"bindtextdomain", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2), do_bindtextdomain, 0},
+{"break", Op_K_break, LEX_BREAK, 0, 0, 0},
+{"case", Op_K_case, LEX_CASE, GAWKX, 0, 0},
+{"close", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1)|A(2), do_close, 0},
+{"compl", Op_builtin, LEX_BUILTIN, GAWKX|A(1), do_compl, MPF(compl)},
+{"continue", Op_K_continue, LEX_CONTINUE, 0, 0, 0},
+{"cos", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_cos, MPF(cos)},
+{"dcgettext", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2)|A(3), do_dcgettext, 0},
+{"dcngettext", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2)|A(3)|A(4)|A(5), do_dcngettext, 0},
+{"default", Op_K_default, LEX_DEFAULT, GAWKX, 0, 0},
+{"delete", Op_K_delete, LEX_DELETE, NOT_OLD, 0, 0},
+{"do", Op_K_do, LEX_DO, NOT_OLD|BREAK|CONTINUE, 0, 0},
+{"else", Op_K_else, LEX_ELSE, 0, 0, 0},
+{"eval", Op_symbol, LEX_EVAL, 0, 0, 0},
+{"exit", Op_K_exit, LEX_EXIT, 0, 0, 0},
+{"exp", Op_builtin, LEX_BUILTIN, A(1), do_exp, MPF(exp)},
+{"extension", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_ext, 0},
+{"fflush", Op_builtin, LEX_BUILTIN, RESX|A(0)|A(1), do_fflush, 0},
+{"for", Op_K_for, LEX_FOR, BREAK|CONTINUE, 0, 0},
+{"func", Op_func, LEX_FUNCTION, NOT_POSIX|NOT_OLD, 0, 0},
+{"function",Op_func, LEX_FUNCTION, NOT_OLD, 0, 0},
+{"gensub", Op_sub_builtin, LEX_BUILTIN, GAWKX|A(3)|A(4), 0, 0},
+{"getline", Op_K_getline_redir, LEX_GETLINE, NOT_OLD, 0, 0},
+{"gsub", Op_sub_builtin, LEX_BUILTIN, NOT_OLD|A(2)|A(3), 0, 0},
+{"if", Op_K_if, LEX_IF, 0, 0, 0},
+{"in", Op_symbol, LEX_IN, 0, 0, 0},
+{"include", Op_symbol, LEX_INCLUDE, GAWKX, 0, 0},
+{"index", Op_builtin, LEX_BUILTIN, A(2), do_index, 0},
+{"int", Op_builtin, LEX_BUILTIN, A(1), do_int, MPF(int)},
+{"isarray", Op_builtin, LEX_BUILTIN, GAWKX|A(1), do_isarray, 0},
+{"length", Op_builtin, LEX_LENGTH, A(0)|A(1), do_length, 0},
+{"log", Op_builtin, LEX_BUILTIN, A(1), do_log, MPF(log)},
+{"lshift", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_lshift, MPF(lshift)},
+{"match", Op_builtin, LEX_BUILTIN, NOT_OLD|A(2)|A(3), do_match, 0},
+{"mktime", Op_builtin, LEX_BUILTIN, GAWKX|A(1), do_mktime, 0},
+{"next", Op_K_next, LEX_NEXT, 0, 0, 0},
+{"nextfile", Op_K_nextfile, LEX_NEXTFILE, GAWKX, 0, 0},
+{"or", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_or, MPF(or)},
+{"patsplit", Op_builtin, LEX_BUILTIN, GAWKX|A(2)|A(3)|A(4), do_patsplit, 0},
+{"print", Op_K_print, LEX_PRINT, 0, 0, 0},
+{"printf", Op_K_printf, LEX_PRINTF, 0, 0, 0},
+{"rand", Op_builtin, LEX_BUILTIN, NOT_OLD|A(0), do_rand, MPF(rand)},
+{"return", Op_K_return, LEX_RETURN, NOT_OLD, 0, 0},
+{"rshift", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_rshift, MPF(rhift)},
+{"sin", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_sin, MPF(sin)},
+{"split", Op_builtin, LEX_BUILTIN, A(2)|A(3)|A(4), do_split, 0},
+{"sprintf", Op_builtin, LEX_BUILTIN, 0, do_sprintf, 0},
+{"sqrt", Op_builtin, LEX_BUILTIN, A(1), do_sqrt, MPF(sqrt)},
+{"srand", Op_builtin, LEX_BUILTIN, NOT_OLD|A(0)|A(1), do_srand, MPF(srand)},
+{"strftime", Op_builtin, LEX_BUILTIN, GAWKX|A(0)|A(1)|A(2)|A(3), do_strftime, 0},
+{"strtonum", Op_builtin, LEX_BUILTIN, GAWKX|A(1), do_strtonum, MPF(strtonum)},
+{"sub", Op_sub_builtin, LEX_BUILTIN, NOT_OLD|A(2)|A(3), 0, 0},
+{"substr", Op_builtin, LEX_BUILTIN, A(2)|A(3), do_substr, 0},
+{"switch", Op_K_switch, LEX_SWITCH, GAWKX|BREAK, 0, 0},
+{"system", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_system, 0},
+{"systime", Op_builtin, LEX_BUILTIN, GAWKX|A(0), do_systime, 0},
+{"tolower", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_tolower, 0},
+{"toupper", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_toupper, 0},
+{"while", Op_K_while, LEX_WHILE, BREAK|CONTINUE, 0, 0},
+{"xor", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_xor, MPF(xor)},
};
#if MBS_SUPPORT
@@ -1910,6 +1922,23 @@ getfname(NODE *(*fptr)(int))
return NULL;
}
+/* negate_num --- negate a number in NODE */
+
+void
+negate_num(NODE *n)
+{
+#ifdef HAVE_MPFR
+ if (is_mpg_float(n)) {
+ int tval;
+ tval = mpfr_neg(n->mpg_numbr, n->mpg_numbr, ROUND_MODE);
+ IEEE_FMT(n->mpg_numbr, tval);
+ } else if (is_mpg_integer(n)) {
+ mpz_neg(n->mpg_i, n->mpg_i);
+ } else
+#endif
+ n->numbr = -n->numbr;
+}
+
/* print_included_from --- print `Included from ..' file names and locations */
static void
@@ -2814,6 +2843,32 @@ allow_newline(void)
}
}
+/* newline_eof --- return newline or EOF as needed and adjust variables */
+
+/*
+ * This routine used to be a macro, however GCC 4.6.2 warned about
+ * the result of a computation not being used. Converting to a function
+ * removes the warnings.
+ */
+
+static int newline_eof()
+{
+ /* NB: a newline at end does not start a source line. */
+ if (lasttok != NEWLINE) {
+ pushback();
+ if (do_lint && ! eof_warned) {
+ lintwarn(_("source file does not end in newline"));
+ eof_warned = TRUE;
+ }
+ sourceline++;
+ return NEWLINE;
+ }
+
+ sourceline--;
+ eof_warned = FALSE;
+ return LEX_EOF;
+}
+
/* yylex --- Read the input and turn it into tokens. */
static int
@@ -2824,6 +2879,7 @@ yylex(void)
int seen_point = FALSE;
int esc_seen; /* for literal strings */
int mid;
+ int base;
static int did_newline = FALSE;
char *tokkey;
int inhex = FALSE;
@@ -2832,15 +2888,7 @@ yylex(void)
#define GET_INSTRUCTION(op) bcalloc(op, 1, sourceline)
- /* NB: a newline at end does not start a source line. */
-
-#define NEWLINE_EOF \
- (lasttok != NEWLINE ? \
- (pushback(), do_lint && ! eof_warned && \
- (lintwarn(_("source file does not end in newline")), \
- eof_warned = TRUE), sourceline++, NEWLINE) : \
- (sourceline--, eof_warned = FALSE, LEX_EOF))
-
+#define NEWLINE_EOF newline_eof()
yylval = (INSTRUCTION *) NULL;
if (lasttok == SUBSCRIPT) {
@@ -3400,17 +3448,42 @@ retry:
tokadd('\0');
yylval = GET_INSTRUCTION(Op_push_i);
- if (! do_traditional && isnondecimal(tokstart, FALSE)) {
+
+ base = 10;
+ if (! do_traditional) {
+ base = get_numbase(tokstart, FALSE);
if (do_lint) {
- if (isdigit((unsigned char) tokstart[1])) /* not an 'x' or 'X' */
+ if (base == 8)
lintwarn("numeric constant `%.*s' treated as octal",
(int) strlen(tokstart)-1, tokstart);
- else if (tokstart[1] == 'x' || tokstart[1] == 'X')
+ else if (base == 16)
lintwarn("numeric constant `%.*s' treated as hexadecimal",
(int) strlen(tokstart)-1, tokstart);
}
+ }
+
+#ifdef HAVE_MPFR
+ if (do_mpfr) {
+ NODE *r;
+
+ if (! seen_point && ! seen_e) {
+ r = mpg_integer();
+ mpg_strtoui(r->mpg_i, tokstart, strlen(tokstart), NULL, base);
+ errno = 0;
+ } else {
+ int tval;
+ r = mpg_float();
+ tval = mpfr_strtofr(r->mpg_numbr, tokstart, NULL, base, ROUND_MODE);
+ errno = 0;
+ IEEE_FMT(r->mpg_numbr, tval);
+ }
+ yylval->memory = r;
+ return lasttok = YNUMBER;
+ }
+#endif
+ if (base != 10)
d = nondec2awknum(tokstart, strlen(tokstart));
- } else
+ else
d = atof(tokstart);
yylval->memory = make_number(d);
if (d <= INT32_MAX && d >= INT32_MIN && d == (int32_t) d)
@@ -3697,7 +3770,13 @@ snode(INSTRUCTION *subn, INSTRUCTION *r)
}
}
- r->builtin = tokentab[idx].ptr;
+#ifdef HAVE_MPFR
+ /* N.B.: There isn't any special processing for an alternate function below */
+ if (do_mpfr && tokentab[idx].ptr2)
+ r->builtin = tokentab[idx].ptr2;
+ else
+#endif
+ r->builtin = tokentab[idx].ptr;
/* special case processing for a few builtins */
@@ -3903,14 +3982,28 @@ valinfo(NODE *n, Func_print print_func, FILE *fp)
else if (n->flags & STRING) {
pp_string_fp(print_func, fp, n->stptr, n->stlen, '"', FALSE);
print_func(fp, "\n");
- } else if (n->flags & NUMBER)
+ } else if (n->flags & NUMBER) {
+#ifdef HAVE_MPFR
+ if (is_mpg_float(n))
+ print_func(fp, "%s\n", mpg_fmt("%.17R*g", ROUND_MODE, n->mpg_numbr));
+ else if (is_mpg_integer(n))
+ print_func(fp, "%s\n", mpg_fmt("%Zd", n->mpg_i));
+ else
+#endif
print_func(fp, "%.17g\n", n->numbr);
- else if (n->flags & STRCUR) {
+ } else if (n->flags & STRCUR) {
pp_string_fp(print_func, fp, n->stptr, n->stlen, '"', FALSE);
print_func(fp, "\n");
- } else if (n->flags & NUMCUR)
+ } else if (n->flags & NUMCUR) {
+#ifdef HAVE_MPFR
+ if (is_mpg_float(n))
+ print_func(fp, "%s\n", mpg_fmt("%.17R*g", ROUND_MODE, n->mpg_numbr));
+ else if (is_mpg_integer(n))
+ print_func(fp, "%s\n", mpg_fmt("%Zd", n->mpg_i));
+ else
+#endif
print_func(fp, "%.17g\n", n->numbr);
- else
+ } else
print_func(fp, "?? flags %s\n", flags2str(n->flags));
}
@@ -4457,11 +4550,11 @@ mk_binary(INSTRUCTION *s1, INSTRUCTION *s2, INSTRUCTION *op)
ip1 = s1->nexti;
if (do_optimize > 1
&& ip1 == s1->lasti && ip1->opcode == Op_push_i
- && (ip1->memory->flags & (STRCUR|STRING)) == 0
- && (ip2->memory->flags & (STRCUR|STRING)) == 0
+ && (ip1->memory->flags & (MPFN|MPZN|STRCUR|STRING)) == 0
+ && (ip2->memory->flags & (MPFN|MPZN|STRCUR|STRING)) == 0
) {
NODE *n1 = ip1->memory, *n2 = ip2->memory;
- res = force_number(n1);
+ res = force_number(n1)->numbr;
(void) force_number(n2);
switch (op->opcode) {
case Op_times:
@@ -5044,7 +5137,7 @@ mk_getline(INSTRUCTION *op, INSTRUCTION *var, INSTRUCTION *redir, int redirtype)
else
ip = list_create(op);
op->into_var = (var != NULL);
- op->redir_type = (redir != NULL) ? redirtype : 0;
+ op->redir_type = (redir != NULL) ? redirtype : redirect_none;
return (asgn == NULL ? ip : list_append(ip, asgn));
}
@@ -5412,3 +5505,4 @@ one_line_close(int fd)
return ret;
}
+
diff --git a/awklib/ChangeLog b/awklib/ChangeLog
index 2ae225be..1be7b4b7 100644
--- a/awklib/ChangeLog
+++ b/awklib/ChangeLog
@@ -1,3 +1,7 @@
+2012-03-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.0.1: Release tar ball made.
+
2011-06-24 Arnold D. Robbins <arnold@skeeve.com>
* Makefile.am (EXTRA_DIST): Add ChangeLog.0.
diff --git a/awklib/Makefile.in b/awklib/Makefile.in
index 01511c36..81f90a5f 100644
--- a/awklib/Makefile.in
+++ b/awklib/Makefile.in
@@ -1,9 +1,9 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -40,6 +40,23 @@
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
@@ -58,19 +75,19 @@ build_triplet = @build@
host_triplet = @host@
pkglibexec_PROGRAMS = pwcat$(EXEEXT) grcat$(EXEEXT)
subdir = awklib
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(top_srcdir)/depcomp $(top_srcdir)/mkinstalldirs ChangeLog
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/arch.m4 \
$(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/gettext.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/intmax_t.m4 $(top_srcdir)/m4/inttypes_h.m4 \
$(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lcmessage.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libsigsegv.m4 \
- $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/mpfr.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/noreturn.m4 \
$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
$(top_srcdir)/m4/readline.m4 $(top_srcdir)/m4/socket.m4 \
- $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/uintmax_t.m4 \
$(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
@@ -107,6 +124,12 @@ am__nobase_list = $(am__nobase_strip_setup); \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
SCRIPTS = $(bin_SCRIPTS)
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
@@ -118,6 +141,11 @@ CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(nodist_grcat_SOURCES) $(nodist_pwcat_SOURCES)
DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -157,6 +185,7 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
LDFLAGS = @LDFLAGS@
LIBICONV = @LIBICONV@
LIBINTL = @LIBINTL@
+LIBMPFR = @LIBMPFR@
LIBOBJS = @LIBOBJS@
LIBREADLINE = @LIBREADLINE@
LIBS = @LIBS@
@@ -198,6 +227,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+acl_shlibext = @acl_shlibext@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@@ -232,6 +262,7 @@ mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
+pkgextensiondir = @pkgextensiondir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
@@ -290,8 +321,11 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
$(am__aclocal_m4_deps):
install-pkglibexecPROGRAMS: $(pkglibexec_PROGRAMS)
@$(NORMAL_INSTALL)
- test -z "$(pkglibexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibexecdir)"
@list='$(pkglibexec_PROGRAMS)'; test -n "$(pkglibexecdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibexecdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkglibexecdir)" || exit 1; \
+ fi; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
while read p p1; do if test -f $$p; \
@@ -327,8 +361,11 @@ clean-pkglibexecPROGRAMS:
-test -z "$(pkglibexec_PROGRAMS)" || rm -f $(pkglibexec_PROGRAMS)
install-binSCRIPTS: $(bin_SCRIPTS)
@$(NORMAL_INSTALL)
- test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
@@ -356,9 +393,7 @@ uninstall-binSCRIPTS:
@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 's,.*/,,;$(transform)'`; \
- test -n "$$list" || exit 0; \
- echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(bindir)" && rm -f $$files
+ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@@ -432,6 +467,20 @@ GTAGS:
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: $(HEADERS) $(SOURCES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -482,10 +531,15 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
@@ -572,13 +626,13 @@ uninstall-am: uninstall-binSCRIPTS uninstall-local \
.MAKE: install-am install-exec-am install-strip
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-local clean-pkglibexecPROGRAMS ctags distclean \
- distclean-compile distclean-generic distclean-tags distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-binSCRIPTS install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-exec-hook \
- install-html install-html-am install-info install-info-am \
- install-man install-pdf install-pdf-am \
+ clean-local clean-pkglibexecPROGRAMS cscopelist ctags \
+ distclean distclean-compile distclean-generic distclean-tags \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-binSCRIPTS install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-exec-hook install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
install-pkglibexecPROGRAMS install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
diff --git a/builtin.c b/builtin.c
index 1da8a4f5..62d62e7c 100644
--- a/builtin.c
+++ b/builtin.c
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1986, 1988, 1989, 1991-2011 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-2012 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -135,7 +135,7 @@ do_exp(int nargs)
tmp = POP_SCALAR();
if (do_lint && (tmp->flags & (NUMCUR|NUMBER)) == 0)
lintwarn(_("exp: received non-numeric argument"));
- d = force_number(tmp);
+ d = force_number(tmp)->numbr;
DEREF(tmp);
errno = 0;
res = exp(d);
@@ -459,7 +459,7 @@ do_int(int nargs)
tmp = POP_SCALAR();
if (do_lint && (tmp->flags & (NUMCUR|NUMBER)) == 0)
lintwarn(_("int: received non-numeric argument"));
- d = force_number(tmp);
+ d = force_number(tmp)->numbr;
d = double_to_int(d);
DEREF(tmp);
return make_number((AWKNUM) d);
@@ -537,7 +537,7 @@ do_log(int nargs)
tmp = POP_SCALAR();
if (do_lint && (tmp->flags & (NUMCUR|NUMBER)) == 0)
lintwarn(_("log: received non-numeric argument"));
- arg = (double) force_number(tmp);
+ arg = force_number(tmp)->numbr;
if (arg < 0.0)
warning(_("log: received negative argument %g"), arg);
d = log(arg);
@@ -546,6 +546,42 @@ do_log(int nargs)
}
+#ifdef HAVE_MPFR
+
+/*
+ * mpz2mpfr --- convert an arbitrary-precision integer to a float
+ * without any loss of precision. The returned value is only
+ * good for temporary use.
+ */
+
+
+static mpfr_ptr
+mpz2mpfr(mpz_ptr zi)
+{
+ size_t prec;
+ static mpfr_t mpfrval;
+ static int inited = FALSE;
+ int tval;
+
+ /* estimate minimum precision for exact conversion */
+ prec = mpz_sizeinbase(zi, 2); /* most significant 1 bit position starting at 1 */
+ prec -= (size_t) mpz_scan1(zi, 0); /* least significant 1 bit index starting at 0 */
+ if (prec < MPFR_PREC_MIN)
+ prec = MPFR_PREC_MIN;
+ else if (prec > MPFR_PREC_MAX)
+ prec = MPFR_PREC_MAX;
+
+ if (! inited) {
+ mpfr_init2(mpfrval, prec);
+ inited = TRUE;
+ } else
+ mpfr_set_prec(mpfrval, prec);
+ tval = mpfr_set_z(mpfrval, zi, ROUND_MODE);
+ IEEE_FMT(mpfrval, tval);
+ return mpfrval;
+}
+#endif
+
/*
* format_tree() formats arguments of sprintf,
* and accordingly to a fmt_string providing a format like in
@@ -603,7 +639,7 @@ format_tree(
size_t cur_arg = 0;
NODE *r = NULL;
- int i;
+ int i, nc;
int toofew = FALSE;
char *obuf, *obufout;
size_t osiz, ofre;
@@ -617,7 +653,7 @@ format_tree(
long *cur = NULL;
uintmax_t uval;
int sgn;
- int base = 0;
+ int base;
/*
* Although this is an array, the elements serve two different
* purposes. The first element is the general buffer meant
@@ -635,7 +671,7 @@ format_tree(
char *cend = &cpbufs[0].stackbuf[sizeof(cpbufs[0].stackbuf)];
char *cp;
const char *fill;
- AWKNUM tmpval;
+ AWKNUM tmpval = 0.0;
char signchar = FALSE;
size_t len;
int zero_flag = FALSE;
@@ -643,6 +679,12 @@ format_tree(
int ii, jj;
char *chp;
size_t copy_count, char_count;
+#ifdef HAVE_MPFR
+ mpz_ptr zi;
+ mpfr_ptr mf;
+#endif
+ enum { MP_INT_WITH_PREC = 1, MP_INT_WITHOUT_PREC, MP_FLOAT } fmt_type;
+
static const char sp[] = " ";
static const char zero_string[] = "0";
static const char lchbuf[] = "0123456789abcdef";
@@ -728,11 +770,19 @@ format_tree(
cur = &fw;
fw = 0;
prec = 0;
+ base = 0;
argnum = 0;
+ base = 0;
have_prec = FALSE;
signchar = FALSE;
zero_flag = FALSE;
quote_flag = FALSE;
+#ifdef HAVE_MPFR
+ mf = NULL;
+ zi = NULL;
+#endif
+ fmt_type = 0;
+
lj = alt = big_flag = bigbig_flag = small_flag = FALSE;
fill = sp;
cp = cend;
@@ -864,7 +914,8 @@ check_pos:
} else {
parse_next_arg();
}
- *cur = force_number(arg);
+ (void) force_number(arg);
+ *cur = get_number_si(arg);
if (*cur < 0 && cur == &fw) {
*cur = -*cur;
lj++;
@@ -972,7 +1023,7 @@ check_pos:
if ((arg->flags & (MAYBE_NUM|NUMBER)) == MAYBE_NUM)
(void) force_number(arg);
if (arg->flags & NUMBER) {
- uval = (uintmax_t) arg->numbr;
+ uval = get_number_uj(arg);
#if MBS_SUPPORT
if (gawk_mb_cur_max > 1) {
char buf[100];
@@ -1055,7 +1106,16 @@ out2:
case 'i':
need_format = FALSE;
parse_next_arg();
- tmpval = force_number(arg);
+ (void) force_number(arg);
+#ifdef HAVE_MPFR
+ if (is_mpg_float(arg))
+ goto mpf0;
+ else if (is_mpg_integer(arg))
+ goto mpz0;
+ else
+#endif
+ tmpval = arg->numbr;
+
/*
* Check for Nan or Inf.
*/
@@ -1166,7 +1226,78 @@ out2:
base += 8;
need_format = FALSE;
parse_next_arg();
- tmpval = force_number(arg);
+ (void) force_number(arg);
+#ifdef HAVE_MPFR
+ if (is_mpg_integer(arg)) {
+mpz0:
+ zi = arg->mpg_i;
+
+ if (cs1 != 'd' && cs1 != 'i') {
+ if (mpz_sgn(zi) <= 0) {
+ /*
+ * Negative value or 0 requires special handling.
+ * Unlike MPFR, GMP does not allow conversion
+ * to (u)intmax_t. So we first convert GMP type to
+ * a MPFR type.
+ */
+ mf = mpz2mpfr(zi);
+ goto mpf1;
+ }
+ signchar = FALSE; /* Don't print '+' */
+ }
+
+ /* See comments above about when to fill with zeros */
+ zero_flag = (! lj
+ && ((zero_flag && ! have_prec)
+ || (fw == 0 && have_prec)));
+
+ fmt_type = have_prec ? MP_INT_WITH_PREC : MP_INT_WITHOUT_PREC;
+ goto fmt0;
+
+ } else if (is_mpg_float(arg)) {
+mpf0:
+ mf = arg->mpg_numbr;
+ if (! mpfr_number_p(mf)) {
+ /* inf or NaN */
+ cs1 = 'g';
+ fmt_type = MP_FLOAT;
+ goto fmt1;
+ }
+
+ if (cs1 != 'd' && cs1 != 'i') {
+mpf1:
+ /*
+ * The output of printf("%#.0x", 0) is 0 instead of 0x, hence <= in
+ * the comparison below.
+ */
+ if (mpfr_sgn(mf) <= 0) {
+ if (! mpfr_fits_intmax_p(mf, ROUND_MODE)) {
+ /* -ve number is too large */
+ cs1 = 'g';
+ fmt_type = MP_FLOAT;
+ goto fmt1;
+ }
+
+ tmpval = uval = (uintmax_t) mpfr_get_sj(mf, ROUND_MODE);
+ if (! alt && have_prec && prec == 0 && tmpval == 0)
+ goto pr_tail; /* printf("%.0x", 0) is no characters */
+ goto int0;
+ }
+ signchar = FALSE; /* Don't print '+' */
+ }
+
+ /* See comments above about when to fill with zeros */
+ zero_flag = (! lj
+ && ((zero_flag && ! have_prec)
+ || (fw == 0 && have_prec)));
+
+ (void) mpfr_get_z(mpzval, mf, MPFR_RNDZ); /* convert to GMP integer */
+ fmt_type = have_prec ? MP_INT_WITH_PREC : MP_INT_WITHOUT_PREC;
+ zi = mpzval;
+ goto fmt0;
+ } else
+#endif
+ tmpval = arg->numbr;
/*
* ``The result of converting a zero value with a
@@ -1185,14 +1316,16 @@ out2:
if (tmpval < 0) {
uval = (uintmax_t) (intmax_t) tmpval;
- if ((AWKNUM)(intmax_t)uval !=
- double_to_int(tmpval))
+ if ((AWKNUM)(intmax_t)uval != double_to_int(tmpval))
goto out_of_range;
} else {
uval = (uintmax_t) tmpval;
if ((AWKNUM)uval != double_to_int(tmpval))
goto out_of_range;
}
+#ifdef HAVE_MPFR
+ int0:
+#endif
/*
* When to fill with zeroes is of course not simple.
* First: No zero fill if left-justifying.
@@ -1275,7 +1408,7 @@ out2:
lintwarn(_("[s]printf: value %g is out of range for `%%%c' format"),
(double) tmpval, cs1);
cs1 = 'g';
- goto format_float;
+ goto fmt1;
case 'F':
#if ! defined(PRINTF_HAS_F_FORMAT) || PRINTF_HAS_F_FORMAT != 1
@@ -1289,11 +1422,28 @@ out2:
case 'E':
need_format = FALSE;
parse_next_arg();
- tmpval = force_number(arg);
- format_float:
+ (void) force_number(arg);
+
+ if (! is_mpg_number(arg))
+ tmpval = arg->numbr;
+#ifdef HAVE_MPFR
+ else if (is_mpg_float(arg)) {
+ mf = arg->mpg_numbr;
+ fmt_type = MP_FLOAT;
+ } else {
+ /* arbitrary-precision integer, convert to MPFR float */
+ assert(mf == NULL);
+ mf = mpz2mpfr(arg->mpg_i);
+ fmt_type = MP_FLOAT;
+ }
+#endif
+ fmt1:
if (! have_prec)
prec = DEFAULT_G_PRECISION;
- chksize(fw + prec + 9); /* 9 == slop */
+#ifdef HAVE_MPFR
+ fmt0:
+#endif
+ chksize(fw + prec + 11); /* 11 == slop */
cp = cpbuf;
*cp++ = '%';
if (lj)
@@ -1306,25 +1456,46 @@ out2:
*cp++ = '0';
if (quote_flag)
*cp++ = '\'';
- strcpy(cp, "*.*");
- cp += 3;
- *cp++ = cs1;
- *cp = '\0';
+
#if defined(LC_NUMERIC)
if (quote_flag && ! use_lc_numeric)
setlocale(LC_NUMERIC, "");
#endif
- {
- int n;
- while ((n = snprintf(obufout, ofre, cpbuf,
- (int) fw, (int) prec,
- (double) tmpval)) >= ofre)
- chksize(n)
+
+ switch (fmt_type) {
+#ifdef HAVE_MPFR
+ case MP_INT_WITH_PREC:
+ sprintf(cp, "*.*Z%c", cs1);
+ while ((nc = mpfr_snprintf(obufout, ofre, cpbuf,
+ (int) fw, (int) prec, zi)) >= ofre)
+ chksize(nc)
+ break;
+ case MP_INT_WITHOUT_PREC:
+ sprintf(cp, "*Z%c", cs1);
+ while ((nc = mpfr_snprintf(obufout, ofre, cpbuf,
+ (int) fw, zi)) >= ofre)
+ chksize(nc)
+ break;
+ case MP_FLOAT:
+ sprintf(cp, "*.*R*%c", cs1);
+ while ((nc = mpfr_snprintf(obufout, ofre, cpbuf,
+ (int) fw, (int) prec, ROUND_MODE, mf)) >= ofre)
+ chksize(nc)
+ break;
+#endif
+ default:
+ sprintf(cp, "*.*%c", cs1);
+ while ((nc = snprintf(obufout, ofre, cpbuf,
+ (int) fw, (int) prec,
+ (double) tmpval)) >= ofre)
+ chksize(nc)
}
+
#if defined(LC_NUMERIC)
if (quote_flag && ! use_lc_numeric)
setlocale(LC_NUMERIC, "C");
#endif
+
len = strlen(obufout);
ofre -= len;
obufout += len;
@@ -1365,6 +1536,7 @@ out:
if (obuf != NULL)
efree(obuf);
}
+
if (r == NULL)
gawk_exit(EXIT_FATAL);
return r;
@@ -1476,7 +1648,7 @@ do_sqrt(int nargs)
tmp = POP_SCALAR();
if (do_lint && (tmp->flags & (NUMCUR|NUMBER)) == 0)
lintwarn(_("sqrt: received non-numeric argument"));
- arg = (double) force_number(tmp);
+ arg = (double) force_number(tmp)->numbr;
DEREF(tmp);
if (arg < 0.0)
warning(_("sqrt: called with negative argument %g"), arg);
@@ -1495,9 +1667,16 @@ do_substr(int nargs)
double d_index = 0, d_length = 0;
size_t src_len;
- if (nargs == 3)
- POP_NUMBER(d_length);
- POP_NUMBER(d_index);
+ if (nargs == 3) {
+ t1 = POP_NUMBER();
+ d_length = get_number_d(t1);
+ DEREF(t1);
+ }
+
+ t1 = POP_NUMBER();
+ d_index = get_number_d(t1);
+ DEREF(t1);
+
t1 = POP_STRING();
if (nargs == 3) {
@@ -1681,7 +1860,8 @@ do_strftime(int nargs)
t2 = POP_SCALAR();
if (do_lint && (t2->flags & (NUMCUR|NUMBER)) == 0)
lintwarn(_("strftime: received non-numeric second argument"));
- clock_val = (long) force_number(t2);
+ (void) force_number(t2);
+ clock_val = get_number_si(t2);
if (clock_val < 0)
fatal(_("strftime: second argument less than 0 or too big for time_t"));
fclock = (time_t) clock_val;
@@ -2099,8 +2279,8 @@ do_atan2(int nargs)
if ((t2->flags & (NUMCUR|NUMBER)) == 0)
lintwarn(_("atan2: received non-numeric second argument"));
}
- d1 = force_number(t1);
- d2 = force_number(t2);
+ d1 = force_number(t1)->numbr;
+ d2 = force_number(t2)->numbr;
DEREF(t1);
DEREF(t2);
return make_number((AWKNUM) atan2(d1, d2));
@@ -2117,7 +2297,7 @@ do_sin(int nargs)
tmp = POP_SCALAR();
if (do_lint && (tmp->flags & (NUMCUR|NUMBER)) == 0)
lintwarn(_("sin: received non-numeric argument"));
- d = sin((double) force_number(tmp));
+ d = sin((double) force_number(tmp)->numbr);
DEREF(tmp);
return make_number((AWKNUM) d);
}
@@ -2133,7 +2313,7 @@ do_cos(int nargs)
tmp = POP_SCALAR();
if (do_lint && (tmp->flags & (NUMCUR|NUMBER)) == 0)
lintwarn(_("cos: received non-numeric argument"));
- d = cos((double) force_number(tmp));
+ d = cos((double) force_number(tmp)->numbr);
DEREF(tmp);
return make_number((AWKNUM) d);
}
@@ -2186,7 +2366,7 @@ do_srand(int nargs)
tmp = POP_SCALAR();
if (do_lint && (tmp->flags & (NUMCUR|NUMBER)) == 0)
lintwarn(_("srand: received non-numeric argument"));
- srandom((unsigned int) (save_seed = (long) force_number(tmp)));
+ srandom((unsigned int) (save_seed = (long) force_number(tmp)->numbr));
DEREF(tmp);
}
return make_number((AWKNUM) ret);
@@ -2463,15 +2643,16 @@ do_sub(int nargs, unsigned int flags)
if (t1->stlen > 0 && (t1->stptr[0] == 'g' || t1->stptr[0] == 'G'))
how_many = -1;
else {
- d = force_number(t1);
-
+ (void) force_number(t1);
+ d = get_number_d(t1);
if ((t1->flags & NUMCUR) != 0)
goto set_how_many;
how_many = 1;
}
} else {
- d = force_number(t1);
+ (void) force_number(t1);
+ d = get_number_d(t1);
set_how_many:
if (d < 1)
how_many = 1;
@@ -2777,15 +2958,15 @@ do_lshift(int nargs)
if ((s2->flags & (NUMCUR|NUMBER)) == 0)
lintwarn(_("lshift: received non-numeric second argument"));
}
- val = force_number(s1);
- shift = force_number(s2);
+ val = force_number(s1)->numbr;
+ shift = force_number(s2)->numbr;
if (do_lint) {
if (val < 0 || shift < 0)
- lintwarn(_("lshift(%lf, %lf): negative values will give strange results"), val, shift);
+ lintwarn(_("lshift(%f, %f): negative values will give strange results"), val, shift);
if (double_to_int(val) != val || double_to_int(shift) != shift)
- lintwarn(_("lshift(%lf, %lf): fractional values will be truncated"), val, shift);
+ lintwarn(_("lshift(%f, %f): fractional values will be truncated"), val, shift);
if (shift >= sizeof(uintmax_t) * CHAR_BIT)
- lintwarn(_("lshift(%lf, %lf): too large shift value will give strange results"), val, shift);
+ lintwarn(_("lshift(%f, %f): too large shift value will give strange results"), val, shift);
}
DEREF(s1);
@@ -2814,15 +2995,15 @@ do_rshift(int nargs)
if ((s2->flags & (NUMCUR|NUMBER)) == 0)
lintwarn(_("rshift: received non-numeric second argument"));
}
- val = force_number(s1);
- shift = force_number(s2);
+ val = force_number(s1)->numbr;
+ shift = force_number(s2)->numbr;
if (do_lint) {
if (val < 0 || shift < 0)
- lintwarn(_("rshift(%lf, %lf): negative values will give strange results"), val, shift);
+ lintwarn(_("rshift(%f, %f): negative values will give strange results"), val, shift);
if (double_to_int(val) != val || double_to_int(shift) != shift)
- lintwarn(_("rshift(%lf, %lf): fractional values will be truncated"), val, shift);
+ lintwarn(_("rshift(%f, %f): fractional values will be truncated"), val, shift);
if (shift >= sizeof(uintmax_t) * CHAR_BIT)
- lintwarn(_("rshift(%lf, %lf): too large shift value will give strange results"), val, shift);
+ lintwarn(_("rshift(%f, %f): too large shift value will give strange results"), val, shift);
}
DEREF(s1);
@@ -2851,13 +3032,13 @@ do_and(int nargs)
if ((s2->flags & (NUMCUR|NUMBER)) == 0)
lintwarn(_("and: received non-numeric second argument"));
}
- left = force_number(s1);
- right = force_number(s2);
+ left = force_number(s1)->numbr;
+ right = force_number(s2)->numbr;
if (do_lint) {
if (left < 0 || right < 0)
- lintwarn(_("and(%lf, %lf): negative values will give strange results"), left, right);
+ lintwarn(_("and(%f, %f): negative values will give strange results"), left, right);
if (double_to_int(left) != left || double_to_int(right) != right)
- lintwarn(_("and(%lf, %lf): fractional values will be truncated"), left, right);
+ lintwarn(_("and(%f, %f): fractional values will be truncated"), left, right);
}
DEREF(s1);
@@ -2886,13 +3067,13 @@ do_or(int nargs)
if ((s2->flags & (NUMCUR|NUMBER)) == 0)
lintwarn(_("or: received non-numeric second argument"));
}
- left = force_number(s1);
- right = force_number(s2);
+ left = force_number(s1)->numbr;
+ right = force_number(s2)->numbr;
if (do_lint) {
if (left < 0 || right < 0)
- lintwarn(_("or(%lf, %lf): negative values will give strange results"), left, right);
+ lintwarn(_("or(%f, %f): negative values will give strange results"), left, right);
if (double_to_int(left) != left || double_to_int(right) != right)
- lintwarn(_("or(%lf, %lf): fractional values will be truncated"), left, right);
+ lintwarn(_("or(%f, %f): fractional values will be truncated"), left, right);
}
DEREF(s1);
@@ -2915,8 +3096,6 @@ do_xor(int nargs)
AWKNUM left, right;
POP_TWO_SCALARS(s1, s2);
- left = force_number(s1);
- right = force_number(s2);
if (do_lint) {
if ((s1->flags & (NUMCUR|NUMBER)) == 0)
@@ -2924,13 +3103,13 @@ do_xor(int nargs)
if ((s2->flags & (NUMCUR|NUMBER)) == 0)
lintwarn(_("xor: received non-numeric second argument"));
}
- left = force_number(s1);
- right = force_number(s2);
+ left = force_number(s1)->numbr;
+ right = force_number(s2)->numbr;
if (do_lint) {
if (left < 0 || right < 0)
- lintwarn(_("xor(%lf, %lf): negative values will give strange results"), left, right);
+ lintwarn(_("xor(%f, %f): negative values will give strange results"), left, right);
if (double_to_int(left) != left || double_to_int(right) != right)
- lintwarn(_("xor(%lf, %lf): fractional values will be truncated"), left, right);
+ lintwarn(_("xor(%f, %f): fractional values will be truncated"), left, right);
}
DEREF(s1);
@@ -2955,16 +3134,14 @@ do_compl(int nargs)
tmp = POP_SCALAR();
if (do_lint && (tmp->flags & (NUMCUR|NUMBER)) == 0)
lintwarn(_("compl: received non-numeric argument"));
- d = force_number(tmp);
+ d = force_number(tmp)->numbr;
DEREF(tmp);
if (do_lint) {
- if ((tmp->flags & (NUMCUR|NUMBER)) == 0)
- lintwarn(_("compl: received non-numeric argument"));
if (d < 0)
- lintwarn(_("compl(%lf): negative value will give strange results"), d);
+ lintwarn(_("compl(%f): negative value will give strange results"), d);
if (double_to_int(d) != d)
- lintwarn(_("compl(%lf): fractional value will be truncated"), d);
+ lintwarn(_("compl(%f): fractional value will be truncated"), d);
}
uval = (uintmax_t) d;
@@ -2982,11 +3159,11 @@ do_strtonum(int nargs)
tmp = POP_SCALAR();
if ((tmp->flags & (NUMBER|NUMCUR)) != 0)
- d = (AWKNUM) force_number(tmp);
- else if (isnondecimal(tmp->stptr, use_lc_numeric))
+ d = (AWKNUM) force_number(tmp)->numbr;
+ else if (get_numbase(tmp->stptr, use_lc_numeric) != 10)
d = nondec2awknum(tmp->stptr, tmp->stlen);
else
- d = (AWKNUM) force_number(tmp);
+ d = (AWKNUM) force_number(tmp)->numbr;
DEREF(tmp);
return make_number((AWKNUM) d);
@@ -3236,7 +3413,10 @@ do_dcngettext(int nargs)
}
#endif
- POP_NUMBER(d); /* third argument */
+ t2 = POP_NUMBER(); /* third argument */
+ d = get_number_d(t2);
+ DEREF(t2);
+
number = (unsigned long) double_to_int(d);
t2 = POP_STRING(); /* second argument */
string2 = t2->stptr;
diff --git a/cint_array.c b/cint_array.c
index 8ec09239..f82eb4b6 100644
--- a/cint_array.c
+++ b/cint_array.c
@@ -52,7 +52,6 @@ static NODE **cint_list(NODE *symbol, NODE *t);
static NODE **cint_copy(NODE *symbol, NODE *newsymb);
static NODE **cint_dump(NODE *symbol, NODE *ndump);
#ifdef ARRAYDEBUG
-static NODE **cint_option(NODE *opt, NODE *val);
static void cint_print(NODE *symbol);
#endif
@@ -66,9 +65,6 @@ array_ptr cint_array_func[] = {
cint_list,
cint_copy,
cint_dump,
-#ifdef ARRAYDEBUG
- cint_option,
-#endif
};
static inline int cint_hash(long k);
@@ -624,22 +620,6 @@ cint_find(NODE *symbol, long k, int h1)
#ifdef ARRAYDEBUG
-static NODE **
-cint_option(NODE *opt, NODE *val)
-{
- NODE *tmp;
- NODE **ret = (NODE **) ! NULL;
-
- tmp = force_string(opt);
- (void) force_number(val);
- if (strcmp(tmp->stptr, "NHAT") == 0)
- NHAT = (int) val->numbr;
- else
- ret = NULL;
- return ret;
-}
-
-
/* cint_print --- print structural info */
static void
diff --git a/cmd.h b/cmd.h
index 8f8026ae..af6af8d8 100644
--- a/cmd.h
+++ b/cmd.h
@@ -42,10 +42,10 @@ extern int output_is_tty;
extern int input_fd;
extern int input_from_tty;
extern FILE *out_fp;
-extern char *dPrompt;
-extern char *commands_Prompt;
-extern char *eval_Prompt;
-extern char *dgawk_Prompt;
+extern char *dbg_prompt;
+extern char *commands_prompt;
+extern char *eval_prompt;
+extern char *dgawk_prompt;
enum argtype {
D_illegal,
@@ -139,7 +139,7 @@ typedef struct cmd_argument {
#define a_string value.sval /* type = D_string, D_array, D_subscript or D_variable */
#define a_node value.nodeval /* type = D_node, D_field or D_func */
- int a_count; /* subscript count for D_subscript and D_array */
+ int a_count; /* subscript count for D_subscript and D_array */
} CMDARG;
typedef int (*Func_cmd)(CMDARG *, int);
@@ -168,7 +168,8 @@ extern char *(*read_a_line)(const char *prompt);
extern char *read_commands_string(const char *prompt);
extern int in_cmd_src(const char *);
extern int get_eof_status(void);
-extern void push_cmd_src(int fd, int istty, char * (*readfunc)(const char *), int (*closefunc)(int), int cmd, int eofstatus);
+extern void push_cmd_src(int fd, int istty, char * (*readfunc)(const char *),
+ int (*closefunc)(int), int cmd, int eofstatus);
extern int pop_cmd_src(void);
extern int has_break_or_watch_point(int *pnum, int any);
extern int do_list(CMDARG *arg, int cmd);
diff --git a/command.c b/command.c
index 17ba0476..f813a5a9 100644
--- a/command.c
+++ b/command.c
@@ -91,8 +91,8 @@ static int find_command(const char *token, size_t toklen);
static int want_nodeval = FALSE;
-static int cmd_idx = -1; /* index of current command in cmd table */
-static int repeat_idx = -1; /* index of last repeatable command in command table */
+static int cmd_idx = -1; /* index of current command in cmd table */
+static int repeat_idx = -1; /* index of last repeatable command in command table */
static CMDARG *arg_list = NULL; /* list of arguments */
static long errcount = 0;
static char *lexptr_begin = NULL;
@@ -623,20 +623,20 @@ static const yytype_uint16 yyrline[] =
{
0, 106, 106, 108, 126, 127, 177, 184, 185, 186,
187, 188, 192, 193, 194, 195, 199, 200, 201, 202,
- 206, 207, 212, 216, 235, 242, 242, 249, 265, 279,
- 280, 281, 282, 283, 284, 290, 302, 303, 304, 304,
- 305, 305, 306, 307, 308, 309, 310, 310, 311, 312,
- 312, 313, 313, 314, 314, 315, 316, 317, 322, 327,
- 353, 363, 368, 380, 380, 388, 402, 415, 416, 422,
- 423, 427, 428, 429, 430, 436, 437, 438, 443, 454,
- 455, 460, 468, 485, 486, 487, 488, 489, 494, 495,
- 495, 496, 497, 497, 498, 503, 504, 509, 510, 515,
- 516, 519, 521, 525, 526, 541, 542, 547, 555, 556,
- 557, 558, 562, 563, 567, 568, 569, 574, 575, 577,
- 584, 585, 586, 587, 588, 589, 593, 606, 607, 608,
- 612, 613, 614, 615, 619, 621, 623, 627, 642, 646,
- 648, 653, 654, 663, 673, 675, 682, 695, 696, 702,
- 703, 708, 714, 723, 725, 727, 735
+ 206, 207, 212, 216, 236, 243, 243, 250, 266, 280,
+ 281, 282, 283, 284, 285, 291, 303, 304, 305, 305,
+ 306, 306, 307, 308, 309, 310, 311, 311, 312, 313,
+ 313, 314, 314, 315, 315, 316, 317, 318, 323, 328,
+ 354, 364, 369, 381, 381, 389, 403, 416, 417, 423,
+ 424, 428, 429, 430, 431, 437, 438, 439, 444, 455,
+ 456, 461, 469, 486, 487, 488, 489, 490, 495, 496,
+ 496, 497, 498, 498, 499, 504, 505, 510, 511, 516,
+ 517, 520, 522, 526, 527, 542, 543, 548, 556, 557,
+ 558, 559, 563, 564, 568, 569, 570, 575, 576, 578,
+ 585, 586, 587, 588, 589, 590, 594, 607, 608, 609,
+ 613, 614, 615, 616, 620, 622, 624, 628, 643, 647,
+ 649, 654, 655, 664, 674, 676, 683, 696, 697, 703,
+ 704, 709, 715, 724, 726, 728, 736
};
#endif
@@ -1812,8 +1812,9 @@ yyreduce:
* non-terminal (empty rule action). See below.
*/
if (input_from_tty) {
- dPrompt = eval_Prompt;
- fprintf(out_fp, _("Type (g)awk statement(s). End with the command \"end\"\n"));
+ dbg_prompt = eval_prompt;
+ fprintf(out_fp,
+ _("Type (g)awk statement(s). End with the command \"end\"\n"));
rl_inhibit_completion = 1;
}
cmd_idx = -1;
@@ -1825,7 +1826,7 @@ yyreduce:
case 24:
/* Line 1806 of yacc.c */
-#line 235 "command.y"
+#line 236 "command.y"
{
(yyval) = append_statement(arg_list, (char *) start_EVAL);
if (read_a_line == read_commands_string) /* unserializing 'eval' in 'commands' */
@@ -1838,14 +1839,14 @@ yyreduce:
case 25:
/* Line 1806 of yacc.c */
-#line 242 "command.y"
+#line 243 "command.y"
{ (yyval) = append_statement((yyvsp[(1) - (2)]), lexptr_begin); }
break;
case 26:
/* Line 1806 of yacc.c */
-#line 243 "command.y"
+#line 244 "command.y"
{
(yyval) = (yyvsp[(3) - (4)]);
}
@@ -1854,7 +1855,7 @@ yyreduce:
case 27:
/* Line 1806 of yacc.c */
-#line 250 "command.y"
+#line 251 "command.y"
{
arg_list = append_statement((yyvsp[(2) - (3)]), (char *) end_EVAL);
if (read_a_line == read_commands_string) { /* unserializing 'eval' in 'commands' */
@@ -1864,7 +1865,7 @@ yyreduce:
str[len - 2] = '\0';
}
if (input_from_tty) {
- dPrompt = in_commands ? commands_Prompt : dgawk_Prompt;
+ dbg_prompt = in_commands ? commands_prompt : dgawk_prompt;
rl_inhibit_completion = 0;
}
cmd_idx = find_command("eval", 4);
@@ -1875,7 +1876,7 @@ yyreduce:
case 28:
/* Line 1806 of yacc.c */
-#line 266 "command.y"
+#line 267 "command.y"
{
NODE *n;
CMDARG *arg;
@@ -1891,7 +1892,7 @@ yyreduce:
case 34:
/* Line 1806 of yacc.c */
-#line 285 "command.y"
+#line 286 "command.y"
{
if (cmdtab[cmd_idx].class == D_FRAME
&& (yyvsp[(2) - (2)]) != NULL && (yyvsp[(2) - (2)])->a_int < 0)
@@ -1902,7 +1903,7 @@ yyreduce:
case 35:
/* Line 1806 of yacc.c */
-#line 291 "command.y"
+#line 292 "command.y"
{
int idx = find_argument((yyvsp[(2) - (2)]));
if (idx < 0)
@@ -1919,49 +1920,49 @@ yyreduce:
case 38:
/* Line 1806 of yacc.c */
-#line 304 "command.y"
+#line 305 "command.y"
{ want_nodeval = TRUE; }
break;
case 40:
/* Line 1806 of yacc.c */
-#line 305 "command.y"
+#line 306 "command.y"
{ want_nodeval = TRUE; }
break;
case 46:
/* Line 1806 of yacc.c */
-#line 310 "command.y"
+#line 311 "command.y"
{ want_nodeval = TRUE; }
break;
case 49:
/* Line 1806 of yacc.c */
-#line 312 "command.y"
+#line 313 "command.y"
{ want_nodeval = TRUE; }
break;
case 51:
/* Line 1806 of yacc.c */
-#line 313 "command.y"
+#line 314 "command.y"
{ want_nodeval = TRUE; }
break;
case 53:
/* Line 1806 of yacc.c */
-#line 314 "command.y"
+#line 315 "command.y"
{ want_nodeval = TRUE; }
break;
case 57:
/* Line 1806 of yacc.c */
-#line 318 "command.y"
+#line 319 "command.y"
{
if (in_cmd_src((yyvsp[(2) - (2)])->a_string))
yyerror(_("source \"%s\": already sourced."), (yyvsp[(2) - (2)])->a_string);
@@ -1971,7 +1972,7 @@ yyreduce:
case 58:
/* Line 1806 of yacc.c */
-#line 323 "command.y"
+#line 324 "command.y"
{
if (! input_from_tty)
yyerror(_("save \"%s\": command not permitted."), (yyvsp[(2) - (2)])->a_string);
@@ -1981,7 +1982,7 @@ yyreduce:
case 59:
/* Line 1806 of yacc.c */
-#line 328 "command.y"
+#line 329 "command.y"
{
int type = 0;
int num;
@@ -2000,7 +2001,7 @@ yyreduce:
if (type) {
in_commands = TRUE;
if (input_from_tty) {
- dPrompt = commands_Prompt;
+ dbg_prompt = commands_prompt;
fprintf(out_fp, _("Type commands for when %s %d is hit, one per line.\n"),
(type == D_break) ? "breakpoint" : "watchpoint", num);
fprintf(out_fp, _("End with the command \"end\"\n"));
@@ -2012,13 +2013,13 @@ yyreduce:
case 60:
/* Line 1806 of yacc.c */
-#line 354 "command.y"
+#line 355 "command.y"
{
if (! in_commands)
yyerror(_("`end' valid only in command `commands' or `eval'"));
else {
if (input_from_tty)
- dPrompt = dgawk_Prompt;
+ dbg_prompt = dgawk_prompt;
in_commands = FALSE;
}
}
@@ -2027,7 +2028,7 @@ yyreduce:
case 61:
/* Line 1806 of yacc.c */
-#line 364 "command.y"
+#line 365 "command.y"
{
if (! in_commands)
yyerror(_("`silent' valid only in command `commands'"));
@@ -2037,7 +2038,7 @@ yyreduce:
case 62:
/* Line 1806 of yacc.c */
-#line 369 "command.y"
+#line 370 "command.y"
{
int idx = find_argument((yyvsp[(2) - (2)]));
if (idx < 0)
@@ -2054,14 +2055,14 @@ yyreduce:
case 63:
/* Line 1806 of yacc.c */
-#line 380 "command.y"
+#line 381 "command.y"
{ want_nodeval = TRUE; }
break;
case 64:
/* Line 1806 of yacc.c */
-#line 381 "command.y"
+#line 382 "command.y"
{
int type;
int num = (yyvsp[(2) - (4)])->a_int;
@@ -2074,7 +2075,7 @@ yyreduce:
case 65:
/* Line 1806 of yacc.c */
-#line 389 "command.y"
+#line 390 "command.y"
{
if (in_commands) {
/* Prepend command 'eval' to argument list */
@@ -2090,7 +2091,7 @@ yyreduce:
case 66:
/* Line 1806 of yacc.c */
-#line 403 "command.y"
+#line 404 "command.y"
{
if ((yyvsp[(1) - (1)]) != NULL) {
NODE *n = (yyvsp[(1) - (1)])->a_node;
@@ -2105,42 +2106,42 @@ yyreduce:
case 68:
/* Line 1806 of yacc.c */
-#line 417 "command.y"
+#line 418 "command.y"
{ (yyval) = NULL; }
break;
case 69:
/* Line 1806 of yacc.c */
-#line 422 "command.y"
+#line 423 "command.y"
{ (yyval) = NULL; }
break;
case 74:
/* Line 1806 of yacc.c */
-#line 431 "command.y"
+#line 432 "command.y"
{ (yyval) = NULL; }
break;
case 75:
/* Line 1806 of yacc.c */
-#line 436 "command.y"
+#line 437 "command.y"
{ (yyval) = NULL; }
break;
case 77:
/* Line 1806 of yacc.c */
-#line 439 "command.y"
+#line 440 "command.y"
{ (yyval) = NULL; }
break;
case 78:
/* Line 1806 of yacc.c */
-#line 444 "command.y"
+#line 445 "command.y"
{
NODE *n;
n = (yyvsp[(1) - (1)])->a_node;
@@ -2152,14 +2153,14 @@ yyreduce:
case 79:
/* Line 1806 of yacc.c */
-#line 454 "command.y"
+#line 455 "command.y"
{ (yyval) = NULL; }
break;
case 80:
/* Line 1806 of yacc.c */
-#line 456 "command.y"
+#line 457 "command.y"
{
if (find_option((yyvsp[(1) - (1)])->a_string) < 0)
yyerror(_("option: invalid parameter - \"%s\""), (yyvsp[(1) - (1)])->a_string);
@@ -2169,7 +2170,7 @@ yyreduce:
case 81:
/* Line 1806 of yacc.c */
-#line 461 "command.y"
+#line 462 "command.y"
{
if (find_option((yyvsp[(1) - (3)])->a_string) < 0)
yyerror(_("option: invalid parameter - \"%s\""), (yyvsp[(1) - (3)])->a_string);
@@ -2179,7 +2180,7 @@ yyreduce:
case 82:
/* Line 1806 of yacc.c */
-#line 469 "command.y"
+#line 470 "command.y"
{
NODE *n;
n = lookup((yyvsp[(1) - (1)])->a_string);
@@ -2197,56 +2198,56 @@ yyreduce:
case 83:
/* Line 1806 of yacc.c */
-#line 485 "command.y"
+#line 486 "command.y"
{ (yyval) = NULL; }
break;
case 88:
/* Line 1806 of yacc.c */
-#line 494 "command.y"
+#line 495 "command.y"
{ (yyval) = NULL; }
break;
case 89:
/* Line 1806 of yacc.c */
-#line 495 "command.y"
+#line 496 "command.y"
{ want_nodeval = TRUE; }
break;
case 92:
/* Line 1806 of yacc.c */
-#line 497 "command.y"
+#line 498 "command.y"
{ want_nodeval = TRUE; }
break;
case 95:
/* Line 1806 of yacc.c */
-#line 503 "command.y"
+#line 504 "command.y"
{ (yyval) = NULL; }
break;
case 97:
/* Line 1806 of yacc.c */
-#line 509 "command.y"
+#line 510 "command.y"
{ (yyval) = NULL; }
break;
case 99:
/* Line 1806 of yacc.c */
-#line 515 "command.y"
+#line 516 "command.y"
{ (yyval) = NULL; }
break;
case 104:
/* Line 1806 of yacc.c */
-#line 527 "command.y"
+#line 528 "command.y"
{
int idx = find_argument((yyvsp[(1) - (2)]));
if (idx < 0)
@@ -2263,7 +2264,7 @@ yyreduce:
case 106:
/* Line 1806 of yacc.c */
-#line 543 "command.y"
+#line 544 "command.y"
{
(yyvsp[(2) - (2)])->type = D_array; /* dump all items */
(yyvsp[(2) - (2)])->a_count = 0;
@@ -2273,7 +2274,7 @@ yyreduce:
case 107:
/* Line 1806 of yacc.c */
-#line 548 "command.y"
+#line 549 "command.y"
{
(yyvsp[(2) - (3)])->type = D_array;
(yyvsp[(2) - (3)])->a_count = num_dim;
@@ -2283,21 +2284,21 @@ yyreduce:
case 117:
/* Line 1806 of yacc.c */
-#line 574 "command.y"
+#line 575 "command.y"
{ (yyval) = NULL; }
break;
case 118:
/* Line 1806 of yacc.c */
-#line 576 "command.y"
+#line 577 "command.y"
{ (yyval) = NULL; }
break;
case 119:
/* Line 1806 of yacc.c */
-#line 578 "command.y"
+#line 579 "command.y"
{
CMDARG *a;
a = mk_cmdarg(D_int);
@@ -2309,7 +2310,7 @@ yyreduce:
case 126:
/* Line 1806 of yacc.c */
-#line 594 "command.y"
+#line 595 "command.y"
{
if ((yyvsp[(1) - (3)])->a_int > (yyvsp[(3) - (3)])->a_int)
yyerror(_("invalid range specification: %d - %d"),
@@ -2323,28 +2324,28 @@ yyreduce:
case 127:
/* Line 1806 of yacc.c */
-#line 606 "command.y"
+#line 607 "command.y"
{ (yyval) = NULL; }
break;
case 134:
/* Line 1806 of yacc.c */
-#line 620 "command.y"
+#line 621 "command.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 135:
/* Line 1806 of yacc.c */
-#line 622 "command.y"
+#line 623 "command.y"
{ (yyval) = (yyvsp[(1) - (3)]); }
break;
case 137:
/* Line 1806 of yacc.c */
-#line 628 "command.y"
+#line 629 "command.y"
{
CMDARG *a;
NODE *subs;
@@ -2364,21 +2365,21 @@ yyreduce:
case 139:
/* Line 1806 of yacc.c */
-#line 647 "command.y"
+#line 648 "command.y"
{ (yyval) = (yyvsp[(1) - (1)]); num_dim = 1; }
break;
case 140:
/* Line 1806 of yacc.c */
-#line 649 "command.y"
+#line 650 "command.y"
{ (yyval) = (yyvsp[(1) - (2)]); num_dim++; }
break;
case 142:
/* Line 1806 of yacc.c */
-#line 655 "command.y"
+#line 656 "command.y"
{
NODE *n = (yyvsp[(2) - (2)])->a_node;
if ((n->flags & NUMBER) == 0)
@@ -2392,7 +2393,7 @@ yyreduce:
case 143:
/* Line 1806 of yacc.c */
-#line 664 "command.y"
+#line 665 "command.y"
{
/* a_string is array name, a_count is dimension count */
(yyvsp[(1) - (2)])->type = D_subscript;
@@ -2404,14 +2405,14 @@ yyreduce:
case 144:
/* Line 1806 of yacc.c */
-#line 674 "command.y"
+#line 675 "command.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 145:
/* Line 1806 of yacc.c */
-#line 676 "command.y"
+#line 677 "command.y"
{
NODE *n = (yyvsp[(2) - (2)])->a_node;
if ((n->flags & NUMBER) == 0)
@@ -2423,13 +2424,13 @@ yyreduce:
case 146:
/* Line 1806 of yacc.c */
-#line 683 "command.y"
+#line 684 "command.y"
{
NODE *n = (yyvsp[(2) - (2)])->a_node;
if ((n->flags & NUMBER) == 0)
yyerror(_("non-numeric value found, numeric expected"));
else
- (yyvsp[(2) - (2)])->a_node->numbr = - n->numbr;
+ negate_num(n);
(yyval) = (yyvsp[(2) - (2)]);
}
break;
@@ -2437,35 +2438,35 @@ yyreduce:
case 147:
/* Line 1806 of yacc.c */
-#line 695 "command.y"
+#line 696 "command.y"
{ (yyval) = NULL; }
break;
case 148:
/* Line 1806 of yacc.c */
-#line 697 "command.y"
+#line 698 "command.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 149:
/* Line 1806 of yacc.c */
-#line 702 "command.y"
+#line 703 "command.y"
{ (yyval) = NULL; }
break;
case 150:
/* Line 1806 of yacc.c */
-#line 704 "command.y"
+#line 705 "command.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 151:
/* Line 1806 of yacc.c */
-#line 709 "command.y"
+#line 710 "command.y"
{
if ((yyvsp[(1) - (1)])->a_int == 0)
yyerror(_("non-zero integer value"));
@@ -2476,7 +2477,7 @@ yyreduce:
case 152:
/* Line 1806 of yacc.c */
-#line 715 "command.y"
+#line 716 "command.y"
{
if ((yyvsp[(2) - (2)])->a_int == 0)
yyerror(_("non-zero integer value"));
@@ -2487,21 +2488,21 @@ yyreduce:
case 153:
/* Line 1806 of yacc.c */
-#line 724 "command.y"
+#line 725 "command.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 154:
/* Line 1806 of yacc.c */
-#line 726 "command.y"
+#line 727 "command.y"
{ (yyval) = (yyvsp[(2) - (2)]); }
break;
case 155:
/* Line 1806 of yacc.c */
-#line 728 "command.y"
+#line 729 "command.y"
{
(yyvsp[(2) - (2)])->a_int = - (yyvsp[(2) - (2)])->a_int;
(yyval) = (yyvsp[(2) - (2)]);
@@ -2511,7 +2512,7 @@ yyreduce:
case 156:
/* Line 1806 of yacc.c */
-#line 736 "command.y"
+#line 737 "command.y"
{
if (lexptr_begin != NULL) {
if (input_from_tty && lexptr_begin[0] != '\0')
@@ -2525,7 +2526,7 @@ yyreduce:
/* Line 1806 of yacc.c */
-#line 2541 "command.c"
+#line 2542 "command.c"
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
@@ -2756,7 +2757,7 @@ yyreturn:
/* Line 2067 of yacc.c */
-#line 746 "command.y"
+#line 747 "command.y"
@@ -3051,7 +3052,7 @@ yylex(void)
if (lexptr_begin == NULL) {
again:
- lexptr_begin = read_a_line(dPrompt);
+ lexptr_begin = read_a_line(dbg_prompt);
if (lexptr_begin == NULL) { /* EOF or error */
if (get_eof_status() == EXIT_FATAL)
exit(EXIT_FATAL);
@@ -3252,22 +3253,37 @@ err:
return D_STRING;
}
- /* assert(want_nodval == TRUE); */
-
/* look for awk number */
if (isdigit((unsigned char) tokstart[0])) {
- double d;
+ NODE *r = NULL;
errno = 0;
- d = strtod(tokstart, &lexptr);
+#ifdef HAVE_MPFR
+ if (do_mpfr) {
+ int tval;
+ r = mpg_float();
+ tval = mpfr_strtofr(r->mpg_numbr, tokstart, & lexptr, 0, ROUND_MODE);
+ IEEE_FMT(r->mpg_numbr, tval);
+ if (mpfr_integer_p(r->mpg_numbr)) {
+ /* integral value, convert to a GMP type. */
+ NODE *tmp = r;
+ r = mpg_integer();
+ mpfr_get_z(r->mpg_i, tmp->mpg_numbr, MPFR_RNDZ);
+ unref(tmp);
+ }
+ } else
+#endif
+ r = make_number(strtod(tokstart, & lexptr));
+
if (errno != 0) {
yyerror(strerror(errno));
+ unref(r);
errno = 0;
return '\n';
}
yylval = mk_cmdarg(D_node);
- yylval->a_node = make_number(d);
+ yylval->a_node = r;
append_cmdarg(yylval);
return D_NODE;
}
diff --git a/command.y b/command.y
index 64066a02..a5a711b2 100644
--- a/command.y
+++ b/command.y
@@ -1,5 +1,5 @@
/*
- * command.y - yacc/bison parser for debugger command
+ * command.y - yacc/bison parser for debugger commands.
*/
/*
@@ -39,8 +39,8 @@ static int find_command(const char *token, size_t toklen);
static int want_nodeval = FALSE;
-static int cmd_idx = -1; /* index of current command in cmd table */
-static int repeat_idx = -1; /* index of last repeatable command in command table */
+static int cmd_idx = -1; /* index of current command in cmd table */
+static int repeat_idx = -1; /* index of last repeatable command in command table */
static CMDARG *arg_list = NULL; /* list of arguments */
static long errcount = 0;
static char *lexptr_begin = NULL;
@@ -220,8 +220,9 @@ eval_prologue
* non-terminal (empty rule action). See below.
*/
if (input_from_tty) {
- dPrompt = eval_Prompt;
- fprintf(out_fp, _("Type (g)awk statement(s). End with the command \"end\"\n"));
+ dbg_prompt = eval_prompt;
+ fprintf(out_fp,
+ _("Type (g)awk statement(s). End with the command \"end\"\n"));
rl_inhibit_completion = 1;
}
cmd_idx = -1;
@@ -256,7 +257,7 @@ eval_cmd
str[len - 2] = '\0';
}
if (input_from_tty) {
- dPrompt = in_commands ? commands_Prompt : dgawk_Prompt;
+ dbg_prompt = in_commands ? commands_prompt : dgawk_prompt;
rl_inhibit_completion = 0;
}
cmd_idx = find_command("eval", 4);
@@ -343,7 +344,7 @@ command
if (type) {
in_commands = TRUE;
if (input_from_tty) {
- dPrompt = commands_Prompt;
+ dbg_prompt = commands_prompt;
fprintf(out_fp, _("Type commands for when %s %d is hit, one per line.\n"),
(type == D_break) ? "breakpoint" : "watchpoint", num);
fprintf(out_fp, _("End with the command \"end\"\n"));
@@ -356,7 +357,7 @@ command
yyerror(_("`end' valid only in command `commands' or `eval'"));
else {
if (input_from_tty)
- dPrompt = dgawk_Prompt;
+ dbg_prompt = dgawk_prompt;
in_commands = FALSE;
}
}
@@ -685,7 +686,7 @@ node
if ((n->flags & NUMBER) == 0)
yyerror(_("non-numeric value found, numeric expected"));
else
- $2->a_node->numbr = - n->numbr;
+ negate_num(n);
$$ = $2;
}
;
@@ -1037,7 +1038,7 @@ yylex(void)
if (lexptr_begin == NULL) {
again:
- lexptr_begin = read_a_line(dPrompt);
+ lexptr_begin = read_a_line(dbg_prompt);
if (lexptr_begin == NULL) { /* EOF or error */
if (get_eof_status() == EXIT_FATAL)
exit(EXIT_FATAL);
@@ -1238,22 +1239,37 @@ err:
return D_STRING;
}
- /* assert(want_nodval == TRUE); */
-
/* look for awk number */
if (isdigit((unsigned char) tokstart[0])) {
- double d;
+ NODE *r = NULL;
errno = 0;
- d = strtod(tokstart, &lexptr);
+#ifdef HAVE_MPFR
+ if (do_mpfr) {
+ int tval;
+ r = mpg_float();
+ tval = mpfr_strtofr(r->mpg_numbr, tokstart, & lexptr, 0, ROUND_MODE);
+ IEEE_FMT(r->mpg_numbr, tval);
+ if (mpfr_integer_p(r->mpg_numbr)) {
+ /* integral value, convert to a GMP type. */
+ NODE *tmp = r;
+ r = mpg_integer();
+ mpfr_get_z(r->mpg_i, tmp->mpg_numbr, MPFR_RNDZ);
+ unref(tmp);
+ }
+ } else
+#endif
+ r = make_number(strtod(tokstart, & lexptr));
+
if (errno != 0) {
yyerror(strerror(errno));
+ unref(r);
errno = 0;
return '\n';
}
yylval = mk_cmdarg(D_node);
- yylval->a_node = make_number(d);
+ yylval->a_node = r;
append_cmdarg(yylval);
return D_NODE;
}
diff --git a/config.guess b/config.guess
index 850a1a48..d622a44e 100755
--- a/config.guess
+++ b/config.guess
@@ -1,14 +1,14 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
-# Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+# 2011, 2012 Free Software Foundation, Inc.
-timestamp='2006-07-02'
+timestamp='2012-02-10'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
+# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
@@ -17,9 +17,7 @@ timestamp='2006-07-02'
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -27,16 +25,16 @@ timestamp='2006-07-02'
# the same distribution terms that you use for the rest of that program.
-# Originally written by Per Bothner <per@bothner.com>.
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
+# Originally written by Per Bothner. Please send patches (context
+# diff format) to <config-patches@gnu.org> and include a ChangeLog
+# entry.
#
# This script attempts to guess a canonical system name similar to
# config.sub. If it succeeds, it prints the system name on stdout, and
# exits with 0. Otherwise, it exits with 1.
#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
me=`echo "$0" | sed -e 's,.*/,,'`
@@ -56,7 +54,8 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
@@ -144,7 +143,7 @@ UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
# *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
# switched to ELF, *-*-netbsd* would select the old
# object file format. This provides both forward
@@ -161,6 +160,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
sh3eb) machine=sh-unknown ;;
+ sh5el) machine=sh5le-unknown ;;
*) machine=${UNAME_MACHINE_ARCH}-unknown ;;
esac
# The Operating System including object format, if it has switched
@@ -169,7 +169,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
eval $set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep __ELF__ >/dev/null
+ | grep -q __ELF__
then
# Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
# Return netbsd for either. FIX?
@@ -179,7 +179,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
fi
;;
*)
- os=netbsd
+ os=netbsd
;;
esac
# The OS release
@@ -222,7 +222,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
;;
*5.*)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
;;
esac
# According to Compaq, /usr/sbin/psrinfo has been available on
@@ -268,7 +268,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit ;;
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+ exitcode=$?
+ trap '' 0
+ exit $exitcode ;;
Alpha\ *:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# Should we change UNAME_MACHINE based on the output of uname instead
@@ -294,7 +297,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
echo s390-ibm-zvmoe
exit ;;
*:OS400:*:*)
- echo powerpc-ibm-os400
+ echo powerpc-ibm-os400
exit ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
@@ -323,14 +326,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
case `/usr/bin/uname -p` in
sparc) echo sparc-icl-nx7; exit ;;
esac ;;
+ s390x:SunOS:*:*)
+ echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
sun4H:SunOS:5.*:*)
echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
- i86pc:SunOS:5.*:*)
- echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+ echo i386-pc-auroraux${UNAME_RELEASE}
+ exit ;;
+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+ eval $set_cc_for_build
+ SUN_ARCH="i386"
+ # If there is a compiler, see if it is configured for 64-bit objects.
+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+ # This test works for both compilers.
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ SUN_ARCH="x86_64"
+ fi
+ fi
+ echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
@@ -374,23 +396,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# MiNT. But MiNT is downward compatible to TOS, so this should
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
+ exit ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
- exit ;;
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
- exit ;;
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
- exit ;;
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit ;;
m68k:machten:*:*)
echo m68k-apple-machten${UNAME_RELEASE}
exit ;;
@@ -460,8 +482,8 @@ EOF
echo m88k-motorola-sysv3
exit ;;
AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
then
if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
@@ -474,7 +496,7 @@ EOF
else
echo i586-dg-dgux${UNAME_RELEASE}
fi
- exit ;;
+ exit ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
exit ;;
@@ -531,7 +553,7 @@ EOF
echo rs6000-ibm-aix3.2
fi
exit ;;
- *:AIX:*:[45])
+ *:AIX:*:[4567])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
@@ -574,52 +596,52 @@ EOF
9000/[678][0-9][0-9])
if [ -x /usr/bin/getconf ]; then
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
- 532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
- 32) HP_ARCH="hppa2.0n" ;;
- 64) HP_ARCH="hppa2.0w" ;;
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
'') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
- esac ;;
- esac
+ esac ;;
+ esac
fi
if [ "${HP_ARCH}" = "" ]; then
eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ sed 's/^ //' << EOF >$dummy.c
- #define _HPUX_SOURCE
- #include <stdlib.h>
- #include <unistd.h>
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
- int main ()
- {
- #if defined(_SC_KERNEL_BITS)
- long bits = sysconf(_SC_KERNEL_BITS);
- #endif
- long cpu = sysconf (_SC_CPU_VERSION);
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
- case CPU_PA_RISC2_0:
- #if defined(_SC_KERNEL_BITS)
- switch (bits)
- {
- case 64: puts ("hppa2.0w"); break;
- case 32: puts ("hppa2.0n"); break;
- default: puts ("hppa2.0"); break;
- } break;
- #else /* !defined(_SC_KERNEL_BITS) */
- puts ("hppa2.0"); break;
- #endif
- default: puts ("hppa1.0"); break;
- }
- exit (0);
- }
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
EOF
(CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
test -z "$HP_ARCH" && HP_ARCH=hppa
@@ -639,7 +661,7 @@ EOF
# => hppa64-hp-hpux11.23
if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
- grep __LP64__ >/dev/null
+ grep -q __LP64__
then
HP_ARCH="hppa2.0w"
else
@@ -710,22 +732,22 @@ EOF
exit ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
echo c1-convex-bsd
- exit ;;
+ exit ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
- exit ;;
+ exit ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
echo c34-convex-bsd
- exit ;;
+ exit ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
echo c38-convex-bsd
- exit ;;
+ exit ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
echo c4-convex-bsd
- exit ;;
+ exit ;;
CRAY*Y-MP:*:*:*)
echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit ;;
@@ -749,14 +771,14 @@ EOF
exit ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
5000:UNIX_System_V:4.*:*)
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
@@ -768,37 +790,48 @@ EOF
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
exit ;;
*:FreeBSD:*:*)
- case ${UNAME_MACHINE} in
- pc98)
- echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ case ${UNAME_PROCESSOR} in
amd64)
echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
*)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
esac
exit ;;
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
exit ;;
- i*:MINGW*:*)
+ *:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
+ i*:MSYS*:*)
+ echo ${UNAME_MACHINE}-pc-msys
+ exit ;;
i*:windows32*:*)
- # uname -m includes "-pc" on this system.
- echo ${UNAME_MACHINE}-mingw32
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
exit ;;
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
exit ;;
- x86:Interix*:[3456]*)
- echo i586-pc-interix${UNAME_RELEASE}
- exit ;;
- EM64T:Interix*:[3456]*)
- echo x86_64-unknown-interix${UNAME_RELEASE}
- exit ;;
+ *:Interix*:*)
+ case ${UNAME_MACHINE} in
+ x86)
+ echo i586-pc-interix${UNAME_RELEASE}
+ exit ;;
+ authenticamd | genuineintel | EM64T)
+ echo x86_64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ IA64)
+ echo ia64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ esac ;;
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
echo i${UNAME_MACHINE}-pc-mks
exit ;;
+ 8664:Windows_NT:*)
+ echo x86_64-pc-mks
+ exit ;;
i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
@@ -828,20 +861,68 @@ EOF
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit ;;
- arm*:Linux:*:*)
+ aarch64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ aarch64_be:Linux:*:*)
+ UNAME_MACHINE=aarch64_be
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep -q ld.so.1
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit ;;
+ arm*:Linux:*:*)
+ eval $set_cc_for_build
+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_EABI__
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ else
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ else
+ echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
+ fi
+ fi
+ exit ;;
avr32*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
cris:Linux:*:*)
- echo cris-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-gnu
exit ;;
crisv32:Linux:*:*)
- echo crisv32-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-gnu
exit ;;
frv:Linux:*:*)
- echo frv-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ hexagon:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ i*86:Linux:*:*)
+ LIBC=gnu
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
exit ;;
ia64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
@@ -852,74 +933,33 @@ EOF
m68*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
- mips:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef mips
- #undef mipsel
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mipsel
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips
- #else
- CPU=
- #endif
- #endif
-EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^CPU/{
- s: ::g
- p
- }'`"
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
- ;;
- mips64:Linux:*:*)
+ mips:Linux:*:* | mips64:Linux:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#undef CPU
- #undef mips64
- #undef mips64el
+ #undef ${UNAME_MACHINE}
+ #undef ${UNAME_MACHINE}el
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mips64el
+ CPU=${UNAME_MACHINE}el
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips64
+ CPU=${UNAME_MACHINE}
#else
CPU=
#endif
#endif
EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^CPU/{
- s: ::g
- p
- }'`"
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
;;
or32:Linux:*:*)
- echo or32-unknown-linux-gnu
- exit ;;
- ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
- ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-gnu
+ padre:Linux:*:*)
+ echo sparc-unknown-linux-gnu
exit ;;
- alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
- EV5) UNAME_MACHINE=alphaev5 ;;
- EV56) UNAME_MACHINE=alphaev56 ;;
- PCA56) UNAME_MACHINE=alphapca56 ;;
- PCA57) UNAME_MACHINE=alphapca56 ;;
- EV6) UNAME_MACHINE=alphaev6 ;;
- EV67) UNAME_MACHINE=alphaev67 ;;
- EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
- objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
@@ -929,14 +969,17 @@ EOF
*) echo hppa-unknown-linux-gnu ;;
esac
exit ;;
- parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-gnu
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+ exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
echo ${UNAME_MACHINE}-ibm-linux
exit ;;
sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
sh*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
@@ -944,75 +987,18 @@ EOF
sparc:Linux:*:* | sparc64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
+ tile*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
vax:Linux:*:*)
echo ${UNAME_MACHINE}-dec-linux-gnu
exit ;;
x86_64:Linux:*:*)
- echo x86_64-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ xtensa*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
- i*86:Linux:*:*)
- # The BFD linker knows what the default object file format is, so
- # first see if it will tell us. cd to the root directory to prevent
- # problems with other programs or directories called `ld' in the path.
- # Set LC_ALL=C to ensure ld outputs messages in English.
- ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
- | sed -ne '/supported targets:/!d
- s/[ ][ ]*/ /g
- s/.*supported targets: *//
- s/ .*//
- p'`
- case "$ld_supported_targets" in
- elf32-i386)
- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
- ;;
- a.out-i386-linux)
- echo "${UNAME_MACHINE}-pc-linux-gnuaout"
- exit ;;
- coff-i386)
- echo "${UNAME_MACHINE}-pc-linux-gnucoff"
- exit ;;
- "")
- # Either a pre-BFD a.out linker (linux-gnuoldld) or
- # one that does not give us useful --help.
- echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
- exit ;;
- esac
- # Determine whether the default compiler is a.out or elf
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <features.h>
- #ifdef __ELF__
- # ifdef __GLIBC__
- # if __GLIBC__ >= 2
- LIBC=gnu
- # else
- LIBC=gnulibc1
- # endif
- # else
- LIBC=gnulibc1
- # endif
- #else
- #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
- LIBC=gnu
- #else
- LIBC=gnuaout
- #endif
- #endif
- #ifdef __dietlibc__
- LIBC=dietlibc
- #endif
-EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^LIBC/{
- s: ::g
- p
- }'`"
- test x"${LIBC}" != x && {
- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
- exit
- }
- test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
- ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
# earlier versions are messed up and put the nodename in both
@@ -1020,11 +1006,11 @@ EOF
echo i386-sequent-sysv4
exit ;;
i*86:UNIX_SV:4.2MP:2.*)
- # Unixware is an offshoot of SVR4, but it has its own version
- # number series starting with 2...
- # I am not positive that other SVR4 systems won't match this,
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
# I just have to hope. -- rms.
- # Use sysv4.2uw... so that sysv4* matches it.
+ # Use sysv4.2uw... so that sysv4* matches it.
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
exit ;;
i*86:OS/2:*:*)
@@ -1041,7 +1027,7 @@ EOF
i*86:syllable:*:*)
echo ${UNAME_MACHINE}-pc-syllable
exit ;;
- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
echo i386-unknown-lynxos${UNAME_RELEASE}
exit ;;
i*86:*DOS:*:*)
@@ -1056,7 +1042,7 @@ EOF
fi
exit ;;
i*86:*:5:[678]*)
- # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
case `/bin/uname -X | grep "^Machine"` in
*486*) UNAME_MACHINE=i486 ;;
*Pentium) UNAME_MACHINE=i586 ;;
@@ -1084,10 +1070,13 @@ EOF
exit ;;
pc:*:*:*)
# Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i386.
- echo i386-pc-msdosdjgpp
- exit ;;
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i586.
+ # Note: whatever this is, it MUST be the same as what config.sub
+ # prints for the "djgpp" host, or else GDB configury will decide that
+ # this is a cross-build.
+ echo i586-pc-msdosdjgpp
+ exit ;;
Intel:Mach:3*:*)
echo i386-pc-mach3
exit ;;
@@ -1122,8 +1111,18 @@ EOF
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
&& { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4; exit; } ;;
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
+ NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+ OS_REL='.3'
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
echo m68k-unknown-lynxos${UNAME_RELEASE}
exit ;;
@@ -1136,7 +1135,7 @@ EOF
rs6000:LynxOS:2.*:*)
echo rs6000-unknown-lynxos${UNAME_RELEASE}
exit ;;
- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
echo powerpc-unknown-lynxos${UNAME_RELEASE}
exit ;;
SM[BE]S:UNIX_SV:*:*)
@@ -1156,10 +1155,10 @@ EOF
echo ns32k-sni-sysv
fi
exit ;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
- # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
@@ -1185,11 +1184,11 @@ EOF
exit ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
+ echo mips-nec-sysv${UNAME_RELEASE}
else
- echo mips-unknown-sysv${UNAME_RELEASE}
+ echo mips-unknown-sysv${UNAME_RELEASE}
fi
- exit ;;
+ exit ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
echo powerpc-be-beos
exit ;;
@@ -1199,6 +1198,9 @@ EOF
BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
echo i586-pc-beos
exit ;;
+ BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
+ echo i586-pc-haiku
+ exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
exit ;;
@@ -1208,6 +1210,15 @@ EOF
SX-6:SUPER-UX:*:*)
echo sx6-nec-superux${UNAME_RELEASE}
exit ;;
+ SX-7:SUPER-UX:*:*)
+ echo sx7-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8:SUPER-UX:*:*)
+ echo sx8-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8R:SUPER-UX:*:*)
+ echo sx8r-nec-superux${UNAME_RELEASE}
+ exit ;;
Power*:Rhapsody:*:*)
echo powerpc-apple-rhapsody${UNAME_RELEASE}
exit ;;
@@ -1217,6 +1228,16 @@ EOF
*:Darwin:*:*)
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
case $UNAME_PROCESSOR in
+ i386)
+ eval $set_cc_for_build
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ UNAME_PROCESSOR="x86_64"
+ fi
+ fi ;;
unknown) UNAME_PROCESSOR=powerpc ;;
esac
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
@@ -1232,6 +1253,9 @@ EOF
*:QNX:*:4*)
echo i386-pc-qnx
exit ;;
+ NEO-?:NONSTOP_KERNEL:*:*)
+ echo neo-tandem-nsk${UNAME_RELEASE}
+ exit ;;
NSE-?:NONSTOP_KERNEL:*:*)
echo nse-tandem-nsk${UNAME_RELEASE}
exit ;;
@@ -1277,13 +1301,13 @@ EOF
echo pdp10-unknown-its
exit ;;
SEI:*:*:SEIUX)
- echo mips-sei-seiux${UNAME_RELEASE}
+ echo mips-sei-seiux${UNAME_RELEASE}
exit ;;
*:DragonFly:*:*)
echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
exit ;;
*:*VMS:*:*)
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
case "${UNAME_MACHINE}" in
A*) echo alpha-dec-vms ; exit ;;
I*) echo ia64-dec-vms ; exit ;;
@@ -1298,6 +1322,12 @@ EOF
i*86:rdos:*:*)
echo ${UNAME_MACHINE}-pc-rdos
exit ;;
+ i*86:AROS:*:*)
+ echo ${UNAME_MACHINE}-pc-aros
+ exit ;;
+ x86_64:VMkernel:*:*)
+ echo ${UNAME_MACHINE}-unknown-esx
+ exit ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
@@ -1320,11 +1350,11 @@ main ()
#include <sys/param.h>
printf ("m68k-sony-newsos%s\n",
#ifdef NEWSOS4
- "4"
+ "4"
#else
- ""
+ ""
#endif
- ); exit (0);
+ ); exit (0);
#endif
#endif
@@ -1458,9 +1488,9 @@ This script, last modified $timestamp, has failed to recognize
the operating system you are using. It is advised that you
download the most up to date version of the config scripts from
- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
and
- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
If the version you run ($0) is already up to date, please
send the following data and any information you think might be
diff --git a/config.sub b/config.sub
index 38e508a5..c894da45 100755
--- a/config.sub
+++ b/config.sub
@@ -1,10 +1,10 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
-# Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+# 2011, 2012 Free Software Foundation, Inc.
-timestamp='2006-09-20'
+timestamp='2012-02-10'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -12,7 +12,7 @@ timestamp='2006-09-20'
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
+# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
@@ -21,9 +21,7 @@ timestamp='2006-09-20'
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -32,13 +30,16 @@ timestamp='2006-09-20'
# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
+# diff and a properly formatted GNU ChangeLog entry.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
# If it is invalid, we print an error message on stderr and exit with code 1.
# Otherwise, we print the canonical config type on stdout and succeed.
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
# that are meaningful with *any* GNU software.
@@ -72,7 +73,8 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
@@ -120,12 +122,18 @@ esac
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
- nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+ linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+ knetbsd*-gnu* | netbsd*-gnu* | \
+ kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
+ android-linux)
+ os=-linux-android
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+ ;;
*)
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
if [ $basic_machine != $1 ]
@@ -148,10 +156,13 @@ case $os in
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray)
+ -apple | -axis | -knuth | -cray | -microblaze)
os=
basic_machine=$1
;;
+ -bluegene*)
+ os=-cnk
+ ;;
-sim | -cisco | -oki | -wec | -winbond)
os=
basic_machine=$1
@@ -166,10 +177,10 @@ case $os in
os=-chorusos
basic_machine=$1
;;
- -chorusrdb)
- os=-chorusrdb
+ -chorusrdb)
+ os=-chorusrdb
basic_machine=$1
- ;;
+ ;;
-hiux*)
os=-hiuxwe2
;;
@@ -238,24 +249,32 @@ case $basic_machine in
# Some are omitted here because they have special meanings below.
1750a | 580 \
| a29k \
+ | aarch64 | aarch64_be \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+ | be32 | be64 \
| bfin \
| c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
- | fr30 | frv \
+ | epiphany \
+ | fido | fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | hexagon \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
+ | le32 | le64 \
+ | lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | mcore \
+ | maxq | mb | microblaze | mcore | mep | metag \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
- | mips64vr | mips64vrel \
+ | mips64octeon | mips64octeonel \
| mips64orion | mips64orionel \
+ | mips64r5900 | mips64r5900el \
+ | mips64vr | mips64vrel \
| mips64vr4100 | mips64vr4100el \
| mips64vr4300 | mips64vr4300el \
| mips64vr5000 | mips64vr5000el \
@@ -268,29 +287,42 @@ case $basic_machine in
| mipsisa64sr71k | mipsisa64sr71kel \
| mipstx39 | mipstx39el \
| mn10200 | mn10300 \
+ | moxie \
| mt \
| msp430 \
+ | nds32 | nds32le | nds32be \
| nios | nios2 \
| ns16k | ns32k \
+ | open8 \
| or32 \
| pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | powerpc | powerpc64 | powerpc64le | powerpcle \
| pyramid \
+ | rl78 | rx \
| score \
- | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
- | spu | strongarm \
- | tahoe | thumb | tic4x | tic80 | tron \
- | v850 | v850e \
+ | spu \
+ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+ | ubicom32 \
+ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
| we32k \
- | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
- | z8k)
+ | x86 | xc16x | xstormy16 | xtensa \
+ | z8k | z80)
basic_machine=$basic_machine-unknown
;;
- m6811 | m68hc11 | m6812 | m68hc12)
- # Motorola 68HC11/12.
+ c54x)
+ basic_machine=tic54x-unknown
+ ;;
+ c55x)
+ basic_machine=tic55x-unknown
+ ;;
+ c6x)
+ basic_machine=tic6x-unknown
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
basic_machine=$basic_machine-unknown
os=-none
;;
@@ -300,6 +332,21 @@ case $basic_machine in
basic_machine=mt-unknown
;;
+ strongarm | thumb | xscale)
+ basic_machine=arm-unknown
+ ;;
+ xgate)
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ xscaleeb)
+ basic_machine=armeb-unknown
+ ;;
+
+ xscaleel)
+ basic_machine=armel-unknown
+ ;;
+
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users.
@@ -314,29 +361,36 @@ case $basic_machine in
# Recognize the basic CPU types with company name.
580-* \
| a29k-* \
+ | aarch64-* | aarch64_be-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \
+ | be32-* | be64-* \
| bfin-* | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* \
| clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
- | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | hexagon-* \
| i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \
+ | le32-* | le64-* \
+ | lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
- | mips64vr-* | mips64vrel-* \
+ | mips64octeon-* | mips64octeonel-* \
| mips64orion-* | mips64orionel-* \
+ | mips64r5900-* | mips64r5900el-* \
+ | mips64vr-* | mips64vrel-* \
| mips64vr4100-* | mips64vr4100el-* \
| mips64vr4300-* | mips64vr4300el-* \
| mips64vr5000-* | mips64vr5000el-* \
@@ -351,27 +405,36 @@ case $basic_machine in
| mmix-* \
| mt-* \
| msp430-* \
+ | nds32-* | nds32le-* | nds32be-* \
| nios-* | nios2-* \
| none-* | np1-* | ns16k-* | ns32k-* \
+ | open8-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
| pyramid-* \
- | romp-* | rs6000-* \
- | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+ | rl78-* | romp-* | rs6000-* | rx-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
| sparclite-* \
- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
- | tahoe-* | thumb-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+ | tahoe-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tile*-* \
| tron-* \
- | v850-* | v850e-* | vax-* \
+ | ubicom32-* \
+ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+ | vax-* \
| we32k-* \
- | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
- | xstormy16-* | xtensa-* \
+ | x86-* | x86_64-* | xc16x-* | xps100-* \
+ | xstormy16-* | xtensa*-* \
| ymp-* \
- | z8k-*)
+ | z8k-* | z80-*)
+ ;;
+ # Recognize the basic CPU types without company name, with glob match.
+ xtensa*)
+ basic_machine=$basic_machine-unknown
;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
@@ -389,7 +452,7 @@ case $basic_machine in
basic_machine=a29k-amd
os=-udi
;;
- abacus)
+ abacus)
basic_machine=abacus-unknown
;;
adobe68k)
@@ -435,6 +498,10 @@ case $basic_machine in
basic_machine=m68k-apollo
os=-bsd
;;
+ aros)
+ basic_machine=i386-pc
+ os=-aros
+ ;;
aux)
basic_machine=m68k-apple
os=-aux
@@ -443,10 +510,35 @@ case $basic_machine in
basic_machine=ns32k-sequent
os=-dynix
;;
+ blackfin)
+ basic_machine=bfin-unknown
+ os=-linux
+ ;;
+ blackfin-*)
+ basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ bluegene*)
+ basic_machine=powerpc-ibm
+ os=-cnk
+ ;;
+ c54x-*)
+ basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c55x-*)
+ basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c6x-*)
+ basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
c90)
basic_machine=c90-cray
os=-unicos
;;
+ cegcc)
+ basic_machine=arm-unknown
+ os=-cegcc
+ ;;
convex-c1)
basic_machine=c1-convex
os=-bsd
@@ -475,8 +567,8 @@ case $basic_machine in
basic_machine=craynv-cray
os=-unicosmp
;;
- cr16c)
- basic_machine=cr16c-unknown
+ cr16 | cr16-*)
+ basic_machine=cr16-unknown
os=-elf
;;
crds | unos)
@@ -514,6 +606,10 @@ case $basic_machine in
basic_machine=m88k-motorola
os=-sysv3
;;
+ dicos)
+ basic_machine=i686-pc
+ os=-dicos
+ ;;
djgpp)
basic_machine=i586-pc
os=-msdosdjgpp
@@ -629,7 +725,6 @@ case $basic_machine in
i370-ibm* | ibm*)
basic_machine=i370-ibm
;;
-# I'm not sure what "Sysv32" means. Should this be sysv3.2?
i*86v32)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv32
@@ -668,6 +763,14 @@ case $basic_machine in
basic_machine=m68k-isi
os=-sysv
;;
+ m68knommu)
+ basic_machine=m68k-unknown
+ os=-linux
+ ;;
+ m68knommu-*)
+ basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
m88k-omron*)
basic_machine=m88k-omron
;;
@@ -679,10 +782,17 @@ case $basic_machine in
basic_machine=ns32k-utek
os=-sysv
;;
+ microblaze)
+ basic_machine=microblaze-xilinx
+ ;;
mingw32)
basic_machine=i386-pc
os=-mingw32
;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ os=-mingw32ce
+ ;;
miniframe)
basic_machine=m68000-convergent
;;
@@ -711,10 +821,18 @@ case $basic_machine in
ms1-*)
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;;
+ msys)
+ basic_machine=i386-pc
+ os=-msys
+ ;;
mvs)
basic_machine=i370-ibm
os=-mvs
;;
+ nacl)
+ basic_machine=le32-unknown
+ os=-nacl
+ ;;
ncr3000)
basic_machine=i486-ncr
os=-sysv4
@@ -779,6 +897,12 @@ case $basic_machine in
np1)
basic_machine=np1-gould
;;
+ neo-tandem)
+ basic_machine=neo-tandem
+ ;;
+ nse-tandem)
+ basic_machine=nse-tandem
+ ;;
nsr-tandem)
basic_machine=nsr-tandem
;;
@@ -809,6 +933,14 @@ case $basic_machine in
basic_machine=i860-intel
os=-osf
;;
+ parisc)
+ basic_machine=hppa-unknown
+ os=-linux
+ ;;
+ parisc-*)
+ basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
pbd)
basic_machine=sparc-tti
;;
@@ -853,9 +985,10 @@ case $basic_machine in
;;
power) basic_machine=power-ibm
;;
- ppc) basic_machine=powerpc-unknown
+ ppc | ppcbe) basic_machine=powerpc-unknown
;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ppc-* | ppcbe-*)
+ basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppcle | powerpclittle | ppc-le | powerpc-little)
basic_machine=powerpcle-unknown
@@ -925,6 +1058,9 @@ case $basic_machine in
basic_machine=sh-hitachi
os=-hms
;;
+ sh5el)
+ basic_machine=sh5le-unknown
+ ;;
sh64)
basic_machine=sh64-unknown
;;
@@ -946,6 +1082,9 @@ case $basic_machine in
basic_machine=i860-stratus
os=-sysv4
;;
+ strongarm-* | thumb-*)
+ basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
sun2)
basic_machine=m68000-sun
;;
@@ -1002,17 +1141,9 @@ case $basic_machine in
basic_machine=t90-cray
os=-unicos
;;
- tic54x | c54x*)
- basic_machine=tic54x-unknown
- os=-coff
- ;;
- tic55x | c55x*)
- basic_machine=tic55x-unknown
- os=-coff
- ;;
- tic6x | c6x*)
- basic_machine=tic6x-unknown
- os=-coff
+ tile*)
+ basic_machine=$basic_machine-unknown
+ os=-linux-gnu
;;
tx39)
basic_machine=mipstx39-unknown
@@ -1081,6 +1212,9 @@ case $basic_machine in
xps | xps100)
basic_machine=xps100-honeywell
;;
+ xscale-* | xscalee[bl]-*)
+ basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+ ;;
ymp)
basic_machine=ymp-cray
os=-unicos
@@ -1089,6 +1223,10 @@ case $basic_machine in
basic_machine=z8k-unknown
os=-sim
;;
+ z80-*-coff)
+ basic_machine=z80-unknown
+ os=-sim
+ ;;
none)
basic_machine=none-none
os=-none
@@ -1127,7 +1265,7 @@ case $basic_machine in
we32k)
basic_machine=we32k-att
;;
- sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+ sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
basic_machine=sh-unknown
;;
sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
@@ -1174,9 +1312,12 @@ esac
if [ x"$os" != x"" ]
then
case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
+ # First match some system type aliases
+ # that might get confused with valid system types.
# -solaris* is a basic system type, with this one exception.
+ -auroraux)
+ os=-auroraux
+ ;;
-solaris1 | -solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'`
;;
@@ -1197,10 +1338,11 @@ case $os in
# Each alternative MUST END IN A *, to match a version number.
# -sysv* is not here because it comes later, after sysvr4.
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+ | -sym* | -kopensolaris* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* \
+ | -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
@@ -1209,9 +1351,10 @@ case $os in
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* \
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+ | -chorusos* | -chorusrdb* | -cegcc* \
+ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -linux-gnu* | -linux-android* \
+ | -linux-newlib* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@@ -1219,7 +1362,7 @@ case $os in
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers*)
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1258,7 +1401,7 @@ case $os in
-opened*)
os=-openedition
;;
- -os400*)
+ -os400*)
os=-os400
;;
-wince*)
@@ -1307,7 +1450,7 @@ case $os in
-sinix*)
os=-sysv4
;;
- -tpf*)
+ -tpf*)
os=-tpf
;;
-triton*)
@@ -1349,6 +1492,11 @@ case $os in
-zvmoe)
os=-zvmoe
;;
+ -dicos*)
+ os=-dicos
+ ;;
+ -nacl*)
+ ;;
-none)
;;
*)
@@ -1371,10 +1519,10 @@ else
# system, and we'll never get to this point.
case $basic_machine in
- score-*)
+ score-*)
os=-elf
;;
- spu-*)
+ spu-*)
os=-elf
;;
*-acorn)
@@ -1386,8 +1534,17 @@ case $basic_machine in
arm*-semi)
os=-aout
;;
- c4x-* | tic4x-*)
- os=-coff
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
+ tic54x-*)
+ os=-coff
+ ;;
+ tic55x-*)
+ os=-coff
+ ;;
+ tic6x-*)
+ os=-coff
;;
# This must come before the *-dec entry.
pdp10-*)
@@ -1407,13 +1564,13 @@ case $basic_machine in
;;
m68000-sun)
os=-sunos3
- # This also exists in the configure program, but was not the
- # default.
- # os=-sunos4
;;
m68*-cisco)
os=-aout
;;
+ mep-*)
+ os=-elf
+ ;;
mips*-cisco)
os=-elf
;;
@@ -1438,7 +1595,7 @@ case $basic_machine in
*-ibm)
os=-aix
;;
- *-knuth)
+ *-knuth)
os=-mmixware
;;
*-wec)
@@ -1543,7 +1700,7 @@ case $basic_machine in
-sunos*)
vendor=sun
;;
- -aix*)
+ -cnk*|-aix*)
vendor=ibm
;;
-beos*)
diff --git a/configh.in b/configh.in
index 5ab18321..4a16adf4 100644
--- a/configh.in
+++ b/configh.in
@@ -69,16 +69,12 @@
/* Define if you have the iconv() function and it works. */
#undef HAVE_ICONV
-/* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */
+/* Define to 1 if the system has the type `intmax_t'. */
#undef HAVE_INTMAX_T
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
-/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and
- declares uintmax_t. */
-#undef HAVE_INTTYPES_H_WITH_UINTMAX
-
/* Define to 1 if you have the `isascii' function. */
#undef HAVE_ISASCII
@@ -115,9 +111,6 @@
/* Define to 1 if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H
-/* Define if you have the 'long long' type. */
-#undef HAVE_LONG_LONG
-
/* Define to 1 if the system has the type `long long int'. */
#undef HAVE_LONG_LONG_INT
@@ -157,6 +150,9 @@
/* we have the mktime function */
#undef HAVE_MKTIME
+/* Define to 1 if you have fully functional mpfr and gmp libraries. */
+#undef HAVE_MPFR
+
/* Define to 1 if you have the <netdb.h> header file. */
#undef HAVE_NETDB_H
@@ -184,16 +180,15 @@
/* Define to 1 if you have the <stdarg.h> header file. */
#undef HAVE_STDARG_H
+/* Define to 1 if stdbool.h conforms to C99. */
+#undef HAVE_STDBOOL_H
+
/* Define to 1 if you have the <stddef.h> header file. */
#undef HAVE_STDDEF_H
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
-/* Define if <stdint.h> exists, doesn't clash with <sys/types.h>, and declares
- uintmax_t. */
-#undef HAVE_STDINT_H_WITH_UINTMAX
-
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
@@ -287,15 +282,12 @@
/* Define to 1 if you have the `tzset' function. */
#undef HAVE_TZSET
-/* Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>. */
+/* Define to 1 if the system has the type `uintmax_t'. */
#undef HAVE_UINTMAX_T
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
-/* Define if you have the 'unsigned long long' type. */
-#undef HAVE_UNSIGNED_LONG_LONG
-
/* Define to 1 if the system has the type `unsigned long long int'. */
#undef HAVE_UNSIGNED_LONG_LONG_INT
@@ -326,6 +318,9 @@
/* systems should define this type here */
#undef HAVE_WINT_T
+/* Define to 1 if the system has the type `_Bool'. */
+#undef HAVE__BOOL
+
/* disable lint checks */
#undef NO_LINT
@@ -402,6 +397,11 @@
/* Version number of package */
#undef VERSION
+/* Enable large inode numbers on Mac OS X 10.5. */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
/* Number of bits in a file offset, on hosts where this is settable. */
#undef _FILE_OFFSET_BITS
@@ -411,6 +411,19 @@
/* Define to 1 if on MINIX. */
#undef _MINIX
+/* The _Noreturn keyword of C11. */
+#ifndef _Noreturn
+# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \
+ || 0x5110 <= __SUNPRO_C)
+# define _Noreturn __attribute__ ((__noreturn__))
+# elif defined _MSC_VER && 1200 <= _MSC_VER
+# define _Noreturn __declspec (noreturn)
+# else
+# define _Noreturn
+# endif
+#endif
+
+
/* Define to 2 if the system does not provide POSIX.1 features except with
this defined. */
#undef _POSIX_1_SOURCE
@@ -435,7 +448,8 @@
#undef inline
#endif
-/* Define to long or long long if <inttypes.h> and <stdint.h> don't define. */
+/* Define to the widest signed integer type if <stdint.h> and <inttypes.h> do
+ not define. */
#undef intmax_t
/* Define to `int' if <sys/types.h> does not define. */
@@ -467,8 +481,8 @@
/* Define to `int' if <sys/types.h> doesn't define. */
#undef uid_t
-/* Define to unsigned long or unsigned long long if <stdint.h> and
- <inttypes.h> don't define. */
+/* Define to the widest unsigned integer type if <stdint.h> and <inttypes.h>
+ do not define. */
#undef uintmax_t
#include "custom.h"
diff --git a/configure b/configure
index 9f916cf0..e824ee38 100755
--- a/configure
+++ b/configure
@@ -1,13 +1,11 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for GNU Awk 4.0.70.
+# Generated by GNU Autoconf 2.69 for GNU Awk 4.0.70.
#
# Report bugs to <bug-gawk@gnu.org>.
#
#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
#
#
# This configure script is free software; the Free Software Foundation
@@ -136,6 +134,31 @@ export LANGUAGE
# CDPATH.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+# Use a proper internal environment variable to ensure we don't fall
+ # into an infinite loop, continuously re-executing ourselves.
+ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+ _as_can_reexec=no; export _as_can_reexec;
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+ fi
+ # We don't want this to propagate to other subprocesses.
+ { _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
@@ -169,7 +192,8 @@ if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
else
exitcode=1; echo positional parameters were not saved.
fi
-test x\$exitcode = x0 || exit 1"
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
@@ -214,21 +238,25 @@ IFS=$as_save_IFS
if test "x$CONFIG_SHELL" != x; then :
- # We cannot yet assume a decent shell, so we have to provide a
- # neutralization value for shells without unset; and this also
- # works around shells that cannot unset nonexistent variables.
- # Preserve -v and -x to the replacement shell.
- BASH_ENV=/dev/null
- ENV=/dev/null
- (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
- export CONFIG_SHELL
- case $- in # ((((
- *v*x* | *x*v* ) as_opts=-vx ;;
- *v* ) as_opts=-v ;;
- *x* ) as_opts=-x ;;
- * ) as_opts= ;;
- esac
- exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+ export CONFIG_SHELL
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
fi
if test x$as_have_required = xno; then :
@@ -331,6 +359,14 @@ $as_echo X"$as_dir" |
} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
@@ -452,6 +488,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
chmod +x "$as_me.lineno" ||
{ $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+ # already done that, so ensure we don't try to do so again and fall
+ # in an infinite loop. This has already happened in practice.
+ _as_can_reexec=no; export _as_can_reexec
# Don't try to exec as it changes $[0], causing all sort of problems
# (the dirname of $[0] is not the place where we might find the
# original and so on. Autoconf is especially sensitive to this).
@@ -486,16 +526,16 @@ if (echo >conf$$.file) 2>/dev/null; then
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
+ # In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@@ -507,28 +547,8 @@ else
as_mkdir_p=false
fi
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in #(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -607,6 +627,7 @@ ac_func_list=
ac_subst_vars='am__EXEEXT_FALSE
am__EXEEXT_TRUE
LTLIBOBJS
+LIBMPFR
LIBREADLINE
SOCKET_LIBS
LIBSIGSEGV_PREFIX
@@ -648,6 +669,7 @@ CPP
am__fastdepCC_FALSE
am__fastdepCC_TRUE
CCDEPMODE
+am__nodep
AMDEPBACKSLASH
AMDEP_FALSE
AMDEP_TRUE
@@ -736,6 +758,7 @@ with_libiconv_prefix
with_libintl_prefix
with_libsigsegv_prefix
with_readline
+with_mpfr
'
ac_precious_vars='build_alias
host_alias
@@ -1203,8 +1226,6 @@ target=$target_alias
if test "x$host_alias" != x; then
if test "x$build_alias" = x; then
cross_compiling=maybe
- $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used" >&2
elif test "x$build_alias" != "x$host_alias"; then
cross_compiling=yes
fi
@@ -1369,8 +1390,10 @@ Optional Features:
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--disable-lint Disable gawk lint checking
- --disable-dependency-tracking speeds up one-time build
- --enable-dependency-tracking do not reject slow dependency extractors
+ --enable-dependency-tracking
+ do not reject slow dependency extractors
+ --disable-dependency-tracking
+ speeds up one-time build
--disable-largefile omit support for large files
--disable-nls do not use Native Language Support
--disable-rpath do not hardcode runtime library paths
@@ -1387,6 +1410,7 @@ Optional Packages:
--with-libsigsegv-prefix[=DIR] search for libsigsegv in DIR/include and DIR/lib
--without-libsigsegv-prefix don't search for libsigsegv in includedir and libdir
--with-readline=DIR look for the readline library in DIR
+ --with-mpfr=DIR look for the mpfr and gmp libraries in DIR
Some influential environment variables:
CC C compiler command
@@ -1473,9 +1497,9 @@ test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
GNU Awk configure 4.0.70
-generated by GNU Autoconf 2.68
+generated by GNU Autoconf 2.69
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -1752,7 +1776,7 @@ $as_echo "$ac_try_echo"; } >&5
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
+ test -x conftest$ac_exeext
}; then :
ac_retval=0
else
@@ -1842,7 +1866,8 @@ int
main ()
{
static int test_array [1 - 2 * !(($2) >= 0)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
;
return 0;
@@ -1858,7 +1883,8 @@ int
main ()
{
static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
;
return 0;
@@ -1884,7 +1910,8 @@ int
main ()
{
static int test_array [1 - 2 * !(($2) < 0)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
;
return 0;
@@ -1900,7 +1927,8 @@ int
main ()
{
static int test_array [1 - 2 * !(($2) >= $ac_mid)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
;
return 0;
@@ -1934,7 +1962,8 @@ int
main ()
{
static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
;
return 0;
@@ -2177,7 +2206,7 @@ This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by GNU Awk $as_me 4.0.70, which was
-generated by GNU Autoconf 2.68. Invocation command line was
+generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2544,7 +2573,7 @@ then
fi
-am__api_version='1.11'
+am__api_version='1.12'
ac_aux_dir=
for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
@@ -2612,7 +2641,7 @@ case $as_dir/ in #((
# by default.
for ac_prog in ginstall scoinst install; do
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
if test $ac_prog = install &&
grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention.
@@ -2670,9 +2699,6 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
$as_echo_n "checking whether build environment is sane... " >&6; }
-# Just in case
-sleep 1
-echo timestamp > conftest.file
# Reject unsafe characters in $srcdir or the absolute working directory
# name. Accept space and tab only in the latter.
am_lf='
@@ -2683,32 +2709,40 @@ case `pwd` in
esac
case $srcdir in
*[\\\"\#\$\&\'\`$am_lf\ \ ]*)
- as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+ as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
esac
-# Do `set' in a subshell so we don't clobber the current shell's
+# Do 'set' in a subshell so we don't clobber the current shell's
# arguments. Must try -L first in case configure is actually a
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
if (
- set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
- if test "$*" = "X"; then
- # -L didn't work.
- set X `ls -t "$srcdir/configure" conftest.file`
- fi
- rm -f conftest.file
- if test "$*" != "X $srcdir/configure conftest.file" \
- && test "$*" != "X conftest.file $srcdir/configure"; then
-
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
-alias in your environment" "$LINENO" 5
- fi
-
+ am_has_slept=no
+ for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
+ alias in your environment" "$LINENO" 5
+ fi
+ if test "$2" = conftest.file || test $am_try -eq 2; then
+ break
+ fi
+ # Just in case.
+ sleep 1
+ am_has_slept=yes
+ done
test "$2" = conftest.file
)
then
@@ -2720,6 +2754,16 @@ Check your system clock" "$LINENO" 5
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+ ( sleep 1 ) &
+ am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
test "$program_prefix" != NONE &&
program_transform_name="s&^&$program_prefix&;$program_transform_name"
# Use a double $ so make ignores it.
@@ -2746,8 +2790,8 @@ if eval "$MISSING --run true"; then
am_missing_run="$MISSING --run "
else
am_missing_run=
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
fi
if test x"${install_sh}" != xset; then
@@ -2759,10 +2803,10 @@ if test x"${install_sh}" != xset; then
esac
fi
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'. However `strip' might not be the right
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip". However 'strip' might not be the right
# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
+# will honor the 'STRIP' environment variable to overrule this program.
if test "$cross_compiling" != no; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
@@ -2781,7 +2825,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_STRIP="${ac_tool_prefix}strip"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2821,7 +2865,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_STRIP="strip"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2872,7 +2916,7 @@ do
test -z "$as_dir" && as_dir=.
for ac_prog in mkdir gmkdir; do
for ac_exec_ext in '' $ac_executable_extensions; do
- { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
'mkdir (GNU coreutils) '* | \
'mkdir (coreutils) '* | \
@@ -2925,7 +2969,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_AWK="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3041,11 +3085,11 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
# We need awk for the "check" target. The system "awk" is bad on
# some platforms.
-# Always define AMTAR for backward compatibility.
+# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
-AMTAR=${AMTAR-"${am_missing_run}tar"}
-
-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
@@ -3097,7 +3141,7 @@ am__quote=
_am_result=none
# First try GNU make style include.
echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
+# Ignore all kinds of additional output from 'make'.
case `$am_make -s -f confmf 2> /dev/null` in #(
*the\ am__doit\ target*)
am__include=include
@@ -3130,6 +3174,7 @@ fi
if test "x$enable_dependency_tracking" != xno; then
am_depcomp="$ac_aux_dir/depcomp"
AMDEPBACKSLASH='\'
+ am__nodep='_no'
fi
if test "x$enable_dependency_tracking" != xno; then
AMDEP_TRUE=
@@ -3162,7 +3207,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3202,7 +3247,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3255,7 +3300,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3296,7 +3341,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
ac_prog_rejected=yes
continue
@@ -3354,7 +3399,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3398,7 +3443,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3844,8 +3889,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdarg.h>
#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
struct buf { int x; };
FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -3941,8 +3985,9 @@ else
# We make a subdir and do the tests there. Otherwise we can end up
# making bogus files that we don't know about and never remove. For
# instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named `D' -- because `-MD' means `put the output
- # in D'.
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won't find it if we're
# using a relative directory.
@@ -3976,16 +4021,16 @@ else
: > sub/conftest.c
for i in 1 2 3 4 5 6; do
echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
- # Solaris 8's {/usr,}/bin/sh.
- touch sub/conftst$i.h
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
done
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
- # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
# mode. It turns out that the SunPro C++ compiler does not properly
- # handle `-M -o', and we need to detect this. Also, some Intel
- # versions had trouble with output in subdirs
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
am__obj=sub/conftest.${OBJEXT-o}
am__minus_obj="-o $am__obj"
case $depmode in
@@ -3994,16 +4039,16 @@ else
test "$am__universal" = false || continue
;;
nosideeffect)
- # after this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
if test "x$enable_dependency_tracking" = xyes; then
continue
else
break
fi
;;
- msvisualcpp | msvcmsys)
- # This compiler won't grok `-c -o', but also, the minuso test has
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
# not run yet. These depmodes are late enough in the game, and
# so weak that their functioning should not be impacted.
am__obj=conftest.${OBJEXT-o}
@@ -4212,7 +4257,7 @@ do
for ac_prog in grep ggrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+ as_fn_executable_p "$ac_path_GREP" || continue
# Check for GNU ac_path_GREP and select it if it is found.
# Check for GNU $ac_path_GREP
case `"$ac_path_GREP" --version 2>&1` in
@@ -4278,7 +4323,7 @@ do
for ac_prog in egrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+ as_fn_executable_p "$ac_path_EGREP" || continue
# Check for GNU ac_path_EGREP and select it if it is found.
# Check for GNU $ac_path_EGREP
case `"$ac_path_EGREP" --version 2>&1` in
@@ -4485,8 +4530,8 @@ else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-# define __EXTENSIONS__ 1
- $ac_includes_default
+# define __EXTENSIONS__ 1
+ $ac_includes_default
int
main ()
{
@@ -4536,7 +4581,7 @@ do
for ac_prog in egrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+ as_fn_executable_p "$ac_path_EGREP" || continue
# Check for GNU ac_path_EGREP and select it if it is found.
# Check for GNU $ac_path_EGREP
case `"$ac_path_EGREP" --version 2>&1` in
@@ -4602,7 +4647,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_YACC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4660,7 +4705,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4700,7 +4745,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4753,7 +4798,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4794,7 +4839,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
ac_prog_rejected=yes
continue
@@ -4852,7 +4897,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4896,7 +4941,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5092,8 +5137,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdarg.h>
#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
struct buf { int x; };
FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -5189,8 +5233,9 @@ else
# We make a subdir and do the tests there. Otherwise we can end up
# making bogus files that we don't know about and never remove. For
# instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named `D' -- because `-MD' means `put the output
- # in D'.
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won't find it if we're
# using a relative directory.
@@ -5224,16 +5269,16 @@ else
: > sub/conftest.c
for i in 1 2 3 4 5 6; do
echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
- # Solaris 8's {/usr,}/bin/sh.
- touch sub/conftst$i.h
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
done
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
- # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
# mode. It turns out that the SunPro C++ compiler does not properly
- # handle `-M -o', and we need to detect this. Also, some Intel
- # versions had trouble with output in subdirs
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
am__obj=sub/conftest.${OBJEXT-o}
am__minus_obj="-o $am__obj"
case $depmode in
@@ -5242,16 +5287,16 @@ else
test "$am__universal" = false || continue
;;
nosideeffect)
- # after this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
if test "x$enable_dependency_tracking" = xyes; then
continue
else
break
fi
;;
- msvisualcpp | msvcmsys)
- # This compiler won't grok `-c -o', but also, the minuso test has
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
# not run yet. These depmodes are late enough in the game, and
# so weak that their functioning should not be impacted.
am__obj=conftest.${OBJEXT-o}
@@ -5761,6 +5806,8 @@ _ACEOF
esac
rm -rf conftest*
fi
+
+
fi
@@ -5938,7 +5985,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -8101,6 +8148,99 @@ $as_echo "#define STDC_HEADERS 1" >>confdefs.h
fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
+$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
+if ${ac_cv_header_stdbool_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <stdbool.h>
+ #ifndef bool
+ "error: bool is not defined"
+ #endif
+ #ifndef false
+ "error: false is not defined"
+ #endif
+ #if false
+ "error: false is not 0"
+ #endif
+ #ifndef true
+ "error: true is not defined"
+ #endif
+ #if true != 1
+ "error: true is not 1"
+ #endif
+ #ifndef __bool_true_false_are_defined
+ "error: __bool_true_false_are_defined is not defined"
+ #endif
+
+ struct s { _Bool s: 1; _Bool t; } s;
+
+ char a[true == 1 ? 1 : -1];
+ char b[false == 0 ? 1 : -1];
+ char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+ char d[(bool) 0.5 == true ? 1 : -1];
+ /* See body of main program for 'e'. */
+ char f[(_Bool) 0.0 == false ? 1 : -1];
+ char g[true];
+ char h[sizeof (_Bool)];
+ char i[sizeof s.t];
+ enum { j = false, k = true, l = false * true, m = true * 256 };
+ /* The following fails for
+ HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+ _Bool n[m];
+ char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+ char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+ /* Catch a bug in an HP-UX C compiler. See
+ http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+ */
+ _Bool q = true;
+ _Bool *pq = &q;
+
+int
+main ()
+{
+
+ bool e = &s;
+ *pq |= q;
+ *pq |= ! q;
+ /* Refer to every declared value, to avoid compiler optimizations. */
+ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+ + !m + !n + !o + !p + !q + !pq);
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_stdbool_h=yes
+else
+ ac_cv_header_stdbool_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
+$as_echo "$ac_cv_header_stdbool_h" >&6; }
+ ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
+if test "x$ac_cv_type__Bool" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE__BOOL 1
+_ACEOF
+
+
+fi
+
+
+if test $ac_cv_header_stdbool_h = yes; then
+
+$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h
+
+fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5
$as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; }
if ${ac_cv_header_sys_wait_h+:} false; then :
@@ -8383,27 +8523,78 @@ if ${ac_cv_type_long_long_int+:} false; then :
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-long long int ll = 9223372036854775807ll;
- long long int nll = -9223372036854775807LL;
- typedef int a[((-9223372036854775807LL < 0
- && 0 < 9223372036854775807ll)
- ? 1 : -1)];
- int i = 63;
+
+ /* For now, do not test the preprocessor; as of 2007 there are too many
+ implementations with broken preprocessors. Perhaps this can
+ be revisited in 2012. In the meantime, code should not expect
+ #if to work with literals wider than 32 bits. */
+ /* Test literals. */
+ long long int ll = 9223372036854775807ll;
+ long long int nll = -9223372036854775807LL;
+ unsigned long long int ull = 18446744073709551615ULL;
+ /* Test constant expressions. */
+ typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
+ ? 1 : -1)];
+ typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
+ ? 1 : -1)];
+ int i = 63;
int
main ()
{
-long long int llmax = 9223372036854775807ll;
- return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
- | (llmax / ll) | (llmax % ll));
+/* Test availability of runtime routines for shift and division. */
+ long long int llmax = 9223372036854775807ll;
+ unsigned long long int ullmax = 18446744073709551615ull;
+ return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
+ | (llmax / ll) | (llmax % ll)
+ | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
+ | (ullmax / ull) | (ullmax % ull));
;
return 0;
}
+
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
+ if test "$cross_compiling" = yes; then :
+ ac_cv_type_long_long_int=yes
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <limits.h>
+ #ifndef LLONG_MAX
+ # define HALF \
+ (1LL << (sizeof (long long int) * CHAR_BIT - 2))
+ # define LLONG_MAX (HALF - 1 + HALF)
+ #endif
+int
+main ()
+{
+long long int n = 1;
+ int i;
+ for (i = 0; ; i++)
+ {
+ long long int m = n << i;
+ if (m >> i != n)
+ return 1;
+ if (LLONG_MAX / 2 < m)
+ break;
+ }
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
ac_cv_type_long_long_int=yes
else
ac_cv_type_long_long_int=no
fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+else
+ ac_cv_type_long_long_int=no
+fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
fi
@@ -8416,15 +8607,6 @@ $as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
fi
-
- ac_cv_type_long_long=$ac_cv_type_long_long_int
- if test $ac_cv_type_long_long = yes; then
-
-$as_echo "#define HAVE_LONG_LONG 1" >>confdefs.h
-
- fi
-
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
$as_echo_n "checking for unsigned long long int... " >&6; }
if ${ac_cv_type_unsigned_long_long_int+:} false; then :
@@ -8464,130 +8646,41 @@ $as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
- ac_cv_type_unsigned_long_long=$ac_cv_type_unsigned_long_long_int
- if test $ac_cv_type_unsigned_long_long = yes; then
-
-$as_echo "#define HAVE_UNSIGNED_LONG_LONG 1" >>confdefs.h
-
- fi
-
-
- if test "OS/390" = "`uname`"
- then
- gl_cv_header_inttypes_h=no
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inttypes.h" >&5
-$as_echo_n "checking for inttypes.h... " >&6; }
-if ${gl_cv_header_inttypes_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <inttypes.h>
-int
-main ()
-{
-uintmax_t i = (uintmax_t) -1; return !i;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- gl_cv_header_inttypes_h=yes
-else
- gl_cv_header_inttypes_h=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_inttypes_h" >&5
-$as_echo "$gl_cv_header_inttypes_h" >&6; }
- if test $gl_cv_header_inttypes_h = yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_INTTYPES_H_WITH_UINTMAX 1
-_ACEOF
-
- fi
- fi
+ ac_fn_c_check_type "$LINENO" "intmax_t" "ac_cv_type_intmax_t" "$ac_includes_default"
+if test "x$ac_cv_type_intmax_t" = xyes; then :
+$as_echo "#define HAVE_INTMAX_T 1" >>confdefs.h
- if test "OS/390" = "`uname`"
- then
- gl_cv_header_stdint_h=no
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint.h" >&5
-$as_echo_n "checking for stdint.h... " >&6; }
-if ${gl_cv_header_stdint_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <stdint.h>
-int
-main ()
-{
-uintmax_t i = (uintmax_t) -1; return !i;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- gl_cv_header_stdint_h=yes
else
- gl_cv_header_stdint_h=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_h" >&5
-$as_echo "$gl_cv_header_stdint_h" >&6; }
- if test $gl_cv_header_stdint_h = yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STDINT_H_WITH_UINTMAX 1
-_ACEOF
-
- fi
- fi
-
-
-
-
- if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then
-
- test $ac_cv_type_long_long = yes \
- && ac_type='long long' \
- || ac_type='long'
+ test $ac_cv_type_long_long_int = yes \
+ && ac_type='long long int' \
+ || ac_type='long int'
cat >>confdefs.h <<_ACEOF
#define intmax_t $ac_type
_ACEOF
- else
+fi
-$as_echo "#define HAVE_INTMAX_T 1" >>confdefs.h
- fi
+ ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default"
+if test "x$ac_cv_type_uintmax_t" = xyes; then :
+$as_echo "#define HAVE_UINTMAX_T 1" >>confdefs.h
- if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then
-
- test $ac_cv_type_unsigned_long_long = yes \
- && ac_type='unsigned long long' \
- || ac_type='unsigned long'
+else
+ test $ac_cv_type_unsigned_long_long_int = yes \
+ && ac_type='unsigned long long int' \
+ || ac_type='unsigned long int'
cat >>confdefs.h <<_ACEOF
#define uintmax_t $ac_type
_ACEOF
- else
+fi
-$as_echo "#define HAVE_UINTMAX_T 1" >>confdefs.h
-
- fi
ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default"
if test "x$ac_cv_type_ssize_t" = xyes; then :
@@ -8816,6 +8909,9 @@ fi
+
+
+
for ac_func in vprintf
do :
ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf"
@@ -9857,7 +9953,7 @@ for ac_func in atexit btowc fmod getgrent getgroups grantpt \
memset_ulong mkstemp setenv setlocale setsid snprintf strchr \
strerror strftime strncasecmp strcoll strtod strtoul \
system tmpfile towlower towupper tzset usleep wcrtomb \
- wcscoll wcscoll wctype
+ wcscoll wctype
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -10297,6 +10393,81 @@ $as_echo "#define HAVE_LIBREADLINE 1" >>confdefs.h
fi
+
+
+# Check whether --with-mpfr was given.
+if test "${with_mpfr+set}" = set; then :
+ withval=$with_mpfr; _do_mpfr=$withval
+else
+ _do_mpfr=yes
+fi
+
+
+ if test "$_do_mpfr" != "no" ; then
+ if test -d "$withval" ; then
+ CPPFLAGS="${CPPFLAGS} -I$withval/include"
+ LDFLAGS="${LDFLAGS} -L$withval/lib"
+ fi
+
+ _mpfr_save_libs=$LIBS
+ _combo="-lmpfr -lgmp"
+ LIBS="$LIBS $_combo"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mpfr via \"$_combo\" is present and usable" >&5
+$as_echo_n "checking whether mpfr via \"$_combo\" is present and usable... " >&6; }
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+#include <stdio.h>
+#include <mpfr.h>
+#include <gmp.h>
+
+int
+main ()
+{
+
+mpfr_t p;
+mpz_t z;
+mpfr_init(p);
+mpz_init(z);
+mpfr_printf("%Rf%Zd", p, z);
+mpfr_clear(p);
+mpz_clear(z);
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ _found_mpfr=yes
+else
+ _found_mpfr=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_found_mpfr" >&5
+$as_echo "$_found_mpfr" >&6; }
+
+ LIBS=$_mpfr_save_libs
+
+ if test $_found_mpfr = yes ; then
+
+$as_echo "#define HAVE_MPFR 1" >>confdefs.h
+
+ LIBMPFR=$_combo
+
+ break
+ fi
+
+ unset _mpfr_save_libs
+ unset _combo
+ unset _found_mpfr
+ fi
+
+
ac_fn_c_check_member "$LINENO" "struct stat" "st_blksize" "ac_cv_member_struct_stat_st_blksize" "$ac_includes_default"
if test "x$ac_cv_member_struct_stat_st_blksize" = xyes; then :
@@ -10460,7 +10631,8 @@ int
main ()
{
static int test_array [1 - 2 * !(((char) -1) < 0)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
;
return 0;
@@ -10491,11 +10663,11 @@ else
int
main ()
{
-/* FIXME: Include the comments suggested by Paul. */
+
#ifndef __cplusplus
- /* Ultrix mips cc rejects this. */
+ /* Ultrix mips cc rejects this sort of thing. */
typedef int charset[2];
- const charset cs;
+ const charset cs = { 0, 0 };
/* SunOS 4.1.1 cc rejects this. */
char const *const *pcpcc;
char **ppc;
@@ -10512,8 +10684,9 @@ main ()
++pcpcc;
ppc = (char**) pcpcc;
pcpcc = (char const *const *) ppc;
- { /* SCO 3.2v4 cc rejects this. */
- char *t;
+ { /* SCO 3.2v4 cc rejects this sort of thing. */
+ char tx;
+ char *t = &tx;
char const *s = 0 ? (char *) 0 : (char const *) 0;
*t++ = 0;
@@ -10529,10 +10702,10 @@ main ()
iptr p = 0;
++p;
}
- { /* AIX XL C 1.02.0.0 rejects this saying
+ { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
"k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
- struct s { int j; const int *ap[3]; };
- struct s *b; b->j = 5;
+ struct s { int j; const int *ap[3]; } bx;
+ struct s *b = &bx; b->j = 5;
}
{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
const int foo = 10;
@@ -10792,6 +10965,14 @@ LIBOBJS=$ac_libobjs
LTLIBOBJS=$ac_ltlibobjs
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+ if test -n "$am_sleep_pid"; then
+ # Hide warnings about reused PIDs.
+ wait $am_sleep_pid 2>/dev/null
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
if test -n "$EXEEXT"; then
am__EXEEXT_TRUE=
am__EXEEXT_FALSE='#'
@@ -11110,16 +11291,16 @@ if (echo >conf$$.file) 2>/dev/null; then
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
+ # In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@@ -11179,28 +11360,16 @@ else
as_mkdir_p=false
fi
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in #(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -11222,7 +11391,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# values after options handling.
ac_log="
This file was extended by GNU Awk $as_me 4.0.70, which was
-generated by GNU Autoconf 2.68. Invocation command line was
+generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -11290,10 +11459,10 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
GNU Awk config.status 4.0.70
-configured by $0, generated by GNU Autoconf 2.68,
+configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
@@ -11384,7 +11553,7 @@ fi
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
- set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
\$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL='$SHELL'
@@ -12042,7 +12211,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
# Strip MF so we end up with the name of the file.
mf=`echo "$mf" | sed -e 's/:.*$//'`
# Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named `Makefile.in', but
+ # We used to match only the files named 'Makefile.in', but
# some people rename them; so instead we look at the file content.
# Grep'ing the first line is not enough: some people post-process
# each Makefile.in and add a new line on top of each file to say so.
@@ -12076,21 +12245,19 @@ $as_echo X"$mf" |
continue
fi
# Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running `make'.
+ # from the Makefile without running 'make'.
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
test -z "am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # When using ansi2knr, U may be empty or an underscore; expand it
- U=`sed -n 's/^U = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
# simplest approach to changing $(DEPDIR) to its actual value in the
# expansion.
for file in `sed -n "
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
fdir=`$as_dirname -- "$file" ||
diff --git a/configure.ac b/configure.ac
index 260f0dfa..df7904a3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
dnl
dnl configure.ac --- autoconf input file for gawk
dnl
-dnl Copyright (C) 1995-2011 the Free Software Foundation, Inc.
+dnl Copyright (C) 1995-2012 the Free Software Foundation, Inc.
dnl
dnl This file is part of GAWK, the GNU implementation of the
dnl AWK Programming Language.
@@ -39,8 +39,8 @@ then
export INSTALL
fi
-AC_PREREQ(2.68)
-AM_INIT_AUTOMAKE([1.11 dist-xz])
+AC_PREREQ(2.69)
+AM_INIT_AUTOMAKE([1.12 dist-xz])
AC_CONFIG_MACRO_DIR([m4])
@@ -142,6 +142,7 @@ gt_LC_MESSAGES
dnl checks for header files
AC_HEADER_STDC
+AC_HEADER_STDBOOL
AC_HEADER_SYS_WAIT
AC_HEADER_TIME
AC_CHECK_HEADERS(arpa/inet.h fcntl.h limits.h locale.h libintl.h mcheck.h \
@@ -161,10 +162,10 @@ AC_TYPE_PID_T
AC_TYPE_SIGNAL
AC_SIZE_T
AC_TYPE_GETGROUPS
-gl_AC_TYPE_LONG_LONG
-gl_AC_TYPE_UNSIGNED_LONG_LONG
-gl_AC_TYPE_INTMAX_T
-gl_AC_TYPE_UINTMAX_T
+AC_TYPE_LONG_LONG_INT
+AC_TYPE_UNSIGNED_LONG_LONG_INT
+AC_TYPE_INTMAX_T
+AC_TYPE_UINTMAX_T
AC_CHECK_TYPE(ssize_t, int)
AC_CHECK_SIZEOF(unsigned int)
AC_CHECK_SIZEOF(unsigned long)
@@ -244,6 +245,9 @@ dnl AC_MSG_ERROR([Cannot find a type to use in place of socklen_t])
])
TYPE_SOCKLEN_T
+dnl Check for C11 _Noreturn
+GAWK_AC_NORETURN
+
dnl checks for functions
AC_FUNC_VPRINTF
AC_FUNC_MKTIME
@@ -275,7 +279,7 @@ AC_CHECK_FUNCS(atexit btowc fmod getgrent getgroups grantpt \
memset_ulong mkstemp setenv setlocale setsid snprintf strchr \
strerror strftime strncasecmp strcoll strtod strtoul \
system tmpfile towlower towupper tzset usleep wcrtomb \
- wcscoll wcscoll wctype)
+ wcscoll wctype)
dnl this check is for both mbrtowc and the mbstate_t type, which is good
AC_FUNC_MBRTOWC
@@ -346,6 +350,9 @@ GAWK_AC_LIB_SOCKETS
dnl check for readline support
GNUPG_CHECK_READLINE
+dnl check for mpfr support
+GNUPG_CHECK_MPFR
+
dnl checks for structure members
AC_STRUCT_ST_BLKSIZE
AC_HEADER_TIME
diff --git a/debug.c b/debug.c
index 5fb8d9e2..91d95eed 100644
--- a/debug.c
+++ b/debug.c
@@ -49,9 +49,9 @@ static char *linebuf = NULL; /* used to print a single line of source */
static size_t linebuf_len;
FILE *out_fp;
-char *dPrompt;
-char *commands_Prompt = "> "; /* breakpoint or watchpoint commands list */
-char *eval_Prompt = "@> "; /* awk statement(s) */
+char *dbg_prompt;
+char *commands_prompt = "> "; /* breakpoint or watchpoint commands list */
+char *eval_prompt = "@> "; /* awk statement(s) */
int input_from_tty = FALSE;
int input_fd;
@@ -173,7 +173,7 @@ static struct {
int break_point; /* non-zero (breakpoint number) if stopped at break point */
int watch_point; /* non-zero (watchpoint number) if stopped at watch point */
- int (*check_func)(INSTRUCTION **); /* function to decide when to suspend
+ int (*check_func)(INSTRUCTION **); /* function to decide when to suspend
* awk interpreter and return control
* to debugger command interpreter.
*/
@@ -231,10 +231,10 @@ static const char *options_file = DEFAULT_OPTFILE;
static const char *history_file = DEFAULT_HISTFILE;
#endif
-/* keep all option variables in one place */
+/* debugger option related variables */
static char *output_file = "/dev/stdout"; /* gawk output redirection */
-char *dgawk_Prompt = NULL; /* initialized in do_debug */
+char *dgawk_prompt = NULL; /* initialized in interpret */
static int list_size = DEFAULT_LISTSIZE; /* # of lines that 'list' prints */
static int do_trace = FALSE;
static int do_save_history = TRUE;
@@ -248,7 +248,7 @@ static const struct dbg_option option_list[] = {
gettext_noop("set or show the list command window size.") },
{"outfile", NULL, &output_file, &set_gawk_output,
gettext_noop("set or show gawk output file.") },
-{"prompt", NULL, &dgawk_Prompt, &set_prompt,
+{"prompt", NULL, &dgawk_prompt, &set_prompt,
gettext_noop("set or show debugger prompt."), },
{"save_history", &do_save_history, NULL, &set_save_history,
gettext_noop("(un)set or show saving of command history (value=on|off).") },
@@ -307,9 +307,10 @@ static int watchpoint_triggered(struct list_item *w);
static void print_instruction(INSTRUCTION *pc, Func_print print_func, FILE *fp, int in_dump);
static int print_code(INSTRUCTION *pc, void *x);
static void next_command();
+static void debug_post_execute(INSTRUCTION *pc);
+static int debug_pre_execute(INSTRUCTION **pi);
static char *g_readline(const char *prompt);
static int prompt_yes_no(const char *, char , int , FILE *);
-
static struct pf_data {
Func_print print_func;
int defn;
@@ -325,8 +326,8 @@ struct command_source
char * (*read_func)(const char *);
int (*close_func)(int);
int eof_status; /* see push_cmd_src */
- int cmd; /* D_source or 0 */
- char *str; /* sourced file */
+ int cmd; /* D_source or 0 */
+ char *str; /* sourced file */
struct command_source *next;
};
@@ -893,7 +894,7 @@ do_info(CMDARG *arg, int cmd ATTRIBUTE_UNUSED)
}
gprintf(out_fp, "\n");
} else if (IS_FIELD(d))
- gprintf(out_fp, "%d:\t$%ld\n", d->number, (long) symbol->numbr);
+ gprintf(out_fp, "%d:\t$%ld\n", d->number, get_number_si(symbol));
else
gprintf(out_fp, "%d:\t%s\n", d->number, d->sname);
if (d->cndn.code != NULL)
@@ -1179,7 +1180,7 @@ do_print_var(CMDARG *arg, int cmd ATTRIBUTE_UNUSED)
break;
case D_field:
- print_field(a->a_node->numbr);
+ print_field(get_number_si(a->a_node));
break;
default:
@@ -1283,7 +1284,7 @@ do_set_var(CMDARG *arg, int cmd ATTRIBUTE_UNUSED)
long field_num;
Func_ptr assign = NULL;
- field_num = (long) arg->a_node->numbr;
+ field_num = get_number_si(arg->a_node);
assert(field_num >= 0);
arg = arg->next;
val = arg->a_node;
@@ -1533,7 +1534,7 @@ display(struct list_item *d)
} else if (IS_FIELD(d)) {
NODE *r = d->symbol;
fprintf(out_fp, "%d: ", d->number);
- print_field(r->numbr);
+ print_field(get_number_si(r));
} else {
print_sym:
fprintf(out_fp, "%d: %s = ", d->number, d->sname);
@@ -1590,7 +1591,7 @@ condition_triggered(struct condition *cndn)
return FALSE; /* not triggered */
force_number(r);
- di = (r->numbr != 0.0);
+ di = ! iszero(r);
DEREF(r);
return di;
}
@@ -1684,7 +1685,7 @@ watchpoint_triggered(struct list_item *w)
(void) find_subscript(w, &t2);
else if (IS_FIELD(w)) {
long field_num;
- field_num = (long) w->symbol->numbr;
+ field_num = get_number_si(w->symbol);
t2 = *get_field(field_num, NULL);
} else {
switch (symbol->type) {
@@ -1767,7 +1768,7 @@ initialize_watch_item(struct list_item *w)
} else if (IS_FIELD(w)) {
long field_num;
t = w->symbol;
- field_num = (long) t->numbr;
+ field_num = get_number_si(t);
r = *get_field(field_num, NULL);
w->cur_value = dupnode(r);
} else {
@@ -1806,7 +1807,7 @@ do_watch(CMDARG *arg, int cmd ATTRIBUTE_UNUSED)
fprintf(out_fp, "Watchpoint %d: ", w->number);
symbol = w->symbol;
-/* FIXME: common code also in print_watch_item */
+ /* FIXME: common code also in print_watch_item */
if (IS_SUBSCRIPT(w)) {
fprintf(out_fp, "%s", w->sname);
for (i = 0; i < w->num_subs; i++) {
@@ -1815,7 +1816,7 @@ do_watch(CMDARG *arg, int cmd ATTRIBUTE_UNUSED)
}
fprintf(out_fp, "\n");
} else if (IS_FIELD(w))
- fprintf(out_fp, "$%ld\n", (long) symbol->numbr);
+ fprintf(out_fp, "$%ld\n", get_number_si(symbol));
else
fprintf(out_fp, "%s\n", w->sname);
@@ -2721,6 +2722,15 @@ initialize_readline()
#endif
+/* init_debug --- register debugger exec hooks */
+
+void
+init_debug()
+{
+ register_exec_hook(debug_pre_execute, debug_post_execute);
+}
+
+
/* debug_prog --- debugger entry point */
int
@@ -2753,8 +2763,8 @@ debug_prog(INSTRUCTION *pc)
exit(EXIT_FAILURE);
}
- dgawk_Prompt = estrdup(DEFAULT_PROMPT, strlen(DEFAULT_PROMPT));
- dPrompt = dgawk_Prompt;
+ dgawk_prompt = estrdup(DEFAULT_PROMPT, strlen(DEFAULT_PROMPT));
+ dbg_prompt = dgawk_prompt;
memset(&stop, 0, sizeof(stop));
stop.command = D_illegal;
@@ -3380,7 +3390,7 @@ print_watch_item(struct list_item *w)
}
fprintf(out_fp, "\n");
} else if (IS_FIELD(w))
- fprintf(out_fp, "$%ld\n", (long) symbol->numbr);
+ fprintf(out_fp, "$%ld\n", get_number_si(symbol));
else
fprintf(out_fp, "%s\n", w->sname);
@@ -3491,10 +3501,10 @@ no_output:
read_command(); /* zzparse */
}
-/* post_execute --- post_hook in the interpreter */
+/* debug_post_execute --- post_hook in the interpreter */
-void
-post_execute(INSTRUCTION *pc)
+static void
+debug_post_execute(INSTRUCTION *pc)
{
if (! in_main_context())
return;
@@ -3544,13 +3554,13 @@ post_execute(INSTRUCTION *pc)
}
}
-/* pre_execute --- pre_hook, called by the interpreter before execution;
+/* debug_pre_execute --- pre_hook, called by the interpreter before execution;
* checks if execution needs to be suspended and control
* transferred to the debugger.
*/
-int
-pre_execute(INSTRUCTION **pi)
+static int
+debug_pre_execute(INSTRUCTION **pi)
{
static int cant_stop = FALSE;
NODE *m;
@@ -3645,13 +3655,27 @@ print_memory(NODE *m, NODE *func, Func_print print_func, FILE *fp)
case Node_val:
if (m == Nnull_string)
print_func(fp, "Nnull_string");
- else if ((m->flags & NUMBER) != 0)
- print_func(fp, "%g", m->numbr);
- else if ((m->flags & STRING) != 0)
+ else if ((m->flags & NUMBER) != 0) {
+#ifdef HAVE_MPFR
+ if (m->flags & MPFN)
+ print_func(fp, "%s", mpg_fmt("%R*g", ROUND_MODE, m->mpg_numbr));
+ else if (m->flags & MPZN)
+ print_func(fp, "%s", mpg_fmt("%Zd", m->mpg_i));
+ else
+#endif
+ print_func(fp, "%g", m->numbr);
+ } else if ((m->flags & STRING) != 0)
pp_string_fp(print_func, fp, m->stptr, m->stlen, '"', FALSE);
- else if ((m->flags & NUMCUR) != 0)
- print_func(fp, "%g", m->numbr);
- else if ((m->flags & STRCUR) != 0)
+ else if ((m->flags & NUMCUR) != 0) {
+#ifdef HAVE_MPFR
+ if (m->flags & MPFN)
+ print_func(fp, "%s", mpg_fmt("%R*g", ROUND_MODE, m->mpg_numbr));
+ else if (m->flags & MPZN)
+ print_func(fp, "%s", mpg_fmt("%Zd", m->mpg_i));
+ else
+#endif
+ print_func(fp, "%g", m->numbr);
+ } else if ((m->flags & STRCUR) != 0)
pp_string_fp(print_func, fp, m->stptr, m->stlen, '"', FALSE);
else
print_func(fp, "-?-");
@@ -3693,7 +3717,8 @@ print_instruction(INSTRUCTION *pc, Func_print print_func, FILE *fp, int in_dump)
if (noffset == 0) {
static char buf[50];
/* offset for 2nd to last lines in a multi-line output */
- noffset = sprintf(buf, "[ :%p] %-20.20s: ", pc, opcode2str(pc->opcode));
+ noffset = sprintf(buf, "[ :%p] %-20.20s: ", (void *) pc,
+ opcode2str(pc->opcode));
}
if (pc->opcode == Op_func) {
@@ -4362,7 +4387,7 @@ enlarge_buffer:
nchar = serialize_subscript(buf + bl, buflen - bl, wd);
else if (IS_FIELD(wd))
nchar = snprintf(buf + bl, buflen - bl, "%d%c%d%c%d%c",
- wd->number, FSEP, D_field, FSEP, (int) wd->symbol->numbr, FSEP);
+ wd->number, FSEP, D_field, FSEP, (int) get_number_si(wd->symbol), FSEP);
else
nchar = snprintf(buf + bl, buflen - bl, "%d%c%d%c%s%c",
wd->number, FSEP, D_variable, FSEP, wd->sname, FSEP);
@@ -4929,7 +4954,7 @@ do_print_f(CMDARG *arg, int cmd ATTRIBUTE_UNUSED)
{
long field_num;
r = a->a_node;
- field_num = (long) r->numbr;
+ field_num = get_number_si(r);
tmp[i] = *get_field(field_num, NULL);
}
break;
@@ -5172,9 +5197,9 @@ set_gawk_output(const char *file)
static void
set_prompt(const char *value)
{
- efree(dgawk_Prompt);
- dgawk_Prompt = estrdup(value, strlen(value));
- dPrompt = dgawk_Prompt;
+ efree(dgawk_prompt);
+ dgawk_prompt = estrdup(value, strlen(value));
+ dbg_prompt = dgawk_prompt;
}
/* set_option_flag --- convert option string to flag value */
diff --git a/depcomp b/depcomp
index ca5ea4e1..debb6ffa 100755
--- a/depcomp
+++ b/depcomp
@@ -1,10 +1,9 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
-scriptversion=2006-10-15.18
+scriptversion=2012-03-27.16; # UTC
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software
-# Foundation, Inc.
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -17,9 +16,7 @@ scriptversion=2006-10-15.18
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -30,7 +27,7 @@ scriptversion=2006-10-15.18
case $1 in
'')
- echo "$0: No command. Try \`$0 --help' for more information." 1>&2
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
@@ -42,11 +39,11 @@ as side-effects.
Environment variables:
depmode Dependency tracking mode.
- source Source file read by `PROGRAMS ARGS'.
- object Object file output by `PROGRAMS ARGS'.
+ source Source file read by 'PROGRAMS ARGS'.
+ object Object file output by 'PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
- tmpdepfile Temporary file to use when outputing dependencies.
+ tmpdepfile Temporary file to use when outputting dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to <bug-automake@gnu.org>.
@@ -59,6 +56,12 @@ EOF
;;
esac
+# A tabulation character.
+tab=' '
+# A newline character.
+nl='
+'
+
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
@@ -87,6 +90,29 @@ if test "$depmode" = dashXmstdout; then
depmode=dashmstdout
fi
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+ # This is just like msvisualcpp but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u='sed s,\\\\,/,g'
+ depmode=msvisualcpp
+fi
+
+if test "$depmode" = msvc7msys; then
+ # This is just like msvc7 but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u='sed s,\\\\,/,g'
+ depmode=msvc7
+fi
+
+if test "$depmode" = xlc; then
+ # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
+ gccflag=-qmakedep=gcc,-MF
+ depmode=gcc
+fi
+
case "$depmode" in
gcc3)
## gcc 3 implements dependency tracking that does exactly what
@@ -141,20 +167,21 @@ gcc)
## The second -e expression handles DOS-style file names with drive letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
+## This next piece of magic avoids the "deleted header file" problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
- tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'. On the theory
+ tr ' ' "$nl" < "$tmpdepfile" |
+## Some versions of gcc put a space before the ':'. On the theory
## that the space means something, we add a space to the output as
-## well.
+## well. hp depmode also adds that space, but also prefixes the VPATH
+## to the object. Take care to not repeat it in the output.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
@@ -186,20 +213,17 @@ sgi)
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
- # the IRIX cc adds comments like `#:fec' to the end of the
+ # the IRIX cc adds comments like '#:fec' to the end of the
# dependency line.
- tr ' ' '
-' < "$tmpdepfile" \
+ tr ' ' "$nl" < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
- tr '
-' ' ' >> $depfile
- echo >> $depfile
+ tr "$nl" ' ' >> "$depfile"
+ echo >> "$depfile"
# The second pass generates a dummy entry for each header file.
- tr ' ' '
-' < "$tmpdepfile" \
+ tr ' ' "$nl" < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
- >> $depfile
+ >> "$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
@@ -209,40 +233,51 @@ sgi)
rm -f "$tmpdepfile"
;;
+xlc)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the
- # current directory. Also, the AIX compiler puts `$object:' at the
+ # current directory. Also, the AIX compiler puts '$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
- stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
- tmpdepfile="$stripped.u"
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
+ tmpdepfile1=$dir$base.u
+ tmpdepfile2=$base.u
+ tmpdepfile3=$dir.libs/$base.u
"$@" -Wc,-M
else
+ tmpdepfile1=$dir$base.u
+ tmpdepfile2=$dir$base.u
+ tmpdepfile3=$dir$base.u
"$@" -M
fi
stat=$?
- if test -f "$tmpdepfile"; then :
- else
- stripped=`echo "$stripped" | sed 's,^.*/,,'`
- tmpdepfile="$stripped.u"
- fi
-
if test $stat -eq 0; then :
else
- rm -f "$tmpdepfile"
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
exit $stat
fi
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ do
+ test -f "$tmpdepfile" && break
+ done
if test -f "$tmpdepfile"; then
- outname="$stripped.o"
- # Each line is of the form `foo.o: dependent.h'.
+ # Each line is of the form 'foo.o: dependent.h'.
# Do two passes, one to just change these to
- # `$object: dependent.h' and one to simply `dependent.h:'.
- sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
- sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+ # '$object: dependent.h' and one to simply 'dependent.h:'.
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
@@ -253,23 +288,26 @@ aix)
;;
icc)
- # Intel's C compiler understands `-MD -MF file'. However on
- # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+ # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
+ # However on
+ # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
# ICC 7.0 will fill foo.d with something like
# foo.o: sub/foo.c
# foo.o: sub/foo.h
- # which is wrong. We want:
+ # which is wrong. We want
# sub/foo.o: sub/foo.c
# sub/foo.o: sub/foo.h
# sub/foo.c:
# sub/foo.h:
# ICC 7.1 will output
# foo.o: sub/foo.c sub/foo.h
- # and will wrap long lines using \ :
+ # and will wrap long lines using '\':
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
-
+ # tcc 0.9.26 (FIXME still under development at the moment of writing)
+ # will emit a similar output, but also prepend the continuation lines
+ # with horizontal tabulation characters.
"$@" -MD -MF "$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
@@ -278,15 +316,21 @@ icc)
exit $stat
fi
rm -f "$depfile"
- # Each line is of the form `foo.o: dependent.h',
- # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+ # Each line is of the form 'foo.o: dependent.h',
+ # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
# Do two passes, one to just change these to
- # `$object: dependent.h' and one to simply `dependent.h:'.
- sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
- # Some versions of the HPUX 10.20 sed can't process this invocation
- # correctly. Breaking it into two sed invocations is a workaround.
- sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
- sed -e 's/$/ :/' >> "$depfile"
+ # '$object: dependent.h' and one to simply 'dependent.h:'.
+ sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \
+ < "$tmpdepfile" > "$depfile"
+ sed '
+ s/[ '"$tab"'][ '"$tab"']*/ /g
+ s/^ *//
+ s/ *\\*$//
+ s/^[^:]*: *//
+ /^$/d
+ /:$/d
+ s/$/ :/
+ ' < "$tmpdepfile" >> "$depfile"
rm -f "$tmpdepfile"
;;
@@ -322,8 +366,13 @@ hp2)
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
- # Add `dependent.h:' lines.
- sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
+ # Add 'dependent.h:' lines.
+ sed -ne '2,${
+ s/^ *//
+ s/ \\*$//
+ s/$/:/
+ p
+ }' "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
@@ -332,9 +381,9 @@ hp2)
tru64)
# The Tru64 compiler uses -MD to generate dependencies as a side
- # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+ # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
- # dependencies in `foo.d' instead, so we check for that too.
+ # dependencies in 'foo.d' instead, so we check for that too.
# Subdirectories are respected.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
@@ -380,14 +429,59 @@ tru64)
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- # That's a tab and a space in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
+msvc7)
+ if test "$libtool" = yes; then
+ showIncludes=-Wc,-showIncludes
+ else
+ showIncludes=-showIncludes
+ fi
+ "$@" $showIncludes > "$tmpdepfile"
+ stat=$?
+ grep -v '^Note: including file: ' "$tmpdepfile"
+ if test "$stat" = 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ # The first sed program below extracts the file names and escapes
+ # backslashes for cygpath. The second sed program outputs the file
+ # name when reading, but also accumulates all include files in the
+ # hold buffer in order to output them again at the end. This only
+ # works with sed implementations that can handle large buffers.
+ sed < "$tmpdepfile" -n '
+/^Note: including file: *\(.*\)/ {
+ s//\1/
+ s/\\/\\\\/g
+ p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/'"$tab"'\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+ s/.*/'"$tab"'/
+ G
+ p
+}' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvc7msys)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
#nosideeffect)
# This comment above is used by automake to tell side-effect
# dependency tracking mechanisms from slower ones.
@@ -399,13 +493,13 @@ dashmstdout)
# Remove the call to Libtool.
if test "$libtool" = yes; then
- while test $1 != '--mode=compile'; do
+ while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
- # Remove `-o $object'.
+ # Remove '-o $object'.
IFS=" "
for arg
do
@@ -425,15 +519,14 @@ dashmstdout)
done
test -z "$dashmflag" && dashmflag=-M
- # Require at least two characters before searching for `:'
+ # Require at least two characters before searching for ':'
# in the target name. This is to cope with DOS-style filenames:
- # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+ # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
"$@" $dashmflag |
- sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
+ sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
- tr ' ' '
-' < "$tmpdepfile" | \
+ tr ' ' "$nl" < "$tmpdepfile" | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
@@ -450,38 +543,46 @@ makedepend)
"$@" || exit $?
# Remove any Libtool call
if test "$libtool" = yes; then
- while test $1 != '--mode=compile'; do
+ while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# X makedepend
shift
- cleared=no
- for arg in "$@"; do
+ cleared=no eat=no
+ for arg
+ do
case $cleared in
no)
set ""; shift
cleared=yes ;;
esac
+ if test $eat = yes; then
+ eat=no
+ continue
+ fi
case "$arg" in
-D*|-I*)
set fnord "$@" "$arg"; shift ;;
# Strip any option that makedepend may not understand. Remove
# the object too, otherwise makedepend will parse it as a source file.
+ -arch)
+ eat=yes ;;
-*|$object)
;;
*)
set fnord "$@" "$arg"; shift ;;
esac
done
- obj_suffix="`echo $object | sed 's/^.*\././'`"
+ obj_suffix=`echo "$object" | sed 's/^.*\././'`
touch "$tmpdepfile"
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
rm -f "$depfile"
- cat < "$tmpdepfile" > "$depfile"
- sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
+ # makedepend may prepend the VPATH from the source file name to the object.
+ # No need to regex-escape $object, excess matching of '.' is harmless.
+ sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+ sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
@@ -495,13 +596,13 @@ cpp)
# Remove the call to Libtool.
if test "$libtool" = yes; then
- while test $1 != '--mode=compile'; do
+ while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
- # Remove `-o $object'.
+ # Remove '-o $object'.
IFS=" "
for arg
do
@@ -533,13 +634,27 @@ cpp)
msvisualcpp)
# Important note: in order to support this mode, a compiler *must*
- # always write the preprocessed file to stdout, regardless of -o,
- # because we must use -o when running libtool.
+ # always write the preprocessed file to stdout.
"$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
IFS=" "
for arg
do
case "$arg" in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
set fnord "$@"
shift
@@ -552,16 +667,23 @@ msvisualcpp)
;;
esac
done
- "$@" -E |
- sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+ "$@" -E 2>/dev/null |
+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
- . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
- echo " " >> "$depfile"
- . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
+ echo "$tab" >> "$depfile"
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
+msvcmsys)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
none)
exec "$@"
;;
@@ -580,5 +702,6 @@ exit 0
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
# End:
diff --git a/dfa.c b/dfa.c
index acd1a947..f9355f19 100644
--- a/dfa.c
+++ b/dfa.c
@@ -1,5 +1,5 @@
/* dfa.c - deterministic extended regexp routines for GNU
- Copyright (C) 1988, 1998, 2000, 2002, 2004-2005, 2007-2011 Free Software
+ Copyright (C) 1988, 1998, 2000, 2002, 2004-2005, 2007-2012 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -36,6 +36,12 @@
#if HAVE_SETLOCALE
#include <locale.h>
#endif
+#ifdef HAVE_STDBOOL_H
+#include <stdbool.h>
+#else
+#include "missing_d/gawkbool.h"
+#endif /* HAVE_STDBOOL_H */
+
#define STREQ(a, b) (strcmp (a, b) == 0)
@@ -53,23 +59,26 @@
#include "gettext.h"
#define _(str) gettext (str)
-#include "mbsupport.h" /* defines MBS_SUPPORT to 1 or 0, as appropriate */
+#include "mbsupport.h" /* defines MBS_SUPPORT to 1 or 0, as appropriate */
#if MBS_SUPPORT
/* We can handle multibyte strings. */
#include <wchar.h>
#include <wctype.h>
-
-#if HAVE_LANGINFO_CODESET
-# include <langinfo.h>
-#endif
#endif
#ifdef GAWK
-#define bool int
-#define true (1)
-#define false (0)
+/* The __pure__ attribute was added in gcc 2.96. */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
+# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
+#else
+# define _GL_ATTRIBUTE_PURE /* empty */
+#endif
#endif /* GAWK */
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+
#include "regex.h"
#include "dfa.h"
#include "xalloc.h"
@@ -112,7 +121,28 @@ typedef int charclass[CHARCLASS_INTS];
/* Convert a possibly-signed character to an unsigned character. This is
a bit safer than casting to unsigned char, since it catches some type
errors that the cast doesn't. */
-static inline unsigned char to_uchar (char ch) { return ch; }
+static inline unsigned char
+to_uchar (char ch)
+{
+ return ch;
+}
+
+/* Contexts tell us whether a character is a newline or a word constituent.
+ Word-constituent characters are those that satisfy iswalnum(), plus '_'.
+ Each character has a single CTX_* value; bitmasks of CTX_* values denote
+ a particular character class.
+
+ A state also stores a context value, which is a bitmask of CTX_* values.
+ A state's context represents a set of characters that the state's
+ predecessors must match. For example, a state whose context does not
+ include CTX_LETTER will never have transitions where the previous
+ character is a word constituent. A state whose context is CTX_ANY
+ might have transitions from any character. */
+
+#define CTX_NONE 1
+#define CTX_LETTER 2
+#define CTX_NEWLINE 4
+#define CTX_ANY 7
/* Sometimes characters can only be matched depending on the surrounding
context. Such context decisions depend on what the previous character
@@ -121,54 +151,55 @@ static inline unsigned char to_uchar (char ch) { return ch; }
is set indicates that the constraint succeeds in the corresponding
context.
- bit 7 - previous and current are newlines
- bit 6 - previous was newline, current isn't
- bit 5 - previous wasn't newline, current is
- bit 4 - neither previous nor current is a newline
- bit 3 - previous and current are word-constituents
- bit 2 - previous was word-constituent, current isn't
- bit 1 - previous wasn't word-constituent, current is
- bit 0 - neither previous nor current is word-constituent
-
- Word-constituent characters are those that satisfy isalnum().
+ bit 8-11 - valid contexts when next character is CTX_NEWLINE
+ bit 4-7 - valid contexts when next character is CTX_LETTER
+ bit 0-3 - valid contexts when next character is CTX_NONE
The macro SUCCEEDS_IN_CONTEXT determines whether a given constraint
- succeeds in a particular context. Prevn is true if the previous character
- was a newline, currn is true if the lookahead character is a newline.
- Prevl and currl similarly depend upon whether the previous and current
- characters are word-constituent letters. */
-#define MATCHES_NEWLINE_CONTEXT(constraint, prevn, currn) \
- ((constraint) & 1 << (((prevn) ? 2 : 0) + ((currn) ? 1 : 0) + 4))
-#define MATCHES_LETTER_CONTEXT(constraint, prevl, currl) \
- ((constraint) & 1 << (((prevl) ? 2 : 0) + ((currl) ? 1 : 0)))
-#define SUCCEEDS_IN_CONTEXT(constraint, prevn, currn, prevl, currl) \
- (MATCHES_NEWLINE_CONTEXT(constraint, prevn, currn) \
- && MATCHES_LETTER_CONTEXT(constraint, prevl, currl))
+ succeeds in a particular context. Prev is a bitmask of possible
+ context values for the previous character, curr is the (single-bit)
+ context value for the lookahead character. */
+#define NEWLINE_CONSTRAINT(constraint) (((constraint) >> 8) & 0xf)
+#define LETTER_CONSTRAINT(constraint) (((constraint) >> 4) & 0xf)
+#define OTHER_CONSTRAINT(constraint) ((constraint) & 0xf)
+
+#define SUCCEEDS_IN_CONTEXT(constraint, prev, curr) \
+ ((((curr) & CTX_NONE ? OTHER_CONSTRAINT(constraint) : 0) \
+ | ((curr) & CTX_LETTER ? LETTER_CONSTRAINT(constraint) : 0) \
+ | ((curr) & CTX_NEWLINE ? NEWLINE_CONSTRAINT(constraint) : 0)) & (prev))
/* The following macros give information about what a constraint depends on. */
+#define PREV_NEWLINE_CONSTRAINT(constraint) (((constraint) >> 2) & 0x111)
+#define PREV_LETTER_CONSTRAINT(constraint) (((constraint) >> 1) & 0x111)
+#define PREV_OTHER_CONSTRAINT(constraint) ((constraint) & 0x111)
+
#define PREV_NEWLINE_DEPENDENT(constraint) \
- (((constraint) & 0xc0) >> 2 != ((constraint) & 0x30))
+ (PREV_NEWLINE_CONSTRAINT (constraint) != PREV_OTHER_CONSTRAINT (constraint))
#define PREV_LETTER_DEPENDENT(constraint) \
- (((constraint) & 0x0c) >> 2 != ((constraint) & 0x03))
+ (PREV_LETTER_CONSTRAINT (constraint) != PREV_OTHER_CONSTRAINT (constraint))
/* Tokens that match the empty string subject to some constraint actually
work by applying that constraint to determine what may follow them,
taking into account what has gone before. The following values are
the constraints corresponding to the special tokens previously defined. */
-#define NO_CONSTRAINT 0xff
-#define BEGLINE_CONSTRAINT 0xcf
-#define ENDLINE_CONSTRAINT 0xaf
-#define BEGWORD_CONSTRAINT 0xf2
-#define ENDWORD_CONSTRAINT 0xf4
-#define LIMWORD_CONSTRAINT 0xf6
-#define NOTLIMWORD_CONSTRAINT 0xf9
+#define NO_CONSTRAINT 0x777
+#define BEGLINE_CONSTRAINT 0x444
+#define ENDLINE_CONSTRAINT 0x700
+#define BEGWORD_CONSTRAINT 0x050
+#define ENDWORD_CONSTRAINT 0x202
+#define LIMWORD_CONSTRAINT 0x252
+#define NOTLIMWORD_CONSTRAINT 0x525
/* The regexp is parsed into an array of tokens in postfix form. Some tokens
are operators and others are terminal symbols. Most (but not all) of these
codes are returned by the lexical analyzer. */
-typedef enum
+
+typedef ptrdiff_t token;
+
+/* Predefined token values. */
+enum
{
- END = -1, /* END is a terminal symbol that matches the
+ END = -1, /* END is a terminal symbol that matches the
end of input; any value of END or less in
the parse tree is such a symbol. Accepting
states of the DFA are those that would have
@@ -176,83 +207,83 @@ typedef enum
/* Ordinary character values are terminal symbols that match themselves. */
- EMPTY = NOTCHAR, /* EMPTY is a terminal symbol that matches
+ EMPTY = NOTCHAR, /* EMPTY is a terminal symbol that matches
the empty string. */
- BACKREF, /* BACKREF is generated by \<digit>; it
+ BACKREF, /* BACKREF is generated by \<digit>; it
is not completely handled. If the scanner
detects a transition on backref, it returns
a kind of "semi-success" indicating that
the match will have to be verified with
a backtracking matcher. */
- BEGLINE, /* BEGLINE is a terminal symbol that matches
+ BEGLINE, /* BEGLINE is a terminal symbol that matches
the empty string if it is at the beginning
of a line. */
- ENDLINE, /* ENDLINE is a terminal symbol that matches
+ ENDLINE, /* ENDLINE is a terminal symbol that matches
the empty string if it is at the end of
a line. */
- BEGWORD, /* BEGWORD is a terminal symbol that matches
+ BEGWORD, /* BEGWORD is a terminal symbol that matches
the empty string if it is at the beginning
of a word. */
- ENDWORD, /* ENDWORD is a terminal symbol that matches
+ ENDWORD, /* ENDWORD is a terminal symbol that matches
the empty string if it is at the end of
a word. */
- LIMWORD, /* LIMWORD is a terminal symbol that matches
+ LIMWORD, /* LIMWORD is a terminal symbol that matches
the empty string if it is at the beginning
or the end of a word. */
- NOTLIMWORD, /* NOTLIMWORD is a terminal symbol that
+ NOTLIMWORD, /* NOTLIMWORD is a terminal symbol that
matches the empty string if it is not at
the beginning or end of a word. */
- QMARK, /* QMARK is an operator of one argument that
- matches zero or one occurences of its
+ QMARK, /* QMARK is an operator of one argument that
+ matches zero or one occurrences of its
argument. */
- STAR, /* STAR is an operator of one argument that
+ STAR, /* STAR is an operator of one argument that
matches the Kleene closure (zero or more
occurrences) of its argument. */
- PLUS, /* PLUS is an operator of one argument that
+ PLUS, /* PLUS is an operator of one argument that
matches the positive closure (one or more
occurrences) of its argument. */
- REPMN, /* REPMN is a lexical token corresponding
+ REPMN, /* REPMN is a lexical token corresponding
to the {m,n} construct. REPMN never
appears in the compiled token vector. */
- CAT, /* CAT is an operator of two arguments that
+ CAT, /* CAT is an operator of two arguments that
matches the concatenation of its
arguments. CAT is never returned by the
lexical analyzer. */
- OR, /* OR is an operator of two arguments that
+ OR, /* OR is an operator of two arguments that
matches either of its arguments. */
- LPAREN, /* LPAREN never appears in the parse tree,
+ LPAREN, /* LPAREN never appears in the parse tree,
it is only a lexeme. */
- RPAREN, /* RPAREN never appears in the parse tree. */
+ RPAREN, /* RPAREN never appears in the parse tree. */
- ANYCHAR, /* ANYCHAR is a terminal symbol that matches
- any multibyte (or single byte) characters.
- It is used only if MB_CUR_MAX > 1. */
+ ANYCHAR, /* ANYCHAR is a terminal symbol that matches
+ any multibyte (or single byte) characters.
+ It is used only if MB_CUR_MAX > 1. */
- MBCSET, /* MBCSET is similar to CSET, but for
+ MBCSET, /* MBCSET is similar to CSET, but for
multibyte characters. */
- WCHAR, /* Only returned by lex. wctok contains
+ WCHAR, /* Only returned by lex. wctok contains
the wide character representation. */
- CSET /* CSET and (and any value greater) is a
+ CSET /* CSET and (and any value greater) is a
terminal symbol that matches any of a
class of characters. */
-} token;
+};
/* States of the recognizer correspond to sets of positions in the parse
@@ -261,116 +292,127 @@ typedef enum
a constraint. */
typedef struct
{
- unsigned int index; /* Index into the parse array. */
- unsigned int constraint; /* Constraint for matching this position. */
+ size_t index; /* Index into the parse array. */
+ unsigned int constraint; /* Constraint for matching this position. */
} position;
/* Sets of positions are stored as arrays. */
typedef struct
{
- position *elems; /* Elements of this position set. */
- int nelem; /* Number of elements in this set. */
+ position *elems; /* Elements of this position set. */
+ size_t nelem; /* Number of elements in this set. */
+ size_t alloc; /* Number of elements allocated in ELEMS. */
} position_set;
+/* Sets of leaves are also stored as arrays. */
+typedef struct
+{
+ size_t *elems; /* Elements of this position set. */
+ size_t nelem; /* Number of elements in this set. */
+} leaf_set;
+
/* A state of the dfa consists of a set of positions, some flags,
and the token value of the lowest-numbered position of the state that
contains an END token. */
typedef struct
{
- int hash; /* Hash of the positions of this state. */
- position_set elems; /* Positions this state could match. */
- char newline; /* True if previous state matched newline. */
- char letter; /* True if previous state matched a letter. */
- char backref; /* True if this state matches a \<digit>. */
- unsigned char constraint; /* Constraint for this state to accept. */
- int first_end; /* Token value of the first END in elems. */
- position_set mbps; /* Positions which can match multibyte
- characters. e.g. period.
- These staff are used only if
- MB_CUR_MAX > 1. */
+ size_t hash; /* Hash of the positions of this state. */
+ position_set elems; /* Positions this state could match. */
+ unsigned char context; /* Context from previous state. */
+ char backref; /* True if this state matches a \<digit>. */
+ unsigned short constraint; /* Constraint for this state to accept. */
+ token first_end; /* Token value of the first END in elems. */
+ position_set mbps; /* Positions which can match multibyte
+ characters. e.g. period.
+ These staff are used only if
+ MB_CUR_MAX > 1. */
} dfa_state;
+/* States are indexed by state_num values. These are normally
+ nonnegative but -1 is used as a special value. */
+typedef ptrdiff_t state_num;
+
/* A bracket operator.
e.g. [a-c], [[:alpha:]], etc. */
struct mb_char_classes
{
- int cset;
+ ptrdiff_t cset;
int invert;
- wchar_t *chars; /* Normal characters. */
- int nchars;
- wctype_t *ch_classes; /* Character classes. */
- int nch_classes;
- wchar_t *range_sts; /* Range characters (start of the range). */
- wchar_t *range_ends; /* Range characters (end of the range). */
- int nranges;
- char **equivs; /* Equivalent classes. */
- int nequivs;
+ wchar_t *chars; /* Normal characters. */
+ size_t nchars;
+ wctype_t *ch_classes; /* Character classes. */
+ size_t nch_classes;
+ wchar_t *range_sts; /* Range characters (start of the range). */
+ wchar_t *range_ends; /* Range characters (end of the range). */
+ size_t nranges;
+ char **equivs; /* Equivalence classes. */
+ size_t nequivs;
char **coll_elems;
- int ncoll_elems; /* Collating elements. */
+ size_t ncoll_elems; /* Collating elements. */
};
/* A compiled regular expression. */
struct dfa
{
/* Fields filled by the scanner. */
- charclass *charclasses; /* Array of character sets for CSET tokens. */
- int cindex; /* Index for adding new charclasses. */
- int calloc; /* Number of charclasses currently allocated. */
+ charclass *charclasses; /* Array of character sets for CSET tokens. */
+ size_t cindex; /* Index for adding new charclasses. */
+ size_t calloc; /* Number of charclasses currently allocated. */
/* Fields filled by the parser. */
- token *tokens; /* Postfix parse array. */
- int tindex; /* Index for adding new tokens. */
- int talloc; /* Number of tokens currently allocated. */
- int depth; /* Depth required of an evaluation stack
+ token *tokens; /* Postfix parse array. */
+ size_t tindex; /* Index for adding new tokens. */
+ size_t talloc; /* Number of tokens currently allocated. */
+ size_t depth; /* Depth required of an evaluation stack
used for depth-first traversal of the
parse tree. */
- int nleaves; /* Number of leaves on the parse tree. */
- int nregexps; /* Count of parallel regexps being built
+ size_t nleaves; /* Number of leaves on the parse tree. */
+ size_t nregexps; /* Count of parallel regexps being built
with dfaparse(). */
- unsigned int mb_cur_max; /* Cached value of MB_CUR_MAX. */
- int utf8_anychar_classes[5]; /* To lower ANYCHAR in UTF-8 locales. */
+ unsigned int mb_cur_max; /* Cached value of MB_CUR_MAX. */
+ token utf8_anychar_classes[5]; /* To lower ANYCHAR in UTF-8 locales. */
/* The following are used only if MB_CUR_MAX > 1. */
/* The value of multibyte_prop[i] is defined by following rule.
- if tokens[i] < NOTCHAR
- bit 0 : tokens[i] is the first byte of a character, including
- single-byte characters.
- bit 1 : tokens[i] is the last byte of a character, including
- single-byte characters.
+ if tokens[i] < NOTCHAR
+ bit 0 : tokens[i] is the first byte of a character, including
+ single-byte characters.
+ bit 1 : tokens[i] is the last byte of a character, including
+ single-byte characters.
- if tokens[i] = MBCSET
- ("the index of mbcsets correspnd to this operator" << 2) + 3
+ if tokens[i] = MBCSET
+ ("the index of mbcsets corresponding to this operator" << 2) + 3
e.g.
tokens
- = 'single_byte_a', 'multi_byte_A', single_byte_b'
- = 'sb_a', 'mb_A(1st byte)', 'mb_A(2nd byte)', 'mb_A(3rd byte)', 'sb_b'
+ = 'single_byte_a', 'multi_byte_A', single_byte_b'
+ = 'sb_a', 'mb_A(1st byte)', 'mb_A(2nd byte)', 'mb_A(3rd byte)', 'sb_b'
multibyte_prop
- = 3 , 1 , 0 , 2 , 3
- */
- int nmultibyte_prop;
+ = 3 , 1 , 0 , 2 , 3
+ */
+ size_t nmultibyte_prop;
int *multibyte_prop;
/* Array of the bracket expression in the DFA. */
struct mb_char_classes *mbcsets;
- int nmbcsets;
- int mbcsets_alloc;
+ size_t nmbcsets;
+ size_t mbcsets_alloc;
/* Fields filled by the state builder. */
- dfa_state *states; /* States of the dfa. */
- int sindex; /* Index for adding new states. */
- int salloc; /* Number of states currently allocated. */
+ dfa_state *states; /* States of the dfa. */
+ state_num sindex; /* Index for adding new states. */
+ state_num salloc; /* Number of states currently allocated. */
/* Fields filled by the parse tree->NFA conversion. */
- position_set *follows; /* Array of follow sets, indexed by position
+ position_set *follows; /* Array of follow sets, indexed by position
index. The follow of a position is the set
of positions containing characters that
could conceivably follow a character
matching the given position in a string
matching the regexp. Allocated to the
maximum possible position index. */
- int searchflag; /* True if we are supposed to build a searching
+ int searchflag; /* True if we are supposed to build a searching
as opposed to an exact matcher. A searching
matcher finds the first and shortest string
matching a regexp anywhere in the buffer,
@@ -379,29 +421,29 @@ struct dfa
beginning of the buffer. */
/* Fields filled by dfaexec. */
- int tralloc; /* Number of transition tables that have
+ state_num tralloc; /* Number of transition tables that have
slots so far. */
- int trcount; /* Number of transition tables that have
+ int trcount; /* Number of transition tables that have
actually been built. */
- int **trans; /* Transition tables for states that can
+ state_num **trans; /* Transition tables for states that can
never accept. If the transitions for a
state have not yet been computed, or the
state could possibly accept, its entry in
this table is NULL. */
- int **realtrans; /* Trans always points to realtrans + 1; this
+ state_num **realtrans; /* Trans always points to realtrans + 1; this
is so trans[-1] can contain NULL. */
- int **fails; /* Transition tables after failing to accept
+ state_num **fails; /* Transition tables after failing to accept
on a state that potentially could do so. */
- int *success; /* Table of acceptance conditions used in
+ int *success; /* Table of acceptance conditions used in
dfaexec and computed in build_state. */
- int *newlines; /* Transitions on newlines. The entry for a
+ state_num *newlines; /* Transitions on newlines. The entry for a
newline in any transition table is always
-1 so we can count lines without wasting
too many cycles. The transition for a
newline is stored separately and handled
as a special case. Newline is also used
as a sentinel at the end of the buffer. */
- struct dfamust *musts; /* List of strings, at least one of which
+ struct dfamust *musts; /* List of strings, at least one of which
is known to appear in any r.e. matching
the dfa. */
};
@@ -413,9 +455,8 @@ struct dfa
/* ACCEPTS_IN_CONTEXT returns true if the given state accepts in the
specified context. */
-#define ACCEPTS_IN_CONTEXT(prevn, currn, prevl, currl, state, dfa) \
- SUCCEEDS_IN_CONTEXT((dfa).states[state].constraint, \
- prevn, currn, prevl, currl)
+#define ACCEPTS_IN_CONTEXT(prev, curr, state, dfa) \
+ SUCCEEDS_IN_CONTEXT ((dfa).states[state].constraint, prev, curr)
static void dfamust (struct dfa *dfa);
static void regexp (void);
@@ -445,7 +486,6 @@ static void regexp (void);
#define REALLOC_IF_NECESSARY(p, n_alloc, n_required) \
do \
{ \
- assert (0 <= (n_required)); \
if ((n_alloc) <= (n_required)) \
{ \
size_t new_n_alloc = (n_required) + !(p); \
@@ -464,33 +504,72 @@ prtok (token t)
char const *s;
if (t < 0)
- fprintf(stderr, "END");
+ fprintf (stderr, "END");
else if (t < NOTCHAR)
- fprintf(stderr, "%c", t);
+ {
+ int ch = t;
+ fprintf (stderr, "%c", ch);
+ }
else
{
switch (t)
{
- case EMPTY: s = "EMPTY"; break;
- case BACKREF: s = "BACKREF"; break;
- case BEGLINE: s = "BEGLINE"; break;
- case ENDLINE: s = "ENDLINE"; break;
- case BEGWORD: s = "BEGWORD"; break;
- case ENDWORD: s = "ENDWORD"; break;
- case LIMWORD: s = "LIMWORD"; break;
- case NOTLIMWORD: s = "NOTLIMWORD"; break;
- case QMARK: s = "QMARK"; break;
- case STAR: s = "STAR"; break;
- case PLUS: s = "PLUS"; break;
- case CAT: s = "CAT"; break;
- case OR: s = "OR"; break;
- case LPAREN: s = "LPAREN"; break;
- case RPAREN: s = "RPAREN"; break;
- case ANYCHAR: s = "ANYCHAR"; break;
- case MBCSET: s = "MBCSET"; break;
- default: s = "CSET"; break;
+ case EMPTY:
+ s = "EMPTY";
+ break;
+ case BACKREF:
+ s = "BACKREF";
+ break;
+ case BEGLINE:
+ s = "BEGLINE";
+ break;
+ case ENDLINE:
+ s = "ENDLINE";
+ break;
+ case BEGWORD:
+ s = "BEGWORD";
+ break;
+ case ENDWORD:
+ s = "ENDWORD";
+ break;
+ case LIMWORD:
+ s = "LIMWORD";
+ break;
+ case NOTLIMWORD:
+ s = "NOTLIMWORD";
+ break;
+ case QMARK:
+ s = "QMARK";
+ break;
+ case STAR:
+ s = "STAR";
+ break;
+ case PLUS:
+ s = "PLUS";
+ break;
+ case CAT:
+ s = "CAT";
+ break;
+ case OR:
+ s = "OR";
+ break;
+ case LPAREN:
+ s = "LPAREN";
+ break;
+ case RPAREN:
+ s = "RPAREN";
+ break;
+ case ANYCHAR:
+ s = "ANYCHAR";
+ break;
+ case MBCSET:
+ s = "MBCSET";
+ break;
+ default:
+ s = "CSET";
+ break;
}
- fprintf(stderr, "%s", s);
+ fprintf (stderr, "%s", s);
}
}
#endif /* DEBUG */
@@ -546,17 +625,17 @@ equal (charclass const s1, charclass const s2)
static struct dfa *dfa;
/* Find the index of charclass s in dfa->charclasses, or allocate a new charclass. */
-static int
+static size_t
charclass_index (charclass const s)
{
- int i;
+ size_t i;
for (i = 0; i < dfa->cindex; ++i)
- if (equal(s, dfa->charclasses[i]))
+ if (equal (s, dfa->charclasses[i]))
return i;
- REALLOC_IF_NECESSARY(dfa->charclasses, dfa->calloc, dfa->cindex + 1);
+ REALLOC_IF_NECESSARY (dfa->charclasses, dfa->calloc, dfa->cindex + 1);
++dfa->cindex;
- copyset(s, dfa->charclasses[i]);
+ copyset (s, dfa->charclasses[i]);
return i;
}
@@ -569,14 +648,72 @@ static int case_fold;
/* End-of-line byte in data. */
static unsigned char eolbyte;
+/* Cache of char-context values. */
+static int sbit[NOTCHAR];
+
+/* Set of characters considered letters. */
+static charclass letters;
+
+/* Set of characters that are newline. */
+static charclass newline;
+
+/* Add this to the test for whether a byte is word-constituent, since on
+ BSD-based systems, many values in the 128..255 range are classified as
+ alphabetic, while on glibc-based systems, they are not. */
+#ifdef __GLIBC__
+# define is_valid_unibyte_character(c) 1
+#else
+# define is_valid_unibyte_character(c) (! (MBS_SUPPORT && btowc (c) == WEOF))
+#endif
+
+/* Return non-zero if C is a 'word-constituent' byte; zero otherwise. */
+#define IS_WORD_CONSTITUENT(C) \
+ (is_valid_unibyte_character (C) && (isalnum (C) || (C) == '_'))
+
+static int
+char_context (unsigned char c)
+{
+ if (c == eolbyte || c == 0)
+ return CTX_NEWLINE;
+ if (IS_WORD_CONSTITUENT (c))
+ return CTX_LETTER;
+ return CTX_NONE;
+}
+
+static int
+wchar_context (wint_t wc)
+{
+ if (wc == (wchar_t) eolbyte || wc == 0)
+ return CTX_NEWLINE;
+ if (wc == L'_' || iswalnum (wc))
+ return CTX_LETTER;
+ return CTX_NONE;
+}
+
/* Entry point to set syntax options. */
void
dfasyntax (reg_syntax_t bits, int fold, unsigned char eol)
{
+ unsigned int i;
+
syntax_bits_set = 1;
syntax_bits = bits;
case_fold = fold;
eolbyte = eol;
+
+ for (i = 0; i < NOTCHAR; ++i)
+ {
+ sbit[i] = char_context (i);
+ switch (sbit[i])
+ {
+ case CTX_LETTER:
+ setbit (i, letters);
+ break;
+ case CTX_NEWLINE:
+ setbit (i, newline);
+ break;
+ }
+ }
}
/* Set a bit in the charclass for the given wchar_t. Do nothing if WC
@@ -612,8 +749,7 @@ static inline bool
setbit_wc (wint_t wc, charclass c)
{
abort ();
- /*NOTREACHED*/
- return false;
+ /*NOTREACHED*/ return false;
}
#endif
@@ -666,38 +802,38 @@ using_utf8 (void)
reader is referred to the GNU Regex documentation for the
meaning of the @#%!@#%^!@ syntax bits. */
-static char const *lexptr; /* Pointer to next input character. */
-static int lexleft; /* Number of characters remaining. */
-static token lasttok; /* Previous token returned; initially END. */
-static int laststart; /* True if we're separated from beginning or (, |
+static char const *lexptr; /* Pointer to next input character. */
+static size_t lexleft; /* Number of characters remaining. */
+static token lasttok; /* Previous token returned; initially END. */
+static int laststart; /* True if we're separated from beginning or (, |
only by zero-width characters. */
-static int parens; /* Count of outstanding left parens. */
-static int minrep, maxrep; /* Repeat counts for {m,n}. */
+static size_t parens; /* Count of outstanding left parens. */
+static int minrep, maxrep; /* Repeat counts for {m,n}. */
-static int cur_mb_len = 1; /* Length of the multibyte representation of
+static int cur_mb_len = 1; /* Length of the multibyte representation of
wctok. */
/* These variables are used only if (MB_CUR_MAX > 1). */
-static mbstate_t mbs; /* Mbstate for mbrlen(). */
-static wchar_t wctok; /* Wide character representation of the current
+static mbstate_t mbs; /* Mbstate for mbrlen(). */
+static wchar_t wctok; /* Wide character representation of the current
multibyte character. */
-static unsigned char *mblen_buf;/* Correspond to the input buffer in dfaexec().
- Each element store the amount of remain
- byte of corresponding multibyte character
- in the input string. A element's value
- is 0 if corresponding character is a
- single byte chracter.
- e.g. input : 'a', <mb(0)>, <mb(1)>, <mb(2)>
- mblen_buf : 0, 3, 2, 1
- */
-static wchar_t *inputwcs; /* Wide character representation of input
+static unsigned char *mblen_buf; /* Correspond to the input buffer in dfaexec().
+ Each element store the amount of remain
+ byte of corresponding multibyte character
+ in the input string. A element's value
+ is 0 if corresponding character is a
+ single byte character.
+ e.g. input : 'a', <mb(0)>, <mb(1)>, <mb(2)>
+ mblen_buf : 0, 3, 2, 1
+ */
+static wchar_t *inputwcs; /* Wide character representation of input
string in dfaexec().
The length of this array is same as
the length of input string(char array).
inputstring[i] is a single-byte char,
or 1st byte of a multibyte char.
And inputwcs[i] is the codepoint. */
-static unsigned char const *buf_begin; /* reference to begin in dfaexec(). */
-static unsigned char const *buf_end; /* reference to end in dfaexec(). */
+static unsigned char const *buf_begin; /* reference to begin in dfaexec(). */
+static unsigned char const *buf_end; /* reference to end in dfaexec(). */
#if MBS_SUPPORT
@@ -714,7 +850,7 @@ static unsigned char const *buf_end; /* reference to end in dfaexec(). */
else \
{ \
wchar_t _wc; \
- cur_mb_len = mbrtowc(&_wc, lexptr, lexleft, &mbs); \
+ cur_mb_len = mbrtowc (&_wc, lexptr, lexleft, &mbs); \
if (cur_mb_len <= 0) \
{ \
cur_mb_len = 1; \
@@ -726,7 +862,7 @@ static unsigned char const *buf_end; /* reference to end in dfaexec(). */
lexptr += cur_mb_len; \
lexleft -= cur_mb_len; \
(wc) = _wc; \
- (c) = wctob(wc); \
+ (c) = wctob (wc); \
} \
} \
} while(0)
@@ -734,8 +870,8 @@ static unsigned char const *buf_end; /* reference to end in dfaexec(). */
# define FETCH(c, eoferr) \
do { \
wint_t wc; \
- FETCH_WC(c, wc, eoferr); \
- } while(0)
+ FETCH_WC (c, wc, eoferr); \
+ } while (0)
#else
/* Note that characters become unsigned here. */
@@ -756,34 +892,39 @@ static unsigned char const *buf_end; /* reference to end in dfaexec(). */
#endif /* MBS_SUPPORT */
+#ifndef MIN
+# define MIN(a,b) ((a) < (b) ? (a) : (b))
+#endif
+
typedef int predicate (int);
/* The following list maps the names of the Posix named character classes
to predicate functions that determine whether a given character is in
the class. The leading [ has already been eaten by the lexical analyzer. */
-struct dfa_ctype {
+struct dfa_ctype
+{
const char *name;
predicate *func;
bool single_byte_only;
};
static const struct dfa_ctype prednames[] = {
- { "alpha", isalpha, false },
- { "upper", isupper, false },
- { "lower", islower, false },
- { "digit", isdigit, true },
- { "xdigit", isxdigit, true },
- { "space", isspace, false },
- { "punct", ispunct, false },
- { "alnum", isalnum, false },
- { "print", isprint, false },
- { "graph", isgraph, false },
- { "cntrl", iscntrl, false },
- { "blank", is_blank, false },
- { NULL, NULL, false }
+ {"alpha", isalpha, false},
+ {"upper", isupper, false},
+ {"lower", islower, false},
+ {"digit", isdigit, true},
+ {"xdigit", isxdigit, true},
+ {"space", isspace, false},
+ {"punct", ispunct, false},
+ {"alnum", isalnum, false},
+ {"print", isprint, false},
+ {"graph", isgraph, false},
+ {"cntrl", iscntrl, false},
+ {"blank", is_blank, false},
+ {NULL, NULL, false}
};
-static const struct dfa_ctype * _GL_ATTRIBUTE_PURE
+static const struct dfa_ctype *_GL_ATTRIBUTE_PURE
find_pred (const char *str)
{
unsigned int i;
@@ -817,15 +958,16 @@ parse_bracket_exp (void)
/* Work area to build a mb_char_classes. */
struct mb_char_classes *work_mbc;
- int chars_al, range_sts_al, range_ends_al, ch_classes_al,
+ size_t chars_al, range_sts_al, range_ends_al, ch_classes_al,
equivs_al, coll_elems_al;
- chars_al = 1;
+ chars_al = 0;
range_sts_al = range_ends_al = 0;
ch_classes_al = equivs_al = coll_elems_al = 0;
if (MB_CUR_MAX > 1)
{
- REALLOC_IF_NECESSARY(dfa->mbcsets, dfa->mbcsets_alloc, dfa->nmbcsets + 1);
+ REALLOC_IF_NECESSARY (dfa->mbcsets, dfa->mbcsets_alloc,
+ dfa->nmbcsets + 1);
/* dfa->multibyte_prop[] hold the index of dfa->mbcsets.
We will update dfa->multibyte_prop[] in addtok(), because we can't
@@ -851,7 +993,7 @@ parse_bracket_exp (void)
colon_warning_state = (c == ':');
do
{
- c1 = EOF; /* mark c1 is not initialized". */
+ c1 = EOF; /* mark c1 is not initialized". */
colon_warning_state &= ~2;
/* Note that if we're looking at some other [:...:] construct,
@@ -867,8 +1009,7 @@ parse_bracket_exp (void)
/* If pattern contains `[[:', `[[.', or `[[='. */
if (c1 == ':'
/* TODO: handle `[[.' and `[[=' also for MB_CUR_MAX == 1. */
- || (MB_CUR_MAX > 1 && (c1 == '.' || c1 == '='))
- )
+ || (MB_CUR_MAX > 1 && (c1 == '.' || c1 == '=')))
{
size_t len = 0;
for (;;)
@@ -890,57 +1031,46 @@ parse_bracket_exp (void)
/* build character class. */
{
char const *class
- = (case_fold && (STREQ (str, "upper")
- || STREQ (str, "lower"))
- ? "alpha"
- : str);
+ = (case_fold && (STREQ (str, "upper")
+ || STREQ (str, "lower")) ? "alpha" : str);
const struct dfa_ctype *pred = find_pred (class);
if (!pred)
- dfaerror(_("invalid character class"));
+ dfaerror (_("invalid character class"));
if (MB_CUR_MAX > 1 && !pred->single_byte_only)
{
/* Store the character class as wctype_t. */
wctype_t wt = wctype (class);
- if (ch_classes_al == 0)
- MALLOC(work_mbc->ch_classes, ++ch_classes_al);
- REALLOC_IF_NECESSARY(work_mbc->ch_classes,
- ch_classes_al,
- work_mbc->nch_classes + 1);
+ REALLOC_IF_NECESSARY (work_mbc->ch_classes,
+ ch_classes_al,
+ work_mbc->nch_classes + 1);
work_mbc->ch_classes[work_mbc->nch_classes++] = wt;
}
for (c2 = 0; c2 < NOTCHAR; ++c2)
- if (pred->func(c2))
+ if (pred->func (c2))
setbit_case_fold_c (c2, ccl);
}
else if (MBS_SUPPORT && (c1 == '=' || c1 == '.'))
{
- char *elem;
- MALLOC(elem, len + 1);
- strncpy(elem, str, len + 1);
+ char *elem = xmemdup (str, len + 1);
if (c1 == '=')
- /* build equivalent class. */
+ /* build equivalence class. */
{
- if (equivs_al == 0)
- MALLOC(work_mbc->equivs, ++equivs_al);
- REALLOC_IF_NECESSARY(work_mbc->equivs,
- equivs_al,
- work_mbc->nequivs + 1);
+ REALLOC_IF_NECESSARY (work_mbc->equivs,
+ equivs_al, work_mbc->nequivs + 1);
work_mbc->equivs[work_mbc->nequivs++] = elem;
}
if (c1 == '.')
/* build collating element. */
{
- if (coll_elems_al == 0)
- MALLOC(work_mbc->coll_elems, ++coll_elems_al);
- REALLOC_IF_NECESSARY(work_mbc->coll_elems,
- coll_elems_al,
- work_mbc->ncoll_elems + 1);
+ REALLOC_IF_NECESSARY (work_mbc->coll_elems,
+ coll_elems_al,
+ work_mbc->ncoll_elems + 1);
work_mbc->coll_elems[work_mbc->ncoll_elems++] = elem;
}
}
@@ -956,15 +1086,15 @@ parse_bracket_exp (void)
}
if (c == '\\' && (syntax_bits & RE_BACKSLASH_ESCAPE_IN_LISTS))
- FETCH_WC(c, wc, _("unbalanced ["));
+ FETCH_WC (c, wc, _("unbalanced ["));
if (c1 == EOF)
- FETCH_WC(c1, wc1, _("unbalanced ["));
+ FETCH_WC (c1, wc1, _("unbalanced ["));
if (c1 == '-')
/* build range characters. */
{
- FETCH_WC(c2, wc2, _("unbalanced ["));
+ FETCH_WC (c2, wc2, _("unbalanced ["));
if (c2 == ']')
{
/* In the case [x-], the - is an ordinary hyphen,
@@ -976,42 +1106,63 @@ parse_bracket_exp (void)
if (c1 == '-' && c2 != ']')
{
- if (c2 == '\\'
- && (syntax_bits & RE_BACKSLASH_ESCAPE_IN_LISTS))
- FETCH_WC(c2, wc2, _("unbalanced ["));
+ if (c2 == '\\' && (syntax_bits & RE_BACKSLASH_ESCAPE_IN_LISTS))
+ FETCH_WC (c2, wc2, _("unbalanced ["));
if (MB_CUR_MAX > 1)
{
/* When case folding map a range, say [m-z] (or even [M-z])
to the pair of ranges, [m-z] [M-Z]. */
- if (range_sts_al == 0)
- {
- MALLOC(work_mbc->range_sts, ++range_sts_al);
- MALLOC(work_mbc->range_ends, ++range_ends_al);
- }
- REALLOC_IF_NECESSARY(work_mbc->range_sts,
- range_sts_al, work_mbc->nranges + 1);
- REALLOC_IF_NECESSARY(work_mbc->range_ends,
- range_ends_al, work_mbc->nranges + 1);
+ REALLOC_IF_NECESSARY (work_mbc->range_sts,
+ range_sts_al, work_mbc->nranges + 1);
+ REALLOC_IF_NECESSARY (work_mbc->range_ends,
+ range_ends_al, work_mbc->nranges + 1);
work_mbc->range_sts[work_mbc->nranges] =
- case_fold ? towlower(wc) : (wchar_t)wc;
+ case_fold ? towlower (wc) : (wchar_t) wc;
work_mbc->range_ends[work_mbc->nranges++] =
- case_fold ? towlower(wc2) : (wchar_t)wc2;
+ case_fold ? towlower (wc2) : (wchar_t) wc2;
#ifndef GREP
- if (case_fold && (iswalpha(wc) || iswalpha(wc2)))
+ if (case_fold && (iswalpha (wc) || iswalpha (wc2)))
{
- REALLOC_IF_NECESSARY(work_mbc->range_sts,
- range_sts_al, work_mbc->nranges + 1);
- work_mbc->range_sts[work_mbc->nranges] = towupper(wc);
- REALLOC_IF_NECESSARY(work_mbc->range_ends,
- range_ends_al, work_mbc->nranges + 1);
- work_mbc->range_ends[work_mbc->nranges++] = towupper(wc2);
+ REALLOC_IF_NECESSARY (work_mbc->range_sts,
+ range_sts_al, work_mbc->nranges + 1);
+ work_mbc->range_sts[work_mbc->nranges] = towupper (wc);
+ REALLOC_IF_NECESSARY (work_mbc->range_ends,
+ range_ends_al, work_mbc->nranges + 1);
+ work_mbc->range_ends[work_mbc->nranges++] = towupper (wc2);
}
#endif
}
else
{
+#ifndef GAWK
+ /* Defer to the system regex library about the meaning
+ of range expressions. */
+ regex_t re;
+ char pattern[6] = { '[', 0, '-', 0, ']', 0 };
+ char subject[2] = { 0, 0 };
+ c1 = c;
+ if (case_fold)
+ {
+ c1 = tolower (c1);
+ c2 = tolower (c2);
+ }
+
+ pattern[1] = c1;
+ pattern[3] = c2;
+ regcomp (&re, pattern, REG_NOSUB);
+ for (c = 0; c < NOTCHAR; ++c)
+ {
+ if ((case_fold && isupper (c))
+ || (MB_CUR_MAX > 1 && btowc (c) == WEOF))
+ continue;
+ subject[0] = c;
+ if (regexec (&re, subject, 0, NULL, 0) != REG_NOMATCH)
+ setbit_case_fold_c (c, ccl);
+ }
+ regfree (&re);
+#else
c1 = c;
if (case_fold)
{
@@ -1020,10 +1171,11 @@ parse_bracket_exp (void)
}
for (c = c1; c <= c2; c++)
setbit_case_fold_c (c, ccl);
+#endif
}
colon_warning_state |= 8;
- FETCH_WC(c1, wc1, _("unbalanced ["));
+ FETCH_WC (c1, wc1, _("unbalanced ["));
continue;
}
@@ -1035,25 +1187,25 @@ parse_bracket_exp (void)
continue;
}
- if (case_fold && iswalpha(wc))
+ if (case_fold && iswalpha (wc))
{
- wc = towlower(wc);
+ wc = towlower (wc);
if (!setbit_wc (wc, ccl))
{
- REALLOC_IF_NECESSARY(work_mbc->chars, chars_al,
- work_mbc->nchars + 1);
+ REALLOC_IF_NECESSARY (work_mbc->chars, chars_al,
+ work_mbc->nchars + 1);
work_mbc->chars[work_mbc->nchars++] = wc;
}
#ifdef GREP
continue;
#else
- wc = towupper(wc);
+ wc = towupper (wc);
#endif
}
if (!setbit_wc (wc, ccl))
{
- REALLOC_IF_NECESSARY(work_mbc->chars, chars_al,
- work_mbc->nchars + 1);
+ REALLOC_IF_NECESSARY (work_mbc->chars, chars_al,
+ work_mbc->nchars + 1);
work_mbc->chars[work_mbc->nchars++] = wc;
}
}
@@ -1066,34 +1218,21 @@ parse_bracket_exp (void)
{
static charclass zeroclass;
work_mbc->invert = invert;
- work_mbc->cset = equal(ccl, zeroclass) ? -1 : charclass_index(ccl);
+ work_mbc->cset = equal (ccl, zeroclass) ? -1 : charclass_index (ccl);
return MBCSET;
}
if (invert)
{
- assert(MB_CUR_MAX == 1);
- notset(ccl);
+ assert (MB_CUR_MAX == 1);
+ notset (ccl);
if (syntax_bits & RE_HAT_LISTS_NOT_NEWLINE)
- clrbit(eolbyte, ccl);
+ clrbit (eolbyte, ccl);
}
- return CSET + charclass_index(ccl);
+ return CSET + charclass_index (ccl);
}
-/* Add this to the test for whether a byte is word-constituent, since on
- BSD-based systems, many values in the 128..255 range are classified as
- alphabetic, while on glibc-based systems, they are not. */
-#ifdef __GLIBC__
-# define is_valid_unibyte_character(c) 1
-#else
-# define is_valid_unibyte_character(c) (MBS_SUPPORT && btowc (c) != WEOF)
-#endif
-
-/* Return non-zero if C is a `word-constituent' byte; zero otherwise. */
-#define IS_WORD_CONSTITUENT(C) \
- (is_valid_unibyte_character(C) && (isalnum(C) || (C) == '_'))
-
static token
lex (void)
{
@@ -1113,11 +1252,11 @@ lex (void)
if (MB_CUR_MAX > 1)
{
FETCH_WC (c, wctok, NULL);
- if ((int)c == EOF)
+ if ((int) c == EOF)
goto normal_char;
}
else
- FETCH(c, NULL);
+ FETCH (c, NULL);
switch (c)
{
@@ -1125,7 +1264,7 @@ lex (void)
if (backslash)
goto normal_char;
if (lexleft == 0)
- dfaerror(_("unfinished \\ escape"));
+ dfaerror (_("unfinished \\ escape"));
backslash = 1;
break;
@@ -1133,9 +1272,7 @@ lex (void)
if (backslash)
goto normal_char;
if (syntax_bits & RE_CONTEXT_INDEP_ANCHORS
- || lasttok == END
- || lasttok == LPAREN
- || lasttok == OR)
+ || lasttok == END || lasttok == LPAREN || lasttok == OR)
return lasttok = BEGLINE;
goto normal_char;
@@ -1173,12 +1310,12 @@ lex (void)
case '`':
if (backslash && !(syntax_bits & RE_NO_GNU_OPS))
- return lasttok = BEGLINE; /* FIXME: should be beginning of string */
+ return lasttok = BEGLINE; /* FIXME: should be beginning of string */
goto normal_char;
case '\'':
if (backslash && !(syntax_bits & RE_NO_GNU_OPS))
- return lasttok = ENDLINE; /* FIXME: should be end of string */
+ return lasttok = ENDLINE; /* FIXME: should be end of string */
goto normal_char;
case '<':
@@ -1234,73 +1371,53 @@ lex (void)
if (!(syntax_bits & RE_CONTEXT_INDEP_OPS) && laststart)
goto normal_char;
- if (syntax_bits & RE_NO_BK_BRACES)
- {
- /* Scan ahead for a valid interval; if it's not valid,
- treat it as a literal '{'. */
- int lo = -1, hi = -1;
- char const *p = lexptr;
- char const *lim = p + lexleft;
- for (; p != lim && ISASCIIDIGIT (*p); p++)
- lo = (lo < 0 ? 0 : lo * 10) + *p - '0';
- if (p != lim && *p == ',')
- while (++p != lim && ISASCIIDIGIT (*p))
- hi = (hi < 0 ? 0 : hi * 10) + *p - '0';
- else
- hi = lo;
- if (p == lim || *p != '}'
- || lo < 0 || RE_DUP_MAX < hi || (0 <= hi && hi < lo))
- goto normal_char;
- }
-
- minrep = 0;
/* Cases:
{M} - exact count
{M,} - minimum count, maximum is infinity
+ {,N} - 0 through N
+ {,} - 0 to infinity (same as '*')
{M,N} - M through N */
- FETCH(c, _("unfinished repeat count"));
- if (ISASCIIDIGIT (c))
- {
- minrep = c - '0';
- for (;;)
- {
- FETCH(c, _("unfinished repeat count"));
- if (! ISASCIIDIGIT (c))
- break;
- minrep = 10 * minrep + c - '0';
- }
- }
- else
- dfaerror(_("malformed repeat count"));
- if (c == ',')
- {
- FETCH (c, _("unfinished repeat count"));
- if (! ISASCIIDIGIT (c))
- maxrep = -1;
- else
- {
- maxrep = c - '0';
- for (;;)
- {
- FETCH (c, _("unfinished repeat count"));
- if (! ISASCIIDIGIT (c))
- break;
- maxrep = 10 * maxrep + c - '0';
- }
- if (0 <= maxrep && maxrep < minrep)
- dfaerror (_("malformed repeat count"));
- }
- }
- else
- maxrep = minrep;
- if (!(syntax_bits & RE_NO_BK_BRACES))
- {
- if (c != '\\')
- dfaerror(_("malformed repeat count"));
- FETCH(c, _("unfinished repeat count"));
- }
- if (c != '}')
- dfaerror(_("malformed repeat count"));
+ {
+ char const *p = lexptr;
+ char const *lim = p + lexleft;
+ minrep = maxrep = -1;
+ for (; p != lim && ISASCIIDIGIT (*p); p++)
+ {
+ if (minrep < 0)
+ minrep = *p - '0';
+ else
+ minrep = MIN (RE_DUP_MAX + 1, minrep * 10 + *p - '0');
+ }
+ if (p != lim)
+ {
+ if (*p != ',')
+ maxrep = minrep;
+ else
+ {
+ if (minrep < 0)
+ minrep = 0;
+ while (++p != lim && ISASCIIDIGIT (*p))
+ {
+ if (maxrep < 0)
+ maxrep = *p - '0';
+ else
+ maxrep = MIN (RE_DUP_MAX + 1, maxrep * 10 + *p - '0');
+ }
+ }
+ }
+ if (! ((! backslash || (p != lim && *p++ == '\\'))
+ && p != lim && *p++ == '}'
+ && 0 <= minrep && (maxrep < 0 || minrep <= maxrep)))
+ {
+ if (syntax_bits & RE_INVALID_INTERVAL_ORD)
+ goto normal_char;
+ dfaerror (_("Invalid content of \\{\\}"));
+ }
+ if (RE_DUP_MAX < maxrep)
+ dfaerror (_("Regular expression too big"));
+ lexptr = p;
+ lexleft = lim - p;
+ }
laststart = 0;
return lasttok = REPMN;
@@ -1314,8 +1431,7 @@ lex (void)
case '\n':
if (syntax_bits & RE_LIMITED_OPS
- || backslash
- || !(syntax_bits & RE_NEWLINE_ALT))
+ || backslash || !(syntax_bits & RE_NEWLINE_ALT))
goto normal_char;
laststart = 1;
return lasttok = OR;
@@ -1346,46 +1462,46 @@ lex (void)
laststart = 0;
return lasttok = ANYCHAR;
}
- zeroset(ccl);
- notset(ccl);
+ zeroset (ccl);
+ notset (ccl);
if (!(syntax_bits & RE_DOT_NEWLINE))
- clrbit(eolbyte, ccl);
+ clrbit (eolbyte, ccl);
if (syntax_bits & RE_DOT_NOT_NULL)
- clrbit('\0', ccl);
+ clrbit ('\0', ccl);
laststart = 0;
- return lasttok = CSET + charclass_index(ccl);
+ return lasttok = CSET + charclass_index (ccl);
case 's':
case 'S':
if (!backslash || (syntax_bits & RE_NO_GNU_OPS))
goto normal_char;
- zeroset(ccl);
+ zeroset (ccl);
for (c2 = 0; c2 < NOTCHAR; ++c2)
- if (isspace(c2))
- setbit(c2, ccl);
+ if (isspace (c2))
+ setbit (c2, ccl);
if (c == 'S')
- notset(ccl);
+ notset (ccl);
laststart = 0;
- return lasttok = CSET + charclass_index(ccl);
+ return lasttok = CSET + charclass_index (ccl);
case 'w':
case 'W':
if (!backslash || (syntax_bits & RE_NO_GNU_OPS))
goto normal_char;
- zeroset(ccl);
+ zeroset (ccl);
for (c2 = 0; c2 < NOTCHAR; ++c2)
- if (IS_WORD_CONSTITUENT(c2))
- setbit(c2, ccl);
+ if (IS_WORD_CONSTITUENT (c2))
+ setbit (c2, ccl);
if (c == 'W')
- notset(ccl);
+ notset (ccl);
laststart = 0;
- return lasttok = CSET + charclass_index(ccl);
+ return lasttok = CSET + charclass_index (ccl);
case '[':
if (backslash)
goto normal_char;
laststart = 0;
- return lasttok = parse_bracket_exp();
+ return lasttok = parse_bracket_exp ();
default:
normal_char:
@@ -1395,11 +1511,11 @@ lex (void)
if (MB_CUR_MAX > 1)
return lasttok = WCHAR;
- if (case_fold && isalpha(c))
+ if (case_fold && isalpha (c))
{
- zeroset(ccl);
+ zeroset (ccl);
setbit_case_fold_c (c, ccl);
- return lasttok = CSET + charclass_index(ccl);
+ return lasttok = CSET + charclass_index (ccl);
}
return lasttok = c;
@@ -1408,14 +1524,14 @@ lex (void)
/* The above loop should consume at most a backslash
and some other character. */
- abort();
- return END; /* keeps pedantic compilers happy. */
+ abort ();
+ return END; /* keeps pedantic compilers happy. */
}
/* Recursive descent parser for regular expressions. */
-static token tok; /* Lookahead token. */
-static int depth; /* Current depth of a hypothetical stack
+static token tok; /* Lookahead token. */
+static size_t depth; /* Current depth of a hypothetical stack
holding deferred productions. This is
used to determine the depth that will be
required of the real stack later on in
@@ -1426,12 +1542,12 @@ addtok_mb (token t, int mbprop)
{
if (MB_CUR_MAX > 1)
{
- REALLOC_IF_NECESSARY(dfa->multibyte_prop, dfa->nmultibyte_prop,
- dfa->tindex + 1);
+ REALLOC_IF_NECESSARY (dfa->multibyte_prop, dfa->nmultibyte_prop,
+ dfa->tindex + 1);
dfa->multibyte_prop[dfa->tindex] = mbprop;
}
- REALLOC_IF_NECESSARY(dfa->tokens, dfa->talloc, dfa->tindex + 1);
+ REALLOC_IF_NECESSARY (dfa->tokens, dfa->talloc, dfa->tindex + 1);
dfa->tokens[dfa->tindex++] = t;
switch (t)
@@ -1472,7 +1588,7 @@ addtok (token t)
This does not require UTF-8. */
if (!work_mbc->invert)
{
- int i;
+ size_t i;
for (i = 0; i < work_mbc->nchars; i++)
{
addtok_wc (work_mbc->chars[i]);
@@ -1485,12 +1601,11 @@ addtok (token t)
/* UTF-8 allows treating a simple, non-inverted MBCSET like a CSET. */
if (work_mbc->invert
- || (!using_utf8() && work_mbc->cset != -1)
+ || (!using_utf8 () && work_mbc->cset != -1)
|| work_mbc->nchars != 0
|| work_mbc->nch_classes != 0
|| work_mbc->nranges != 0
- || work_mbc->nequivs != 0
- || work_mbc->ncoll_elems != 0)
+ || work_mbc->nequivs != 0 || work_mbc->ncoll_elems != 0)
{
addtok_mb (MBCSET, ((dfa->nmbcsets - 1) << 2) + 3);
if (need_or)
@@ -1537,15 +1652,18 @@ addtok_wc (wint_t wc)
if (cur_mb_len <= 0)
buf[0] = 0;
- addtok_mb(buf[0], cur_mb_len == 1 ? 3 : 1);
+ addtok_mb (buf[0], cur_mb_len == 1 ? 3 : 1);
for (i = 1; i < cur_mb_len; i++)
{
- addtok_mb(buf[i], i == cur_mb_len - 1 ? 2 : 0);
- addtok(CAT);
+ addtok_mb (buf[i], i == cur_mb_len - 1 ? 2 : 0);
+ addtok (CAT);
}
}
#else
-static void addtok_wc (wint_t wc) {}
+static void
+addtok_wc (wint_t wc)
+{
+}
#endif
static void
@@ -1553,11 +1671,11 @@ add_utf8_anychar (void)
{
#if MBS_SUPPORT
static const charclass utf8_classes[5] = {
- { 0, 0, 0, 0, ~0, ~0, 0, 0 }, /* 80-bf: non-lead bytes */
- { ~0, ~0, ~0, ~0, 0, 0, 0, 0 }, /* 00-7f: 1-byte sequence */
- { 0, 0, 0, 0, 0, 0, 0xfffffffcU, 0 }, /* c2-df: 2-byte sequence */
- { 0, 0, 0, 0, 0, 0, 0, 0xffff }, /* e0-ef: 3-byte sequence */
- { 0, 0, 0, 0, 0, 0, 0, 0xff0000 } /* f0-f7: 4-byte sequence */
+ {0, 0, 0, 0, ~0, ~0, 0, 0}, /* 80-bf: non-lead bytes */
+ {~0, ~0, ~0, ~0, 0, 0, 0, 0}, /* 00-7f: 1-byte sequence */
+ {0, 0, 0, 0, 0, 0, 0xfffffffcU, 0}, /* c2-df: 2-byte sequence */
+ {0, 0, 0, 0, 0, 0, 0, 0xffff}, /* e0-ef: 3-byte sequence */
+ {0, 0, 0, 0, 0, 0, 0, 0xff0000} /* f0-f7: 4-byte sequence */
};
const unsigned int n = sizeof (utf8_classes) / sizeof (utf8_classes[0]);
unsigned int i;
@@ -1575,15 +1693,15 @@ add_utf8_anychar (void)
if (syntax_bits & RE_DOT_NOT_NULL)
clrbit ('\0', c);
}
- dfa->utf8_anychar_classes[i] = CSET + charclass_index(c);
+ dfa->utf8_anychar_classes[i] = CSET + charclass_index (c);
}
/* A valid UTF-8 character is
- ([0x00-0x7f]
- |[0xc2-0xdf][0x80-0xbf]
- |[0xe0-0xef[0x80-0xbf][0x80-0xbf]
- |[0xf0-f7][0x80-0xbf][0x80-0xbf][0x80-0xbf])
+ ([0x00-0x7f]
+ |[0xc2-0xdf][0x80-0xbf]
+ |[0xe0-0xef[0x80-0xbf][0x80-0xbf]
+ |[0xf0-f7][0x80-0xbf][0x80-0xbf][0x80-0xbf])
which I'll write more concisely "B|CA|DAA|EAAA". Factor the [0x00-0x7f]
and you get "B|(C|(D|EA)A)A". And since the token buffer is in reverse
@@ -1643,28 +1761,28 @@ atom (void)
}
else if (MBS_SUPPORT && tok == WCHAR)
{
- addtok_wc (case_fold ? towlower(wctok) : wctok);
+ addtok_wc (case_fold ? towlower (wctok) : wctok);
#ifndef GREP
- if (case_fold && iswalpha(wctok))
+ if (case_fold && iswalpha (wctok))
{
- addtok_wc (towupper(wctok));
+ addtok_wc (towupper (wctok));
addtok (OR);
}
#endif
- tok = lex();
+ tok = lex ();
}
- else if (MBS_SUPPORT && tok == ANYCHAR && using_utf8())
+ else if (MBS_SUPPORT && tok == ANYCHAR && using_utf8 ())
{
/* For UTF-8 expand the period to a series of CSETs that define a valid
UTF-8 character. This avoids using the slow multibyte path. I'm
pretty sure it would be both profitable and correct to do it for
any encoding; however, the optimization must be done manually as
- it is done above in add_utf8_anychar. So, let's start with
+ it is done above in add_utf8_anychar. So, let's start with
UTF-8: it is the most used, and the structure of the encoding
makes the correctness more obvious. */
- add_utf8_anychar();
- tok = lex();
+ add_utf8_anychar ();
+ tok = lex ();
}
else if ((tok >= 0 && tok < NOTCHAR) || tok >= CSET || tok == BACKREF
|| tok == BEGLINE || tok == ENDLINE || tok == BEGWORD
@@ -1673,26 +1791,26 @@ atom (void)
#endif /* MBS_SUPPORT */
|| tok == ENDWORD || tok == LIMWORD || tok == NOTLIMWORD)
{
- addtok(tok);
- tok = lex();
+ addtok (tok);
+ tok = lex ();
}
else if (tok == LPAREN)
{
- tok = lex();
- regexp();
+ tok = lex ();
+ regexp ();
if (tok != RPAREN)
- dfaerror(_("unbalanced ("));
- tok = lex();
+ dfaerror (_("unbalanced ("));
+ tok = lex ();
}
else
- addtok(EMPTY);
+ addtok (EMPTY);
}
/* Return the number of tokens in the given subexpression. */
-static int _GL_ATTRIBUTE_PURE
-nsubtoks (int tindex)
+static size_t _GL_ATTRIBUTE_PURE
+nsubtoks (size_t tindex)
{
- int ntoks1;
+ size_t ntoks1;
switch (dfa->tokens[tindex - 1])
{
@@ -1701,23 +1819,23 @@ nsubtoks (int tindex)
case QMARK:
case STAR:
case PLUS:
- return 1 + nsubtoks(tindex - 1);
+ return 1 + nsubtoks (tindex - 1);
case CAT:
case OR:
- ntoks1 = nsubtoks(tindex - 1);
- return 1 + ntoks1 + nsubtoks(tindex - 1 - ntoks1);
+ ntoks1 = nsubtoks (tindex - 1);
+ return 1 + ntoks1 + nsubtoks (tindex - 1 - ntoks1);
}
}
/* Copy the given subexpression to the top of the tree. */
static void
-copytoks (int tindex, int ntokens)
+copytoks (size_t tindex, size_t ntokens)
{
- int i;
+ size_t i;
for (i = 0; i < ntokens; ++i)
{
- addtok(dfa->tokens[tindex + i]);
+ addtok (dfa->tokens[tindex + i]);
/* Update index into multibyte csets. */
if (MB_CUR_MAX > 1 && dfa->tokens[tindex + i] == MBCSET)
dfa->multibyte_prop[dfa->tindex - 1] = dfa->multibyte_prop[tindex + i];
@@ -1727,64 +1845,65 @@ copytoks (int tindex, int ntokens)
static void
closure (void)
{
- int tindex, ntokens, i;
+ int i;
+ size_t tindex, ntokens;
- atom();
+ atom ();
while (tok == QMARK || tok == STAR || tok == PLUS || tok == REPMN)
if (tok == REPMN && (minrep || maxrep))
{
- ntokens = nsubtoks(dfa->tindex);
+ ntokens = nsubtoks (dfa->tindex);
tindex = dfa->tindex - ntokens;
if (maxrep < 0)
- addtok(PLUS);
+ addtok (PLUS);
if (minrep == 0)
- addtok(QMARK);
+ addtok (QMARK);
for (i = 1; i < minrep; ++i)
{
- copytoks(tindex, ntokens);
- addtok(CAT);
+ copytoks (tindex, ntokens);
+ addtok (CAT);
}
for (; i < maxrep; ++i)
{
- copytoks(tindex, ntokens);
- addtok(QMARK);
- addtok(CAT);
+ copytoks (tindex, ntokens);
+ addtok (QMARK);
+ addtok (CAT);
}
- tok = lex();
+ tok = lex ();
}
else if (tok == REPMN)
{
- dfa->tindex -= nsubtoks(dfa->tindex);
- tok = lex();
- closure();
+ dfa->tindex -= nsubtoks (dfa->tindex);
+ tok = lex ();
+ closure ();
}
else
{
- addtok(tok);
- tok = lex();
+ addtok (tok);
+ tok = lex ();
}
}
static void
branch (void)
{
- closure();
+ closure ();
while (tok != RPAREN && tok != OR && tok >= 0)
{
- closure();
- addtok(CAT);
+ closure ();
+ addtok (CAT);
}
}
static void
regexp (void)
{
- branch();
+ branch ();
while (tok == OR)
{
- tok = lex();
- branch();
- addtok(OR);
+ tok = lex ();
+ branch ();
+ addtok (OR);
}
}
@@ -1803,25 +1922,25 @@ dfaparse (char const *s, size_t len, struct dfa *d)
if (MB_CUR_MAX > 1)
{
cur_mb_len = 0;
- memset(&mbs, 0, sizeof mbs);
+ memset (&mbs, 0, sizeof mbs);
}
- if (! syntax_bits_set)
- dfaerror(_("no syntax specified"));
+ if (!syntax_bits_set)
+ dfaerror (_("no syntax specified"));
- tok = lex();
+ tok = lex ();
depth = d->depth;
- regexp();
+ regexp ();
if (tok != END)
- dfaerror(_("unbalanced )"));
+ dfaerror (_("unbalanced )"));
- addtok(END - d->nregexps);
- addtok(CAT);
+ addtok (END - d->nregexps);
+ addtok (CAT);
if (d->nregexps)
- addtok(OR);
+ addtok (OR);
++d->nregexps;
}
@@ -1830,24 +1949,34 @@ dfaparse (char const *s, size_t len, struct dfa *d)
/* Copy one set to another; the destination must be large enough. */
static void
-copy (position_set const *src, position_set *dst)
+copy (position_set const *src, position_set * dst)
{
- memcpy(dst->elems, src->elems, sizeof(dst->elems[0]) * src->nelem);
+ REALLOC_IF_NECESSARY (dst->elems, dst->alloc, src->nelem);
+ memcpy (dst->elems, src->elems, sizeof (dst->elems[0]) * src->nelem);
dst->nelem = src->nelem;
}
+static void
+alloc_position_set (position_set * s, size_t size)
+{
+ MALLOC (s->elems, size);
+ s->alloc = size;
+ s->nelem = 0;
+}
+
/* Insert position P in set S. S is maintained in sorted order on
decreasing index. If there is already an entry in S with P.index
then merge (logically-OR) P's constraints into the one in S.
S->elems must point to an array large enough to hold the resulting set. */
static void
-insert (position p, position_set *s)
+insert (position p, position_set * s)
{
- int count = s->nelem;
- int lo = 0, hi = count;
+ size_t count = s->nelem;
+ size_t lo = 0, hi = count;
+ size_t i;
while (lo < hi)
{
- int mid = ((unsigned) lo + (unsigned) hi) >> 1;
+ size_t mid = (lo + hi) >> 1;
if (s->elems[mid].index > p.index)
lo = mid + 1;
else
@@ -1855,24 +1984,26 @@ insert (position p, position_set *s)
}
if (lo < count && p.index == s->elems[lo].index)
- s->elems[lo].constraint |= p.constraint;
- else
{
- int i;
- for (i = count; i > lo; i--)
- s->elems[i] = s->elems[i - 1];
- s->elems[lo] = p;
- ++s->nelem;
+ s->elems[lo].constraint |= p.constraint;
+ return;
}
+
+ REALLOC_IF_NECESSARY (s->elems, s->alloc, count + 1);
+ for (i = count; i > lo; i--)
+ s->elems[i] = s->elems[i - 1];
+ s->elems[lo] = p;
+ ++s->nelem;
}
/* Merge two sets of positions into a third. The result is exactly as if
the positions of both sets were inserted into an initially empty set. */
static void
-merge (position_set const *s1, position_set const *s2, position_set *m)
+merge (position_set const *s1, position_set const *s2, position_set * m)
{
- int i = 0, j = 0;
+ size_t i = 0, j = 0;
+ REALLOC_IF_NECESSARY (m->elems, m->alloc, s1->nelem + s2->nelem);
m->nelem = 0;
while (i < s1->nelem && j < s2->nelem)
if (s1->elems[i].index > s2->elems[j].index)
@@ -1892,9 +2023,9 @@ merge (position_set const *s1, position_set const *s2, position_set *m)
/* Delete a position from a set. */
static void
-delete (position p, position_set *s)
+delete (position p, position_set * s)
{
- int i;
+ size_t i;
for (i = 0; i < s->nelem; ++i)
if (p.index == s->elems[i].index)
@@ -1906,17 +2037,13 @@ delete (position p, position_set *s)
/* Find the index of the state corresponding to the given position set with
the given preceding context, or create a new state if there is no such
- state. Newline and letter tell whether we got here on a newline or
- letter, respectively. */
-static int
-state_index (struct dfa *d, position_set const *s, int newline, int letter)
+ state. Context tells whether we got here on a newline or letter. */
+static state_num
+state_index (struct dfa *d, position_set const *s, int context)
{
- int hash = 0;
+ size_t hash = 0;
int constraint;
- int i, j;
-
- newline = newline ? 1 : 0;
- letter = letter ? 1 : 0;
+ state_num i, j;
for (i = 0; i < s->nelem; ++i)
hash ^= s->elems[i].index + s->elems[i].constraint;
@@ -1925,7 +2052,7 @@ state_index (struct dfa *d, position_set const *s, int newline, int letter)
for (i = 0; i < d->sindex; ++i)
{
if (hash != d->states[i].hash || s->nelem != d->states[i].elems.nelem
- || newline != d->states[i].newline || letter != d->states[i].letter)
+ || context != d->states[i].context)
continue;
for (j = 0; j < s->nelem; ++j)
if (s->elems[j].constraint
@@ -1937,12 +2064,11 @@ state_index (struct dfa *d, position_set const *s, int newline, int letter)
}
/* We'll have to create a new state. */
- REALLOC_IF_NECESSARY(d->states, d->salloc, d->sindex + 1);
+ REALLOC_IF_NECESSARY (d->states, d->salloc, d->sindex + 1);
d->states[i].hash = hash;
- MALLOC(d->states[i].elems.elems, s->nelem);
- copy(s, &d->states[i].elems);
- d->states[i].newline = newline;
- d->states[i].letter = letter;
+ alloc_position_set (&d->states[i].elems, s->nelem);
+ copy (s, &d->states[i].elems);
+ d->states[i].context = context;
d->states[i].backref = 0;
d->states[i].constraint = 0;
d->states[i].first_end = 0;
@@ -1955,12 +2081,9 @@ state_index (struct dfa *d, position_set const *s, int newline, int letter)
if (d->tokens[s->elems[j].index] < 0)
{
constraint = s->elems[j].constraint;
- if (SUCCEEDS_IN_CONTEXT(constraint, newline, 0, letter, 0)
- || SUCCEEDS_IN_CONTEXT(constraint, newline, 0, letter, 1)
- || SUCCEEDS_IN_CONTEXT(constraint, newline, 1, letter, 0)
- || SUCCEEDS_IN_CONTEXT(constraint, newline, 1, letter, 1))
+ if (SUCCEEDS_IN_CONTEXT (constraint, context, CTX_ANY))
d->states[i].constraint |= constraint;
- if (! d->states[i].first_end)
+ if (!d->states[i].first_end)
d->states[i].first_end = d->tokens[s->elems[j].index];
}
else if (d->tokens[s->elems[j].index] == BACKREF)
@@ -1980,13 +2103,13 @@ state_index (struct dfa *d, position_set const *s, int newline, int letter)
constraint. Repeat exhaustively until no funny positions are left.
S->elems must be large enough to hold the result. */
static void
-epsclosure (position_set *s, struct dfa const *d)
+epsclosure (position_set * s, struct dfa const *d)
{
- int i, j;
- char *visited; /* array of booleans, enough to use char, not int */
+ size_t i, j;
+ char *visited; /* array of booleans, enough to use char, not int */
position p, old;
- CALLOC(visited, d->tindex);
+ CALLOC (visited, d->tindex);
for (i = 0; i < s->nelem; ++i)
if (d->tokens[s->elems[i].index] >= NOTCHAR
@@ -1999,7 +2122,7 @@ epsclosure (position_set *s, struct dfa const *d)
{
old = s->elems[i];
p.constraint = old.constraint;
- delete(s->elems[i], s);
+ delete (s->elems[i], s);
if (visited[old.index])
{
--i;
@@ -2032,15 +2155,62 @@ epsclosure (position_set *s, struct dfa const *d)
for (j = 0; j < d->follows[old.index].nelem; ++j)
{
p.index = d->follows[old.index].elems[j].index;
- insert(p, s);
+ insert (p, s);
}
/* Force rescan to start at the beginning. */
i = -1;
}
- free(visited);
+ free (visited);
+}
+
+/* Returns the set of contexts for which there is at least one
+ character included in C. */
+
+static int
+charclass_context (charclass c)
+{
+ int context = 0;
+ unsigned int j;
+
+ if (tstbit (eolbyte, c))
+ context |= CTX_NEWLINE;
+
+ for (j = 0; j < CHARCLASS_INTS; ++j)
+ {
+ if (c[j] & letters[j])
+ context |= CTX_LETTER;
+ if (c[j] & ~(letters[j] | newline[j]))
+ context |= CTX_NONE;
+ }
+
+ return context;
+}
+
+/* Returns the contexts on which the position set S depends. Each context
+ in the set of returned contexts (let's call it SC) may have a different
+ follow set than other contexts in SC, and also different from the
+ follow set of the complement set (sc ^ CTX_ANY). However, all contexts
+ in the complement set will have the same follow set. */
+
+static int _GL_ATTRIBUTE_PURE
+state_separate_contexts (position_set const *s)
+{
+ int separate_contexts = 0;
+ size_t j;
+
+ for (j = 0; j < s->nelem; ++j)
+ {
+ if (PREV_NEWLINE_DEPENDENT (s->elems[j].constraint))
+ separate_contexts |= CTX_NEWLINE;
+ if (PREV_LETTER_DEPENDENT (s->elems[j].constraint))
+ separate_contexts |= CTX_LETTER;
+ }
+
+ return separate_contexts;
}
+
/* Perform bottom-up analysis on the parse tree, computing various functions.
Note that at this point, we're pretending constructs like \< are real
characters rather than constraints on what can follow them.
@@ -2096,174 +2266,167 @@ epsclosure (position_set *s, struct dfa const *d)
void
dfaanalyze (struct dfa *d, int searchflag)
{
- int *nullable; /* Nullable stack. */
- int *nfirstpos; /* Element count stack for firstpos sets. */
- position *firstpos; /* Array where firstpos elements are stored. */
- int *nlastpos; /* Element count stack for lastpos sets. */
- position *lastpos; /* Array where lastpos elements are stored. */
- int *nalloc; /* Sizes of arrays allocated to follow sets. */
- position_set tmp; /* Temporary set for merging sets. */
- position_set merged; /* Result of merging sets. */
- int wants_newline; /* True if some position wants newline info. */
+ int *nullable; /* Nullable stack. */
+ size_t *nfirstpos; /* Element count stack for firstpos sets. */
+ position *firstpos; /* Array where firstpos elements are stored. */
+ size_t *nlastpos; /* Element count stack for lastpos sets. */
+ position *lastpos; /* Array where lastpos elements are stored. */
+ position_set tmp; /* Temporary set for merging sets. */
+ position_set merged; /* Result of merging sets. */
+ int separate_contexts; /* Context wanted by some position. */
int *o_nullable;
- int *o_nfirst, *o_nlast;
+ size_t *o_nfirst, *o_nlast;
position *o_firstpos, *o_lastpos;
- int i, j;
+ size_t i, j;
position *pos;
#ifdef DEBUG
- fprintf(stderr, "dfaanalyze:\n");
+ fprintf (stderr, "dfaanalyze:\n");
for (i = 0; i < d->tindex; ++i)
{
- fprintf(stderr, " %d:", i);
- prtok(d->tokens[i]);
+ fprintf (stderr, " %zd:", i);
+ prtok (d->tokens[i]);
}
- putc('\n', stderr);
+ putc ('\n', stderr);
#endif
d->searchflag = searchflag;
- MALLOC(nullable, d->depth);
+ MALLOC (nullable, d->depth);
o_nullable = nullable;
- MALLOC(nfirstpos, d->depth);
+ MALLOC (nfirstpos, d->depth);
o_nfirst = nfirstpos;
- MALLOC(firstpos, d->nleaves);
+ MALLOC (firstpos, d->nleaves);
o_firstpos = firstpos, firstpos += d->nleaves;
- MALLOC(nlastpos, d->depth);
+ MALLOC (nlastpos, d->depth);
o_nlast = nlastpos;
- MALLOC(lastpos, d->nleaves);
+ MALLOC (lastpos, d->nleaves);
o_lastpos = lastpos, lastpos += d->nleaves;
- CALLOC(nalloc, d->tindex);
- MALLOC(merged.elems, d->nleaves);
+ alloc_position_set (&merged, d->nleaves);
- CALLOC(d->follows, d->tindex);
+ CALLOC (d->follows, d->tindex);
for (i = 0; i < d->tindex; ++i)
{
- switch (d->tokens[i])
- {
- case EMPTY:
- /* The empty set is nullable. */
- *nullable++ = 1;
+ switch (d->tokens[i])
+ {
+ case EMPTY:
+ /* The empty set is nullable. */
+ *nullable++ = 1;
- /* The firstpos and lastpos of the empty leaf are both empty. */
- *nfirstpos++ = *nlastpos++ = 0;
- break;
+ /* The firstpos and lastpos of the empty leaf are both empty. */
+ *nfirstpos++ = *nlastpos++ = 0;
+ break;
- case STAR:
- case PLUS:
- /* Every element in the firstpos of the argument is in the follow
- of every element in the lastpos. */
- tmp.nelem = nfirstpos[-1];
- tmp.elems = firstpos;
- pos = lastpos;
- for (j = 0; j < nlastpos[-1]; ++j)
- {
- merge(&tmp, &d->follows[pos[j].index], &merged);
- REALLOC_IF_NECESSARY(d->follows[pos[j].index].elems,
- nalloc[pos[j].index], merged.nelem);
- copy(&merged, &d->follows[pos[j].index]);
- }
+ case STAR:
+ case PLUS:
+ /* Every element in the firstpos of the argument is in the follow
+ of every element in the lastpos. */
+ tmp.nelem = nfirstpos[-1];
+ tmp.elems = firstpos;
+ pos = lastpos;
+ for (j = 0; j < nlastpos[-1]; ++j)
+ {
+ merge (&tmp, &d->follows[pos[j].index], &merged);
+ copy (&merged, &d->follows[pos[j].index]);
+ }
- case QMARK:
- /* A QMARK or STAR node is automatically nullable. */
- if (d->tokens[i] != PLUS)
- nullable[-1] = 1;
- break;
+ case QMARK:
+ /* A QMARK or STAR node is automatically nullable. */
+ if (d->tokens[i] != PLUS)
+ nullable[-1] = 1;
+ break;
- case CAT:
- /* Every element in the firstpos of the second argument is in the
- follow of every element in the lastpos of the first argument. */
- tmp.nelem = nfirstpos[-1];
- tmp.elems = firstpos;
- pos = lastpos + nlastpos[-1];
- for (j = 0; j < nlastpos[-2]; ++j)
- {
- merge(&tmp, &d->follows[pos[j].index], &merged);
- REALLOC_IF_NECESSARY(d->follows[pos[j].index].elems,
- nalloc[pos[j].index], merged.nelem);
- copy(&merged, &d->follows[pos[j].index]);
- }
+ case CAT:
+ /* Every element in the firstpos of the second argument is in the
+ follow of every element in the lastpos of the first argument. */
+ tmp.nelem = nfirstpos[-1];
+ tmp.elems = firstpos;
+ pos = lastpos + nlastpos[-1];
+ for (j = 0; j < nlastpos[-2]; ++j)
+ {
+ merge (&tmp, &d->follows[pos[j].index], &merged);
+ copy (&merged, &d->follows[pos[j].index]);
+ }
- /* The firstpos of a CAT node is the firstpos of the first argument,
- union that of the second argument if the first is nullable. */
- if (nullable[-2])
- nfirstpos[-2] += nfirstpos[-1];
- else
- firstpos += nfirstpos[-1];
- --nfirstpos;
+ /* The firstpos of a CAT node is the firstpos of the first argument,
+ union that of the second argument if the first is nullable. */
+ if (nullable[-2])
+ nfirstpos[-2] += nfirstpos[-1];
+ else
+ firstpos += nfirstpos[-1];
+ --nfirstpos;
- /* The lastpos of a CAT node is the lastpos of the second argument,
- union that of the first argument if the second is nullable. */
- if (nullable[-1])
- nlastpos[-2] += nlastpos[-1];
- else
- {
- pos = lastpos + nlastpos[-2];
- for (j = nlastpos[-1] - 1; j >= 0; --j)
- pos[j] = lastpos[j];
- lastpos += nlastpos[-2];
- nlastpos[-2] = nlastpos[-1];
- }
- --nlastpos;
+ /* The lastpos of a CAT node is the lastpos of the second argument,
+ union that of the first argument if the second is nullable. */
+ if (nullable[-1])
+ nlastpos[-2] += nlastpos[-1];
+ else
+ {
+ pos = lastpos + nlastpos[-2];
+ for (j = nlastpos[-1]; j-- > 0;)
+ pos[j] = lastpos[j];
+ lastpos += nlastpos[-2];
+ nlastpos[-2] = nlastpos[-1];
+ }
+ --nlastpos;
- /* A CAT node is nullable if both arguments are nullable. */
- nullable[-2] = nullable[-1] && nullable[-2];
- --nullable;
- break;
+ /* A CAT node is nullable if both arguments are nullable. */
+ nullable[-2] = nullable[-1] && nullable[-2];
+ --nullable;
+ break;
- case OR:
- /* The firstpos is the union of the firstpos of each argument. */
- nfirstpos[-2] += nfirstpos[-1];
- --nfirstpos;
+ case OR:
+ /* The firstpos is the union of the firstpos of each argument. */
+ nfirstpos[-2] += nfirstpos[-1];
+ --nfirstpos;
- /* The lastpos is the union of the lastpos of each argument. */
- nlastpos[-2] += nlastpos[-1];
- --nlastpos;
+ /* The lastpos is the union of the lastpos of each argument. */
+ nlastpos[-2] += nlastpos[-1];
+ --nlastpos;
- /* An OR node is nullable if either argument is nullable. */
- nullable[-2] = nullable[-1] || nullable[-2];
- --nullable;
- break;
+ /* An OR node is nullable if either argument is nullable. */
+ nullable[-2] = nullable[-1] || nullable[-2];
+ --nullable;
+ break;
- default:
- /* Anything else is a nonempty position. (Note that special
- constructs like \< are treated as nonempty strings here;
- an "epsilon closure" effectively makes them nullable later.
- Backreferences have to get a real position so we can detect
- transitions on them later. But they are nullable. */
- *nullable++ = d->tokens[i] == BACKREF;
-
- /* This position is in its own firstpos and lastpos. */
- *nfirstpos++ = *nlastpos++ = 1;
- --firstpos, --lastpos;
- firstpos->index = lastpos->index = i;
- firstpos->constraint = lastpos->constraint = NO_CONSTRAINT;
-
- /* Allocate the follow set for this position. */
- nalloc[i] = 1;
- MALLOC(d->follows[i].elems, nalloc[i]);
- break;
- }
+ default:
+ /* Anything else is a nonempty position. (Note that special
+ constructs like \< are treated as nonempty strings here;
+ an "epsilon closure" effectively makes them nullable later.
+ Backreferences have to get a real position so we can detect
+ transitions on them later. But they are nullable. */
+ *nullable++ = d->tokens[i] == BACKREF;
+
+ /* This position is in its own firstpos and lastpos. */
+ *nfirstpos++ = *nlastpos++ = 1;
+ --firstpos, --lastpos;
+ firstpos->index = lastpos->index = i;
+ firstpos->constraint = lastpos->constraint = NO_CONSTRAINT;
+
+ /* Allocate the follow set for this position. */
+ alloc_position_set (&d->follows[i], 1);
+ break;
+ }
#ifdef DEBUG
- /* ... balance the above nonsyntactic #ifdef goo... */
- fprintf(stderr, "node %d:", i);
- prtok(d->tokens[i]);
- putc('\n', stderr);
- fprintf(stderr, nullable[-1] ? " nullable: yes\n" : " nullable: no\n");
- fprintf(stderr, " firstpos:");
- for (j = nfirstpos[-1] - 1; j >= 0; --j)
+ /* ... balance the above nonsyntactic #ifdef goo... */
+ fprintf (stderr, "node %zd:", i);
+ prtok (d->tokens[i]);
+ putc ('\n', stderr);
+ fprintf (stderr, nullable[-1] ? " nullable: yes\n" : " nullable: no\n");
+ fprintf (stderr, " firstpos:");
+ for (j = nfirstpos[-1]; j-- > 0;)
{
- fprintf(stderr, " %d:", firstpos[j].index);
- prtok(d->tokens[firstpos[j].index]);
+ fprintf (stderr, " %zd:", firstpos[j].index);
+ prtok (d->tokens[firstpos[j].index]);
}
- fprintf(stderr, "\n lastpos:");
- for (j = nlastpos[-1] - 1; j >= 0; --j)
+ fprintf (stderr, "\n lastpos:");
+ for (j = nlastpos[-1]; j-- > 0;)
{
- fprintf(stderr, " %d:", lastpos[j].index);
- prtok(d->tokens[lastpos[j].index]);
+ fprintf (stderr, " %zd:", lastpos[j].index);
+ prtok (d->tokens[lastpos[j].index]);
}
- putc('\n', stderr);
+ putc ('\n', stderr);
#endif
}
@@ -2272,57 +2435,52 @@ dfaanalyze (struct dfa *d, int searchflag)
for (i = 0; i < d->tindex; ++i)
if (d->tokens[i] < NOTCHAR || d->tokens[i] == BACKREF
#if MBS_SUPPORT
- || d->tokens[i] == ANYCHAR
- || d->tokens[i] == MBCSET
+ || d->tokens[i] == ANYCHAR || d->tokens[i] == MBCSET
#endif
|| d->tokens[i] >= CSET)
{
#ifdef DEBUG
- fprintf(stderr, "follows(%d:", i);
- prtok(d->tokens[i]);
- fprintf(stderr, "):");
- for (j = d->follows[i].nelem - 1; j >= 0; --j)
+ fprintf (stderr, "follows(%zd:", i);
+ prtok (d->tokens[i]);
+ fprintf (stderr, "):");
+ for (j = d->follows[i].nelem; j-- > 0;)
{
- fprintf(stderr, " %d:", d->follows[i].elems[j].index);
- prtok(d->tokens[d->follows[i].elems[j].index]);
+ fprintf (stderr, " %zd:", d->follows[i].elems[j].index);
+ prtok (d->tokens[d->follows[i].elems[j].index]);
}
- putc('\n', stderr);
+ putc ('\n', stderr);
#endif
- copy(&d->follows[i], &merged);
- epsclosure(&merged, d);
- if (d->follows[i].nelem < merged.nelem)
- REALLOC(d->follows[i].elems, merged.nelem);
- copy(&merged, &d->follows[i]);
+ copy (&d->follows[i], &merged);
+ epsclosure (&merged, d);
+ copy (&merged, &d->follows[i]);
}
/* Get the epsilon closure of the firstpos of the regexp. The result will
be the set of positions of state 0. */
merged.nelem = 0;
for (i = 0; i < nfirstpos[-1]; ++i)
- insert(firstpos[i], &merged);
- epsclosure(&merged, d);
-
- /* Check if any of the positions of state 0 will want newline context. */
- wants_newline = 0;
- for (i = 0; i < merged.nelem; ++i)
- if (PREV_NEWLINE_DEPENDENT(merged.elems[i].constraint))
- wants_newline = 1;
+ insert (firstpos[i], &merged);
+ epsclosure (&merged, d);
/* Build the initial state. */
d->salloc = 1;
d->sindex = 0;
- MALLOC(d->states, d->salloc);
- state_index(d, &merged, wants_newline, 0);
-
- free(o_nullable);
- free(o_nfirst);
- free(o_firstpos);
- free(o_nlast);
- free(o_lastpos);
- free(nalloc);
- free(merged.elems);
+ MALLOC (d->states, d->salloc);
+
+ separate_contexts = state_separate_contexts (&merged);
+ state_index (d, &merged,
+ (separate_contexts & CTX_NEWLINE
+ ? CTX_NEWLINE : separate_contexts ^ CTX_ANY));
+
+ free (o_nullable);
+ free (o_nfirst);
+ free (o_firstpos);
+ free (o_nlast);
+ free (o_lastpos);
+ free (merged.elems);
}
+
/* Find, for each character, the transition out of state s of d, and store
it in the appropriate slot of trans.
@@ -2354,53 +2512,40 @@ dfaanalyze (struct dfa *d, int searchflag)
create a new group labeled with the characters of C and insert this
position in that group. */
void
-dfastate (int s, struct dfa *d, int trans[])
-{
- position_set *grps; /* As many as will ever be needed. */
- charclass *labels; /* Labels corresponding to the groups. */
- int ngrps = 0; /* Number of groups actually used. */
- position pos; /* Current position being considered. */
- charclass matches; /* Set of matching characters. */
- int matchesf; /* True if matches is nonempty. */
- charclass intersect; /* Intersection with some label set. */
- int intersectf; /* True if intersect is nonempty. */
- charclass leftovers; /* Stuff in the label that didn't match. */
- int leftoversf; /* True if leftovers is nonempty. */
- static charclass letters; /* Set of characters considered letters. */
- static charclass newline; /* Set of characters that aren't newline. */
- position_set follows; /* Union of the follows of some group. */
- position_set tmp; /* Temporary space for merging sets. */
- int state; /* New state. */
- int wants_newline; /* New state wants to know newline context. */
- int state_newline; /* New state on a newline transition. */
- int wants_letter; /* New state wants to know letter context. */
- int state_letter; /* New state on a letter transition. */
- static int initialized; /* Flag for static initialization. */
- int next_isnt_1st_byte = 0; /* Flag if we can't add state0. */
- int i, j, k;
-
- grps = xnmalloc (NOTCHAR, sizeof *grps);
- labels = xnmalloc (NOTCHAR, sizeof *labels);
-
- /* Initialize the set of letters, if necessary. */
- if (! initialized)
- {
- initialized = 1;
- for (i = 0; i < NOTCHAR; ++i)
- if (IS_WORD_CONSTITUENT(i))
- setbit(i, letters);
- setbit(eolbyte, newline);
- }
-
- zeroset(matches);
+dfastate (state_num s, struct dfa *d, state_num trans[])
+{
+ leaf_set *grps; /* As many as will ever be needed. */
+ charclass *labels; /* Labels corresponding to the groups. */
+ size_t ngrps = 0; /* Number of groups actually used. */
+ position pos; /* Current position being considered. */
+ charclass matches; /* Set of matching characters. */
+ int matchesf; /* True if matches is nonempty. */
+ charclass intersect; /* Intersection with some label set. */
+ int intersectf; /* True if intersect is nonempty. */
+ charclass leftovers; /* Stuff in the label that didn't match. */
+ int leftoversf; /* True if leftovers is nonempty. */
+ position_set follows; /* Union of the follows of some group. */
+ position_set tmp; /* Temporary space for merging sets. */
+ int possible_contexts; /* Contexts that this group can match. */
+ int separate_contexts; /* Context that new state wants to know. */
+ state_num state; /* New state. */
+ state_num state_newline; /* New state on a newline transition. */
+ state_num state_letter; /* New state on a letter transition. */
+ int next_isnt_1st_byte = 0; /* Flag if we can't add state0. */
+ size_t i, j, k;
+
+ MALLOC (grps, NOTCHAR);
+ MALLOC (labels, NOTCHAR);
+
+ zeroset (matches);
for (i = 0; i < d->states[s].elems.nelem; ++i)
{
pos = d->states[s].elems.elems[i];
if (d->tokens[pos.index] >= 0 && d->tokens[pos.index] < NOTCHAR)
- setbit(d->tokens[pos.index], matches);
+ setbit (d->tokens[pos.index], matches);
else if (d->tokens[pos.index] >= CSET)
- copyset(d->charclasses[d->tokens[pos.index] - CSET], matches);
+ copyset (d->charclasses[d->tokens[pos.index] - CSET], matches);
else if (MBS_SUPPORT
&& (d->tokens[pos.index] == ANYCHAR
|| d->tokens[pos.index] == MBCSET))
@@ -2410,10 +2555,8 @@ dfastate (int s, struct dfa *d, int trans[])
must put it to d->states[s].mbps, which contains the positions
which can match with a single character not a byte. */
if (d->states[s].mbps.nelem == 0)
- {
- MALLOC(d->states[s].mbps.elems, d->states[s].elems.nelem);
- }
- insert(pos, &(d->states[s].mbps));
+ alloc_position_set (&d->states[s].mbps, 1);
+ insert (pos, &(d->states[s].mbps));
continue;
}
else
@@ -2421,23 +2564,20 @@ dfastate (int s, struct dfa *d, int trans[])
/* Some characters may need to be eliminated from matches because
they fail in the current context. */
- if (pos.constraint != 0xFF)
+ if (pos.constraint != NO_CONSTRAINT)
{
- if (! MATCHES_NEWLINE_CONTEXT(pos.constraint,
- d->states[s].newline, 1))
- clrbit(eolbyte, matches);
- if (! MATCHES_NEWLINE_CONTEXT(pos.constraint,
- d->states[s].newline, 0))
+ if (!SUCCEEDS_IN_CONTEXT (pos.constraint,
+ d->states[s].context, CTX_NEWLINE))
for (j = 0; j < CHARCLASS_INTS; ++j)
- matches[j] &= newline[j];
- if (! MATCHES_LETTER_CONTEXT(pos.constraint,
- d->states[s].letter, 1))
+ matches[j] &= ~newline[j];
+ if (!SUCCEEDS_IN_CONTEXT (pos.constraint,
+ d->states[s].context, CTX_LETTER))
for (j = 0; j < CHARCLASS_INTS; ++j)
matches[j] &= ~letters[j];
- if (! MATCHES_LETTER_CONTEXT(pos.constraint,
- d->states[s].letter, 0))
+ if (!SUCCEEDS_IN_CONTEXT (pos.constraint,
+ d->states[s].context, CTX_NONE))
for (j = 0; j < CHARCLASS_INTS; ++j)
- matches[j] &= letters[j];
+ matches[j] &= letters[j] | newline[j];
/* If there are no characters left, there's no point in going on. */
for (j = 0; j < CHARCLASS_INTS && !matches[j]; ++j)
@@ -2452,7 +2592,7 @@ dfastate (int s, struct dfa *d, int trans[])
group's label doesn't contain that character, go on to the
next group. */
if (d->tokens[pos.index] >= 0 && d->tokens[pos.index] < NOTCHAR
- && !tstbit(d->tokens[pos.index], labels[j]))
+ && !tstbit (d->tokens[pos.index], labels[j]))
continue;
/* Check if this group's label has a nonempty intersection with
@@ -2460,7 +2600,7 @@ dfastate (int s, struct dfa *d, int trans[])
intersectf = 0;
for (k = 0; k < CHARCLASS_INTS; ++k)
(intersect[k] = matches[k] & labels[j][k]) ? (intersectf = 1) : 0;
- if (! intersectf)
+ if (!intersectf)
continue;
/* It does; now find the set differences both ways. */
@@ -2477,20 +2617,22 @@ dfastate (int s, struct dfa *d, int trans[])
/* If there were leftovers, create a new group labeled with them. */
if (leftoversf)
{
- copyset(leftovers, labels[ngrps]);
- copyset(intersect, labels[j]);
- MALLOC(grps[ngrps].elems, d->nleaves);
- copy(&grps[j], &grps[ngrps]);
+ copyset (leftovers, labels[ngrps]);
+ copyset (intersect, labels[j]);
+ MALLOC (grps[ngrps].elems, d->nleaves);
+ memcpy (grps[ngrps].elems, grps[j].elems,
+ sizeof (grps[j].elems[0]) * grps[j].nelem);
+ grps[ngrps].nelem = grps[j].nelem;
++ngrps;
}
- /* Put the position in the current group. Note that there is no
- reason to call insert() here. */
- grps[j].elems[grps[j].nelem++] = pos;
+ /* Put the position in the current group. The constraint is
+ irrelevant here. */
+ grps[j].elems[grps[j].nelem++] = pos.index;
/* If every character matching the current position has been
accounted for, we're done. */
- if (! matchesf)
+ if (!matchesf)
break;
}
@@ -2498,44 +2640,38 @@ dfastate (int s, struct dfa *d, int trans[])
unaccounted for, then we'll have to create a new group. */
if (j == ngrps)
{
- copyset(matches, labels[ngrps]);
- zeroset(matches);
- MALLOC(grps[ngrps].elems, d->nleaves);
+ copyset (matches, labels[ngrps]);
+ zeroset (matches);
+ MALLOC (grps[ngrps].elems, d->nleaves);
grps[ngrps].nelem = 1;
- grps[ngrps].elems[0] = pos;
+ grps[ngrps].elems[0] = pos.index;
++ngrps;
}
}
- MALLOC(follows.elems, d->nleaves);
- MALLOC(tmp.elems, d->nleaves);
+ alloc_position_set (&follows, d->nleaves);
+ alloc_position_set (&tmp, d->nleaves);
/* If we are a searching matcher, the default transition is to a state
containing the positions of state 0, otherwise the default transition
is to fail miserably. */
if (d->searchflag)
{
- wants_newline = 0;
- wants_letter = 0;
- for (i = 0; i < d->states[0].elems.nelem; ++i)
- {
- if (PREV_NEWLINE_DEPENDENT(d->states[0].elems.elems[i].constraint))
- wants_newline = 1;
- if (PREV_LETTER_DEPENDENT(d->states[0].elems.elems[i].constraint))
- wants_letter = 1;
- }
- copy(&d->states[0].elems, &follows);
- state = state_index(d, &follows, 0, 0);
- if (wants_newline)
- state_newline = state_index(d, &follows, 1, 0);
+ /* Find the state(s) corresponding to the positions of state 0. */
+ copy (&d->states[0].elems, &follows);
+ separate_contexts = state_separate_contexts (&follows);
+ state = state_index (d, &follows, separate_contexts ^ CTX_ANY);
+ if (separate_contexts & CTX_NEWLINE)
+ state_newline = state_index (d, &follows, CTX_NEWLINE);
else
state_newline = state;
- if (wants_letter)
- state_letter = state_index(d, &follows, 0, 1);
+ if (separate_contexts & CTX_LETTER)
+ state_letter = state_index (d, &follows, CTX_LETTER);
else
state_letter = state;
+
for (i = 0; i < NOTCHAR; ++i)
- trans[i] = (IS_WORD_CONSTITUENT(i)) ? state_letter : state;
+ trans[i] = (IS_WORD_CONSTITUENT (i)) ? state_letter : state;
trans[eolbyte] = state_newline;
}
else
@@ -2549,8 +2685,8 @@ dfastate (int s, struct dfa *d, int trans[])
/* Find the union of the follows of the positions of the group.
This is a hideously inefficient loop. Fix it someday. */
for (j = 0; j < grps[i].nelem; ++j)
- for (k = 0; k < d->follows[grps[i].elems[j].index].nelem; ++k)
- insert(d->follows[grps[i].elems[j].index].elems[k], &follows);
+ for (k = 0; k < d->follows[grps[i].elems[j]].nelem; ++k)
+ insert (d->follows[grps[i].elems[j]].elems[k], &follows);
if (d->mb_cur_max > 1)
{
@@ -2586,35 +2722,25 @@ dfastate (int s, struct dfa *d, int trans[])
/* If we are building a searching matcher, throw in the positions
of state 0 as well. */
if (d->searchflag
- && (! MBS_SUPPORT
- || (d->mb_cur_max == 1 || !next_isnt_1st_byte)))
+ && (!MBS_SUPPORT || (d->mb_cur_max == 1 || !next_isnt_1st_byte)))
for (j = 0; j < d->states[0].elems.nelem; ++j)
- insert(d->states[0].elems.elems[j], &follows);
+ insert (d->states[0].elems.elems[j], &follows);
/* Find out if the new state will want any context information. */
- wants_newline = 0;
- if (tstbit(eolbyte, labels[i]))
- for (j = 0; j < follows.nelem; ++j)
- if (PREV_NEWLINE_DEPENDENT(follows.elems[j].constraint))
- wants_newline = 1;
-
- wants_letter = 0;
- for (j = 0; j < CHARCLASS_INTS; ++j)
- if (labels[i][j] & letters[j])
- break;
- if (j < CHARCLASS_INTS)
- for (j = 0; j < follows.nelem; ++j)
- if (PREV_LETTER_DEPENDENT(follows.elems[j].constraint))
- wants_letter = 1;
+ possible_contexts = charclass_context (labels[i]);
+ separate_contexts = state_separate_contexts (&follows);
/* Find the state(s) corresponding to the union of the follows. */
- state = state_index(d, &follows, 0, 0);
- if (wants_newline)
- state_newline = state_index(d, &follows, 1, 0);
+ if ((separate_contexts & possible_contexts) != possible_contexts)
+ state = state_index (d, &follows, separate_contexts ^ CTX_ANY);
+ else
+ state = -1;
+ if (separate_contexts & possible_contexts & CTX_NEWLINE)
+ state_newline = state_index (d, &follows, CTX_NEWLINE);
else
state_newline = state;
- if (wants_letter)
- state_letter = state_index(d, &follows, 0, 1);
+ if (separate_contexts & possible_contexts & CTX_LETTER)
+ state_letter = state_index (d, &follows, CTX_LETTER);
else
state_letter = state;
@@ -2627,7 +2753,7 @@ dfastate (int s, struct dfa *d, int trans[])
if (c == eolbyte)
trans[c] = state_newline;
- else if (IS_WORD_CONSTITUENT(c))
+ else if (IS_WORD_CONSTITUENT (c))
trans[c] = state_letter;
else if (c < NOTCHAR)
trans[c] = state;
@@ -2635,11 +2761,11 @@ dfastate (int s, struct dfa *d, int trans[])
}
for (i = 0; i < ngrps; ++i)
- free(grps[i].elems);
- free(follows.elems);
- free(tmp.elems);
- free(grps);
- free(labels);
+ free (grps[i].elems);
+ free (follows.elems);
+ free (tmp.elems);
+ free (grps);
+ free (labels);
}
/* Some routines for manipulating a compiled dfa's transition tables.
@@ -2650,10 +2776,10 @@ dfastate (int s, struct dfa *d, int trans[])
TODO: Improve this comment, get rid of the unnecessary redundancy. */
static void
-build_state (int s, struct dfa *d)
+build_state (state_num s, struct dfa *d)
{
- int *trans; /* The new transition table. */
- int i;
+ state_num *trans; /* The new transition table. */
+ state_num i;
/* Set an upper limit on the number of transition tables that will ever
exist at once. 1024 is arbitrary. The idea is that the frequently
@@ -2663,8 +2789,8 @@ build_state (int s, struct dfa *d)
{
for (i = 0; i < d->tralloc; ++i)
{
- free(d->trans[i]);
- free(d->fails[i]);
+ free (d->trans[i]);
+ free (d->fails[i]);
d->trans[i] = d->fails[i] = NULL;
}
d->trcount = 0;
@@ -2674,18 +2800,15 @@ build_state (int s, struct dfa *d)
/* Set up the success bits for this state. */
d->success[s] = 0;
- if (ACCEPTS_IN_CONTEXT(d->states[s].newline, 1, d->states[s].letter, 0,
- s, *d))
- d->success[s] |= 4;
- if (ACCEPTS_IN_CONTEXT(d->states[s].newline, 0, d->states[s].letter, 1,
- s, *d))
- d->success[s] |= 2;
- if (ACCEPTS_IN_CONTEXT(d->states[s].newline, 0, d->states[s].letter, 0,
- s, *d))
- d->success[s] |= 1;
-
- MALLOC(trans, NOTCHAR);
- dfastate(s, d, trans);
+ if (ACCEPTS_IN_CONTEXT (d->states[s].context, CTX_NEWLINE, s, *d))
+ d->success[s] |= CTX_NEWLINE;
+ if (ACCEPTS_IN_CONTEXT (d->states[s].context, CTX_LETTER, s, *d))
+ d->success[s] |= CTX_LETTER;
+ if (ACCEPTS_IN_CONTEXT (d->states[s].context, CTX_NONE, s, *d))
+ d->success[s] |= CTX_NONE;
+
+ MALLOC (trans, NOTCHAR);
+ dfastate (s, d, trans);
/* Now go through the new transition table, and make sure that the trans
and fail arrays are allocated large enough to hold a pointer for the
@@ -2693,15 +2816,15 @@ build_state (int s, struct dfa *d)
for (i = 0; i < NOTCHAR; ++i)
if (trans[i] >= d->tralloc)
{
- int oldalloc = d->tralloc;
+ state_num oldalloc = d->tralloc;
while (trans[i] >= d->tralloc)
d->tralloc *= 2;
- REALLOC(d->realtrans, d->tralloc + 1);
+ REALLOC (d->realtrans, d->tralloc + 1);
d->trans = d->realtrans + 1;
- REALLOC(d->fails, d->tralloc);
- REALLOC(d->success, d->tralloc);
- REALLOC(d->newlines, d->tralloc);
+ REALLOC (d->fails, d->tralloc);
+ REALLOC (d->success, d->tralloc);
+ REALLOC (d->newlines, d->tralloc);
while (oldalloc < d->tralloc)
{
d->trans[oldalloc] = NULL;
@@ -2714,7 +2837,7 @@ build_state (int s, struct dfa *d)
d->newlines[s] = trans[eolbyte];
trans[eolbyte] = -1;
- if (ACCEPTING(s, *d))
+ if (ACCEPTING (s, *d))
d->fails[s] = trans;
else
d->trans[s] = trans;
@@ -2725,12 +2848,12 @@ build_state_zero (struct dfa *d)
{
d->tralloc = 1;
d->trcount = 0;
- CALLOC(d->realtrans, d->tralloc + 1);
+ CALLOC (d->realtrans, d->tralloc + 1);
d->trans = d->realtrans + 1;
- CALLOC(d->fails, d->tralloc);
- MALLOC(d->success, d->tralloc);
- MALLOC(d->newlines, d->tralloc);
- build_state(0, d);
+ CALLOC (d->fails, d->tralloc);
+ MALLOC (d->success, d->tralloc);
+ MALLOC (d->newlines, d->tralloc);
+ build_state (0, d);
}
/* Multibyte character handling sub-routines for dfaexec. */
@@ -2751,29 +2874,29 @@ build_state_zero (struct dfa *d)
++p; \
if ((char *) p >= end) \
{ \
- free(mblen_buf); \
- free(inputwcs); \
+ free (mblen_buf); \
+ free (inputwcs); \
*end = saved_end; \
return NULL; \
} \
}
static void
-realloc_trans_if_necessary(struct dfa *d, int new_state)
+realloc_trans_if_necessary (struct dfa *d, state_num new_state)
{
/* Make sure that the trans and fail arrays are allocated large enough
to hold a pointer for the new state. */
if (new_state >= d->tralloc)
{
- int oldalloc = d->tralloc;
+ state_num oldalloc = d->tralloc;
while (new_state >= d->tralloc)
d->tralloc *= 2;
- REALLOC(d->realtrans, d->tralloc + 1);
+ REALLOC (d->realtrans, d->tralloc + 1);
d->trans = d->realtrans + 1;
- REALLOC(d->fails, d->tralloc);
- REALLOC(d->success, d->tralloc);
- REALLOC(d->newlines, d->tralloc);
+ REALLOC (d->fails, d->tralloc);
+ REALLOC (d->success, d->tralloc);
+ REALLOC (d->newlines, d->tralloc);
while (oldalloc < d->tralloc)
{
d->trans[oldalloc] = NULL;
@@ -2786,9 +2909,9 @@ realloc_trans_if_necessary(struct dfa *d, int new_state)
transit_state_consume_1char. */
typedef enum
{
- TRANSIT_STATE_IN_PROGRESS, /* State transition has not finished. */
- TRANSIT_STATE_DONE, /* State transition has finished. */
- TRANSIT_STATE_END_BUFFER /* Reach the end of the buffer. */
+ TRANSIT_STATE_IN_PROGRESS, /* State transition has not finished. */
+ TRANSIT_STATE_DONE, /* State transition has finished. */
+ TRANSIT_STATE_END_BUFFER /* Reach the end of the buffer. */
} status_transit_state;
/* Consume a single byte and transit state from 's' to '*next_state'.
@@ -2796,11 +2919,11 @@ typedef enum
But state transition is done just once, otherwise matching succeed or
reach the end of the buffer. */
static status_transit_state
-transit_state_singlebyte (struct dfa *d, int s, unsigned char const *p,
- int *next_state)
+transit_state_singlebyte (struct dfa *d, state_num s, unsigned char const *p,
+ state_num * next_state)
{
- int *t;
- int works = s;
+ state_num *t;
+ state_num works = s;
status_transit_state rval = TRANSIT_STATE_IN_PROGRESS;
@@ -2829,7 +2952,7 @@ transit_state_singlebyte (struct dfa *d, int s, unsigned char const *p,
}
else
{
- build_state(works, d);
+ build_state (works, d);
}
}
*next_state = works;
@@ -2840,35 +2963,29 @@ transit_state_singlebyte (struct dfa *d, int s, unsigned char const *p,
current position. Return the length of the match, in bytes.
POS is the position of the ".". */
static int
-match_anychar (struct dfa *d, int s, position pos, int idx)
+match_anychar (struct dfa *d, state_num s, position pos, size_t idx)
{
- int newline = 0;
- int letter = 0;
+ int context;
wchar_t wc;
int mbclen;
wc = inputwcs[idx];
- mbclen = (mblen_buf[idx] == 0)? 1 : mblen_buf[idx];
+ mbclen = (mblen_buf[idx] == 0) ? 1 : mblen_buf[idx];
- /* Check context. */
- if (wc == (wchar_t)eolbyte)
+ /* Check syntax bits. */
+ if (wc == (wchar_t) eolbyte)
{
if (!(syntax_bits & RE_DOT_NEWLINE))
return 0;
- newline = 1;
}
- else if (wc == (wchar_t)'\0')
+ else if (wc == (wchar_t) '\0')
{
if (syntax_bits & RE_DOT_NOT_NULL)
return 0;
- newline = 1;
}
- if (iswalnum(wc) || wc == L'_')
- letter = 1;
-
- if (!SUCCEEDS_IN_CONTEXT(pos.constraint, d->states[s].newline,
- newline, d->states[s].letter, letter))
+ context = wchar_context (wc);
+ if (!SUCCEEDS_IN_CONTEXT (pos.constraint, d->states[s].context, context))
return 0;
return mbclen;
@@ -2879,70 +2996,66 @@ match_anychar (struct dfa *d, int s, position pos, int idx)
Return the length of the match, in bytes.
POS is the position of the bracket expression. */
static int
-match_mb_charset (struct dfa *d, int s, position pos, int idx)
+match_mb_charset (struct dfa *d, state_num s, position pos, size_t idx)
{
- int i;
- int match; /* Flag which represent that matching succeed. */
- int match_len; /* Length of the character (or collating element)
- with which this operator match. */
- int op_len; /* Length of the operator. */
+ size_t i;
+ int match; /* Flag which represent that matching succeed. */
+ int match_len; /* Length of the character (or collating element)
+ with which this operator match. */
+ int op_len; /* Length of the operator. */
char buffer[128];
- /* Pointer to the structure to which we are currently refering. */
+ /* Pointer to the structure to which we are currently referring. */
struct mb_char_classes *work_mbc;
- int newline = 0;
- int letter = 0;
- wchar_t wc; /* Current refering character. */
+ int context;
+ wchar_t wc; /* Current referring character. */
wc = inputwcs[idx];
- /* Check context. */
- if (wc == (wchar_t)eolbyte)
+ /* Check syntax bits. */
+ if (wc == (wchar_t) eolbyte)
{
if (!(syntax_bits & RE_DOT_NEWLINE))
return 0;
- newline = 1;
}
- else if (wc == (wchar_t)'\0')
+ else if (wc == (wchar_t) '\0')
{
if (syntax_bits & RE_DOT_NOT_NULL)
return 0;
- newline = 1;
}
- if (iswalnum(wc) || wc == L'_')
- letter = 1;
- if (!SUCCEEDS_IN_CONTEXT(pos.constraint, d->states[s].newline,
- newline, d->states[s].letter, letter))
+
+ context = wchar_context (wc);
+ if (!SUCCEEDS_IN_CONTEXT (pos.constraint, d->states[s].context, context))
return 0;
- /* Assign the current refering operator to work_mbc. */
+ /* Assign the current referring operator to work_mbc. */
work_mbc = &(d->mbcsets[(d->multibyte_prop[pos.index]) >> 2]);
match = !work_mbc->invert;
- match_len = (mblen_buf[idx] == 0)? 1 : mblen_buf[idx];
+ match_len = (mblen_buf[idx] == 0) ? 1 : mblen_buf[idx];
/* Match in range 0-255? */
if (wc < NOTCHAR && work_mbc->cset != -1
- && tstbit((unsigned char)wc, d->charclasses[work_mbc->cset]))
+ && tstbit ((unsigned char) wc, d->charclasses[work_mbc->cset]))
goto charset_matched;
/* match with a character class? */
- for (i = 0; i<work_mbc->nch_classes; i++)
+ for (i = 0; i < work_mbc->nch_classes; i++)
{
- if (iswctype((wint_t)wc, work_mbc->ch_classes[i]))
+ if (iswctype ((wint_t) wc, work_mbc->ch_classes[i]))
goto charset_matched;
}
- strncpy(buffer, (char const *) buf_begin + idx, match_len);
+ strncpy (buffer, (char const *) buf_begin + idx, match_len);
buffer[match_len] = '\0';
- /* match with an equivalent class? */
- for (i = 0; i<work_mbc->nequivs; i++)
+ /* match with an equivalence class? */
+ for (i = 0; i < work_mbc->nequivs; i++)
{
- op_len = strlen(work_mbc->equivs[i]);
- strncpy(buffer, (char const *) buf_begin + idx, op_len);
+ op_len = strlen (work_mbc->equivs[i]);
+ strncpy (buffer, (char const *) buf_begin + idx, op_len);
buffer[op_len] = '\0';
- if (strcoll(work_mbc->equivs[i], buffer) == 0)
+ if (strcoll (work_mbc->equivs[i], buffer) == 0)
{
match_len = op_len;
goto charset_matched;
@@ -2950,13 +3063,13 @@ match_mb_charset (struct dfa *d, int s, position pos, int idx)
}
/* match with a collating element? */
- for (i = 0; i<work_mbc->ncoll_elems; i++)
+ for (i = 0; i < work_mbc->ncoll_elems; i++)
{
- op_len = strlen(work_mbc->coll_elems[i]);
- strncpy(buffer, (char const *) buf_begin + idx, op_len);
+ op_len = strlen (work_mbc->coll_elems[i]);
+ strncpy (buffer, (char const *) buf_begin + idx, op_len);
buffer[op_len] = '\0';
- if (strcoll(work_mbc->coll_elems[i], buffer) == 0)
+ if (strcoll (work_mbc->coll_elems[i], buffer) == 0)
{
match_len = op_len;
goto charset_matched;
@@ -2964,15 +3077,14 @@ match_mb_charset (struct dfa *d, int s, position pos, int idx)
}
/* match with a range? */
- for (i = 0; i<work_mbc->nranges; i++)
+ for (i = 0; i < work_mbc->nranges; i++)
{
- if (work_mbc->range_sts[i] <= wc &&
- wc <= work_mbc->range_ends[i])
+ if (work_mbc->range_sts[i] <= wc && wc <= work_mbc->range_ends[i])
goto charset_matched;
}
/* match with a character? */
- for (i = 0; i<work_mbc->nchars; i++)
+ for (i = 0; i < work_mbc->nchars; i++)
{
if (wc == work_mbc->chars[i])
goto charset_matched;
@@ -2980,7 +3092,7 @@ match_mb_charset (struct dfa *d, int s, position pos, int idx)
match = !match;
- charset_matched:
+charset_matched:
return match ? match_len : 0;
}
@@ -2991,26 +3103,26 @@ match_mb_charset (struct dfa *d, int s, position pos, int idx)
`idx' is the index from the buf_begin, and it is the current position
in the buffer.
Caller MUST free the array which this function return. */
-static int*
-check_matching_with_multibyte_ops (struct dfa *d, int s, int idx)
+static int *
+check_matching_with_multibyte_ops (struct dfa *d, state_num s, size_t idx)
{
- int i;
- int* rarray;
+ size_t i;
+ int *rarray;
- MALLOC(rarray, d->states[s].mbps.nelem);
+ MALLOC (rarray, d->states[s].mbps.nelem);
for (i = 0; i < d->states[s].mbps.nelem; ++i)
{
position pos = d->states[s].mbps.elems[i];
- switch(d->tokens[pos.index])
+ switch (d->tokens[pos.index])
{
case ANYCHAR:
- rarray[i] = match_anychar(d, s, pos, idx);
+ rarray[i] = match_anychar (d, s, pos, idx);
break;
case MBCSET:
- rarray[i] = match_mb_charset(d, s, pos, idx);
+ rarray[i] = match_mb_charset (d, s, pos, idx);
break;
default:
- break; /* cannot happen. */
+ break; /* cannot happen. */
}
}
return rarray;
@@ -3023,64 +3135,66 @@ check_matching_with_multibyte_ops (struct dfa *d, int s, int idx)
`mbclen' and `pps' are the output. `mbclen' is the length of the
character consumed, and `pps' is the set this function enumerate. */
static status_transit_state
-transit_state_consume_1char (struct dfa *d, int s, unsigned char const **pp,
- int *match_lens, int *mbclen, position_set *pps)
+transit_state_consume_1char (struct dfa *d, state_num s,
+ unsigned char const **pp,
+ int *match_lens, int *mbclen, position_set * pps)
{
- int i, j;
- int s1, s2;
- int* work_mbls;
+ size_t i, j;
+ int k;
+ state_num s1, s2;
+ int *work_mbls;
status_transit_state rs = TRANSIT_STATE_DONE;
/* Calculate the length of the (single/multi byte) character
to which p points. */
- *mbclen = (mblen_buf[*pp - buf_begin] == 0)? 1
- : mblen_buf[*pp - buf_begin];
+ *mbclen = (mblen_buf[*pp - buf_begin] == 0) ? 1 : mblen_buf[*pp - buf_begin];
/* Calculate the state which can be reached from the state `s' by
consuming `*mbclen' single bytes from the buffer. */
s1 = s;
- for (i = 0; i < *mbclen; i++)
+ for (k = 0; k < *mbclen; k++)
{
s2 = s1;
- rs = transit_state_singlebyte(d, s2, (*pp)++, &s1);
+ rs = transit_state_singlebyte (d, s2, (*pp)++, &s1);
}
/* Copy the positions contained by `s1' to the set `pps'. */
- copy(&(d->states[s1].elems), pps);
+ copy (&(d->states[s1].elems), pps);
- /* Check (inputed)match_lens, and initialize if it is NULL. */
+ /* Check (input) match_lens, and initialize if it is NULL. */
if (match_lens == NULL && d->states[s].mbps.nelem != 0)
- work_mbls = check_matching_with_multibyte_ops(d, s, *pp - buf_begin);
+ work_mbls = check_matching_with_multibyte_ops (d, s, *pp - buf_begin);
else
work_mbls = match_lens;
/* Add all of the positions which can be reached from `s' by consuming
a single character. */
- for (i = 0; i < d->states[s].mbps.nelem ; i++)
- {
+ for (i = 0; i < d->states[s].mbps.nelem; i++)
+ {
if (work_mbls[i] == *mbclen)
for (j = 0; j < d->follows[d->states[s].mbps.elems[i].index].nelem;
j++)
- insert(d->follows[d->states[s].mbps.elems[i].index].elems[j],
- pps);
+ insert (d->follows[d->states[s].mbps.elems[i].index].elems[j], pps);
}
if (match_lens == NULL && work_mbls != NULL)
- free(work_mbls);
+ free (work_mbls);
+
+ /* FIXME: this return value is always ignored. */
return rs;
}
/* Transit state from s, then return new state and update the pointer of the
buffer. This function is for some operator which can match with a multi-
byte character or a collating element (which may be multi characters). */
-static int
-transit_state (struct dfa *d, int s, unsigned char const **pp)
+static state_num
+transit_state (struct dfa *d, state_num s, unsigned char const **pp)
{
- int s1;
- int mbclen; /* The length of current input multibyte character. */
+ state_num s1;
+ int mbclen; /* The length of current input multibyte character. */
int maxlen = 0;
- int i, j;
+ size_t i, j;
int *match_lens = NULL;
- int nelem = d->states[s].mbps.nelem; /* Just a alias. */
+ size_t nelem = d->states[s].mbps.nelem; /* Just a alias. */
position_set follows;
unsigned char const *p1 = *pp;
wchar_t wc;
@@ -3090,7 +3204,7 @@ transit_state (struct dfa *d, int s, unsigned char const **pp)
We check whether each of them can match or not. */
{
/* Note: caller must free the return value of this function. */
- match_lens = check_matching_with_multibyte_ops(d, s, *pp - buf_begin);
+ match_lens = check_matching_with_multibyte_ops (d, s, *pp - buf_begin);
for (i = 0; i < nelem; i++)
/* Search the operator which match the longest string,
@@ -3106,50 +3220,48 @@ transit_state (struct dfa *d, int s, unsigned char const **pp)
We need to check only one single byte character. */
{
status_transit_state rs;
- rs = transit_state_singlebyte(d, s, *pp, &s1);
+ rs = transit_state_singlebyte (d, s, *pp, &s1);
/* We must update the pointer if state transition succeeded. */
if (rs == TRANSIT_STATE_DONE)
++*pp;
- free(match_lens);
+ free (match_lens);
return s1;
}
/* This state has some operators which can match a multibyte character. */
- follows.nelem = 0;
- MALLOC(follows.elems, d->nleaves);
+ alloc_position_set (&follows, d->nleaves);
/* `maxlen' may be longer than the length of a character, because it may
not be a character but a (multi character) collating element.
We enumerate all of the positions which `s' can reach by consuming
`maxlen' bytes. */
- transit_state_consume_1char(d, s, pp, match_lens, &mbclen, &follows);
+ transit_state_consume_1char (d, s, pp, match_lens, &mbclen, &follows);
wc = inputwcs[*pp - mbclen - buf_begin];
- s1 = state_index(d, &follows, wc == L'\n', iswalnum(wc));
- realloc_trans_if_necessary(d, s1);
+ s1 = state_index (d, &follows, wchar_context (wc));
+ realloc_trans_if_necessary (d, s1);
while (*pp - p1 < maxlen)
{
- follows.nelem = 0;
- transit_state_consume_1char(d, s1, pp, NULL, &mbclen, &follows);
+ transit_state_consume_1char (d, s1, pp, NULL, &mbclen, &follows);
- for (i = 0; i < nelem ; i++)
+ for (i = 0; i < nelem; i++)
{
if (match_lens[i] == *pp - p1)
for (j = 0;
j < d->follows[d->states[s1].mbps.elems[i].index].nelem; j++)
- insert(d->follows[d->states[s1].mbps.elems[i].index].elems[j],
- &follows);
+ insert (d->follows[d->states[s1].mbps.elems[i].index].elems[j],
+ &follows);
}
wc = inputwcs[*pp - mbclen - buf_begin];
- s1 = state_index(d, &follows, wc == L'\n', iswalnum(wc));
- realloc_trans_if_necessary(d, s1);
+ s1 = state_index (d, &follows, wchar_context (wc));
+ realloc_trans_if_necessary (d, s1);
}
- free(match_lens);
- free(follows.elems);
+ free (match_lens);
+ free (follows.elems);
return s1;
}
@@ -3171,14 +3283,14 @@ prepare_wc_buf (const char *begin, const char *end)
if (remain_bytes == 0)
{
remain_bytes
- = mbrtowc(inputwcs + i, begin + i, end - begin - i + 1, &mbs);
+ = mbrtowc (inputwcs + i, begin + i, end - begin - i + 1, &mbs);
if (remain_bytes < 1
|| remain_bytes == (size_t) -1
|| remain_bytes == (size_t) -2
- || (remain_bytes == 1 && inputwcs[i] == (wchar_t)begin[i]))
+ || (remain_bytes == 1 && inputwcs[i] == (wchar_t) begin[i]))
{
remain_bytes = 0;
- inputwcs[i] = (wchar_t)begin[i];
+ inputwcs[i] = (wchar_t) begin[i];
mblen_buf[i] = 0;
if (begin[i] == eol)
break;
@@ -3199,7 +3311,7 @@ prepare_wc_buf (const char *begin, const char *end)
buf_end = (unsigned char *) (begin + i);
mblen_buf[i] = 0;
- inputwcs[i] = 0; /* sentinel */
+ inputwcs[i] = 0; /* sentinel */
#endif /* MBS_SUPPORT */
}
@@ -3210,36 +3322,24 @@ prepare_wc_buf (const char *begin, const char *end)
points to the beginning of the buffer, and END points to the first byte
after its end. Note however that we store a sentinel byte (usually
newline) in *END, so the actual buffer must be one byte longer.
- When NEWLINE is nonzero, newlines may appear in the matching string.
+ When ALLOW_NL is nonzero, newlines may appear in the matching string.
If COUNT is non-NULL, increment *COUNT once for each newline processed.
Finally, if BACKREF is non-NULL set *BACKREF to indicate whether we
encountered a back-reference (1) or not (0). The caller may use this
to decide whether to fall back on a backtracking matcher. */
char *
dfaexec (struct dfa *d, char const *begin, char *end,
- int newline, int *count, int *backref)
+ int allow_nl, size_t *count, int *backref)
{
- int s, s1; /* Current state. */
- unsigned char const *p; /* Current input character. */
- int **trans, *t; /* Copy of d->trans so it can be optimized
+ state_num s, s1; /* Current state. */
+ unsigned char const *p; /* Current input character. */
+ state_num **trans, *t; /* Copy of d->trans so it can be optimized
into a register. */
- unsigned char eol = eolbyte; /* Likewise for eolbyte. */
+ unsigned char eol = eolbyte; /* Likewise for eolbyte. */
unsigned char saved_end;
- static int sbit[NOTCHAR]; /* Table for anding with d->success. */
- static int sbit_init;
- if (! sbit_init)
- {
- unsigned int i;
-
- sbit_init = 1;
- for (i = 0; i < NOTCHAR; ++i)
- sbit[i] = (IS_WORD_CONSTITUENT(i)) ? 2 : 1;
- sbit[eol] = 4;
- }
-
- if (! d->tralloc)
- build_state_zero(d);
+ if (!d->tralloc)
+ build_state_zero (d);
s = s1 = 0;
p = (unsigned char const *) begin;
@@ -3249,9 +3349,9 @@ dfaexec (struct dfa *d, char const *begin, char *end,
if (d->mb_cur_max > 1)
{
- MALLOC(mblen_buf, end - begin + 2);
- MALLOC(inputwcs, end - begin + 2);
- memset(&mbs, 0, sizeof(mbstate_t));
+ MALLOC (mblen_buf, end - begin + 2);
+ MALLOC (inputwcs, end - begin + 2);
+ memset (&mbs, 0, sizeof (mbstate_t));
prepare_wc_buf ((const char *) p, end);
}
@@ -3263,7 +3363,7 @@ dfaexec (struct dfa *d, char const *begin, char *end,
if (p > buf_end)
break;
s1 = s;
- SKIP_REMAINS_MB_IF_INITIAL_STATE(s, p);
+ SKIP_REMAINS_MB_IF_INITIAL_STATE (s, p);
if (d->states[s].mbps.nelem == 0)
{
@@ -3278,15 +3378,15 @@ dfaexec (struct dfa *d, char const *begin, char *end,
if (backref)
{
*backref = 1;
- free(mblen_buf);
- free(inputwcs);
+ free (mblen_buf);
+ free (inputwcs);
*end = saved_end;
return (char *) p;
}
/* Can match with a multibyte character (and multi character
collating element). Transition table might be updated. */
- s = transit_state(d, s, &p);
+ s = transit_state (d, s, &p);
trans = d->trans;
}
else
@@ -3296,7 +3396,9 @@ dfaexec (struct dfa *d, char const *begin, char *end,
s1 = t[*p++];
if ((t = trans[s1]) == NULL)
{
- int tmp = s; s = s1; s1 = tmp; /* swap */
+ state_num tmp = s;
+ s = s1;
+ s1 = tmp; /* swap */
break;
}
s = t[*p++];
@@ -3311,8 +3413,8 @@ dfaexec (struct dfa *d, char const *begin, char *end,
*backref = (d->states[s].backref != 0);
if (d->mb_cur_max > 1)
{
- free(mblen_buf);
- free(inputwcs);
+ free (mblen_buf);
+ free (inputwcs);
}
*end = saved_end;
return (char *) p;
@@ -3323,7 +3425,7 @@ dfaexec (struct dfa *d, char const *begin, char *end,
{
/* Can match with a multibyte character (and multicharacter
collating element). Transition table might be updated. */
- s = transit_state(d, s, &p);
+ s = transit_state (d, s, &p);
trans = d->trans;
}
else
@@ -3346,8 +3448,8 @@ dfaexec (struct dfa *d, char const *begin, char *end,
{
if (d->mb_cur_max > 1)
{
- free(mblen_buf);
- free(inputwcs);
+ free (mblen_buf);
+ free (inputwcs);
}
*end = saved_end;
return NULL;
@@ -3355,12 +3457,12 @@ dfaexec (struct dfa *d, char const *begin, char *end,
if (s >= 0)
{
- build_state(s, d);
+ build_state (s, d);
trans = d->trans;
continue;
}
- if (p[-1] == eol && newline)
+ if (p[-1] == eol && allow_nl)
{
s = d->newlines[s1];
continue;
@@ -3373,30 +3475,30 @@ dfaexec (struct dfa *d, char const *begin, char *end,
static void
free_mbdata (struct dfa *d)
{
- unsigned int i;
+ size_t i;
- free(d->multibyte_prop);
+ free (d->multibyte_prop);
d->multibyte_prop = NULL;
for (i = 0; i < d->nmbcsets; ++i)
{
- unsigned int j;
+ size_t j;
struct mb_char_classes *p = &(d->mbcsets[i]);
- free(p->chars);
- free(p->ch_classes);
- free(p->range_sts);
- free(p->range_ends);
+ free (p->chars);
+ free (p->ch_classes);
+ free (p->range_sts);
+ free (p->range_ends);
for (j = 0; j < p->nequivs; ++j)
- free(p->equivs[j]);
- free(p->equivs);
+ free (p->equivs[j]);
+ free (p->equivs);
for (j = 0; j < p->ncoll_elems; ++j)
- free(p->coll_elems[j]);
- free(p->coll_elems);
+ free (p->coll_elems[j]);
+ free (p->coll_elems);
}
- free(d->mbcsets);
+ free (d->mbcsets);
d->mbcsets = NULL;
d->nmbcsets = 0;
}
@@ -3409,33 +3511,33 @@ dfainit (struct dfa *d)
memset (d, 0, sizeof *d);
d->calloc = 1;
- MALLOC(d->charclasses, d->calloc);
+ MALLOC (d->charclasses, d->calloc);
d->talloc = 1;
- MALLOC(d->tokens, d->talloc);
+ MALLOC (d->tokens, d->talloc);
d->mb_cur_max = MB_CUR_MAX;
if (d->mb_cur_max > 1)
{
d->nmultibyte_prop = 1;
- MALLOC(d->multibyte_prop, d->nmultibyte_prop);
+ MALLOC (d->multibyte_prop, d->nmultibyte_prop);
d->mbcsets_alloc = 1;
- MALLOC(d->mbcsets, d->mbcsets_alloc);
+ MALLOC (d->mbcsets, d->mbcsets_alloc);
}
}
static void
dfaoptimize (struct dfa *d)
{
- unsigned int i;
+ size_t i;
- if (!MBS_SUPPORT || !using_utf8())
+ if (!MBS_SUPPORT || !using_utf8 ())
return;
for (i = 0; i < d->tindex; ++i)
{
- switch(d->tokens[i])
+ switch (d->tokens[i])
{
case ANYCHAR:
/* Lowered. */
@@ -3456,49 +3558,50 @@ dfaoptimize (struct dfa *d)
void
dfacomp (char const *s, size_t len, struct dfa *d, int searchflag)
{
- dfainit(d);
- dfaparse(s, len, d);
- dfamust(d);
- dfaoptimize(d);
- dfaanalyze(d, searchflag);
+ dfainit (d);
+ dfaparse (s, len, d);
+ dfamust (d);
+ dfaoptimize (d);
+ dfaanalyze (d, searchflag);
}
/* Free the storage held by the components of a dfa. */
void
dfafree (struct dfa *d)
{
- int i;
+ size_t i;
struct dfamust *dm, *ndm;
- free(d->charclasses);
- free(d->tokens);
+ free (d->charclasses);
+ free (d->tokens);
if (d->mb_cur_max > 1)
- free_mbdata(d);
-
- for (i = 0; i < d->sindex; ++i) {
- free(d->states[i].elems.elems);
- if (MBS_SUPPORT)
- free(d->states[i].mbps.elems);
- }
- free(d->states);
+ free_mbdata (d);
+
+ for (i = 0; i < d->sindex; ++i)
+ {
+ free (d->states[i].elems.elems);
+ if (MBS_SUPPORT)
+ free (d->states[i].mbps.elems);
+ }
+ free (d->states);
for (i = 0; i < d->tindex; ++i)
- free(d->follows[i].elems);
- free(d->follows);
+ free (d->follows[i].elems);
+ free (d->follows);
for (i = 0; i < d->tralloc; ++i)
{
- free(d->trans[i]);
- free(d->fails[i]);
+ free (d->trans[i]);
+ free (d->fails[i]);
}
- free(d->realtrans);
- free(d->fails);
- free(d->newlines);
- free(d->success);
+ free (d->realtrans);
+ free (d->fails);
+ free (d->newlines);
+ free (d->success);
for (dm = d->musts; dm; dm = ndm)
{
ndm = dm->next;
- free(dm->must);
- free(dm);
+ free (dm->must);
+ free (dm);
}
}
@@ -3595,7 +3698,7 @@ icatalloc (char *old, char const *new)
if (newsize == 0)
return old;
result = xrealloc (old, oldsize + newsize + 1);
- strcpy (result + oldsize, new);
+ memcpy (result + oldsize, new, newsize + 1);
return result;
}
@@ -3605,15 +3708,15 @@ icpyalloc (char const *string)
return icatalloc (NULL, string);
}
-static char * _GL_ATTRIBUTE_PURE
+static char *_GL_ATTRIBUTE_PURE
istrstr (char const *lookin, char const *lookfor)
{
char const *cp;
size_t len;
- len = strlen(lookfor);
+ len = strlen (lookfor);
for (cp = lookin; *cp != '\0'; ++cp)
- if (strncmp(cp, lookfor, len) == 0)
+ if (strncmp (cp, lookfor, len) == 0)
return (char *) cp;
return NULL;
}
@@ -3621,13 +3724,13 @@ istrstr (char const *lookin, char const *lookfor)
static void
freelist (char **cpp)
{
- int i;
+ size_t i;
if (cpp == NULL)
return;
for (i = 0; cpp[i] != NULL; ++i)
{
- free(cpp[i]);
+ free (cpp[i]);
cpp[i] = NULL;
}
}
@@ -3635,38 +3738,38 @@ freelist (char **cpp)
static char **
enlist (char **cpp, char *new, size_t len)
{
- int i, j;
+ size_t i, j;
if (cpp == NULL)
return NULL;
- if ((new = icpyalloc(new)) == NULL)
+ if ((new = icpyalloc (new)) == NULL)
{
- freelist(cpp);
+ freelist (cpp);
return NULL;
}
new[len] = '\0';
/* Is there already something in the list that's new (or longer)? */
for (i = 0; cpp[i] != NULL; ++i)
- if (istrstr(cpp[i], new) != NULL)
+ if (istrstr (cpp[i], new) != NULL)
{
- free(new);
+ free (new);
return cpp;
}
/* Eliminate any obsoleted strings. */
j = 0;
while (cpp[j] != NULL)
- if (istrstr(new, cpp[j]) == NULL)
+ if (istrstr (new, cpp[j]) == NULL)
++j;
else
{
- free(cpp[j]);
+ free (cpp[j]);
if (--i == j)
break;
cpp[j] = cpp[i];
cpp[i] = NULL;
}
/* Add the new string. */
- cpp = xnrealloc(cpp, i + 2, sizeof *cpp);
+ REALLOC (cpp, i + 2);
cpp[i] = new;
cpp[i + 1] = NULL;
return cpp;
@@ -3685,7 +3788,7 @@ comsubs (char *left, char const *right)
if (left == NULL || right == NULL)
return NULL;
- cpp = malloc(sizeof *cpp);
+ cpp = malloc (sizeof *cpp);
if (cpp == NULL)
return NULL;
cpp[0] = NULL;
@@ -3720,13 +3823,13 @@ comsubs (char *left, char const *right)
static char **
addlists (char **old, char **new)
{
- int i;
+ size_t i;
if (old == NULL || new == NULL)
return NULL;
for (i = 0; new[i] != NULL; ++i)
{
- old = enlist(old, new[i], strlen(new[i]));
+ old = enlist (old, new[i], strlen (new[i]));
if (old == NULL)
break;
}
@@ -3740,11 +3843,11 @@ inboth (char **left, char **right)
{
char **both;
char **temp;
- int lnum, rnum;
+ size_t lnum, rnum;
if (left == NULL || right == NULL)
return NULL;
- both = malloc(sizeof *both);
+ both = malloc (sizeof *both);
if (both == NULL)
return NULL;
both[0] = NULL;
@@ -3752,15 +3855,15 @@ inboth (char **left, char **right)
{
for (rnum = 0; right[rnum] != NULL; ++rnum)
{
- temp = comsubs(left[lnum], right[rnum]);
+ temp = comsubs (left[lnum], right[rnum]);
if (temp == NULL)
{
- freelist(both);
+ freelist (both);
return NULL;
}
- both = addlists(both, temp);
- freelist(temp);
- free(temp);
+ both = addlists (both, temp);
+ freelist (temp);
+ free (temp);
if (both == NULL)
return NULL;
}
@@ -3777,10 +3880,10 @@ typedef struct
} must;
static void
-resetmust (must *mp)
+resetmust (must * mp)
{
mp->left[0] = mp->right[0] = mp->is[0] = '\0';
- freelist(mp->in);
+ freelist (mp->in);
}
static void
@@ -3789,8 +3892,8 @@ dfamust (struct dfa *d)
must *musts;
must *mp;
char *result;
- int ri;
- int i;
+ size_t ri;
+ size_t i;
int exact;
token t;
static must must0;
@@ -3799,27 +3902,27 @@ dfamust (struct dfa *d)
result = empty_string;
exact = 0;
- musts = xnmalloc(d->tindex + 1, sizeof *musts);
+ MALLOC (musts, d->tindex + 1);
mp = musts;
for (i = 0; i <= d->tindex; ++i)
mp[i] = must0;
for (i = 0; i <= d->tindex; ++i)
{
- mp[i].in = xmalloc(sizeof *mp[i].in);
- mp[i].left = xmalloc(2);
- mp[i].right = xmalloc(2);
- mp[i].is = xmalloc(2);
+ mp[i].in = xmalloc (sizeof *mp[i].in);
+ mp[i].left = xmalloc (2);
+ mp[i].right = xmalloc (2);
+ mp[i].is = xmalloc (2);
mp[i].left[0] = mp[i].right[0] = mp[i].is[0] = '\0';
mp[i].in[0] = NULL;
}
#ifdef DEBUG
- fprintf(stderr, "dfamust:\n");
+ fprintf (stderr, "dfamust:\n");
for (i = 0; i < d->tindex; ++i)
{
- fprintf(stderr, " %d:", i);
- prtok(d->tokens[i]);
+ fprintf (stderr, " %zd:", i);
+ prtok (d->tokens[i]);
}
- putc('\n', stderr);
+ putc ('\n', stderr);
#endif
for (ri = 0; ri < d->tindex; ++ri)
{
@@ -3836,13 +3939,13 @@ dfamust (struct dfa *d)
case LIMWORD:
case NOTLIMWORD:
case BACKREF:
- resetmust(mp);
+ resetmust (mp);
break;
case STAR:
case QMARK:
assert (musts < mp);
--mp;
- resetmust(mp);
+ resetmust (mp);
break;
case OR:
assert (&musts[2] <= mp);
@@ -3850,7 +3953,7 @@ dfamust (struct dfa *d)
char **new;
must *lmp;
must *rmp;
- int j, ln, rn, n;
+ size_t j, ln, rn, n;
rmp = --mp;
lmp = --mp;
@@ -3863,8 +3966,8 @@ dfamust (struct dfa *d)
++i;
lmp->left[i] = '\0';
/* Right side */
- ln = strlen(lmp->right);
- rn = strlen(rmp->right);
+ ln = strlen (lmp->right);
+ rn = strlen (rmp->right);
n = ln;
if (n > rn)
n = rn;
@@ -3874,11 +3977,11 @@ dfamust (struct dfa *d)
for (j = 0; j < i; ++j)
lmp->right[j] = lmp->right[(ln - i) + j];
lmp->right[j] = '\0';
- new = inboth(lmp->in, rmp->in);
+ new = inboth (lmp->in, rmp->in);
if (new == NULL)
goto done;
- freelist(lmp->in);
- free(lmp->in);
+ freelist (lmp->in);
+ free (lmp->in);
lmp->in = new;
}
break;
@@ -3890,7 +3993,7 @@ dfamust (struct dfa *d)
case END:
assert (mp == &musts[1]);
for (i = 0; musts[0].in[i] != NULL; ++i)
- if (strlen(musts[0].in[i]) > strlen(result))
+ if (strlen (musts[0].in[i]) > strlen (result))
result = musts[0].in[i];
if (STREQ (result, musts[0].is))
exact = 1;
@@ -3904,41 +4007,39 @@ dfamust (struct dfa *d)
rmp = --mp;
lmp = --mp;
/* In. Everything in left, plus everything in
- right, plus catenation of
+ right, plus concatenation of
left's right and right's left. */
- lmp->in = addlists(lmp->in, rmp->in);
+ lmp->in = addlists (lmp->in, rmp->in);
if (lmp->in == NULL)
goto done;
- if (lmp->right[0] != '\0' &&
- rmp->left[0] != '\0')
+ if (lmp->right[0] != '\0' && rmp->left[0] != '\0')
{
char *tp;
- tp = icpyalloc(lmp->right);
- tp = icatalloc(tp, rmp->left);
- lmp->in = enlist(lmp->in, tp, strlen(tp));
- free(tp);
+ tp = icpyalloc (lmp->right);
+ tp = icatalloc (tp, rmp->left);
+ lmp->in = enlist (lmp->in, tp, strlen (tp));
+ free (tp);
if (lmp->in == NULL)
goto done;
}
/* Left-hand */
if (lmp->is[0] != '\0')
{
- lmp->left = icatalloc(lmp->left,
- rmp->left);
+ lmp->left = icatalloc (lmp->left, rmp->left);
if (lmp->left == NULL)
goto done;
}
/* Right-hand */
if (rmp->is[0] == '\0')
lmp->right[0] = '\0';
- lmp->right = icatalloc(lmp->right, rmp->right);
+ lmp->right = icatalloc (lmp->right, rmp->right);
if (lmp->right == NULL)
goto done;
/* Guaranteed to be */
if (lmp->is[0] != '\0' && rmp->is[0] != '\0')
{
- lmp->is = icatalloc(lmp->is, rmp->is);
+ lmp->is = icatalloc (lmp->is, rmp->is);
if (lmp->is == NULL)
goto done;
}
@@ -3956,59 +4057,54 @@ dfamust (struct dfa *d)
/* not on *my* shift */
goto done;
}
- else if (t >= CSET
- || !MBS_SUPPORT
- || t == ANYCHAR
- || t == MBCSET
- )
+ else if (t >= CSET || !MBS_SUPPORT || t == ANYCHAR || t == MBCSET)
{
/* easy enough */
- resetmust(mp);
+ resetmust (mp);
}
else
{
/* plain character */
- resetmust(mp);
+ resetmust (mp);
mp->is[0] = mp->left[0] = mp->right[0] = t;
mp->is[1] = mp->left[1] = mp->right[1] = '\0';
- mp->in = enlist(mp->in, mp->is, (size_t)1);
+ mp->in = enlist (mp->in, mp->is, (size_t) 1);
if (mp->in == NULL)
goto done;
}
break;
}
#ifdef DEBUG
- fprintf(stderr, " node: %d:", ri);
- prtok(d->tokens[ri]);
- fprintf(stderr, "\n in:");
+ fprintf (stderr, " node: %zd:", ri);
+ prtok (d->tokens[ri]);
+ fprintf (stderr, "\n in:");
for (i = 0; mp->in[i]; ++i)
- fprintf(stderr, " \"%s\"", mp->in[i]);
- fprintf(stderr, "\n is: \"%s\"\n", mp->is);
- fprintf(stderr, " left: \"%s\"\n", mp->left);
- fprintf(stderr, " right: \"%s\"\n", mp->right);
+ fprintf (stderr, " \"%s\"", mp->in[i]);
+ fprintf (stderr, "\n is: \"%s\"\n", mp->is);
+ fprintf (stderr, " left: \"%s\"\n", mp->left);
+ fprintf (stderr, " right: \"%s\"\n", mp->right);
#endif
++mp;
}
- done:
- if (strlen(result))
+done:
+ if (strlen (result))
{
- MALLOC(dm, 1);
+ MALLOC (dm, 1);
dm->exact = exact;
- MALLOC(dm->must, strlen(result) + 1);
- strcpy(dm->must, result);
+ dm->must = xmemdup (result, strlen (result) + 1);
dm->next = d->musts;
d->musts = dm;
}
mp = musts;
for (i = 0; i <= d->tindex; ++i)
{
- freelist(mp[i].in);
- free(mp[i].in);
- free(mp[i].left);
- free(mp[i].right);
- free(mp[i].is);
+ freelist (mp[i].in);
+ free (mp[i].in);
+ free (mp[i].left);
+ free (mp[i].right);
+ free (mp[i].is);
}
- free(mp);
+ free (mp);
}
struct dfa *
@@ -4017,7 +4113,7 @@ dfaalloc (void)
return xmalloc (sizeof (struct dfa));
}
-struct dfamust * _GL_ATTRIBUTE_PURE
+struct dfamust *_GL_ATTRIBUTE_PURE
dfamusts (struct dfa const *d)
{
return d->musts;
diff --git a/dfa.h b/dfa.h
index d45f3139..96dd4b86 100644
--- a/dfa.h
+++ b/dfa.h
@@ -1,5 +1,5 @@
/* dfa.h - declarations for GNU deterministic regexp compiler
- Copyright (C) 1988, 1998, 2007, 2009-2011 Free Software Foundation, Inc.
+ Copyright (C) 1988, 1998, 2007, 2009-2012 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -18,17 +18,6 @@
/* Written June, 1988 by Mike Haertel */
-#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6) || __STRICT_ANSI__
-# define __attribute__(x)
-#endif
-
-/* The __pure__ attribute was added in gcc 2.96. */
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE /* empty */
-#endif
-
/* Element of a list of strings, at least one of which is known to
appear in any R.E. matching the DFA. */
struct dfamust
@@ -74,7 +63,7 @@ extern void dfacomp (char const *, size_t, struct dfa *, int);
encountered a back-reference (1) or not (0). The caller may use this
to decide whether to fall back on a backtracking matcher. */
extern char *dfaexec (struct dfa *d, char const *begin, char *end,
- int newline, int *count, int *backref);
+ int newline, size_t *count, int *backref);
/* Free the storage held by the components of a struct dfa. */
extern void dfafree (struct dfa *);
@@ -93,7 +82,7 @@ extern void dfaanalyze (struct dfa *, int);
/* Compute, for each possible character, the transitions out of a given
state, storing them in an array of integers. */
-extern void dfastate (int, struct dfa *, int []);
+extern void dfastate (ptrdiff_t, struct dfa *, ptrdiff_t []);
/* Error handling. */
@@ -106,4 +95,4 @@ extern void dfawarn (const char *);
/* dfaerror() is called by the regexp routines whenever an error occurs. It
takes a single argument, a NUL-terminated string describing the error.
The user must supply a dfaerror. */
-extern void dfaerror (const char *);
+extern _Noreturn void dfaerror (const char *);
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 568d7c78..a04db485 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -17,6 +17,38 @@
* gawk.texi, gawk.1: Add AWKLIBPATH.
+2012-04-27 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawk.texi: Add that -b affects output.
+
+2012-04-27 Arnold D. Robbins <arnold@skeeve.com>
+
+ * texinfo.tex: Update to latest from automake 1.12.
+
+2012-04-09 Arnold D. Robbins <arnold@skeeve.com>
+
+ * texinfo.tex: Update to latest from automake 1.11.4.
+
+2012-04-11 John Haque <j.eh@mchsi.com>
+
+ * gawk.texi: Change RNDMODE to ROUNDMODE.
+ * gawk.1, awkcard.in: Ditto.
+
+2012-04-11 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawk.texi: Change --arbitrary-precision to --bignum.
+ * gawk.1: Ditto.
+ * awkcard.in: Add --bignum, RNDMODE, PREC.
+
+2012-04-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawk.texi: Editing on new chapter on arbitrary precision numbers.
+
+2012-03-31 John Haque <j.eh@mchsi.com>
+
+ * gawk.texi, gawk.1: Add text on support for arbitrary precision
+ numbers.
+
2012-02-06 Arnold D. Robbins <arnold@skeeve.com>
* gawk.texi, gawk.1: And some minor edits thereunto.
@@ -37,6 +69,15 @@
* gawk.1: Same.
* awkcard.in: Same.
+2012-03-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.0.1: Release tar ball made.
+
+2012-02-10 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawk.texi, awkcard.in: Bump patch level.
+ * texinfo.tex: Updated from Texinfo CVS.
+
2011-12-06 Arnold D. Robbins <arnold@skeeve.com>
* gawk.texi: Various typo fixes from mailing list.
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 2d3dbae2..bf4b45a1 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -1,9 +1,9 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -39,6 +39,23 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -58,20 +75,19 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = doc
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog \
- texinfo.tex
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(top_srcdir)/mkinstalldirs ChangeLog texinfo.tex
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/arch.m4 \
$(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/gettext.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/intmax_t.m4 $(top_srcdir)/m4/inttypes_h.m4 \
$(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lcmessage.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libsigsegv.m4 \
- $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/mpfr.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/noreturn.m4 \
$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
$(top_srcdir)/m4/readline.m4 $(top_srcdir)/m4/socket.m4 \
- $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/uintmax_t.m4 \
$(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
@@ -93,6 +109,11 @@ TEXI2PDF = $(TEXI2DVI) --pdf --batch
MAKEINFOHTML = $(MAKEINFO) --html
AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
DVIPS = dvips
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__installdirs = "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)"
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
@@ -115,6 +136,12 @@ am__nobase_list = $(am__nobase_strip_setup); \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
man1dir = $(mandir)/man1
NROFF = nroff
MANS = $(man_MANS)
@@ -153,6 +180,7 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
LDFLAGS = @LDFLAGS@
LIBICONV = @LIBICONV@
LIBINTL = @LIBINTL@
+LIBMPFR = @LIBMPFR@
LIBOBJS = @LIBOBJS@
LIBREADLINE = @LIBREADLINE@
LIBS = @LIBS@
@@ -194,6 +222,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+acl_shlibext = @acl_shlibext@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@@ -228,6 +257,7 @@ mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
+pkgextensiondir = @pkgextensiondir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
@@ -337,12 +367,12 @@ $(am__aclocal_m4_deps):
.texi.dvi:
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
- $(TEXI2DVI) $<
+ $(TEXI2DVI) --clean $<
.texi.pdf:
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
- $(TEXI2PDF) $<
+ $(TEXI2PDF) --clean $<
.texi.html:
rm -rf $(@:.html=.htp)
@@ -367,7 +397,7 @@ gawkinet.pdf: gawkinet.texi
gawkinet.html: gawkinet.texi
.dvi.ps:
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
- $(DVIPS) -o $@ $<
+ $(DVIPS) -o $@ $<
uninstall-dvi-am:
@$(NORMAL_UNINSTALL)
@@ -389,9 +419,7 @@ uninstall-html-am:
uninstall-info-am:
@$(PRE_UNINSTALL)
- @if test -d '$(DESTDIR)$(infodir)' && \
- (install-info --version && \
- install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+ @if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \
list='$(INFO_DEPS)'; \
for file in $$list; do \
relfile=`echo "$$file" | sed 's|^.*/||'`; \
@@ -469,11 +497,18 @@ maintainer-clean-aminfo:
done
install-man1: $(man_MANS)
@$(NORMAL_INSTALL)
- test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
- @list=''; test -n "$(man1dir)" || exit 0; \
- { for i in $$list; do echo "$$i"; done; \
- l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
- sed -n '/\.1[a-z]*$$/p'; \
+ @list1=''; \
+ list2='$(man_MANS)'; \
+ test -n "$(man1dir)" \
+ && test -n "`echo $$list1$$list2`" \
+ || exit 0; \
+ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+ { for i in $$list1; do echo "$$i"; done; \
+ if test -n "$$list2"; then \
+ for i in $$list2; do echo "$$i"; done \
+ | sed -n '/\.1[a-z]*$$/p'; \
+ fi; \
} | while read p; do \
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; echo "$$p"; \
@@ -502,15 +537,15 @@ uninstall-man1:
sed -n '/\.1[a-z]*$$/p'; \
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
- test -z "$$files" || { \
- echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
+ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
+cscope cscopelist:
+
distdir: $(DISTFILES)
@list='$(MANS)'; if test -n "$$list"; then \
@@ -519,10 +554,10 @@ distdir: $(DISTFILES)
if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
if test -n "$$list" && \
grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
- echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+ echo "error: found man pages containing the 'missing help2man' replacement text:" >&2; \
grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \
echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \
- echo " typically \`make maintainer-clean' will remove them" >&2; \
+ echo " typically 'make maintainer-clean' will remove them" >&2; \
exit 1; \
else :; fi; \
else :; fi
@@ -575,10 +610,15 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
@@ -618,8 +658,11 @@ install-dvi: install-dvi-am
install-dvi-am: $(DVIS)
@$(NORMAL_INSTALL)
- test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)"
@list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(dvidir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@@ -634,18 +677,22 @@ install-html: install-html-am
install-html-am: $(HTMLS)
@$(NORMAL_INSTALL)
- test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
@list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
$(am__strip_dir) \
- if test -d "$$d$$p"; then \
+ d2=$$d$$p; \
+ if test -d "$$d2"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
$(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
- echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
- $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
+ echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \
+ $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
else \
- list2="$$list2 $$d$$p"; \
+ list2="$$list2 $$d2"; \
fi; \
done; \
test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \
@@ -657,9 +704,12 @@ install-info: install-info-am
install-info-am: $(INFO_DEPS)
@$(NORMAL_INSTALL)
- test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)"
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \
+ fi; \
for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
@@ -677,8 +727,7 @@ install-info-am: $(INFO_DEPS)
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done
@$(POST_INSTALL)
- @if (install-info --version && \
- install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+ @if $(am__can_run_installinfo); then \
list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
for file in $$list; do \
relfile=`echo "$$file" | sed 's|^.*/||'`; \
@@ -692,8 +741,11 @@ install-pdf: install-pdf-am
install-pdf-am: $(PDFS)
@$(NORMAL_INSTALL)
- test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)"
@list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pdfdir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@@ -705,8 +757,11 @@ install-ps: install-ps-am
install-ps-am: $(PSS)
@$(NORMAL_INSTALL)
- test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)"
@list='$(PSS)'; test -n "$(psdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(psdir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
diff --git a/doc/awkcard.in b/doc/awkcard.in
index c8d41833..b7d87691 100644
--- a/doc/awkcard.in
+++ b/doc/awkcard.in
@@ -1,7 +1,8 @@
.\" AWK Reference Card --- Arnold Robbins, arnold@skeeve.com
.\"
.\" Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-.\" 2003, 2004, 2005, 2007, 2009, 2010, 2011 Free Software Foundation, Inc.
+.\" 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012
+.\" Free Software Foundation, Inc.
.\"
.\" Permission is granted to make and distribute verbatim copies of
.\" this reference card provided the copyright notice and this permission
@@ -100,7 +101,7 @@ Brian Kernighan and Michael Brennan who reviewed it.
.SL
.nf
\*(FRCopyright \(co 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-2005, 2007, 2009, 2010, 2011 Free Software Foundation, Inc.
+2005, 2007, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
.nf
.BT
@@ -281,6 +282,8 @@ If \*(FIvalue\*(FR is
\*(FCinvalid\*(FR,
only issue warnings about things that are
actually invalid (not fully implemented yet).
+.TI "\*(FC\-M\*(FR, \*(FC\-\^\-bignum\*(FR
+Enable arbitrary-precision arithmetic.
.TI "\*(FC\-n\*(FR, \*(FC\-\^\-non\-decimal\-data\*(FR
Recognize octal and hexadecimal values in input data.
\*(FIUse this option with great caution!\*(FR
@@ -299,10 +302,11 @@ of each statement in the program.
.TI "\*(FC\-P\*(FR, \*(FC\-\^\-posix\*(FR
Disable common and GNU extensions.
.TI "\*(FC\-r\*(FR, \*(FC\-\^\-re\-interval\*(FR
-Enable \*(FIinterval expressions\*(FR in regular
-expression matching (see \fHRegular
-Expressions\fP below). Useful if
-\*(FC\-\^\-traditional\*(FR is specified.\*(CB
+Enable \*(FIinterval expressions\*(FR.\*(CB
+... in regular
+... expression matching (see \fHRegular
+... Expressions\fP below). Useful if
+... \*(FC\-\^\-traditional\*(FR is specified
.in -4n
.EB "\s+2\f(HBCOMMAND LINE ARGUMENTS (\*(GK\f(HB)\*(FR\s0"
@@ -609,7 +613,11 @@ T}
\*(FCORS\fP T{
Output record separator, a newline by default.
T}
-\*(CB\*(FCPROCINFO\fP T{
+\*(CB\*(FCPREC\fP T{
+The working precision of arbitrary precision floating-point
+numbers, 53 by default.
+T}
+\*(FCPROCINFO\fP T{
Elements of this array provide access to information
about the running AWK program. See
\*(AM for details.\*(CD
@@ -618,6 +626,10 @@ T}
Length of the string matched by \*(FCmatch()\*(FR;
\-1 if no match.
T}
+\*(CB\*(FCROUNDMODE\fP T{
+The rounding mode to use for arbitrary precision arithmetic,
+by default \*(FC"N"\fP.\*(CD
+T}
\*(FCRS\fP T{
Input record separator, a newline by default
(see \fHRecords\fP above).
@@ -1914,7 +1926,7 @@ to use the current domain.\*(CB
.ES
.nf
\*(CDHost: \*(FCftp.gnu.org\*(FR
-File: \*(FC/gnu/gawk/gawk-4.0.0.tar.gz\fP
+File: \*(FC/gnu/gawk/gawk-4.0.1.tar.gz\fP
.in +.2i
.fi
GNU \*(AK (\*(GK). There may be a later version.
diff --git a/doc/gawk.1 b/doc/gawk.1
index 2e039521..dbc2582b 100644
--- a/doc/gawk.1
+++ b/doc/gawk.1
@@ -354,6 +354,16 @@ only warnings about things that are
actually invalid are issued. (This is not fully implemented yet.)
.TP
.PD 0
+.B \-M
+.TP
+.PD
+.B \-\^\-bignum
+Force arbitrary precision arithmetic on numbers. This option has
+no effect if
+.I gawk
+is not compiled to use the GNU MPFR and MP libraries.
+.TP
+.PD 0
.B \-n
.TP
.PD
@@ -1040,6 +1050,10 @@ The output field separator, a space by default.
.B ORS
The output record separator, by default a newline.
.TP
+.B PREC
+The working precision of arbitrary precision floating-point
+numbers, 53 by default.
+.TP
.B PROCINFO
The elements of this array provide access to information about the
running \*(AK program.
@@ -1146,11 +1160,40 @@ where
is a redirection string or a filename. A value of zero or
less than zero means no timeout.
.TP
+\fBPROCINFO["mpfr_version"]\fP
+the version of the GNU MPFR library used for arbitrary precision
+number support in
+.IR gawk .
+.TP
+\fBPROCINFO["gmp_version"]\fP
+the version of the GNU MP library used for arbitrary precision
+number support in
+.IR gawk .
+.TP
+\fBPROCINFO["prec_max"]\fP
+the maximum precision supported by the GNU MPFR library for
+arbitrary precision floating-point numbers.
+.TP
+\fBPROCINFO["prec_min"]\fP
+the minimum precision allowed by the GNU MPFR library for
+arbitrary precision floating-point numbers.
+.TP
\fBPROCINFO["version"]\fP
the version of
.IR gawk .
.RE
.TP
+.B ROUNDMODE
+The rounding mode to use for arbitrary precision arithmetic on
+numbers, by default \fB"N"\fR (IEEE-754 roundTiesToEven mode).
+The accepted values are
+\fB"N"\fR or \fB"n"\fR for roundTiesToEven,
+\fB"U"\fR or \fB"u"\fR for roundTowardPositive,
+\fB"D"\fR or \fB"d"\fR for roundTowardNegative,
+\fB"Z"\fR or \fB"z"\fR for roundTowardZero,
+and if your version of GNU MPFR library supports it,
+\fB"A"\fR or \fB"a"\fR for roundTiesToAway.
+.TP
.B RS
The input record separator, by default a newline.
.TP
diff --git a/doc/gawk.info b/doc/gawk.info
index 06b8e119..daae67b4 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -10,8 +10,8 @@ START-INFO-DIR-ENTRY
END-INFO-DIR-ENTRY
Copyright (C) 1989, 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011 Free Software
-Foundation, Inc.
+2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012 Free
+Software Foundation, Inc.
This is Edition 4 of `GAWK: Effective AWK Programming: A User's
@@ -42,8 +42,8 @@ This file documents `awk', a program that you can use to select
particular records in a file and perform operations upon them.
Copyright (C) 1989, 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011 Free Software
-Foundation, Inc.
+2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012 Free
+Software Foundation, Inc.
This is Edition 4 of `GAWK: Effective AWK Programming: A User's
@@ -89,6 +89,8 @@ texts being (a) (see below), and with the Back-Cover Texts being (b)
* Functions:: Built-in and user-defined functions.
* Internationalization:: Getting `gawk' to speak your
language.
+* Arbitrary Precision Arithmetic:: Arbitrary precision arithmetic with
+ `gawk'.
* Advanced Features:: Stuff for advanced users, specific to
`gawk'.
* Library Functions:: A Library of `awk' Functions.
@@ -196,6 +198,7 @@ texts being (a) (see below), and with the Back-Cover Texts being (b)
* Getline Notes:: Important things to know about
`getline'.
* Getline Summary:: Summary of `getline' Variants.
+* Read Timeout:: Reading input with a timeout.
* Command line directories:: What happens if you put a directory on the
command line.
* Print:: The `print' statement.
@@ -353,6 +356,21 @@ texts being (a) (see below), and with the Back-Cover Texts being (b)
* I18N Portability:: `awk'-level portability issues.
* I18N Example:: A simple i18n example.
* Gawk I18N:: `gawk' is also internationalized.
+* Floating-point Programming:: Effective floating-point programming.
+* Floating-point Representation:: Binary floating-point representation.
+* Floating-point Context:: Floating-point context.
+* Rounding Mode:: Floating-point rounding mode.
+* Arbitrary Precision Floats:: Arbitrary precision floating-point
+ arithmetic with `gawk'.
+* Setting Precision:: Setting the working precision.
+* Setting Rounding Mode:: Setting the rounding mode.
+* Floating-point Constants:: Representing floating-point constants.
+* Changing Precision:: Changing the precision of a number.
+* Exact Arithmetic:: Exact arithmetic with floating-point numbers.
+* Integer Programming:: Effective integer programming.
+* Arbitrary Precision Integers:: Arbitrary precision integer
+ arithmetic with `gawk'.
+* MPFR and GMP Libraries:: Information about the MPFR and GMP libraries.
* Nondecimal Data:: Allowing nondecimal input data.
* Array Sorting:: Facilities for controlling array traversal
and sorting arrays.
@@ -1101,10 +1119,12 @@ it is today. It has been and continues to be a pleasure working with
this team of fine people.
John Haque contributed the modifications to convert `gawk' into a
-byte-code interpreter, including the debugger. Stephen Davies
-contributed to the effort to bring the byte-code changes into the
-mainstream code base. Efraim Yawitz contributed the initial text of
-*note Debugger::.
+byte-code interpreter, including the debugger, and the additional
+modifications for support of arbitrary precision arithmetic. Stephen
+Davies contributed to the effort to bring the byte-code changes into
+the mainstream code base. Efraim Yawitz contributed the initial text
+of *note Debugger::. John Haque contributed the initial text of *note
+Arbitrary Precision Arithmetic::.
I would like to thank Brian Kernighan for invaluable assistance
during the testing and debugging of `gawk', and for ongoing help and
@@ -1394,7 +1414,8 @@ pass to that interpreter. The operating system then runs the
interpreter with the given argument and the full argument list of the
executed program. The first argument in the list is the full file name
of the `awk' program. The rest of the argument list contains either
-options to `awk', or data files, or both.
+options to `awk', or data files, or both. Note that on many systems
+`awk' may be found in `/usr/bin' instead of in `/bin'. Caveat Emptor.

File: gawk.info, Node: Comments, Next: Quoting, Prev: Executable Scripts, Up: Running gawk
@@ -2182,6 +2203,9 @@ The following list describes options mandated by the POSIX standard:
`-b'
`--characters-as-bytes'
Cause `gawk' to treat all input data as single-byte characters.
+ In addition, all output written with `print' or `printf' are
+ treated as single-byte characters.
+
Normally, `gawk' follows the POSIX standard and attempts to process
its input data according to the current locale. This can often
involve converting multibyte characters into wide characters
@@ -2293,6 +2317,12 @@ The following list describes options mandated by the POSIX standard:
inappropriate construct. As `awk' programs are usually short,
doing so is not burdensome.
+`-M'
+`--bignum'
+ Force arbitrary precision arithmetic on numbers. This option has
+ no effect if `gawk' is not compiled to use the GNU MPFR and MP
+ libraries (*note Arbitrary Precision Arithmetic::).
+
`-n'
`--non-decimal-data'
Enable automatic interpretation of octal and hexadecimal values in
@@ -2629,6 +2659,10 @@ used by regular users.
milliseconds. On systems that do not support the `usleep()' system
call, the value is rounded up to an integral number of seconds.
+`GAWK_READ_TIMEOUT'
+ Specifies the time, in milliseconds, for `gawk' to wait for input
+ before returning with an error. *Note Read Timeout::.
+
The environment variables in the following list are meant for use by
the `gawk' developers for testing and tuning. They are subject to
change. The variables are:
@@ -3191,6 +3225,10 @@ sequences and that are not listed in the table stand for themselves:
constants are valid and work the way you want them to, using any
version of `awk'.(2)
+ Finally, when `{' and `}' appear in regexp constants in a way that
+ cannot be interpreted as an interval expression (such as
+ `/q{a}/'), then they stand for themselves.
+
In regular expressions, the `*', `+', and `?' operators, as well as
the braces `{' and `}', have the highest precedence, followed by
concatenation, and finally by `|'. As in arithmetic, parentheses can
@@ -3626,6 +3664,8 @@ have to be named on the `awk' command line (*note Getline::).
* Multiple Line:: Reading multi-line records.
* Getline:: Reading files under explicit program control
using the `getline' function.
+* Read Timeout:: Reading input with a timeout.
+
* Command line directories:: What happens if you put a directory on the
command line.
@@ -4813,7 +4853,7 @@ feature of `RS' does not apply. It does apply to the default field
separator of a single space: `FS = " "'.

-File: gawk.info, Node: Getline, Next: Command line directories, Prev: Multiple Line, Up: Reading Files
+File: gawk.info, Node: Getline, Next: Read Timeout, Prev: Multiple Line, Up: Reading Files
4.9 Explicit Input with `getline'
=================================
@@ -5238,9 +5278,101 @@ VAR
Table 4.1: getline Variants and What They Set

-File: gawk.info, Node: Command line directories, Prev: Getline, Up: Reading Files
+File: gawk.info, Node: Read Timeout, Next: Command line directories, Prev: Getline, Up: Reading Files
+
+4.10 Reading Input With A Timeout
+=================================
+
+You may specify a timeout in milliseconds for reading input from a
+terminal, pipe or two-way communication including, TCP/IP sockets. This
+can be done on a per input, command or connection basis, by setting a
+special element in the `PROCINFO' array:
+
+ PROCINFO["input_name", "READ_TIMEOUT"] = TIMEOUT IN MILLISECONDS
+
+ When set, this will cause `gawk' to time out and return failure if
+no data is available to read within the specified timeout period. For
+example, a TCP client can decide to give up on receiving any response
+from the server after a certain amount of time:
+
+ Service = "/inet/tcp/0/localhost/daytime"
+ PROCINFO[Service, "READ_TIMEOUT"] = 100
+ if ((Service |& getline) > 0)
+ print $0
+ else if (ERRNO != "")
+ print ERRNO
+
+ Here is how to read interactively from the terminal(1) without
+waiting for more than five seconds:
+
+ PROCINFO["/dev/stdin", "READ_TIMEOUT"] = 5000
+ while ((getline < "/dev/stdin") > 0)
+ print $0
+
+ `gawk' will terminate the read operation if input does not arrive
+after waiting for the timeout period, return failure and set the
+`ERRNO' variable to an appropriate string value. A negative or zero
+value for the timeout is the same as specifying no timeout at all.
+
+ A timeout can also be set for reading from the terminal in the
+implicit loop that reads input records and matches them against
+patterns, like so:
+
+ $ gawk 'BEGIN { PROCINFO["-", "READ_TIMEOUT"] = 5000 }
+ > { print "You entered: " $0 }'
+ gawk
+ -| You entered: gawk
+
+ In this case, failure to respond within five seconds results in the
+following error message:
+
+ error--> gawk: cmd. line:2: (FILENAME=- FNR=1) fatal: error reading input file `-': Connection timed out
+
+ The timeout can be set or changed at any time, and will take effect
+on the next attempt to read from the input device. In the following
+example, we start with a timeout value of one second, and progressively
+reduce it by one-tenth of a second until we wait indefinitely for the
+input to arrive:
+
+ PROCINFO[Service, "READ_TIMEOUT"] = 1000
+ while ((Service |& getline) > 0) {
+ print $0
+ PROCINFO[S, "READ_TIMEOUT"] -= 100
+ }
+
+ NOTE: You should not assume that the read operation will block
+ exactly after the tenth record has been printed. It is possible
+ that `gawk' will read and buffer more than one record's worth of
+ data the first time. Because of this, changing the value of
+ timeout like in the above example is not very useful.
+
+ If the `PROCINFO' element is not present and the environment
+variable `GAWK_READ_TIMEOUT' exists, `gawk' uses its value to
+initialize the timeout value. The exclusive use of the environment
+variable to specify timeout has the disadvantage of not being able to
+control it on a per command or connection basis.
+
+ `gawk' considers a timeout event to be an error even though the
+attempt to read from the underlying device may succeed in a later
+attempt. This is a limitation, and it also means that you cannot use
+this to multiplex input from two or more sources.
+
+ Assigning a timeout value prevents read operations from blocking
+indefinitely. But bear in mind that there are other ways `gawk' can
+stall waiting for an input device to be ready. A network client can
+sometimes take a long time to establish a connection before it can
+start reading any data, or the attempt to open a FIFO special file for
+reading can block indefinitely until some other process opens it for
+writing.
+
+ ---------- Footnotes ----------
+
+ (1) This assumes that standard input is the keyboard
+
+
+File: gawk.info, Node: Command line directories, Prev: Read Timeout, Up: Reading Files
-4.10 Directories On The Command Line
+4.11 Directories On The Command Line
====================================
According to the POSIX standard, files named on the `awk' command line
@@ -9199,6 +9331,15 @@ specific to `gawk' are marked with a pound sign (`#').
every `print' statement. Its default value is `"\n"', the newline
character. (*Note Output Separators::.)
+`PREC #'
+ The working precision of arbitrary precision floating-point
+ numbers, 53 by default (*note Setting Precision::).
+
+`ROUNDMODE #'
+ The rounding mode to use for arbitrary precision arithmetic on
+ numbers, by default `"N"' (`roundTiesToEven' in the IEEE-754
+ standard) (*note Setting Rounding Mode::).
+
`RS'
This is `awk''s input record separator. Its default value is a
string containing a single newline character, which means that an
@@ -9404,6 +9545,23 @@ with a pound sign (`#').
`PROCINFO["version"]'
The version of `gawk'.
+ The following additional elements in the array are available to
+ provide information about the MPFR and GMP libraries if your
+ version of `gawk' supports arbitrary precision numbers (*note
+ Arbitrary Precision Arithmetic::):
+
+ `PROCINFO["mpfr_version"]'
+ The version of the GNU MPFR library.
+
+ `PROCINFO["gmp_version"]'
+ The version of the GNU MP library.
+
+ `PROCINFO["prec_max"]'
+ The maximum precision supported by MPFR.
+
+ `PROCINFO["prec_min"]'
+ The minimum precision required by MPFR.
+
On some systems, there may be elements in the array, `"group1"'
through `"groupN"' for some N. N is the number of supplementary
groups that the process has. Use the `in' operator to test for
@@ -10573,7 +10731,8 @@ with numbers. Optional parameters are enclosed in square
brackets ([ ]):
`atan2(Y, X)'
- Return the arctangent of `Y / X' in radians.
+ Return the arctangent of `Y / X' in radians. You can use `pi =
+ atan2(0, -1)' to retrieve the value of pi.
`cos(X)'
Return the cosine of X, with X in radians.
@@ -12916,7 +13075,7 @@ example, in the following case:
`gawk' will look up the actual function to call only once.

-File: gawk.info, Node: Internationalization, Next: Advanced Features, Prev: Functions, Up: Top
+File: gawk.info, Node: Internationalization, Next: Arbitrary Precision Arithmetic, Prev: Functions, Up: Top
10 Internationalization with `gawk'
***********************************
@@ -13496,9 +13655,745 @@ writing, the latest version of GNU `gettext' is version 0.18.1
usage messages, warnings, and fatal errors in the local language.

-File: gawk.info, Node: Advanced Features, Next: Library Functions, Prev: Internationalization, Up: Top
+File: gawk.info, Node: Arbitrary Precision Arithmetic, Next: Advanced Features, Prev: Internationalization, Up: Top
+
+11 Arbitrary Precision Arithmetic with `gawk'
+*********************************************
+
+ There's a credibility gap: We don't know how much of the
+ computer's answers to believe. Novice computer users solve this
+ problem by implicitly trusting in the computer as an infallible
+ authority; they tend to believe that all digits of a printed
+ answer are significant. Disillusioned computer users have just the
+ opposite approach; they are constantly afraid that their answers
+ are almost meaningless.
+
+ Donald Knuth(1)
+
+ This minor node decsribes how to use the arbitrary precision (also
+known as "multiple precision" or "infinite precision") numeric
+capabilites in `gawk' to produce maximally accurate results when you
+need it. But first you should check if your version of `gawk' supports
+arbitrary precision arithmetic. The easiest way to find out is to look
+at the output of the following command:
+
+ $ gawk --version
+ -| GNU Awk 4.1.0 (GNU MPFR 3.1.0, GNU MP 5.0.3)
+ -| Copyright (C) 1989, 1991-2012 Free Software Foundation.
+ ...
+
+ `gawk' uses the GNU MPFR (http://www.mpfr.org) and GNU MP
+(http://gmplib.org) (GMP) libraries for arbitrary precision arithmetic
+on numbers. So if you do not see the names of these libraries in the
+output, then your version of `gawk' does not support arbitrary
+precision arithmetic.
+
+ Even if you aren't interested in arbitrary precision arithmetic, you
+may still benifit from knowing about how `gawk' handles numbers in
+general, and the limitations of doing arithmetic with ordinary `gawk'
+numbers.
+
+* Menu:
+
+* Floating-point Programming:: Effective Floating-point Programming.
+* Floating-point Representation:: Binary Floating-point Representation.
+* Floating-point Context:: Floating-point Context.
+* Rounding Mode:: Floating-point Rounding Mode.
+* Arbitrary Precision Floats:: Arbitrary Precision Floating-point
+ Arithmetic with `gawk'.
+* Setting Precision:: Setting the Working Precision.
+* Setting Rounding Mode:: Setting the Rounding Mode.
+* Floating-point Constants:: Representing Floating-point Constants.
+* Changing Precision:: Changing the Precision of a Number.
+* Exact Arithmetic:: Exact Arithmetic with Floating-point Numbers.
+* Integer Programming:: Effective Integer Programming.
+* Arbitrary Precision Integers:: Arbitrary Precision Integer
+ Arithmetic with `gawk'.
+* MPFR and GMP Libraries:: Information About the MPFR and GMP Libraries.
+
+ ---------- Footnotes ----------
+
+ (1) Donald E. Knuth. `The Art of Computer Programming'. Volume 2,
+`Seminumerical Algorithms', third edition, 1998, ISBN 0-201-89683-4, p.
+229.
+
+
+File: gawk.info, Node: Floating-point Programming, Next: Floating-point Representation, Up: Arbitrary Precision Arithmetic
+
+11.1 Effective Floating-point Programming
+=========================================
+
+Numerical programming is an extensive area; if you need to develop
+sophisticated numerical algorithms then `gawk' may not be the ideal
+tool, and this documentation may not be sufficient. It might require a
+book or two to communicate how to compute with ideal accuracy and
+precision and the result often depends on the particular application.
+
+ NOTE: A floating-point calculation's "accuracy" is how close it
+ comes to the real value. This is as opposed to the "precision",
+ which usually refers to the number of bits used to represent the
+ number (see the Wikipedia article
+ (http://en.wikipedia.org/wiki/Accuracy_and_precision) for more
+ information).
+
+ Binary floating-point representations and arithmetic are inexact.
+Simple values like 0.1 cannot be precisely represented using binary
+floating-point numbers, and the limited precision of floating-point
+numbers means that slight changes in the order of operations or the
+precision of intermediate storage can change the result. To make
+matters worse with arbitrary precision floating-point, you can set the
+precision before starting a computation, but then you cannot be sure of
+the number of significant decimal places in the final result.
+
+ Sometimes you need to think more about what you really want and
+what's really happening. Consider the two numbers in the following
+example:
+
+ x = 0.875 # 1/2 + 1/4 + 1/8
+ y = 0.425
+
+ Unlike the number in `y', the number stored in `x' is exactly
+representable in binary since it can be written as a finite sum of one
+or more fractions whose denominators are all powers of two. When
+`gawk' reads a floating-point number from program source, it
+automatically rounds that number to whatever precision your machine
+supports. If you try to print the numeric content of a variable using
+an output format string of `"%.17g"', it may not produce the same
+number as you assigned to it:
+
+ $ gawk 'BEGIN { x = 0.875; y = 0.425
+ > printf("%0.17g, %0.17g\n", x, y) }'
+ -| 0.875, 0.42499999999999999
+
+ 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
+previous example, produces an output identical to the input.
+
+ Because the underlying representation can be little bit off from the
+exact value, comparing floats to see if they are equal is generally not
+a good idea. Here is an example where it does not work like you expect:
+
+ $ gawk 'BEGIN { print (0.1 + 12.2 == 12.3) }'
+ -| 0
+
+ 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,
+the error can accumulate and greatly affect the computation itself.
+Here is an attempt to compute the value of the constant pi using one of
+its many series representations:
+
+ BEGIN {
+ x = 1.0 / sqrt(3.0)
+ n = 6
+ for (i = 1; i < 30; i++) {
+ n = n * 2.0
+ x = (sqrt(x * x + 1) - 1) / x
+ printf("%.15f\n", n * x)
+ }
+ }
+
+ When run, the early errors propagating through later computations
+cause the loop to terminate prematurely after an attempt to divide by
+zero.
+
+ $ gawk -f pi.awk
+ -| 3.215390309173475
+ -| 3.159659942097510
+ -| 3.146086215131467
+ -| 3.142714599645573
+ ...
+ -| 3.224515243534819
+ -| 2.791117213058638
+ -| 0.000000000000000
+ error--> gawk: pi.awk:6: fatal: division by zero attempted
+
+ Here is one more example where the inaccuracies in internal
+representations yield an unexpected result:
+
+ $ gawk 'BEGIN {
+ > for (d = 1.1; d <= 1.5; d += 0.1)
+ > i++
+ > print i
+ > }'
+ -| 4
+
+ Can computation using aribitrary precision help with the previous
+examples? If you are impatient to know, see *note Exact Arithmetic::.
+
+ Instead of aribitrary precision floating-point arithmetic, often all
+you need is an adjustment of your logic or a different order for the
+operations in your calculation. The stability and the accuracy of the
+computation of the constant pi in the previous example can be enhanced
+by using the following simple algebraic transformation:
+
+ (sqrt(x * x + 1) - 1) / x = x / (sqrt(x * x + 1) + x)
+
+ There is no need to be unduly suspicious about the results from
+floating-point arithmetic. The lesson to remember is that
+floating-point math is always more complex than the math using pencil
+and paper. In order to take advantage of the power of computer
+floating-point, 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 in the end if you simply round the display of your
+final results to the correct number of significant decimal digits.
+Avoid presenting numerical data in a manner that implies better
+precision than is actually the case.
+
+
+File: gawk.info, Node: Floating-point Representation, Next: Floating-point Context, Prev: Floating-point Programming, Up: Arbitrary Precision Arithmetic
+
+11.2 Binary Floating-point Representation
+=========================================
+
+Although floating-point representations vary from machine to machine,
+the most commonly encountered representation is that defined by the
+IEEE 754 Standard. An IEEE-754 format value has three components:
+
+ * a sign bit telling whether the number is positive or negative,
+
+ * an "exponent" giving its order of magnitude, E,
+
+ * and a "significand", S, specifying the actual digits of the number.
+
+ The value of the number is then S * 2^E. The first bit of a
+non-zero binary significand is always one, so the significand in an
+IEEE-754 format only includes the fractional part, leaving the leading
+one implicit.
+
+ Three of the standard IEEE-754 types are 32-bit single precision,
+64-bit double precision and 128-bit quadruple precision. The standard
+also specifies extended precision formats to allow greater precisions
+and larger exponent ranges.
+
+
+File: gawk.info, Node: Floating-point Context, Next: Rounding Mode, Prev: Floating-point Representation, Up: Arbitrary Precision Arithmetic
+
+11.3 Floating-point Context
+===========================
+
+A floating-point context defines the environment for arithmetic
+operations. It governs precision, sets rules for rounding and limits
+range for exponents. The context has the following primary components:
+
+`precision'
+ Precision of the floating-point format in bits.
+
+`emax'
+ Maximum exponent allowed for this format.
+
+`emin'
+ Minimum exponent allowed for this format.
+
+`underflow behavior'
+ The format may or may not support gradual underflow.
+
+`rounding'
+ The rounding mode of this context.
-11 Advanced Features of `gawk'
+ *note table-ieee-formats:: lists the precision and exponent field
+values for the basic IEEE-754 binary formats:
+
+Name Total bits Precision emin emax
+---------------------------------------------------------------------------
+Single 32 24 -126 +127
+Double 64 53 -1022 +1023
+Quadruple 128 113 -16382 +16383
+
+Table 11.1: Basic IEEE Formats
+
+ NOTE: The precision numbers include the implied leading one that
+ gives them one extra bit of significand.
+
+ A floating-point context can also determine which signals are treated
+as exceptions, and can set rules for arithmetic with special values.
+Please consult the IEEE-754 standard or other resources for details.
+
+ `gawk' ordinarily uses the hardware double precision representation
+for numbers. On most systems, this is IEEE-754 floating-point format,
+corresponding to 64-bit binary with 53 bits of precision.
+
+ NOTE: In case an underflow occurs, the standard allows, but does
+ not require, the result from an arithmetic operation to be a
+ number smaller than the smallest nonzero normalized number. Such
+ numbers do not have as many significant digits as normal numbers,
+ and are called "denormals" or "subnormals". The alternative,
+ simply returning a zero, is called "flush to zero". The basic
+ IEEE-754 binary formats support subnormal numbers.
+
+
+File: gawk.info, Node: Rounding Mode, Next: Arbitrary Precision Floats, Prev: Floating-point Context, Up: Arbitrary Precision Arithmetic
+
+11.4 Floating-point Rounding Mode
+=================================
+
+The "rounding mode" specifies the behavior for the results of numerical
+operations when discarding extra precision. Each rounding mode indicates
+how the least significant returned digit of a rounded result is to be
+calculated. The `ROUNDMODE' variable (*note Setting Rounding Mode::)
+provides program level control over the rounding mode. *note
+table-rounding-modes:: lists the IEEE-754 defined rounding modes:
+
+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 zero `roundTowardZero' `"Z"' or `"z"'
+Round to nearest, ties away `roundTiesToAway' `"A"' or `"a"'
+from zero
+
+Table 11.2: Rounding Modes
+
+ The default mode `roundTiesToEven' is the most preferred, but the
+least intuitive. This method does the obvious thing for most values, by
+rounding them up or down to the nearest digit. For example, rounding
+1.132 to two digits yields 1.13, and rounding 1.157 yields 1.16.
+
+ However, when it comes to rounding a value that is exactly halfway
+between, things do not work the way you probably learned in school. In
+this case, the number is rounded to the nearest even digit. So
+rounding 0.125 to two digits rounds down to 0.12, but rounding 0.6875
+to three digits rounds up to 0.688. You probably have already
+encountered this rounding mode when using the `printf' routine to
+format floating-point numbers. For example:
+
+ BEGIN {
+ x = -4.5
+ for (i = 1; i < 10; i++) {
+ x += 1.0
+ printf("%4.1f => %2.0f\n", x, x)
+ }
+ }
+
+produces the following output when run(1):
+
+ -3.5 => -4
+ -2.5 => -2
+ -1.5 => -2
+ -0.5 => 0
+ 0.5 => 0
+ 1.5 => 2
+ 2.5 => 2
+ 3.5 => 4
+ 4.5 => 4
+
+ The theory behind the rounding mode `roundTiesToEven' is that it
+more or less evenly distributes upward and downward rounds of exact
+halves, which might cause the round-off error to cancel itself out.
+This is the default rounding mode used in IEEE-754 computing functions
+and operators.
+
+ The other rounding modes are rarely used. Round toward positive
+infinity (`roundTowardPositive') and round 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 used for
+converting floating-point numbers to integers. The rounding mode
+`roundTiesToAway' rounds the result to the nearest number and selects
+the number with the larger magnitude if a tie occurs.
+
+ Some numerical analysts will tell you that your choice of rounding
+style has tremendous impact on the final outcome, and advise you to
+wait until final output for any rounding. Instead, you can often
+achieve this goal by setting the precision initially to some value
+sufficiently larger than the final desired precision, so that the
+accumulation of round-off error does not influence the outcome. If you
+suspect that results from your computation are sensitive to
+accumulation of round-off error, one way to be sure is to look for a
+significant difference in output when you change the rounding mode.
+
+ ---------- Footnotes ----------
+
+ (1) It is possible for the output to be completely different if the
+C library in your system does not use the IEEE-754 even-rounding rule
+to round halfway cases for `printf()'.
+
+
+File: gawk.info, Node: Arbitrary Precision Floats, Next: Setting Precision, Prev: Rounding Mode, Up: Arbitrary Precision Arithmetic
+
+11.5 Arbitrary Precision Floating-point Arithmetic with `gawk'
+==============================================================
+
+`gawk' uses the GNU MPFR library for arbitrary precision floating-point
+arithmetic. The MPFR library provides precise control over precisions
+and rounding modes, and gives correctly rounded reproducible
+platform-independent results. With the command-line option `--bignum'
+or `-M', all floating-point arithmetic operators and numeric functions
+can yield results to any desired precision level supported by MPFR.
+Two built-in variables `PREC' (*note Setting Precision::) and
+`ROUNDMODE' (*note Setting Rounding Mode::) provide control over the
+working precision and the rounding mode. The precision and the
+rounding mode are set globally for every operation to follow.
+
+ The default working precision for arbitrary precision floats is 53,
+and the default value for `ROUNDMODE' is `"N"', which selects the
+IEEE-754 `roundTiesToEven' (*note Rounding Mode::) rounding mode.(1)
+`gawk' uses the default exponent range in MPFR (EMAX = 2^30 - 1, EMIN =
+-EMAX) for all floating-point contexts. There is no explicit mechanism
+to adjust the exponent range. MPFR does not implement subnormal
+numbers by default, and this behavior cannot be changed in `gawk'.
+
+ NOTE: When emulating an IEEE-754 format (*note Setting
+ Precision::), `gawk' internally adjusts the exponent range to the
+ value defined for the format and also performs computations needed
+ for gradual underflow (subnormal numbers).
+
+ NOTE: MPFR numbers are variable-size entities, consuming only as
+ much space as needed to store the significant digits. Since the
+ performance using MPFR numbers pales in comparison to doing math
+ using the underlying machine types, you should consider using only
+ as much precision as needed by your program.
+
+ ---------- Footnotes ----------
+
+ (1) The default precision is 53, since according to the MPFR
+documentation, the library should be able to exactly reproduce all
+computations with double-precision machine floating-point numbers
+(`double' type in C), except the default exponent range is much wider
+and subnormal numbers are not implemented.
+
+
+File: gawk.info, Node: Setting Precision, Next: Setting Rounding Mode, Prev: Arbitrary Precision Floats, Up: Arbitrary Precision Arithmetic
+
+11.6 Setting the Working Precision
+==================================
+
+`gawk' uses a global working precision; it does not keep track of the
+precision or accuracy of individual numbers. Performing an arithmetic
+operation or calling a built-in function rounds the result to the
+current working precision. The default working precision is 53 which
+can be modified using the built-in variable `PREC'. You can also set the
+value to one of the following pre-defined case-insensitive strings to
+emulate an IEEE-754 binary format:
+
+`PREC' IEEE-754 Binary Format
+---------------------------------------------------
+`"half"' 16-bit half-precision.
+`"single"' Basic 32-bit single precision.
+`"double"' Basic 64-bit double precision.
+`"quad"' Basic 128-bit quadruple precision.
+`"oct"' 256-bit octuple precision.
+
+ The following example illustrates the effects of changing precision
+on arithmetic operations:
+
+ $ gawk -M -vPREC=100 'BEGIN { x = 1.0e-400; print x + 0; \
+ > PREC = "double"; print x + 0 }'
+ -| 1e-400
+ -| 0
+
+ Binary and decimal precisions are related approximately according to
+the formula:
+
+ PREC = 3.322 * DPS
+
+Here, PREC denotes the binary precision (measured in bits) and DPS
+(short for decimal places) is the decimal digits. We can easily
+calculate how many decimal digits the 53-bit significand of an IEEE
+double is equivalent to: 53 / 3.332 which is equal to about 15.95. But
+what does 15.95 digits actually mean? It depends whether you are
+concerned about how many digits you can rely on, or how many digits you
+need.
+
+ It is important to know how many bits it takes to uniquely identify
+a double-precision value (the C type `double'). If you want to convert
+from `double' to decimal and back to `double' (e.g., saving a `double'
+representing an intermediate result to a file, and later reading it
+back to restart the computation), then a few more decimal digits are
+required. 17 digits is generally enough for a `double'.
+
+ It can also be important to know what decimal numbers can be uniquely
+represented with a `double'. If you want to convert from decimal to
+`double' and back again, 15 digits is the most that you can get. Stated
+differently, you should not present the numbers from your
+floating-point computations with more than 15 significant digits in
+them.
+
+ Conversely, it takes a precision of 332 bits to hold an approximation
+of constant pi that is accurate to 100 decimal places. You should
+always add some extra bits in order to avoid the confusing round-off
+issues that occur because numbers are stored internally in binary.
+
+
+File: gawk.info, Node: Setting Rounding Mode, Next: Floating-point Constants, Prev: Setting Precision, Up: Arbitrary Precision Arithmetic
+
+11.7 Setting the Rounding Mode
+==============================
+
+The built-in variable `ROUNDMODE' has the default value `"N"', which
+selects the IEEE-754 rounding mode `roundTiesToEven'. The other
+possible values for `ROUNDMODE' are `"U"' for rounding mode
+`roundTowardPositive', `"D"' for `roundTowardNegative', and `"Z"' for
+`roundTowardZero'. `gawk' also accepts `"A"' to select the IEEE-754
+mode `roundTiesToAway' if your version of the MPFR library supports it;
+otherwise setting `ROUNDMODE' to this value has no effect. *Note
+Rounding Mode::, for the meanings of the various rounding modes.
+
+ Here is an example of how to change the default rounding behavior of
+`printf''s output:
+
+ $ gawk -M -vROUNDMODE="Z" 'BEGIN { printf("%.2f\n", 1.378) }'
+ -| 1.37
+
+
+File: gawk.info, Node: Floating-point Constants, Next: Changing Precision, Prev: Setting Rounding Mode, Up: Arbitrary Precision Arithmetic
+
+11.8 Representing Floating-point Constants
+==========================================
+
+Be wary of floating-point constants! When reading a floating-point
+constant from program source code, `gawk' uses the default precision,
+unless overridden by an assignment to the special variable `PREC' on
+the command line, to store it internally as a MPFR number. Changing
+the precision using `PREC' in the program text does not change the
+precision of a constant. If you need to represent a floating-point
+constant at a higher precision than the default and cannot use a
+command line assignment to `PREC', you should either specify the
+constant as a string, or a rational number whenever possible. The
+following 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 -vPREC = 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
+
+ In the first case, the number is stored with the default precision
+of 53.
+
+
+File: gawk.info, Node: Changing Precision, Next: Exact Arithmetic, Prev: Floating-point Constants, Up: Arbitrary Precision Arithmetic
+
+11.9 Changing the Precision of a Number
+=======================================
+
+ The point is that in any variable-precision package, a decision is
+ made on how to treat numbers given as data, or arising in
+ intermediate results, which are represented in floating-point
+ format to a precision lower than working precision. Do we promote
+ them to full membership of the high-precision club, or do we treat
+ them and all their associates as second-class citizens? Sometimes
+ the first course is proper, sometimes the second, and it takes
+ careful analysis to tell which.
+
+ Dirk Laurie(1)
+
+ `gawk' does not implicitly modify the precision of any previously
+computed results when the working precision is changed with an
+assignment to `PREC'. The precision of a number is always the one that
+was used at the time of its creation, and there is no way for the user
+to explicitly change it afterwards. However, since the result of a
+floating-point arithmetic operation is always an arbitrary precision
+floating-point value--with a precision set by the value of `PREC'--one
+of the following workarounds effectively accomplishes the desired
+behavior:
+
+ x = x + 0.0
+
+or:
+
+ x += 0.0
+
+ ---------- Footnotes ----------
+
+ (1) Dirk Laurie. `Variable-precision Arithmetic Considered Perilous
+- A Detective Story'. Electronic Transactions on Numerical Analysis.
+Volume 28, pp. 168-173, 2008.
+
+
+File: gawk.info, Node: Exact Arithmetic, Next: Integer Programming, Prev: Changing Precision, Up: Arbitrary Precision Arithmetic
+
+11.10 Exact Arithmetic with Floating-point Numbers
+==================================================
+
+ CAUTION: Never depend on the exactness of floating-point
+ arithmetic, even for apparently simple expressions!
+
+ Can arbitrary precision arithmetic give exact results? There are 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 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
+they are not equal! (*Note Floating-point Programming::.) You can get
+the result you want by increasing the precision; 56 in this case will
+get the job done:
+
+ $ gawk -M -vPREC=56 'BEGIN { print (0.1 + 12.2 == 12.3) }'
+ -| 1
+
+ If adding more bits is good, perhaps adding even more bits of
+precision is better? Here is what happens if we use an even larger
+value of `PREC':
+
+ $ gawk -M -vPREC=201 'BEGIN { print (0.1 + 12.2 == 12.3) }'
+ -| 0
+
+ This is not a bug in `gawk' or in the MPFR library. It is easy to
+forget that the finite number of bits used to store the value is often
+just an approximation after proper rounding. The test for equality
+succeeds if and only if _all_ bits in the two operands are exactly the
+same. Since this is not necessarily true after floating-point
+computations with a particular precision and effective rounding rule, a
+straight test for equality may not work.
+
+ So, don't assume that floating-point values can be compared for
+equality. You should also exercise caution when using other forms of
+comparisons. The standard way to compare between floating-point
+numbers is to determine how much error (or "tolerance") you will allow
+in a comparison and check to see if one value is within this error
+range of the other.
+
+ In applications where 15 or fewer decimal places suffice, hardware
+double precision arithmetic can be adequate, and is usually much faster.
+But you do need to keep in mind that every floating-point operation can
+suffer a new rounding error with catastrophic consequences as
+illustrated by our attempt to compute the value of the constant pi,
+(*note Floating-point Programming::). 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 last example (*note Floating-point
+Programming::), you may or may not succeed in getting the correct
+result by choosing an arbitrarily large value for `PREC'. Reformulation
+of the problem at hand is often the correct approach in such situations.
+
+
+File: gawk.info, Node: Integer Programming, Next: Arbitrary Precision Integers, Prev: Exact Arithmetic, Up: Arbitrary Precision Arithmetic
+
+11.11 Effective Integer Programming
+===================================
+
+As has been mentioned already, `gawk' ordinarily uses hardware double
+precision with 64-bit IEEE binary floating-point representation for
+numbers on most systems. A large integer like 9007199254740997 has a
+binary representation that, although finite, is more than 53 bits long;
+it must also be rounded to 53 bits. The biggest integer that can be
+stored in a C `double' is usually the same as the largest possible
+value of a `double'. If your system `double' is an IEEE 64-bit
+`double', this largest possible value is an integer and can be
+represented precisely. What more should one know about integers?
+
+ If you want to know what is the largest integer, such that it and
+all smaller integers can be stored in 64-bit doubles without losing
+precision, then the answer is 2^53. The next representable number is
+the even number 2^53 + 2, meaning it is unlikely that you will be able
+to make `gawk' print 2^53 + 1 in integer format. The range of integers
+exactly representable by a 64-bit double is [-2^53, 2^53]. If you ever
+see an integer outside this range in `gawk' using 64-bit doubles, you
+have reason to be very suspicious about the accuracy of the output.
+Here is a simple program with erroneous output:
+
+ $ gawk 'BEGIN { i = 2^53 - 1; for (j = 0; j < 4; j++) print i + j }'
+ -| 9007199254740991
+ -| 9007199254740992
+ -| 9007199254740992
+ -| 9007199254740994
+
+ The lesson is to not assume that any large integer printed by `gawk'
+represents an exact result from your computation, especially if it wraps
+around on your screen.
+
+
+File: gawk.info, Node: Arbitrary Precision Integers, Next: MPFR and GMP Libraries, Prev: Integer Programming, Up: Arbitrary Precision Arithmetic
+
+11.12 Arbitrary Precision Integer Arithmetic with `gawk'
+========================================================
+
+If the option `--bignum' or `-M' is specified, `gawk' performs all
+integer arithmetic using GMP arbitrary precision integers. Any number
+that looks like an integer in a program source or data file is stored
+as an arbitrary precision integer. The size of the integer is limited
+only by your computer's memory. The current floating-point context has
+no effect on operations involving integers. For example, the following
+computes 5^4^3^2, the result of which is beyond the limits of ordinary
+`gawk' numbers:
+
+ $ gawk -M 'BEGIN {
+ > x = 5^4^3^2
+ > print "# of digits =", length(x)
+ > print substr(x, 1, 20), "...", substr(x, length(x) - 19, 20)
+ > }'
+ -| # of digits = 183231
+ -| 62060698786608744707 ... 92256259918212890625
+
+ If you were to compute the same value using arbitrary precision
+floating-point values instead, the precision needed for 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
+floating-point value is a floating-point value with a precision equal
+to the working precision. The following program calculates the eighth
+term in Sylvester's sequence(1) using a recurrence:
+
+ $ gawk -M 'BEGIN {
+ > s = 2.0
+ > for (i = 1; i <= 7; i++)
+ > s = s * (s - 1) + 1
+ > print s
+ > }'
+ -| 113423713055421845118910464
+
+ The output differs from the acutal number,
+113423713055421844361000443, because the default precision of 53 is not
+enough to represent the floating-point results exactly. You can either
+increase the precision (100 is enough in this case), or replace the
+floating-point constant `2.0' with an integer, to perform all
+computations using integer arithmetic to get the correct output.
+
+ It will sometimes be necessary for `gawk' to implicitly convert an
+arbitrary precision integer into an arbitrary precision floating-point
+value. This is primarily because the MPFR library does not always
+provide the relevant 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 like
+this:
+
+ gawk -M 'BEGIN { n = 13; print (n + 0.0) % 2.0 }'
+
+ You can avoid this issue altogether by specifying the number as a
+float to begin with:
+
+ gawk -M 'BEGIN { n = 13.0; print n % 2.0 }'
+
+ Note that for the particular example above, there is unlikely to be a
+reason for simply not using the following:
+
+ gawk -M 'BEGIN { n = 13; print n % 2 }'
+
+ ---------- Footnotes ----------
+
+ (1) Weisstein, Eric W. `Sylvester's Sequence'. From MathWorld-A
+Wolfram Web Resource.
+`http://mathworld.wolfram.com/SylvestersSequence.html'
+
+
+File: gawk.info, Node: MPFR and GMP Libraries, Prev: Arbitrary Precision Integers, Up: Arbitrary Precision Arithmetic
+
+11.13 Information About the MPFR and GMP Libraries
+==================================================
+
+There are a few elements available in the `PROCINFO' array to provide
+information about the MPFR and GMP libraries. *Note Auto-set::, for
+more information.
+
+
+File: gawk.info, Node: Advanced Features, Next: Library Functions, Prev: Arbitrary Precision Arithmetic, Up: Top
+
+12 Advanced Features of `gawk'
******************************
Write documentation as if whoever reads it is a violent psychopath
@@ -13531,7 +14426,7 @@ and likely to change, its description is relegated to an appendix.

File: gawk.info, Node: Nondecimal Data, Next: Array Sorting, Up: Advanced Features
-11.1 Allowing Nondecimal Input Data
+12.1 Allowing Nondecimal Input Data
===================================
If you run `gawk' with the `--non-decimal-data' option, you can have
@@ -13573,7 +14468,7 @@ request it.

File: gawk.info, Node: Array Sorting, Next: Two-way I/O, Prev: Nondecimal Data, Up: Advanced Features
-11.2 Controlling Array Traversal and Array Sorting
+12.2 Controlling Array Traversal and Array Sorting
==================================================
`gawk' lets you control the order in which a `for (i in array)' loop
@@ -13592,7 +14487,7 @@ to order the elements during sorting.

File: gawk.info, Node: Controlling Array Traversal, Next: Array Sorting Functions, Up: Array Sorting
-11.2.1 Controlling Array Traversal
+12.2.1 Controlling Array Traversal
----------------------------------
By default, the order in which a `for (i in array)' loop scans an array
@@ -13823,7 +14718,7 @@ the default.

File: gawk.info, Node: Array Sorting Functions, Prev: Controlling Array Traversal, Up: Array Sorting
-11.2.2 Sorting Array Values and Indices with `gawk'
+12.2.2 Sorting Array Values and Indices with `gawk'
---------------------------------------------------
In most `awk' implementations, sorting an array requires writing a
@@ -13918,7 +14813,7 @@ extensions, they are not available in that case.

File: gawk.info, Node: Two-way I/O, Next: TCP/IP Networking, Prev: Array Sorting, Up: Advanced Features
-11.3 Two-Way Communications with Another Process
+12.3 Two-Way Communications with Another Process
================================================
From: brennan@whidbey.com (Mike Brennan)
@@ -14053,7 +14948,7 @@ regular pipes.

File: gawk.info, Node: TCP/IP Networking, Next: Profiling, Prev: Two-way I/O, Up: Advanced Features
-11.4 Using `gawk' for Network Programming
+12.4 Using `gawk' for Network Programming
=========================================
`EMISTERED':
@@ -14130,7 +15025,7 @@ examples.

File: gawk.info, Node: Profiling, Prev: TCP/IP Networking, Up: Advanced Features
-11.5 Profiling Your `awk' Programs
+12.5 Profiling Your `awk' Programs
==================================
You may produce execution traces of your `awk' programs. This is done
@@ -14348,7 +15243,7 @@ without any execution counts.

File: gawk.info, Node: Library Functions, Next: Sample Programs, Prev: Advanced Features, Up: Top
-12 A Library of `awk' Functions
+13 A Library of `awk' Functions
*******************************
*note User-defined::, describes how to write your own `awk' functions.
@@ -14420,7 +15315,7 @@ contents of the input record.

File: gawk.info, Node: Library Names, Next: General Functions, Up: Library Functions
-12.1 Naming Library Function Global Variables
+13.1 Naming Library Function Global Variables
=============================================
Due to the way the `awk' language evolved, variables are either
@@ -14500,7 +15395,7 @@ verifying this.

File: gawk.info, Node: General Functions, Next: Data File Management, Prev: Library Names, Up: Library Functions
-12.2 General Programming
+13.2 General Programming
========================
This minor node presents a number of functions that are of general
@@ -14523,7 +15418,7 @@ programming use.

File: gawk.info, Node: Strtonum Function, Next: Assert Function, Up: General Functions
-12.2.1 Converting Strings To Numbers
+13.2.1 Converting Strings To Numbers
------------------------------------
The `strtonum()' function (*note String Functions::) is a `gawk'
@@ -14607,7 +15502,7 @@ be tested with `gawk' and the results compared to the built-in

File: gawk.info, Node: Assert Function, Next: Round Function, Prev: Strtonum Function, Up: General Functions
-12.2.2 Assertions
+13.2.2 Assertions
-----------------
When writing large programs, it is often useful to know that a
@@ -14693,7 +15588,7 @@ rule always ends with an `exit' statement.

File: gawk.info, Node: Round Function, Next: Cliff Random Function, Prev: Assert Function, Up: General Functions
-12.2.3 Rounding Numbers
+13.2.3 Rounding Numbers
-----------------------
The way `printf' and `sprintf()' (*note Printf::) perform rounding
@@ -14739,7 +15634,7 @@ might be useful if your `awk''s `printf' does unbiased rounding:

File: gawk.info, Node: Cliff Random Function, Next: Ordinal Functions, Prev: Round Function, Up: General Functions
-12.2.4 The Cliff Random Number Generator
+13.2.4 The Cliff Random Number Generator
----------------------------------------
The Cliff random number generator
@@ -14768,7 +15663,7 @@ might try using this function instead.

File: gawk.info, Node: Ordinal Functions, Next: Join Function, Prev: Cliff Random Function, Up: General Functions
-12.2.5 Translating Between Characters and Numbers
+13.2.5 Translating Between Characters and Numbers
-------------------------------------------------
One commercial implementation of `awk' supplies a built-in function,
@@ -14866,7 +15761,7 @@ extensions, you can simplify `_ord_init' to loop from 0 to 255.

File: gawk.info, Node: Join Function, Next: Gettimeofday Function, Prev: Ordinal Functions, Up: General Functions
-12.2.6 Merging an Array into a String
+13.2.6 Merging an Array into a String
-------------------------------------
When doing string processing, it is often useful to be able to join all
@@ -14913,7 +15808,7 @@ makes string operations more difficult than they really need to be.

File: gawk.info, Node: Gettimeofday Function, Prev: Join Function, Up: General Functions
-12.2.7 Managing the Time of Day
+13.2.7 Managing the Time of Day
-------------------------------
The `systime()' and `strftime()' functions described in *note Time
@@ -14995,7 +15890,7 @@ optional timestamp value to use instead of the current time.

File: gawk.info, Node: Data File Management, Next: Getopt Function, Prev: General Functions, Up: Library Functions
-12.3 Data File Management
+13.3 Data File Management
=========================
This minor node presents functions that are useful for managing
@@ -15012,7 +15907,7 @@ command-line data files.

File: gawk.info, Node: Filetrans Function, Next: Rewind Function, Up: Data File Management
-12.3.1 Noting Data File Boundaries
+13.3.1 Noting Data File Boundaries
----------------------------------
The `BEGIN' and `END' rules are each executed exactly once at the
@@ -15110,7 +16005,7 @@ it provides an easy way to do per-file cleanup processing.

File: gawk.info, Node: Rewind Function, Next: File Checking, Prev: Filetrans Function, Up: Data File Management
-12.3.2 Rereading the Current File
+13.3.2 Rereading the Current File
---------------------------------
Another request for a new built-in function was for a `rewind()'
@@ -15152,7 +16047,7 @@ Nextfile Statement::).

File: gawk.info, Node: File Checking, Next: Empty Files, Prev: Rewind Function, Up: Data File Management
-12.3.3 Checking for Readable Data Files
+13.3.3 Checking for Readable Data Files
---------------------------------------
Normally, if you give `awk' a data file that isn't readable, it stops
@@ -15181,7 +16076,7 @@ in the list). See also *note ARGC and ARGV::.

File: gawk.info, Node: Empty Files, Next: Ignoring Assigns, Prev: File Checking, Up: Data File Management
-12.3.4 Checking For Zero-length Files
+13.3.4 Checking For Zero-length Files
-------------------------------------
All known `awk' implementations silently skip over zero-length files.
@@ -15238,7 +16133,7 @@ intervening value in `ARGV' is a variable assignment.

File: gawk.info, Node: Ignoring Assigns, Prev: Empty Files, Up: Data File Management
-12.3.5 Treating Assignments as File Names
+13.3.5 Treating Assignments as File Names
-----------------------------------------
Occasionally, you might not want `awk' to process command-line variable
@@ -15281,7 +16176,7 @@ arguments are left alone.

File: gawk.info, Node: Getopt Function, Next: Passwd Functions, Prev: Data File Management, Up: Library Functions
-12.4 Processing Command-Line Options
+13.4 Processing Command-Line Options
====================================
Most utilities on POSIX compatible systems take options on the command
@@ -15574,7 +16469,7 @@ have left it alone, since using `substr()' is more portable.

File: gawk.info, Node: Passwd Functions, Next: Group Functions, Prev: Getopt Function, Up: Library Functions
-12.5 Reading the User Database
+13.5 Reading the User Database
==============================
The `PROCINFO' array (*note Built-in Variables::) provides access to
@@ -15817,7 +16712,7 @@ network database.

File: gawk.info, Node: Group Functions, Next: Walking Arrays, Prev: Passwd Functions, Up: Library Functions
-12.6 Reading the Group Database
+13.6 Reading the Group Database
===============================
Much of the discussion presented in *note Passwd Functions::, applies
@@ -16051,7 +16946,7 @@ very simple, relying on `awk''s associative arrays to do work.

File: gawk.info, Node: Walking Arrays, Prev: Group Functions, Up: Library Functions
-12.7 Traversing Arrays of Arrays
+13.7 Traversing Arrays of Arrays
================================
*note Arrays of Arrays::, described how `gawk' provides arrays of
@@ -16102,7 +16997,7 @@ value. Here is a main program to demonstrate:

File: gawk.info, Node: Sample Programs, Next: Debugger, Prev: Library Functions, Up: Top
-13 Practical `awk' Programs
+14 Practical `awk' Programs
***************************
*note Library Functions::, presents the idea that reading programs in a
@@ -16122,7 +17017,7 @@ Library Functions::.

File: gawk.info, Node: Running Examples, Next: Clones, Up: Sample Programs
-13.1 Running the Example Programs
+14.1 Running the Example Programs
=================================
To run a given program, you would typically do something like this:
@@ -16145,7 +17040,7 @@ OPTIONS are any command-line options for the program that start with a

File: gawk.info, Node: Clones, Next: Miscellaneous Programs, Prev: Running Examples, Up: Sample Programs
-13.2 Reinventing Wheels for Fun and Profit
+14.2 Reinventing Wheels for Fun and Profit
==========================================
This minor node presents a number of POSIX utilities implemented in
@@ -16175,7 +17070,7 @@ programming for "real world" tasks.

File: gawk.info, Node: Cut Program, Next: Egrep Program, Up: Clones
-13.2.1 Cutting out Fields and Columns
+14.2.1 Cutting out Fields and Columns
-------------------------------------
The `cut' utility selects, or "cuts," characters or fields from its
@@ -16434,7 +17329,7 @@ solution to the problem of picking the input line apart by characters.

File: gawk.info, Node: Egrep Program, Next: Id Program, Prev: Cut Program, Up: Clones
-13.2.2 Searching for Regular Expressions in Files
+14.2.2 Searching for Regular Expressions in Files
-------------------------------------------------
The `egrep' utility searches files for patterns. It uses regular
@@ -16666,7 +17561,7 @@ the translated line, not the original.

File: gawk.info, Node: Id Program, Next: Split Program, Prev: Egrep Program, Up: Clones
-13.2.3 Printing out User Information
+14.2.3 Printing out User Information
------------------------------------
The `id' utility lists a user's real and effective user ID numbers,
@@ -16773,7 +17668,7 @@ body never executes.

File: gawk.info, Node: Split Program, Next: Tee Program, Prev: Id Program, Up: Clones
-13.2.4 Splitting a Large File into Pieces
+14.2.4 Splitting a Large File into Pieces
-----------------------------------------
The `split' program splits large text files into smaller pieces. Usage
@@ -16881,7 +17776,7 @@ not relevant for what the program aims to demonstrate.

File: gawk.info, Node: Tee Program, Next: Uniq Program, Prev: Split Program, Up: Clones
-13.2.5 Duplicating Output into Multiple Files
+14.2.5 Duplicating Output into Multiple Files
---------------------------------------------
The `tee' program is known as a "pipe fitting." `tee' copies its
@@ -16969,7 +17864,7 @@ N input records and M output files, the first method only executes N

File: gawk.info, Node: Uniq Program, Next: Wc Program, Prev: Tee Program, Up: Clones
-13.2.6 Printing Nonduplicated Lines of Text
+14.2.6 Printing Nonduplicated Lines of Text
-------------------------------------------
The `uniq' utility reads sorted lines of data on its standard input,
@@ -17188,7 +18083,7 @@ line of input data:

File: gawk.info, Node: Wc Program, Prev: Uniq Program, Up: Clones
-13.2.7 Counting Things
+14.2.7 Counting Things
----------------------
The `wc' (word count) utility counts lines, words, and characters in
@@ -17333,7 +18228,7 @@ characters, not bytes.

File: gawk.info, Node: Miscellaneous Programs, Prev: Clones, Up: Sample Programs
-13.3 A Grab Bag of `awk' Programs
+14.3 A Grab Bag of `awk' Programs
=================================
This minor node is a large "grab bag" of miscellaneous programs. We
@@ -17360,7 +18255,7 @@ hope you find them both interesting and enjoyable.

File: gawk.info, Node: Dupword Program, Next: Alarm Program, Up: Miscellaneous Programs
-13.3.1 Finding Duplicated Words in a Document
+14.3.1 Finding Duplicated Words in a Document
---------------------------------------------
A common error when writing large amounts of prose is to accidentally
@@ -17408,7 +18303,7 @@ word, comparing it to the previous one:

File: gawk.info, Node: Alarm Program, Next: Translate Program, Prev: Dupword Program, Up: Miscellaneous Programs
-13.3.2 An Alarm Clock Program
+14.3.2 An Alarm Clock Program
-----------------------------
Nothing cures insomnia like a ringing alarm clock.
@@ -17541,7 +18436,7 @@ necessary:

File: gawk.info, Node: Translate Program, Next: Labels Program, Prev: Alarm Program, Up: Miscellaneous Programs
-13.3.3 Transliterating Characters
+14.3.3 Transliterating Characters
---------------------------------
The system `tr' utility transliterates characters. For example, it is
@@ -17667,7 +18562,7 @@ split each character in a string into separate array elements.

File: gawk.info, Node: Labels Program, Next: Word Sorting, Prev: Translate Program, Up: Miscellaneous Programs
-13.3.4 Printing Mailing Labels
+14.3.4 Printing Mailing Labels
------------------------------
Here is a "real world"(1) program. This script reads lists of names and
@@ -17774,7 +18669,7 @@ something done."

File: gawk.info, Node: Word Sorting, Next: History Sorting, Prev: Labels Program, Up: Miscellaneous Programs
-13.3.5 Generating Word-Usage Counts
+14.3.5 Generating Word-Usage Counts
-----------------------------------
When working with large amounts of text, it can be interesting to know
@@ -17878,7 +18773,7 @@ operating system documentation for more information on how to use the

File: gawk.info, Node: History Sorting, Next: Extract Program, Prev: Word Sorting, Up: Miscellaneous Programs
-13.3.6 Removing Duplicates from Unsorted Text
+14.3.6 Removing Duplicates from Unsorted Text
---------------------------------------------
The `uniq' program (*note Uniq Program::), removes duplicate lines from
@@ -17925,7 +18820,7 @@ seen.

File: gawk.info, Node: Extract Program, Next: Simple Sed, Prev: History Sorting, Up: Miscellaneous Programs
-13.3.7 Extracting Programs from Texinfo Source Files
+14.3.7 Extracting Programs from Texinfo Source Files
----------------------------------------------------
The nodes *note Library Functions::, and *note Sample Programs::, are
@@ -18125,7 +19020,7 @@ function. Consider how you might use it to simplify the code.

File: gawk.info, Node: Simple Sed, Next: Igawk Program, Prev: Extract Program, Up: Miscellaneous Programs
-13.3.8 A Simple Stream Editor
+14.3.8 A Simple Stream Editor
-----------------------------
The `sed' utility is a stream editor, a program that reads a stream of
@@ -18206,7 +19101,7 @@ the single rule handles the printing scheme outlined above, using

File: gawk.info, Node: Igawk Program, Next: Anagram Program, Prev: Simple Sed, Up: Miscellaneous Programs
-13.3.9 An Easy Way to Use Library Functions
+14.3.9 An Easy Way to Use Library Functions
-------------------------------------------
In *note Include Files::, we saw how `gawk' provides a built-in
@@ -18603,7 +19498,7 @@ can loop forever if the file exists but is empty. Caveat emptor.

File: gawk.info, Node: Anagram Program, Next: Signature Program, Prev: Igawk Program, Up: Miscellaneous Programs
-13.3.10 Finding Anagrams From A Dictionary
+14.3.10 Finding Anagrams From A Dictionary
------------------------------------------
An interesting programming challenge is to search for "anagrams" in a
@@ -18693,7 +19588,7 @@ otherwise the anagrams would appear in arbitrary order:

File: gawk.info, Node: Signature Program, Prev: Anagram Program, Up: Miscellaneous Programs
-13.3.11 And Now For Something Completely Different
+14.3.11 And Now For Something Completely Different
--------------------------------------------------
The following program was written by Davide Brini and is published on
@@ -18720,7 +19615,7 @@ supplies the following copyright terms:

File: gawk.info, Node: Debugger, Next: Language History, Prev: Sample Programs, Up: Top
-14 Debugging `awk' Programs
+15 Debugging `awk' Programs
***************************
It would be nice if computer programs worked perfectly the first time
@@ -18744,7 +19639,7 @@ program is easy.

File: gawk.info, Node: Debugging, Next: Sample Debugging Session, Up: Debugger
-14.1 Introduction to `gawk' Debugger
+15.1 Introduction to `gawk' Debugger
====================================
This minor node introduces debugging in general and begins the
@@ -18759,7 +19654,7 @@ discussion of debugging in `gawk'.

File: gawk.info, Node: Debugging Concepts, Next: Debugging Terms, Up: Debugging
-14.1.1 Debugging in General
+15.1.1 Debugging in General
---------------------------
(If you have used debuggers in other languages, you may want to skip
@@ -18799,7 +19694,7 @@ functional program that you or someone else wrote).

File: gawk.info, Node: Debugging Terms, Next: Awk Debugging, Prev: Debugging Concepts, Up: Debugging
-14.1.2 Additional Debugging Concepts
+15.1.2 Additional Debugging Concepts
------------------------------------
Before diving in to the details, we need to introduce several important
@@ -18851,7 +19746,7 @@ 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
+15.1.3 Awk Debugging
--------------------
Debugging an `awk' program has some specific aspects that are not
@@ -18873,7 +19768,7 @@ commands.

File: gawk.info, Node: Sample Debugging Session, Next: List of Debugger Commands, Prev: Debugging, Up: Debugger
-14.2 Sample Debugging Session
+15.2 Sample Debugging Session
=============================
In order to illustrate the use of `gawk' as a debugger, let's look at a
@@ -18889,7 +19784,7 @@ example.

File: gawk.info, Node: Debugger Invocation, Next: Finding The Bug, Up: Sample Debugging Session
-14.2.1 How to Start the Debugger
+15.2.1 How to Start the Debugger
--------------------------------
Starting the debugger is almost exactly like running `awk', except you
@@ -18921,7 +19816,7 @@ code has been executed.

File: gawk.info, Node: Finding The Bug, Prev: Debugger Invocation, Up: Sample Debugging Session
-14.2.2 Finding the Bug
+15.2.2 Finding the Bug
----------------------
Let's say that we are having a problem using (a faulty version of)
@@ -19118,7 +20013,7 @@ and problem solved!

File: gawk.info, Node: List of Debugger Commands, Next: Readline Support, Prev: Sample Debugging Session, Up: Debugger
-14.3 Main Debugger Commands
+15.3 Main Debugger Commands
===========================
The `gawk' debugger command set can be divided into the following
@@ -19157,7 +20052,7 @@ when just hitting <Enter>. This works for the commands `list', `next',

File: gawk.info, Node: Breakpoint Control, Next: Debugger Execution Control, Up: List of Debugger Commands
-14.3.1 Control of Breakpoints
+15.3.1 Control of Breakpoints
-----------------------------
As we saw above, the first thing you probably want to do in a debugging
@@ -19252,7 +20147,7 @@ controlling breakpoints are:

File: gawk.info, Node: Debugger Execution Control, Next: Viewing And Changing Data, Prev: Breakpoint Control, Up: List of Debugger Commands
-14.3.2 Control of Execution
+15.3.2 Control of Execution
---------------------------
Now that your breakpoints are ready, you can start running the program
@@ -19342,7 +20237,7 @@ execution of the program than we saw in our earlier example:

File: gawk.info, Node: Viewing And Changing Data, Next: Execution Stack, Prev: Debugger Execution Control, Up: List of Debugger Commands
-14.3.3 Viewing and Changing Data
+15.3.3 Viewing and Changing Data
--------------------------------
The commands for viewing and changing variables inside of `gawk' are:
@@ -19431,7 +20326,7 @@ AWK STATEMENTS

File: gawk.info, Node: Execution Stack, Next: Debugger Info, Prev: Viewing And Changing Data, Up: List of Debugger Commands
-14.3.4 Dealing with the Stack
+15.3.4 Dealing with the Stack
-----------------------------
Whenever you run a program which contains any function calls, `gawk'
@@ -19468,7 +20363,7 @@ are:

File: gawk.info, Node: Debugger Info, Next: Miscellaneous Debugger Commands, Prev: Execution Stack, Up: List of Debugger Commands
-14.3.5 Obtaining Information about the Program and the Debugger State
+15.3.5 Obtaining Information about the Program and the Debugger State
---------------------------------------------------------------------
Besides looking at the values of variables, there is often a need to get
@@ -19577,7 +20472,7 @@ from a file. The commands are:

File: gawk.info, Node: Miscellaneous Debugger Commands, Prev: Debugger Info, Up: List of Debugger Commands
-14.3.6 Miscellaneous Commands
+15.3.6 Miscellaneous Commands
-----------------------------
There are a few more commands which do not fit into the previous
@@ -19697,7 +20592,7 @@ categories, as follows:

File: gawk.info, Node: Readline Support, Next: Limitations, Prev: List of Debugger Commands, Up: Debugger
-14.4 Readline Support
+15.4 Readline Support
=====================
If `gawk' is compiled with the `readline' library, you can take
@@ -19724,7 +20619,7 @@ Variable name completion

File: gawk.info, Node: Limitations, Prev: Readline Support, Up: Debugger
-14.5 Limitations and Future Plans
+15.5 Limitations and Future Plans
=================================
We hope you find the `gawk' debugger useful and enjoyable to work with,
@@ -24779,76 +25674,78 @@ Index
* - (hyphen), filenames beginning with: Options. (line 59)
* - (hyphen), in bracket expressions: Bracket Expressions. (line 17)
* --assign option: Options. (line 32)
-* --c option: Options. (line 78)
+* --bignum option: Options. (line 185)
+* --c option: Options. (line 81)
* --characters-as-bytes option: Options. (line 68)
-* --copyright option: Options. (line 85)
-* --debug option: Options. (line 105)
+* --copyright option: Options. (line 88)
+* --debug option: Options. (line 108)
* --disable-lint configuration option: Additional Configuration Options.
(line 9)
* --disable-nls configuration option: Additional Configuration Options.
(line 24)
* --dump-variables option <1>: Library Names. (line 45)
-* --dump-variables option: Options. (line 90)
-* --exec option: Options. (line 122)
+* --dump-variables option: Options. (line 93)
+* --exec option: Options. (line 125)
* --field-separator option: Options. (line 21)
* --file option: Options. (line 25)
* --gen-pot option <1>: String Extraction. (line 6)
-* --gen-pot option: Options. (line 144)
-* --help option: Options. (line 151)
-* --L option: Options. (line 263)
-* --lint option <1>: Options. (line 163)
+* --gen-pot option: Options. (line 147)
+* --help option: Options. (line 154)
+* --L option: Options. (line 272)
+* --lint option <1>: Options. (line 166)
* --lint option: Command Line. (line 20)
-* --lint-old option: Options. (line 263)
-* --load option: Options. (line 156)
+* --lint-old option: Options. (line 272)
+* --load option: Options. (line 159)
* --non-decimal-data option <1>: Nondecimal Data. (line 6)
-* --non-decimal-data option: Options. (line 182)
+* --non-decimal-data option: Options. (line 191)
* --non-decimal-data option, strtonum() function and: Nondecimal Data.
(line 36)
-* --optimize option: Options. (line 203)
-* --posix option: Options. (line 222)
-* --posix option, --traditional option and: Options. (line 241)
-* --pretty-print option: Options. (line 195)
+* --optimize option: Options. (line 212)
+* --posix option: Options. (line 231)
+* --posix option, --traditional option and: Options. (line 250)
+* --pretty-print option: Options. (line 204)
* --profile option <1>: Profiling. (line 12)
-* --profile option: Options. (line 210)
-* --re-interval option: Options. (line 247)
-* --sandbox option: Options. (line 254)
+* --profile option: Options. (line 219)
+* --re-interval option: Options. (line 256)
+* --sandbox option: Options. (line 263)
* --sandbox option, disabling system() function: I/O Functions.
(line 85)
* --sandbox option, input redirection with getline: Getline. (line 19)
* --sandbox option, output redirection with print, printf: Redirection.
(line 6)
-* --source option: Options. (line 114)
-* --traditional option: Options. (line 78)
-* --traditional option, --posix option and: Options. (line 241)
-* --use-lc-numeric option: Options. (line 190)
-* --version option: Options. (line 268)
+* --source option: Options. (line 117)
+* --traditional option: Options. (line 81)
+* --traditional option, --posix option and: Options. (line 250)
+* --use-lc-numeric option: Options. (line 199)
+* --version option: Options. (line 277)
* --with-whiny-user-strftime configuration option: Additional Configuration Options.
(line 29)
* -b option: Options. (line 68)
-* -C option: Options. (line 85)
-* -D option: Options. (line 105)
-* -d option: Options. (line 90)
-* -E option: Options. (line 122)
-* -e option: Options. (line 114)
+* -C option: Options. (line 88)
+* -D option: Options. (line 108)
+* -d option: Options. (line 93)
+* -E option: Options. (line 125)
+* -e option: Options. (line 117)
* -F option: Command Line Field Separator.
(line 6)
* -f option: Options. (line 25)
* -F option: Options. (line 21)
* -f option: Long. (line 12)
-* -F option, -Ft sets FS to TAB: Options. (line 276)
-* -f option, on command line: Options. (line 281)
-* -g option: Options. (line 144)
-* -h option: Options. (line 151)
-* -l option: Options. (line 156)
-* -N option: Options. (line 190)
-* -n option: Options. (line 182)
-* -O option: Options. (line 203)
-* -o option: Options. (line 195)
-* -P option: Options. (line 222)
-* -p option: Options. (line 210)
-* -r option: Options. (line 247)
-* -S option: Options. (line 254)
-* -V option: Options. (line 268)
+* -F option, -Ft sets FS to TAB: Options. (line 285)
+* -f option, on command line: Options. (line 290)
+* -g option: Options. (line 147)
+* -h option: Options. (line 154)
+* -l option: Options. (line 159)
+* -M option: Options. (line 185)
+* -N option: Options. (line 199)
+* -n option: Options. (line 191)
+* -O option: Options. (line 212)
+* -o option: Options. (line 204)
+* -P option: Options. (line 231)
+* -p option: Options. (line 219)
+* -r option: Options. (line 256)
+* -S option: Options. (line 263)
+* -V option: Options. (line 277)
* -v option: Options. (line 32)
* -v option, variables, assigning: Assignment Options. (line 12)
* -W option: Options. (line 46)
@@ -24988,7 +25885,7 @@ Index
(line 67)
* advanced features, data files as single record: Records. (line 175)
* advanced features, fixed-width data: Constant Size. (line 9)
-* advanced features, FNR/NR variables: Auto-set. (line 207)
+* advanced features, FNR/NR variables: Auto-set. (line 224)
* advanced features, gawk: Advanced Features. (line 6)
* advanced features, gawk, network programming: TCP/IP Networking.
(line 6)
@@ -25023,6 +25920,8 @@ Index
* and Boolean-logic operator: Boolean Ops. (line 6)
* and() function (gawk): Bitwise Functions. (line 39)
* ANSI: Glossary. (line 35)
+* arbitrary precision: Arbitrary Precision Arithmetic.
+ (line 6)
* archeologists: Bugs. (line 6)
* ARGC/ARGV variables <1>: ARGC and ARGV. (line 6)
* ARGC/ARGV variables: Auto-set. (line 11)
@@ -25104,10 +26003,10 @@ Index
* asterisk (*), *= operator: Assignment Ops. (line 129)
* atan2() function: Numeric Functions. (line 11)
* awf (amazingly workable formatter) program: Glossary. (line 25)
-* awk debugging, enabling: Options. (line 105)
-* awk enabling: Options. (line 195)
+* awk debugging, enabling: Options. (line 108)
+* awk enabling: Options. (line 204)
* awk language, POSIX version: Assignment Ops. (line 136)
-* awk profiling, enabling: Options. (line 210)
+* awk profiling, enabling: Options. (line 219)
* awk programs <1>: Two Rules. (line 6)
* awk programs <2>: Executable Scripts. (line 6)
* awk programs: Getting Started. (line 12)
@@ -25164,7 +26063,7 @@ Index
* AWKPATH environment variable: AWKPATH Variable. (line 6)
* awkprof.out file: Profiling. (line 6)
* awksed.awk program: Simple Sed. (line 25)
-* awkvars.out file: Options. (line 90)
+* awkvars.out file: Options. (line 93)
* b debugger command (alias for break): Breakpoint Control. (line 11)
* backslash (\) <1>: Regexp Operators. (line 18)
* backslash (\) <2>: Quoting. (line 31)
@@ -25331,7 +26230,7 @@ Index
* case sensitivity, regexps and <1>: User-modified. (line 82)
* case sensitivity, regexps and: Case-sensitivity. (line 6)
* case sensitivity, string comparisons and: User-modified. (line 82)
-* CGI, awk scripts for: Options. (line 122)
+* CGI, awk scripts for: Options. (line 125)
* character lists, See bracket expressions: Regexp Operators. (line 55)
* character sets (machine character encodings) <1>: Glossary. (line 141)
* character sets (machine character encodings): Ordinal Functions.
@@ -25417,7 +26316,7 @@ Index
(line 60)
* compatibility mode (gawk), octal numbers: Nondecimal-numbers.
(line 60)
-* compatibility mode (gawk), specifying: Options. (line 78)
+* compatibility mode (gawk), specifying: Options. (line 81)
* compiled programs <1>: Glossary. (line 161)
* compiled programs: Basic High Level. (line 14)
* compiling gawk for Cygwin: Cygwin. (line 6)
@@ -25438,8 +26337,12 @@ Index
(line 29)
* configuration options, gawk: Additional Configuration Options.
(line 6)
+* constants, floating-point: Floating-point Constants.
+ (line 6)
* constants, nondecimal: Nondecimal Data. (line 6)
* constants, types of: Constants. (line 6)
+* context, floating-point: Floating-point Context.
+ (line 6)
* continue statement: Continue Statement. (line 6)
* control statements: Statements. (line 6)
* converting, case: String Functions. (line 522)
@@ -25459,10 +26362,10 @@ Index
* coprocesses, closing: Close Files And Pipes.
(line 6)
* coprocesses, getline from: Getline/Coprocess. (line 6)
-* cos() function: Numeric Functions. (line 14)
+* cos() function: Numeric Functions. (line 15)
* counting: Wc Program. (line 6)
* csh utility: Statements/Lines. (line 44)
-* csh utility, POSIXLY_CORRECT environment variable: Options. (line 323)
+* csh utility, POSIXLY_CORRECT environment variable: Options. (line 332)
* csh utility, |& operator, comparison with: Two-way I/O. (line 44)
* ctime() user-defined function: Function Example. (line 72)
* currency symbols, localization: Explaining gettext. (line 103)
@@ -25494,7 +26397,7 @@ Index
(line 47)
* dark corner, FILENAME variable <1>: Auto-set. (line 92)
* dark corner, FILENAME variable: Getline Notes. (line 19)
-* dark corner, FNR/NR variables: Auto-set. (line 207)
+* dark corner, FNR/NR variables: Auto-set. (line 224)
* dark corner, format-control characters: Control Letters. (line 18)
* dark corner, FS as null string: Single Character Fields.
(line 20)
@@ -25631,7 +26534,7 @@ Index
(line 67)
* debugging awk programs: Debugger. (line 6)
* debugging gawk, bug reports: Bugs. (line 9)
-* decimal point character, locale specific: Options. (line 238)
+* decimal point character, locale specific: Options. (line 247)
* decrement operators: Increment Ops. (line 35)
* default keyword: Switch Statement. (line 6)
* Deifik, Scott <1>: Bugs. (line 70)
@@ -25693,7 +26596,7 @@ Index
* differences in awk and gawk, regular expressions: Case-sensitivity.
(line 26)
* differences in awk and gawk, RS/RT variables: Records. (line 167)
-* differences in awk and gawk, RT variable: Auto-set. (line 196)
+* differences in awk and gawk, RT variable: Auto-set. (line 213)
* differences in awk and gawk, single-character fields: Single Character Fields.
(line 6)
* differences in awk and gawk, split() function: String Functions.
@@ -25703,7 +26606,7 @@ Index
* differences in awk and gawk, strtonum() function (gawk): String Functions.
(line 404)
* differences in awk and gawk, TEXTDOMAIN variable: User-modified.
- (line 153)
+ (line 162)
* differences in awk and gawk, trunc-mod operation: Arithmetic Ops.
(line 66)
* directories, changing: Sample Library. (line 6)
@@ -25820,7 +26723,7 @@ Index
* exclamation point (!), !~ operator: Regexp Usage. (line 19)
* exit statement: Exit Statement. (line 6)
* exit status, of gawk: Exit Status. (line 6)
-* exp() function: Numeric Functions. (line 17)
+* exp() function: Numeric Functions. (line 18)
* expand utility: Very Simple. (line 69)
* expressions: Expressions. (line 6)
* expressions, as patterns: Expression Patterns. (line 6)
@@ -25926,7 +26829,7 @@ Index
* files, as single records: Records. (line 196)
* files, awk programs in: Long. (line 6)
* files, awkprof.out: Profiling. (line 6)
-* files, awkvars.out: Options. (line 90)
+* files, awkvars.out: Options. (line 93)
* files, closing: I/O Functions. (line 10)
* files, descriptors, See file descriptors: Special FD. (line 6)
* files, group: Group Functions. (line 6)
@@ -25954,7 +26857,7 @@ Index
* files, portable object template: Explaining gettext. (line 30)
* files, portable object, converting to message object files: I18N Example.
(line 62)
-* files, portable object, generating: Options. (line 144)
+* files, portable object, generating: Options. (line 147)
* files, processing, ARGIND variable and: Auto-set. (line 47)
* files, reading: Rewind Function. (line 6)
* files, reading, multiline records: Multiple Line. (line 6)
@@ -25969,12 +26872,14 @@ Index
* fixed-width data: Constant Size. (line 9)
* flag variables <1>: Tee Program. (line 20)
* flag variables: Boolean Ops. (line 67)
+* floating-point numbers, arbitrary precision: Arbitrary Precision Arithmetic.
+ (line 6)
* floating-point, numbers <1>: Unexpected Results. (line 6)
* floating-point, numbers: Basic Data Typing. (line 21)
* floating-point, numbers, AWKNUM internal type: Internals. (line 19)
* FNR variable <1>: Auto-set. (line 102)
* FNR variable: Records. (line 6)
-* FNR variable, changing: Auto-set. (line 207)
+* FNR variable, changing: Auto-set. (line 224)
* for statement: For Statement. (line 6)
* for statement, in arrays: Scanning an Array. (line 20)
* force_number() internal function: Internals. (line 27)
@@ -26010,7 +26915,7 @@ Index
* FS variable, --field-separator option and: Options. (line 21)
* FS variable, as null string: Single Character Fields.
(line 20)
-* FS variable, as TAB character: Options. (line 234)
+* FS variable, as TAB character: Options. (line 243)
* FS variable, changing value of: Field Separators. (line 34)
* FS variable, running awk programs and: Cut Program. (line 68)
* FS variable, setting from command line: Command Line Field Separator.
@@ -26067,7 +26972,7 @@ Index
(line 44)
* functions, user-defined, next/nextfile statements and: Next Statement.
(line 45)
-* G-d: Acknowledgments. (line 81)
+* G-d: Acknowledgments. (line 83)
* Garfinkle, Scott: Contributors. (line 35)
* gawk program, dynamic profiling: Profiling. (line 171)
* gawk, ARGIND variable in: Other Arguments. (line 12)
@@ -26096,7 +27001,7 @@ Index
(line 139)
* gawk, ERRNO variable in: Getline. (line 19)
* gawk, escape sequences: Escape Sequences. (line 125)
-* gawk, extensions, disabling: Options. (line 222)
+* gawk, extensions, disabling: Options. (line 231)
* gawk, features, adding: Adding Code. (line 6)
* gawk, features, advanced: Advanced Features. (line 6)
* gawk, fflush() function in: I/O Functions. (line 44)
@@ -26148,8 +27053,8 @@ Index
(line 26)
* gawk, regular expressions, operators: GNU Regexp Operators.
(line 6)
-* gawk, regular expressions, precedence: Regexp Operators. (line 157)
-* gawk, RT variable in <1>: Auto-set. (line 196)
+* gawk, regular expressions, precedence: Regexp Operators. (line 161)
+* gawk, RT variable in <1>: Auto-set. (line 213)
* gawk, RT variable in <2>: Getline/Variable/File.
(line 10)
* gawk, RT variable in <3>: Multiple Line. (line 129)
@@ -26158,10 +27063,10 @@ Index
* gawk, source code, obtaining: Getting. (line 6)
* gawk, splitting fields and: Constant Size. (line 87)
* gawk, string-translation functions: I18N Functions. (line 6)
-* gawk, TEXTDOMAIN variable in: User-modified. (line 153)
+* gawk, TEXTDOMAIN variable in: User-modified. (line 162)
* gawk, timestamps: Time Functions. (line 6)
* gawk, uses for: Preface. (line 36)
-* gawk, versions of, information about, printing: Options. (line 268)
+* gawk, versions of, information about, printing: Options. (line 277)
* gawk, VMS version of: VMS Installation. (line 6)
* gawk, word-boundary operator: GNU Regexp Operators.
(line 63)
@@ -26213,6 +27118,8 @@ Index
* gettext() function (C library): Explaining gettext. (line 62)
* gettimeofday() user-defined function: Gettimeofday Function.
(line 16)
+* GMP: Arbitrary Precision Arithmetic.
+ (line 6)
* GNITS mailing list: Acknowledgments. (line 52)
* GNU awk, See gawk: Preface. (line 49)
* GNU Free Documentation License: GNU Free Documentation License.
@@ -26221,7 +27128,7 @@ Index
* GNU Lesser General Public License: Glossary. (line 397)
* GNU long options <1>: Options. (line 6)
* GNU long options: Command Line. (line 13)
-* GNU long options, printing list of: Options. (line 151)
+* GNU long options, printing list of: Options. (line 154)
* GNU Project <1>: Glossary. (line 319)
* GNU Project: Manual History. (line 11)
* GNU/Linux <1>: Glossary. (line 611)
@@ -26229,7 +27136,7 @@ Index
* GNU/Linux: Manual History. (line 28)
* GPL (General Public License) <1>: Glossary. (line 310)
* GPL (General Public License): Manual History. (line 11)
-* GPL (General Public License), printing: Options. (line 85)
+* GPL (General Public License), printing: Options. (line 88)
* grcat program: Group Functions. (line 16)
* Grigera, Juan: Contributors. (line 58)
* group database, reading: Group Functions. (line 6)
@@ -26252,7 +27159,7 @@ Index
* help debugger command: Miscellaneous Debugger Commands.
(line 68)
* hexadecimal numbers: Nondecimal-numbers. (line 6)
-* hexadecimal values, enabling interpretation of: Options. (line 182)
+* hexadecimal values, enabling interpretation of: Options. (line 191)
* histsort.awk program: History Sorting. (line 25)
* Hughes, Phil: Acknowledgments. (line 43)
* HUP signal: Profiling. (line 203)
@@ -26266,6 +27173,8 @@ Index
* i debugger command (alias for info): Debugger Info. (line 13)
* id utility: Id Program. (line 6)
* id.awk program: Id Program. (line 30)
+* IEEE-754 format: Floating-point Representation.
+ (line 6)
* if statement <1>: If Statement. (line 6)
* if statement: Regexp Usage. (line 19)
* if statement, actions, changing: Ranges. (line 25)
@@ -26298,6 +27207,8 @@ Index
* index() function: String Functions. (line 155)
* indexing arrays: Array Intro. (line 50)
* indirect function calls: Indirect Calls. (line 6)
+* infinite precision: Arbitrary Precision Arithmetic.
+ (line 6)
* info debugger command: Debugger Info. (line 13)
* initialization, automatic: More Complex. (line 38)
* input files: Reading Files. (line 6)
@@ -26324,7 +27235,9 @@ Index
* installation, VMS: VMS Installation. (line 6)
* installing gawk: Installation. (line 6)
* INT signal (MS-Windows): Profiling. (line 206)
-* int() function: Numeric Functions. (line 22)
+* int() function: Numeric Functions. (line 23)
+* integer, arbitrary precision: Arbitrary Precision Integers.
+ (line 6)
* integers: Basic Data Typing. (line 21)
* integers, unsigned: Basic Data Typing. (line 30)
* interacting with other programs: I/O Functions. (line 63)
@@ -26362,7 +27275,7 @@ Index
* internationalization: I18N Functions. (line 6)
* internationalization, localization <1>: Internationalization.
(line 13)
-* internationalization, localization: User-modified. (line 153)
+* internationalization, localization: User-modified. (line 162)
* internationalization, localization, character classes: Bracket Expressions.
(line 90)
* internationalization, localization, gawk and: Internationalization.
@@ -26402,16 +27315,19 @@ Index
* Kernighan, Brian <3>: Contributors. (line 12)
* Kernighan, Brian <4>: BTL. (line 6)
* Kernighan, Brian <5>: Concatenation. (line 6)
-* Kernighan, Brian <6>: Acknowledgments. (line 75)
+* Kernighan, Brian <6>: Acknowledgments. (line 77)
* Kernighan, Brian <7>: Conventions. (line 34)
* Kernighan, Brian: History. (line 17)
* kill command, dynamic profiling: Profiling. (line 180)
* Knights, jedi: Undocumented. (line 6)
+* Knuth, Donald: Arbitrary Precision Arithmetic.
+ (line 6)
* Kwok, Conrad: Contributors. (line 35)
* l debugger command (alias for list): Miscellaneous Debugger Commands.
(line 74)
* labels.awk program: Labels Program. (line 51)
* languages, data-driven: Basic High Level. (line 83)
+* Laurie, Dirk: Changing Precision. (line 6)
* LC_ALL locale category: Explaining gettext. (line 120)
* LC_COLLATE locale category: Explaining gettext. (line 93)
* LC_CTYPE locale category: Explaining gettext. (line 97)
@@ -26472,9 +27388,9 @@ Index
* lint checking, array subscripts: Uninitialized Subscripts.
(line 43)
* lint checking, empty programs: Command Line. (line 16)
-* lint checking, issuing warnings: Options. (line 163)
+* lint checking, issuing warnings: Options. (line 166)
* lint checking, POSIXLY_CORRECT environment variable: Options.
- (line 307)
+ (line 316)
* lint checking, undefined functions: Pass By Value/Reference.
(line 88)
* LINT variable: User-modified. (line 98)
@@ -26484,16 +27400,16 @@ Index
* list debugger command: Miscellaneous Debugger Commands.
(line 74)
* loading extension: Loading Extensions. (line 6)
-* loading, library: Options. (line 156)
+* loading, library: Options. (line 159)
* local variables: Variable Scope. (line 6)
* locale categories: Explaining gettext. (line 80)
-* locale decimal point character: Options. (line 238)
+* locale decimal point character: Options. (line 247)
* locale, definition of: Locales. (line 6)
* localization: I18N and L10N. (line 6)
* localization, See internationalization, localization: I18N and L10N.
(line 6)
* log files, timestamps in: Time Functions. (line 6)
-* log() function: Numeric Functions. (line 29)
+* log() function: Numeric Functions. (line 30)
* logical false/true: Truth Values. (line 6)
* logical operators, See Boolean expressions: Boolean Ops. (line 6)
* login information: Passwd Functions. (line 16)
@@ -26538,7 +27454,11 @@ Index
* mktime() function (gawk): Time Functions. (line 24)
* modifiers, in format specifiers: Format Modifiers. (line 6)
* monetary information, localization: Explaining gettext. (line 103)
+* MPFR: Arbitrary Precision Arithmetic.
+ (line 6)
* msgfmt utility: I18N Example. (line 62)
+* multiple precision: Arbitrary Precision Arithmetic.
+ (line 6)
* n debugger command (alias for next): Debugger Execution Control.
(line 43)
* names, arrays/variables <1>: Library Names. (line 6)
@@ -26555,7 +27475,7 @@ Index
* networks, programming: TCP/IP Networking. (line 6)
* networks, support for: Special Network. (line 6)
* newlines <1>: Boolean Ops. (line 67)
-* newlines <2>: Options. (line 228)
+* newlines <2>: Options. (line 237)
* newlines: Statements/Lines. (line 6)
* newlines, as field separators: Default Field Splitting.
(line 6)
@@ -26594,7 +27514,7 @@ Index
* not Boolean-logic operator: Boolean Ops. (line 6)
* NR variable <1>: Auto-set. (line 118)
* NR variable: Records. (line 6)
-* NR variable, changing: Auto-set. (line 207)
+* NR variable, changing: Auto-set. (line 224)
* null strings <1>: Basic Data Typing. (line 50)
* null strings <2>: Truth Values. (line 6)
* null strings <3>: Regexp Field Splitting.
@@ -26625,7 +27545,7 @@ Index
* numbers, hexadecimal: Nondecimal-numbers. (line 6)
* numbers, NODE internal type: Internals. (line 23)
* numbers, octal: Nondecimal-numbers. (line 6)
-* numbers, random: Numeric Functions. (line 63)
+* numbers, random: Numeric Functions. (line 64)
* numbers, rounding: Round Function. (line 6)
* numeric, constants: Scalar Constants. (line 6)
* numeric, output format: OFMT. (line 6)
@@ -26635,7 +27555,7 @@ Index
* oawk utility: Names. (line 17)
* obsolete features: Obsolete. (line 6)
* octal numbers: Nondecimal-numbers. (line 6)
-* octal values, enabling interpretation of: Options. (line 182)
+* octal values, enabling interpretation of: Options. (line 191)
* OFMT variable <1>: User-modified. (line 115)
* OFMT variable <2>: Conversion. (line 55)
* OFMT variable: OFMT. (line 15)
@@ -26688,7 +27608,7 @@ Index
* options, deprecated: Obsolete. (line 6)
* options, long <1>: Options. (line 6)
* options, long: Command Line. (line 13)
-* options, printing list of: Options. (line 151)
+* options, printing list of: Options. (line 154)
* OR bitwise operation: Bitwise Functions. (line 6)
* or Boolean-logic operator: Boolean Ops. (line 6)
* or() function (gawk): Bitwise Functions. (line 48)
@@ -26780,13 +27700,13 @@ Index
* portability, NF variable, decrementing: Changing Fields. (line 115)
* portability, operators: Increment Ops. (line 61)
* portability, operators, not in POSIX awk: Precedence. (line 98)
-* portability, POSIXLY_CORRECT environment variable: Options. (line 328)
+* portability, POSIXLY_CORRECT environment variable: Options. (line 337)
* portability, substr() function: String Functions. (line 512)
* portable object files <1>: Translator i18n. (line 6)
* portable object files: Explaining gettext. (line 36)
* portable object files, converting to message object files: I18N Example.
(line 62)
-* portable object files, generating: Options. (line 144)
+* portable object files, generating: Options. (line 147)
* portable object template files: Explaining gettext. (line 30)
* porting gawk: New Ports. (line 6)
* positional specifiers, printf statement <1>: Printf Ordering.
@@ -26827,17 +27747,19 @@ Index
* POSIX awk, OFMT variable and: OFMT. (line 27)
* POSIX awk, period (.), using: Regexp Operators. (line 50)
* POSIX awk, printf format strings and: Format Modifiers. (line 159)
-* POSIX awk, regular expressions and: Regexp Operators. (line 157)
+* POSIX awk, regular expressions and: Regexp Operators. (line 161)
* POSIX awk, timestamps and: Time Functions. (line 6)
* POSIX awk, | I/O operator and: Getline/Pipe. (line 52)
-* POSIX mode: Options. (line 222)
+* POSIX mode: Options. (line 231)
* POSIX, awk and: Preface. (line 23)
* POSIX, gawk extensions not included in: POSIX/GNU. (line 6)
* POSIX, programs, implementing in awk: Clones. (line 6)
-* POSIXLY_CORRECT environment variable: Options. (line 307)
+* POSIXLY_CORRECT environment variable: Options. (line 316)
+* PREC variable <1>: Setting Precision. (line 6)
+* PREC variable: User-modified. (line 134)
* precedence <1>: Precedence. (line 6)
* precedence: Increment Ops. (line 61)
-* precedence, regexp operators: Regexp Operators. (line 152)
+* precedence, regexp operators: Regexp Operators. (line 156)
* print debugger command: Viewing And Changing Data.
(line 36)
* print statement: Printing. (line 16)
@@ -26868,7 +27790,7 @@ Index
* printf statement, sprintf() function and: Round Function. (line 6)
* printf statement, syntax of: Basic Printf. (line 6)
* printing: Printing. (line 6)
-* printing, list of options: Options. (line 151)
+* printing, list of options: Options. (line 154)
* printing, mailing labels: Labels Program. (line 6)
* printing, unduplicated lines of text: Uniq Program. (line 6)
* printing, user information: Id Program. (line 6)
@@ -26928,12 +27850,12 @@ Index
* r debugger command (alias for run): Debugger Execution Control.
(line 62)
* Rakitzis, Byron: History Sorting. (line 25)
-* rand() function: Numeric Functions. (line 33)
+* rand() function: Numeric Functions. (line 34)
* random numbers, Cliff: Cliff Random Function.
(line 6)
* random numbers, rand()/srand() functions: Numeric Functions.
- (line 33)
-* random numbers, seed of: Numeric Functions. (line 63)
+ (line 34)
+* random numbers, seed of: Numeric Functions. (line 64)
* range expressions (regexps): Bracket Expressions. (line 6)
* range patterns: Ranges. (line 6)
* Rankin, Pat <1>: Bugs. (line 72)
@@ -26943,7 +27865,7 @@ Index
* readable data files, checking: File Checking. (line 6)
* readable.awk program: File Checking. (line 11)
* recipe for a programming language: History. (line 6)
-* record separators <1>: User-modified. (line 134)
+* record separators <1>: User-modified. (line 143)
* record separators: Records. (line 14)
* record separators, changing: Records. (line 81)
* record separators, regular expressions as: Records. (line 112)
@@ -26991,7 +27913,7 @@ Index
(line 59)
* regular expressions, gawk, command-line options: GNU Regexp Operators.
(line 70)
-* regular expressions, interval expressions and: Options. (line 247)
+* regular expressions, interval expressions and: Options. (line 256)
* regular expressions, leftmost longest match: Leftmost Longest.
(line 6)
* regular expressions, operators <1>: Regexp Operators. (line 6)
@@ -27003,7 +27925,7 @@ Index
* regular expressions, operators, gawk: GNU Regexp Operators.
(line 6)
* regular expressions, operators, precedence of: Regexp Operators.
- (line 152)
+ (line 156)
* regular expressions, searching for: Egrep Program. (line 6)
* relational operators, See comparison operators: Typing and Comparison.
(line 9)
@@ -27025,7 +27947,7 @@ Index
* right angle bracket (>), >> operator (I/O): Redirection. (line 50)
* right shift, bitwise: Bitwise Functions. (line 32)
* Ritchie, Dennis: Basic Data Typing. (line 74)
-* RLENGTH variable: Auto-set. (line 183)
+* RLENGTH variable: Auto-set. (line 200)
* RLENGTH variable, match() function and: String Functions. (line 223)
* Robbins, Arnold <1>: Future Extensions. (line 6)
* Robbins, Arnold <2>: Bugs. (line 32)
@@ -27036,23 +27958,27 @@ Index
* Robbins, Arnold: Command Line Field Separator.
(line 80)
* Robbins, Bill: Getline/Pipe. (line 36)
-* Robbins, Harry: Acknowledgments. (line 81)
-* Robbins, Jean: Acknowledgments. (line 81)
+* Robbins, Harry: Acknowledgments. (line 83)
+* Robbins, Jean: Acknowledgments. (line 83)
* Robbins, Miriam <1>: Passwd Functions. (line 90)
* Robbins, Miriam <2>: Getline/Pipe. (line 36)
-* Robbins, Miriam: Acknowledgments. (line 81)
+* Robbins, Miriam: Acknowledgments. (line 83)
* Robinson, Will: Dynamic Extensions. (line 6)
* robot, the: Dynamic Extensions. (line 6)
* Rommel, Kai Uwe: Contributors. (line 43)
* round() user-defined function: Round Function. (line 16)
+* rounding mode, floating-point: Rounding Mode. (line 6)
* rounding numbers: Round Function. (line 6)
-* RS variable <1>: User-modified. (line 134)
+* ROUNDMODE variable <1>: Setting Rounding Mode.
+ (line 6)
+* ROUNDMODE variable: User-modified. (line 138)
+* RS variable <1>: User-modified. (line 143)
* RS variable: Records. (line 20)
* RS variable, multiline records and: Multiple Line. (line 17)
* rshift() function (gawk): Bitwise Functions. (line 51)
-* RSTART variable: Auto-set. (line 189)
+* RSTART variable: Auto-set. (line 206)
* RSTART variable, match() function and: String Functions. (line 223)
-* RT variable <1>: Auto-set. (line 196)
+* RT variable <1>: Auto-set. (line 213)
* RT variable <2>: Getline/Variable/File.
(line 10)
* RT variable <3>: Multiple Line. (line 129)
@@ -27065,7 +27991,7 @@ Index
* rvalues/lvalues: Assignment Ops. (line 32)
* s debugger command (alias for step): Debugger Execution Control.
(line 68)
-* sandbox mode: Options. (line 254)
+* sandbox mode: Options. (line 263)
* scalar values: Basic Data Typing. (line 13)
* Schorr, Andrew: Acknowledgments. (line 60)
* Schreiber, Bert: Acknowledgments. (line 38)
@@ -27095,11 +28021,11 @@ Index
* separators, field, FIELDWIDTHS variable and: User-modified. (line 35)
* separators, field, FPAT variable and: User-modified. (line 45)
* separators, field, POSIX and: Fields. (line 6)
-* separators, for records <1>: User-modified. (line 134)
+* separators, for records <1>: User-modified. (line 143)
* separators, for records: Records. (line 14)
* separators, for records, regular expressions as: Records. (line 112)
* separators, for statements in actions: Action Overview. (line 19)
-* separators, subscript: User-modified. (line 147)
+* separators, subscript: User-modified. (line 156)
* set debugger command: Viewing And Changing Data.
(line 59)
* shells, piping commands into: Redirection. (line 143)
@@ -27136,7 +28062,7 @@ Index
* SIGUSR1 signal: Profiling. (line 180)
* silent debugger command: Debugger Execution Control.
(line 10)
-* sin() function: Numeric Functions. (line 74)
+* sin() function: Numeric Functions. (line 75)
* single precision floating-point: Basic Data Typing. (line 36)
* single quote (') <1>: Quoting. (line 31)
* single quote (') <2>: Long. (line 33)
@@ -27161,7 +28087,7 @@ Index
* source code, jawk: Other Versions. (line 97)
* source code, libmawk: Other Versions. (line 105)
* source code, mawk: Other Versions. (line 35)
-* source code, mixing: Options. (line 114)
+* source code, mixing: Options. (line 117)
* source code, pawk: Other Versions. (line 69)
* source code, QSE Awk: Other Versions. (line 109)
* source code, QuikTrim Awk: Other Versions. (line 113)
@@ -27179,9 +28105,9 @@ Index
* sprintf() function, OFMT variable and: User-modified. (line 124)
* sprintf() function, print/printf statements and: Round Function.
(line 6)
-* sqrt() function: Numeric Functions. (line 77)
+* sqrt() function: Numeric Functions. (line 78)
* square brackets ([]): Regexp Operators. (line 55)
-* srand() function: Numeric Functions. (line 81)
+* srand() function: Numeric Functions. (line 82)
* Stallman, Richard <1>: Glossary. (line 301)
* Stallman, Richard <2>: Contributors. (line 24)
* Stallman, Richard <3>: Acknowledgments. (line 18)
@@ -27232,7 +28158,7 @@ Index
(line 43)
* sub() function, arguments of: String Functions. (line 462)
* sub() function, escape processing: Gory Details. (line 6)
-* subscript separators: User-modified. (line 147)
+* subscript separators: User-modified. (line 156)
* subscripts in arrays, multidimensional: Multi-dimensional. (line 10)
* subscripts in arrays, multidimensional, scanning: Multi-scanning.
(line 11)
@@ -27240,7 +28166,7 @@ Index
(line 6)
* subscripts in arrays, uninitialized variables as: Uninitialized Subscripts.
(line 6)
-* SUBSEP variable: User-modified. (line 147)
+* SUBSEP variable: User-modified. (line 156)
* SUBSEP variable, multidimensional arrays: Multi-dimensional.
(line 16)
* substr() function: String Functions. (line 481)
@@ -27273,7 +28199,7 @@ Index
* 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 153)
+* TEXTDOMAIN variable: User-modified. (line 162)
* TEXTDOMAIN variable, BEGIN pattern and: Programmer i18n. (line 60)
* TEXTDOMAIN variable, portability and: I18N Portability. (line 20)
* textdomain() function (C library): Explaining gettext. (line 27)
@@ -27290,6 +28216,7 @@ Index
* time, managing: Gettimeofday Function.
(line 6)
* time, retrieving: Time Functions. (line 17)
+* timeout, reading input: Read Timeout. (line 6)
* timestamps: Time Functions. (line 6)
* timestamps, converting dates to: Time Functions. (line 74)
* timestamps, formatted: Gettimeofday Function.
@@ -27300,7 +28227,7 @@ Index
* trace debugger command: Miscellaneous Debugger Commands.
(line 110)
* translate.awk program: Translate Program. (line 55)
-* troubleshooting, --non-decimal-data option: Options. (line 182)
+* troubleshooting, --non-decimal-data option: Options. (line 191)
* troubleshooting, == operator: Comparison Operators.
(line 37)
* troubleshooting, awk uses FS not IFS: Field Separators. (line 29)
@@ -27332,7 +28259,7 @@ Index
* troubleshooting, substr() function: String Functions. (line 499)
* troubleshooting, system() function: I/O Functions. (line 85)
* troubleshooting, typographical errors, global variables: Options.
- (line 95)
+ (line 98)
* true, logical: Truth Values. (line 6)
* Trueman, David <1>: Contributors. (line 31)
* Trueman, David <2>: Acknowledgments. (line 47)
@@ -27403,7 +28330,7 @@ Index
(line 6)
* variables, getline command into, using: Getline/Variable. (line 6)
* variables, global, for library functions: Library Names. (line 11)
-* variables, global, printing list of: Options. (line 90)
+* variables, global, printing list of: Options. (line 93)
* variables, initializing: Using Variables. (line 20)
* variables, local: Variable Scope. (line 6)
* variables, names of: Arrays. (line 18)
@@ -27433,7 +28360,7 @@ Index
* Wall, Larry <1>: Future Extensions. (line 6)
* Wall, Larry: Array Intro. (line 6)
* Wallin, Anders: Acknowledgments. (line 60)
-* warnings, issuing: Options. (line 163)
+* warnings, issuing: Options. (line 166)
* watch debugger command: Viewing And Changing Data.
(line 67)
* wc utility: Wc Program. (line 6)
@@ -27445,7 +28372,7 @@ Index
* whitespace, as field separators: Default Field Splitting.
(line 6)
* whitespace, functions, calling: Calling Built-in. (line 10)
-* whitespace, newlines as: Options. (line 228)
+* whitespace, newlines as: Options. (line 237)
* Williams, Kent: Contributors. (line 35)
* Woehlke, Matthew: Contributors. (line 79)
* Woods, John: Contributors. (line 28)
@@ -27500,418 +28427,441 @@ Index

Tag Table:
-Node: Top1346
-Node: Foreword30346
-Node: Preface34691
-Ref: Preface-Footnote-137744
-Ref: Preface-Footnote-237850
-Node: History38082
-Node: Names40473
-Ref: Names-Footnote-141950
-Node: This Manual42022
-Ref: This Manual-Footnote-146960
-Node: Conventions47060
-Node: Manual History49194
-Ref: Manual History-Footnote-152464
-Ref: Manual History-Footnote-252505
-Node: How To Contribute52579
-Node: Acknowledgments53723
-Node: Getting Started58054
-Node: Running gawk60433
-Node: One-shot61619
-Node: Read Terminal62844
-Ref: Read Terminal-Footnote-164494
-Ref: Read Terminal-Footnote-264770
-Node: Long64941
-Node: Executable Scripts66317
-Ref: Executable Scripts-Footnote-168186
-Ref: Executable Scripts-Footnote-268288
-Node: Comments68739
-Node: Quoting71206
-Node: DOS Quoting75829
-Node: Sample Data Files76504
-Node: Very Simple79536
-Node: Two Rules84135
-Node: More Complex86282
-Ref: More Complex-Footnote-189212
-Node: Statements/Lines89297
-Ref: Statements/Lines-Footnote-193759
-Node: Other Features94024
-Node: When94952
-Node: Invoking Gawk97099
-Node: Command Line98484
-Node: Options99267
-Ref: Options-Footnote-1113412
-Node: Other Arguments113437
-Node: Naming Standard Input116095
-Node: Environment Variables117189
-Node: AWKPATH Variable117633
-Ref: AWKPATH Variable-Footnote-1120230
-Node: Other Environment Variables120490
-Node: Exit Status122830
-Node: Include Files123505
-Node: Obsolete126990
-Node: Undocumented127676
-Node: Regexp127917
-Node: Regexp Usage129306
-Node: Escape Sequences131332
-Node: Regexp Operators137095
-Ref: Regexp Operators-Footnote-1144292
-Ref: Regexp Operators-Footnote-2144439
-Node: Bracket Expressions144537
-Ref: table-char-classes146427
-Node: GNU Regexp Operators148950
-Node: Case-sensitivity152673
-Ref: Case-sensitivity-Footnote-1155641
-Ref: Case-sensitivity-Footnote-2155876
-Node: Leftmost Longest155984
-Node: Computed Regexps157185
-Node: Reading Files160595
-Node: Records162536
-Ref: Records-Footnote-1171210
-Node: Fields171247
-Ref: Fields-Footnote-1174280
-Node: Nonconstant Fields174366
-Node: Changing Fields176568
-Node: Field Separators182549
-Node: Default Field Splitting185178
-Node: Regexp Field Splitting186295
-Node: Single Character Fields189637
-Node: Command Line Field Separator190696
-Node: Field Splitting Summary194137
-Ref: Field Splitting Summary-Footnote-1197329
-Node: Constant Size197430
-Node: Splitting By Content202014
-Ref: Splitting By Content-Footnote-1205740
-Node: Multiple Line205780
-Ref: Multiple Line-Footnote-1211627
-Node: Getline211806
-Node: Plain Getline214034
-Node: Getline/Variable216123
-Node: Getline/File217264
-Node: Getline/Variable/File218586
-Ref: Getline/Variable/File-Footnote-1220185
-Node: Getline/Pipe220272
-Node: Getline/Variable/Pipe222832
-Node: Getline/Coprocess223939
-Node: Getline/Variable/Coprocess225182
-Node: Getline Notes225896
-Node: Getline Summary227838
-Ref: table-getline-variants228181
-Node: Command line directories229037
-Node: Printing229662
-Node: Print231293
-Node: Print Examples232630
-Node: Output Separators235414
-Node: OFMT237174
-Node: Printf238532
-Node: Basic Printf239438
-Node: Control Letters240977
-Node: Format Modifiers244789
-Node: Printf Examples250798
-Node: Redirection253513
-Node: Special Files260497
-Node: Special FD261030
-Ref: Special FD-Footnote-1264655
-Node: Special Network264729
-Node: Special Caveats265579
-Node: Close Files And Pipes266375
-Ref: Close Files And Pipes-Footnote-1273398
-Ref: Close Files And Pipes-Footnote-2273546
-Node: Expressions273696
-Node: Values274828
-Node: Constants275504
-Node: Scalar Constants276184
-Ref: Scalar Constants-Footnote-1277043
-Node: Nondecimal-numbers277225
-Node: Regexp Constants280284
-Node: Using Constant Regexps280759
-Node: Variables283814
-Node: Using Variables284469
-Node: Assignment Options286193
-Node: Conversion288065
-Ref: table-locale-affects293441
-Ref: Conversion-Footnote-1294065
-Node: All Operators294174
-Node: Arithmetic Ops294804
-Node: Concatenation297309
-Ref: Concatenation-Footnote-1300102
-Node: Assignment Ops300222
-Ref: table-assign-ops305210
-Node: Increment Ops306618
-Node: Truth Values and Conditions310088
-Node: Truth Values311171
-Node: Typing and Comparison312220
-Node: Variable Typing313009
-Ref: Variable Typing-Footnote-1316906
-Node: Comparison Operators317028
-Ref: table-relational-ops317438
-Node: POSIX String Comparison320987
-Ref: POSIX String Comparison-Footnote-1321943
-Node: Boolean Ops322081
-Ref: Boolean Ops-Footnote-1326159
-Node: Conditional Exp326250
-Node: Function Calls327982
-Node: Precedence331576
-Node: Locales335245
-Node: Patterns and Actions336334
-Node: Pattern Overview337388
-Node: Regexp Patterns339057
-Node: Expression Patterns339600
-Node: Ranges343285
-Node: BEGIN/END346251
-Node: Using BEGIN/END347013
-Ref: Using BEGIN/END-Footnote-1349744
-Node: I/O And BEGIN/END349850
-Node: BEGINFILE/ENDFILE352132
-Node: Empty355025
-Node: Using Shell Variables355341
-Node: Action Overview357626
-Node: Statements359983
-Node: If Statement361837
-Node: While Statement363336
-Node: Do Statement365380
-Node: For Statement366536
-Node: Switch Statement369688
-Node: Break Statement371785
-Node: Continue Statement373775
-Node: Next Statement375568
-Node: Nextfile Statement377958
-Node: Exit Statement380503
-Node: Built-in Variables382919
-Node: User-modified384014
-Ref: User-modified-Footnote-1392040
-Node: Auto-set392102
-Ref: Auto-set-Footnote-1401393
-Node: ARGC and ARGV401598
-Node: Arrays405449
-Node: Array Basics406954
-Node: Array Intro407780
-Node: Reference to Elements412098
-Node: Assigning Elements414368
-Node: Array Example414859
-Node: Scanning an Array416591
-Node: Controlling Scanning418905
-Ref: Controlling Scanning-Footnote-1423838
-Node: Delete424154
-Ref: Delete-Footnote-1426589
-Node: Numeric Array Subscripts426646
-Node: Uninitialized Subscripts428829
-Node: Multi-dimensional430457
-Node: Multi-scanning433551
-Node: Arrays of Arrays435142
-Node: Functions439787
-Node: Built-in440609
-Node: Calling Built-in441687
-Node: Numeric Functions443675
-Ref: Numeric Functions-Footnote-1447440
-Ref: Numeric Functions-Footnote-2447797
-Ref: Numeric Functions-Footnote-3447845
-Node: String Functions448114
-Ref: String Functions-Footnote-1471611
-Ref: String Functions-Footnote-2471740
-Ref: String Functions-Footnote-3471988
-Node: Gory Details472075
-Ref: table-sub-escapes473754
-Ref: table-sub-posix-92475108
-Ref: table-sub-proposed476451
-Ref: table-posix-sub477801
-Ref: table-gensub-escapes479347
-Ref: Gory Details-Footnote-1480554
-Ref: Gory Details-Footnote-2480605
-Node: I/O Functions480756
-Ref: I/O Functions-Footnote-1487411
-Node: Time Functions487558
-Ref: Time Functions-Footnote-1498450
-Ref: Time Functions-Footnote-2498518
-Ref: Time Functions-Footnote-3498676
-Ref: Time Functions-Footnote-4498787
-Ref: Time Functions-Footnote-5498899
-Ref: Time Functions-Footnote-6499126
-Node: Bitwise Functions499392
-Ref: table-bitwise-ops499950
-Ref: Bitwise Functions-Footnote-1504110
-Node: Type Functions504294
-Node: I18N Functions504764
-Node: User-defined506391
-Node: Definition Syntax507195
-Ref: Definition Syntax-Footnote-1512105
-Node: Function Example512174
-Node: Function Caveats514768
-Node: Calling A Function515189
-Node: Variable Scope516304
-Node: Pass By Value/Reference518279
-Node: Return Statement521719
-Node: Dynamic Typing524700
-Node: Indirect Calls525435
-Node: Internationalization535120
-Node: I18N and L10N536546
-Node: Explaining gettext537232
-Ref: Explaining gettext-Footnote-1542298
-Ref: Explaining gettext-Footnote-2542482
-Node: Programmer i18n542647
-Node: Translator i18n546847
-Node: String Extraction547640
-Ref: String Extraction-Footnote-1548601
-Node: Printf Ordering548687
-Ref: Printf Ordering-Footnote-1551471
-Node: I18N Portability551535
-Ref: I18N Portability-Footnote-1553984
-Node: I18N Example554047
-Ref: I18N Example-Footnote-1556682
-Node: Gawk I18N556754
-Node: Advanced Features557371
-Node: Nondecimal Data558884
-Node: Array Sorting560467
-Node: Controlling Array Traversal561164
-Node: Array Sorting Functions569401
-Ref: Array Sorting Functions-Footnote-1573075
-Ref: Array Sorting Functions-Footnote-2573168
-Node: Two-way I/O573362
-Ref: Two-way I/O-Footnote-1578794
-Node: TCP/IP Networking578864
-Node: Profiling581708
-Node: Library Functions589162
-Ref: Library Functions-Footnote-1592169
-Node: Library Names592340
-Ref: Library Names-Footnote-1595811
-Ref: Library Names-Footnote-2596031
-Node: General Functions596117
-Node: Strtonum Function597070
-Node: Assert Function600000
-Node: Round Function603326
-Node: Cliff Random Function604869
-Node: Ordinal Functions605885
-Ref: Ordinal Functions-Footnote-1608955
-Ref: Ordinal Functions-Footnote-2609207
-Node: Join Function609416
-Ref: Join Function-Footnote-1611187
-Node: Gettimeofday Function611387
-Node: Data File Management615102
-Node: Filetrans Function615734
-Node: Rewind Function619873
-Node: File Checking621260
-Node: Empty Files622354
-Node: Ignoring Assigns624584
-Node: Getopt Function626137
-Ref: Getopt Function-Footnote-1637441
-Node: Passwd Functions637644
-Ref: Passwd Functions-Footnote-1646619
-Node: Group Functions646707
-Node: Walking Arrays654791
-Node: Sample Programs656360
-Node: Running Examples657025
-Node: Clones657753
-Node: Cut Program658977
-Node: Egrep Program668822
-Ref: Egrep Program-Footnote-1676595
-Node: Id Program676705
-Node: Split Program680321
-Ref: Split Program-Footnote-1683840
-Node: Tee Program683968
-Node: Uniq Program686771
-Node: Wc Program694200
-Ref: Wc Program-Footnote-1698466
-Ref: Wc Program-Footnote-2698666
-Node: Miscellaneous Programs698758
-Node: Dupword Program699946
-Node: Alarm Program701977
-Node: Translate Program706726
-Ref: Translate Program-Footnote-1711113
-Ref: Translate Program-Footnote-2711341
-Node: Labels Program711475
-Ref: Labels Program-Footnote-1714846
-Node: Word Sorting714930
-Node: History Sorting718814
-Node: Extract Program720653
-Ref: Extract Program-Footnote-1728136
-Node: Simple Sed728264
-Node: Igawk Program731326
-Ref: Igawk Program-Footnote-1746483
-Ref: Igawk Program-Footnote-2746684
-Node: Anagram Program746822
-Node: Signature Program749890
-Node: Debugger750990
-Node: Debugging751942
-Node: Debugging Concepts752375
-Node: Debugging Terms754231
-Node: Awk Debugging756828
-Node: Sample Debugging Session757720
-Node: Debugger Invocation758240
-Node: Finding The Bug759569
-Node: List of Debugger Commands766057
-Node: Breakpoint Control767391
-Node: Debugger Execution Control771055
-Node: Viewing And Changing Data774415
-Node: Execution Stack777771
-Node: Debugger Info779238
-Node: Miscellaneous Debugger Commands783219
-Node: Readline Support788664
-Node: Limitations789495
-Node: Language History791747
-Node: V7/SVR3.1793259
-Node: SVR4795580
-Node: POSIX797022
-Node: BTL798030
-Node: POSIX/GNU798764
-Node: Common Extensions803915
-Node: Ranges and Locales805022
-Ref: Ranges and Locales-Footnote-1809626
-Node: Contributors809847
-Node: Installation814108
-Node: Gawk Distribution815002
-Node: Getting815486
-Node: Extracting816312
-Node: Distribution contents818004
-Node: Unix Installation823226
-Node: Quick Installation823843
-Node: Additional Configuration Options825805
-Node: Configuration Philosophy827282
-Node: Non-Unix Installation829624
-Node: PC Installation830082
-Node: PC Binary Installation831381
-Node: PC Compiling833229
-Node: PC Testing836173
-Node: PC Using837349
-Node: Cygwin841534
-Node: MSYS842534
-Node: VMS Installation843048
-Node: VMS Compilation843651
-Ref: VMS Compilation-Footnote-1844658
-Node: VMS Installation Details844716
-Node: VMS Running846351
-Node: VMS Old Gawk847958
-Node: Bugs848432
-Node: Other Versions852284
-Node: Notes857599
-Node: Compatibility Mode858291
-Node: Additions859074
-Node: Accessing The Source859886
-Node: Adding Code861311
-Node: New Ports867278
-Node: Dynamic Extensions871391
-Node: Internals872831
-Node: Plugin License881350
-Node: Loading Extensions881988
-Node: Sample Library883798
-Node: Internal File Description884488
-Node: Internal File Ops888203
-Ref: Internal File Ops-Footnote-1892927
-Node: Using Internal File Ops893067
-Node: Future Extensions895444
-Node: Basic Concepts897948
-Node: Basic High Level898705
-Ref: Basic High Level-Footnote-1902740
-Node: Basic Data Typing902925
-Node: Floating Point Issues907450
-Node: String Conversion Precision908533
-Ref: String Conversion Precision-Footnote-1910233
-Node: Unexpected Results910342
-Node: POSIX Floating Point Problems912168
-Ref: POSIX Floating Point Problems-Footnote-1915873
-Node: Glossary915911
-Node: Copying940887
-Node: GNU Free Documentation License978444
-Node: Index1003581
+Node: Top1352
+Node: Foreword31559
+Node: Preface35904
+Ref: Preface-Footnote-138957
+Ref: Preface-Footnote-239063
+Node: History39295
+Node: Names41686
+Ref: Names-Footnote-143163
+Node: This Manual43235
+Ref: This Manual-Footnote-148173
+Node: Conventions48273
+Node: Manual History50407
+Ref: Manual History-Footnote-153677
+Ref: Manual History-Footnote-253718
+Node: How To Contribute53792
+Node: Acknowledgments54936
+Node: Getting Started59432
+Node: Running gawk61811
+Node: One-shot62997
+Node: Read Terminal64222
+Ref: Read Terminal-Footnote-165872
+Ref: Read Terminal-Footnote-266148
+Node: Long66319
+Node: Executable Scripts67695
+Ref: Executable Scripts-Footnote-169564
+Ref: Executable Scripts-Footnote-269666
+Node: Comments70213
+Node: Quoting72680
+Node: DOS Quoting77303
+Node: Sample Data Files77978
+Node: Very Simple81010
+Node: Two Rules85609
+Node: More Complex87756
+Ref: More Complex-Footnote-190686
+Node: Statements/Lines90771
+Ref: Statements/Lines-Footnote-195233
+Node: Other Features95498
+Node: When96426
+Node: Invoking Gawk98573
+Node: Command Line99958
+Node: Options100741
+Ref: Options-Footnote-1115205
+Node: Other Arguments115230
+Node: Naming Standard Input117888
+Node: Environment Variables118982
+Node: AWKPATH Variable119426
+Ref: AWKPATH Variable-Footnote-1122023
+Node: Other Environment Variables122283
+Node: Exit Status124775
+Node: Include Files125450
+Node: Obsolete128935
+Node: Undocumented129621
+Node: Regexp129862
+Node: Regexp Usage131251
+Node: Escape Sequences133277
+Node: Regexp Operators139040
+Ref: Regexp Operators-Footnote-1146420
+Ref: Regexp Operators-Footnote-2146567
+Node: Bracket Expressions146665
+Ref: table-char-classes148555
+Node: GNU Regexp Operators151078
+Node: Case-sensitivity154801
+Ref: Case-sensitivity-Footnote-1157769
+Ref: Case-sensitivity-Footnote-2158004
+Node: Leftmost Longest158112
+Node: Computed Regexps159313
+Node: Reading Files162723
+Node: Records164727
+Ref: Records-Footnote-1173401
+Node: Fields173438
+Ref: Fields-Footnote-1176471
+Node: Nonconstant Fields176557
+Node: Changing Fields178759
+Node: Field Separators184740
+Node: Default Field Splitting187369
+Node: Regexp Field Splitting188486
+Node: Single Character Fields191828
+Node: Command Line Field Separator192887
+Node: Field Splitting Summary196328
+Ref: Field Splitting Summary-Footnote-1199520
+Node: Constant Size199621
+Node: Splitting By Content204205
+Ref: Splitting By Content-Footnote-1207931
+Node: Multiple Line207971
+Ref: Multiple Line-Footnote-1213818
+Node: Getline213997
+Node: Plain Getline216213
+Node: Getline/Variable218302
+Node: Getline/File219443
+Node: Getline/Variable/File220765
+Ref: Getline/Variable/File-Footnote-1222364
+Node: Getline/Pipe222451
+Node: Getline/Variable/Pipe225011
+Node: Getline/Coprocess226118
+Node: Getline/Variable/Coprocess227361
+Node: Getline Notes228075
+Node: Getline Summary230017
+Ref: table-getline-variants230360
+Node: Read Timeout231216
+Ref: Read Timeout-Footnote-1234961
+Node: Command line directories235018
+Node: Printing235648
+Node: Print237279
+Node: Print Examples238616
+Node: Output Separators241400
+Node: OFMT243160
+Node: Printf244518
+Node: Basic Printf245424
+Node: Control Letters246963
+Node: Format Modifiers250775
+Node: Printf Examples256784
+Node: Redirection259499
+Node: Special Files266483
+Node: Special FD267016
+Ref: Special FD-Footnote-1270641
+Node: Special Network270715
+Node: Special Caveats271565
+Node: Close Files And Pipes272361
+Ref: Close Files And Pipes-Footnote-1279384
+Ref: Close Files And Pipes-Footnote-2279532
+Node: Expressions279682
+Node: Values280814
+Node: Constants281490
+Node: Scalar Constants282170
+Ref: Scalar Constants-Footnote-1283029
+Node: Nondecimal-numbers283211
+Node: Regexp Constants286270
+Node: Using Constant Regexps286745
+Node: Variables289800
+Node: Using Variables290455
+Node: Assignment Options292179
+Node: Conversion294051
+Ref: table-locale-affects299427
+Ref: Conversion-Footnote-1300051
+Node: All Operators300160
+Node: Arithmetic Ops300790
+Node: Concatenation303295
+Ref: Concatenation-Footnote-1306088
+Node: Assignment Ops306208
+Ref: table-assign-ops311196
+Node: Increment Ops312604
+Node: Truth Values and Conditions316074
+Node: Truth Values317157
+Node: Typing and Comparison318206
+Node: Variable Typing318995
+Ref: Variable Typing-Footnote-1322892
+Node: Comparison Operators323014
+Ref: table-relational-ops323424
+Node: POSIX String Comparison326973
+Ref: POSIX String Comparison-Footnote-1327929
+Node: Boolean Ops328067
+Ref: Boolean Ops-Footnote-1332145
+Node: Conditional Exp332236
+Node: Function Calls333968
+Node: Precedence337562
+Node: Locales341231
+Node: Patterns and Actions342320
+Node: Pattern Overview343374
+Node: Regexp Patterns345043
+Node: Expression Patterns345586
+Node: Ranges349271
+Node: BEGIN/END352237
+Node: Using BEGIN/END352999
+Ref: Using BEGIN/END-Footnote-1355730
+Node: I/O And BEGIN/END355836
+Node: BEGINFILE/ENDFILE358118
+Node: Empty361011
+Node: Using Shell Variables361327
+Node: Action Overview363612
+Node: Statements365969
+Node: If Statement367823
+Node: While Statement369322
+Node: Do Statement371366
+Node: For Statement372522
+Node: Switch Statement375674
+Node: Break Statement377771
+Node: Continue Statement379761
+Node: Next Statement381554
+Node: Nextfile Statement383944
+Node: Exit Statement386489
+Node: Built-in Variables388905
+Node: User-modified390000
+Ref: User-modified-Footnote-1398355
+Node: Auto-set398417
+Ref: Auto-set-Footnote-1408263
+Node: ARGC and ARGV408468
+Node: Arrays412319
+Node: Array Basics413824
+Node: Array Intro414650
+Node: Reference to Elements418968
+Node: Assigning Elements421238
+Node: Array Example421729
+Node: Scanning an Array423461
+Node: Controlling Scanning425775
+Ref: Controlling Scanning-Footnote-1430708
+Node: Delete431024
+Ref: Delete-Footnote-1433459
+Node: Numeric Array Subscripts433516
+Node: Uninitialized Subscripts435699
+Node: Multi-dimensional437327
+Node: Multi-scanning440421
+Node: Arrays of Arrays442012
+Node: Functions446657
+Node: Built-in447479
+Node: Calling Built-in448557
+Node: Numeric Functions450545
+Ref: Numeric Functions-Footnote-1454377
+Ref: Numeric Functions-Footnote-2454734
+Ref: Numeric Functions-Footnote-3454782
+Node: String Functions455051
+Ref: String Functions-Footnote-1478548
+Ref: String Functions-Footnote-2478677
+Ref: String Functions-Footnote-3478925
+Node: Gory Details479012
+Ref: table-sub-escapes480691
+Ref: table-sub-posix-92482045
+Ref: table-sub-proposed483388
+Ref: table-posix-sub484738
+Ref: table-gensub-escapes486284
+Ref: Gory Details-Footnote-1487491
+Ref: Gory Details-Footnote-2487542
+Node: I/O Functions487693
+Ref: I/O Functions-Footnote-1494348
+Node: Time Functions494495
+Ref: Time Functions-Footnote-1505387
+Ref: Time Functions-Footnote-2505455
+Ref: Time Functions-Footnote-3505613
+Ref: Time Functions-Footnote-4505724
+Ref: Time Functions-Footnote-5505836
+Ref: Time Functions-Footnote-6506063
+Node: Bitwise Functions506329
+Ref: table-bitwise-ops506887
+Ref: Bitwise Functions-Footnote-1511047
+Node: Type Functions511231
+Node: I18N Functions511701
+Node: User-defined513328
+Node: Definition Syntax514132
+Ref: Definition Syntax-Footnote-1519042
+Node: Function Example519111
+Node: Function Caveats521705
+Node: Calling A Function522126
+Node: Variable Scope523241
+Node: Pass By Value/Reference525216
+Node: Return Statement528656
+Node: Dynamic Typing531637
+Node: Indirect Calls532372
+Node: Internationalization542057
+Node: I18N and L10N543496
+Node: Explaining gettext544182
+Ref: Explaining gettext-Footnote-1549248
+Ref: Explaining gettext-Footnote-2549432
+Node: Programmer i18n549597
+Node: Translator i18n553797
+Node: String Extraction554590
+Ref: String Extraction-Footnote-1555551
+Node: Printf Ordering555637
+Ref: Printf Ordering-Footnote-1558421
+Node: I18N Portability558485
+Ref: I18N Portability-Footnote-1560934
+Node: I18N Example560997
+Ref: I18N Example-Footnote-1563632
+Node: Gawk I18N563704
+Node: Arbitrary Precision Arithmetic564321
+Ref: Arbitrary Precision Arithmetic-Footnote-1567196
+Node: Floating-point Programming567344
+Node: Floating-point Representation572614
+Node: Floating-point Context573718
+Ref: table-ieee-formats574553
+Node: Rounding Mode575923
+Ref: table-rounding-modes576550
+Ref: Rounding Mode-Footnote-1579673
+Node: Arbitrary Precision Floats579854
+Ref: Arbitrary Precision Floats-Footnote-1581895
+Node: Setting Precision582206
+Node: Setting Rounding Mode584964
+Node: Floating-point Constants585881
+Node: Changing Precision587300
+Ref: Changing Precision-Footnote-1588700
+Node: Exact Arithmetic588873
+Node: Integer Programming591886
+Node: Arbitrary Precision Integers593666
+Ref: Arbitrary Precision Integers-Footnote-1596690
+Node: MPFR and GMP Libraries596836
+Node: Advanced Features597221
+Node: Nondecimal Data598744
+Node: Array Sorting600327
+Node: Controlling Array Traversal601024
+Node: Array Sorting Functions609261
+Ref: Array Sorting Functions-Footnote-1612935
+Ref: Array Sorting Functions-Footnote-2613028
+Node: Two-way I/O613222
+Ref: Two-way I/O-Footnote-1618654
+Node: TCP/IP Networking618724
+Node: Profiling621568
+Node: Library Functions629022
+Ref: Library Functions-Footnote-1632029
+Node: Library Names632200
+Ref: Library Names-Footnote-1635671
+Ref: Library Names-Footnote-2635891
+Node: General Functions635977
+Node: Strtonum Function636930
+Node: Assert Function639860
+Node: Round Function643186
+Node: Cliff Random Function644729
+Node: Ordinal Functions645745
+Ref: Ordinal Functions-Footnote-1648815
+Ref: Ordinal Functions-Footnote-2649067
+Node: Join Function649276
+Ref: Join Function-Footnote-1651047
+Node: Gettimeofday Function651247
+Node: Data File Management654962
+Node: Filetrans Function655594
+Node: Rewind Function659733
+Node: File Checking661120
+Node: Empty Files662214
+Node: Ignoring Assigns664444
+Node: Getopt Function665997
+Ref: Getopt Function-Footnote-1677301
+Node: Passwd Functions677504
+Ref: Passwd Functions-Footnote-1686479
+Node: Group Functions686567
+Node: Walking Arrays694651
+Node: Sample Programs696220
+Node: Running Examples696885
+Node: Clones697613
+Node: Cut Program698837
+Node: Egrep Program708682
+Ref: Egrep Program-Footnote-1716455
+Node: Id Program716565
+Node: Split Program720181
+Ref: Split Program-Footnote-1723700
+Node: Tee Program723828
+Node: Uniq Program726631
+Node: Wc Program734060
+Ref: Wc Program-Footnote-1738326
+Ref: Wc Program-Footnote-2738526
+Node: Miscellaneous Programs738618
+Node: Dupword Program739806
+Node: Alarm Program741837
+Node: Translate Program746586
+Ref: Translate Program-Footnote-1750973
+Ref: Translate Program-Footnote-2751201
+Node: Labels Program751335
+Ref: Labels Program-Footnote-1754706
+Node: Word Sorting754790
+Node: History Sorting758674
+Node: Extract Program760513
+Ref: Extract Program-Footnote-1767996
+Node: Simple Sed768124
+Node: Igawk Program771186
+Ref: Igawk Program-Footnote-1786343
+Ref: Igawk Program-Footnote-2786544
+Node: Anagram Program786682
+Node: Signature Program789750
+Node: Debugger790850
+Node: Debugging791802
+Node: Debugging Concepts792235
+Node: Debugging Terms794091
+Node: Awk Debugging796688
+Node: Sample Debugging Session797580
+Node: Debugger Invocation798100
+Node: Finding The Bug799429
+Node: List of Debugger Commands805917
+Node: Breakpoint Control807251
+Node: Debugger Execution Control810915
+Node: Viewing And Changing Data814275
+Node: Execution Stack817631
+Node: Debugger Info819098
+Node: Miscellaneous Debugger Commands823079
+Node: Readline Support828524
+Node: Limitations829355
+Node: Language History831607
+Node: V7/SVR3.1833119
+Node: SVR4835440
+Node: POSIX836882
+Node: BTL837890
+Node: POSIX/GNU838624
+Node: Common Extensions843775
+Node: Ranges and Locales844882
+Ref: Ranges and Locales-Footnote-1849486
+Node: Contributors849707
+Node: Installation853968
+Node: Gawk Distribution854862
+Node: Getting855346
+Node: Extracting856172
+Node: Distribution contents857864
+Node: Unix Installation863086
+Node: Quick Installation863703
+Node: Additional Configuration Options865665
+Node: Configuration Philosophy867142
+Node: Non-Unix Installation869484
+Node: PC Installation869942
+Node: PC Binary Installation871241
+Node: PC Compiling873089
+Node: PC Testing876033
+Node: PC Using877209
+Node: Cygwin881394
+Node: MSYS882394
+Node: VMS Installation882908
+Node: VMS Compilation883511
+Ref: VMS Compilation-Footnote-1884518
+Node: VMS Installation Details884576
+Node: VMS Running886211
+Node: VMS Old Gawk887818
+Node: Bugs888292
+Node: Other Versions892144
+Node: Notes897459
+Node: Compatibility Mode898151
+Node: Additions898934
+Node: Accessing The Source899746
+Node: Adding Code901171
+Node: New Ports907138
+Node: Dynamic Extensions911251
+Node: Internals912691
+Node: Plugin License921210
+Node: Loading Extensions921848
+Node: Sample Library923658
+Node: Internal File Description924348
+Node: Internal File Ops928063
+Ref: Internal File Ops-Footnote-1932787
+Node: Using Internal File Ops932927
+Node: Future Extensions935304
+Node: Basic Concepts937808
+Node: Basic High Level938565
+Ref: Basic High Level-Footnote-1942600
+Node: Basic Data Typing942785
+Node: Floating Point Issues947310
+Node: String Conversion Precision948393
+Ref: String Conversion Precision-Footnote-1950093
+Node: Unexpected Results950202
+Node: POSIX Floating Point Problems952028
+Ref: POSIX Floating Point Problems-Footnote-1955733
+Node: Glossary955771
+Node: Copying980747
+Node: GNU Free Documentation License1018304
+Node: Index1043441

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 7b46026b..d3f5c672 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -20,7 +20,7 @@
@c applies to and all the info about who's publishing this edition
@c These apply across the board.
-@set UPDATE-MONTH November, 2011
+@set UPDATE-MONTH February, 2012
@set VERSION 4.0
@set PATCHLEVEL 1
@@ -79,9 +79,11 @@
@c some special symbols
@iftex
@set LEQ @math{@leq}
+@set PI @math{@pi}
@end iftex
@ifnottex
@set LEQ <=
+@set PI @i{pi}
@end ifnottex
@ifnottex
@@ -143,7 +145,7 @@ Some comments on the layout for TeX.
@copying
Copyright @copyright{} 1989, 1991, 1992, 1993, 1996, 1997, 1998, 1999,
-2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011
+2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
@sp 2
@@ -285,6 +287,8 @@ particular records in a file and perform operations upon them.
* Functions:: Built-in and user-defined functions.
* Internationalization:: Getting @command{gawk} to speak your
language.
+* Arbitrary Precision Arithmetic:: Arbitrary precision arithmetic with
+ @command{gawk}.
* Advanced Features:: Stuff for advanced users, specific to
@command{gawk}.
* Library Functions:: A Library of @command{awk} Functions.
@@ -554,6 +558,21 @@ particular records in a file and perform operations upon them.
* I18N Portability:: @command{awk}-level portability issues.
* I18N Example:: A simple i18n example.
* Gawk I18N:: @command{gawk} is also internationalized.
+* Floating-point Programming:: Effective floating-point programming.
+* Floating-point Representation:: Binary floating-point representation.
+* Floating-point Context:: Floating-point context.
+* Rounding Mode:: Floating-point rounding mode.
+* Arbitrary Precision Floats:: Arbitrary precision floating-point
+ arithmetic with @command{gawk}.
+* Setting Precision:: Setting the working precision.
+* Setting Rounding Mode:: Setting the rounding mode.
+* Floating-point Constants:: Representing floating-point constants.
+* Changing Precision:: Changing the precision of a number.
+* Exact Arithmetic:: Exact arithmetic with floating-point numbers.
+* Integer Programming:: Effective integer programming.
+* Arbitrary Precision Integers:: Arbitrary precision integer
+ arithmetic with @command{gawk}.
+* MPFR and GMP Libraries:: Information about the MPFR and GMP libraries.
* Nondecimal Data:: Allowing nondecimal input data.
* Array Sorting:: Facilities for controlling array traversal
and sorting arrays.
@@ -1598,10 +1617,13 @@ has been and continues to be a pleasure working with this team of fine
people.
John Haque contributed the modifications to convert @command{gawk}
-into a byte-code interpreter, including the debugger. Stephen Davies
+into a byte-code interpreter, including the debugger, and the
+additional modifications for support of arbitrary precision arithmetic.
+Stephen Davies
contributed to the effort to bring the byte-code changes into the mainstream
code base.
Efraim Yawitz contributed the initial text of @ref{Debugger}.
+John Haque contributed the initial text of @ref{Arbitrary Precision Arithmetic}.
@cindex Kernighan, Brian
I would like to thank Brian Kernighan for invaluable assistance during the
@@ -1973,9 +1995,11 @@ line beginning with @samp{#!} lists the full @value{FN} of an interpreter
to run and an optional initial command-line argument to pass to that
interpreter. The operating system then runs the interpreter with the given
argument and the full argument list of the executed program. The first argument
-in the list is the full @value{FN} of the @command{awk} program. The rest of the
+in the list is the full @value{FN} of the @command{awk} program.
+The rest of the
argument list contains either options to @command{awk}, or @value{DF}s,
-or both.} as if you had
+or both. Note that on many systems @command{awk} may be found in
+@file{/usr/bin} instead of in @file{/bin}. Caveat Emptor.} as if you had
typed @samp{awk -f advice}:
@example
@@ -3058,6 +3082,9 @@ The following list describes @command{gawk}-specific options:
@cindex @code{-b} option
@cindex @code{--characters-as-bytes} option
Cause @command{gawk} to treat all input data as single-byte characters.
+In addition, all output written with @code{print} or @code{printf}
+are treated as single-byte characters.
+
Normally, @command{gawk} follows the POSIX standard and attempts to process
its input data according to the current locale. This can often involve
converting multibyte characters into wide characters (internally), and
@@ -3219,6 +3246,14 @@ when eliminating problems pointed out by @option{--lint}, you should take
care to search for all occurrences of each inappropriate construct. As
@command{awk} programs are usually short, doing so is not burdensome.
+@item -M
+@itemx --bignum
+@cindex @code{-M} option
+@cindex @code{--bignum} option
+Force arbitrary precision arithmetic on numbers. This option has no effect
+if @command{gawk} is not compiled to use the GNU MPFR and MP libraries
+(@pxref{Arbitrary Precision Arithmetic}).
+
@item -n
@itemx --non-decimal-data
@cindex @code{-n} option
@@ -4573,6 +4608,10 @@ it is good practice to always escape them with a backslash. Then the
regexp constants are valid and work the way you want them to, using
any version of @command{awk}.@footnote{Use two backslashes if you're
using a string constant with a regexp operator or function.}
+
+Finally, when @samp{@{} and @samp{@}} appear in regexp constants
+in a way that cannot be interpreted as an interval expression
+(such as @code{/q@{a@}/}), then they stand for themselves.
@end table
@cindex precedence, regexp operators
@@ -12659,6 +12698,18 @@ This is the output record separator. It is output at the end of every
@code{print} statement. Its default value is @code{"\n"}, the newline
character. (@xref{Output Separators}.)
+@cindex @code{PREC} variable
+@item PREC #
+The working precision of arbitrary precision floating-point numbers,
+53 by default (@pxref{Setting Precision}).
+
+@cindex @code{ROUNDMODE} variable
+@item ROUNDMODE #
+The rounding mode to use for arbitrary precision arithmetic on
+numbers, by default @code{"N"} (@samp{roundTiesToEven} in
+the IEEE-754 standard)
+(@pxref{Setting Rounding Mode}).
+
@cindex @code{RS} variable
@cindex separators, for records
@cindex record separators
@@ -12944,6 +12995,25 @@ The value of the @code{getuid()} system call.
The version of @command{gawk}.
@end table
+The following additional elements in the array
+are available to provide information about the MPFR and GMP libraries
+if your version of @command{gawk} supports arbitrary precision numbers
+(@pxref{Arbitrary Precision Arithmetic}):
+
+@table @code
+@item PROCINFO["mpfr_version"]
+The version of the GNU MPFR library.
+
+@item PROCINFO["gmp_version"]
+The version of the GNU MP library.
+
+@item PROCINFO["prec_max"]
+The maximum precision supported by MPFR.
+
+@item PROCINFO["prec_min"]
+The minimum precision required by MPFR.
+@end table
+
On some systems, there may be elements in the array, @code{"group1"}
through @code{"group@var{N}"} for some @var{N}. @var{N} is the number of
supplementary groups that the process has. Use the @code{in} operator
@@ -14400,6 +14470,13 @@ Optional parameters are enclosed in square brackets@w{ ([ ]):}
@item atan2(@var{y}, @var{x})
@cindex @code{atan2()} function
Return the arctangent of @code{@var{y} / @var{x}} in radians.
+You can use @samp{pi = atan2(0, -1)} to retrieve the value of
+@tex
+$\pi$.
+@end tex
+@ifnottex
+pi.
+@end ifnottex
@item cos(@var{x})
@cindex @code{cos()} function
@@ -18355,6 +18432,863 @@ then @command{gawk} produces usage messages, warnings,
and fatal errors in the local language.
@c ENDOFRANGE inloc
+@node Arbitrary Precision Arithmetic
+@chapter Arbitrary Precision Arithmetic with @command{gawk}
+@cindex arbitrary precision
+@cindex multiple precision
+@cindex infinite precision
+@cindex floating-point numbers, arbitrary precision
+@cindex MPFR
+@cindex GMP
+
+@cindex Knuth, Donald
+@quotation
+@i{There's a credibility gap: We don't know how much of the computer's answers
+to believe. Novice computer users solve this problem by implicitly trusting
+in the computer as an infallible authority; they tend to believe that all
+digits of a printed answer are significant. Disillusioned computer users have
+just the opposite approach; they are constantly afraid that their answers
+are almost meaningless.}
+
+Donald Knuth@footnote{Donald E.@: Knuth.
+@cite{The Art of Computer Programming}. Volume 2,
+@cite{Seminumerical Algorithms}, third edition,
+1998, ISBN 0-201-89683-4, p.@: 229.}
+@end quotation
+
+This @value{SECTION} decsribes how to use the arbitrary precision
+(also known as @dfn{multiple precision} or @dfn{infinite precision}) numeric
+capabilites in @command{gawk} to produce maximally accurate results
+when you need it. But first you should check if your version of
+@command{gawk} supports arbitrary precision arithmetic.
+The easiest way to find out is to look at the output of
+the following command:
+
+@example
+$ @kbd{gawk --version}
+@print{} GNU Awk 4.1.0 (GNU MPFR 3.1.0, GNU MP 5.0.3)
+@print{} Copyright (C) 1989, 1991-2012 Free Software Foundation.
+@dots{}
+@end example
+
+@command{gawk} uses the
+@uref{http://www.mpfr.org, GNU MPFR}
+and
+@uref{http://gmplib.org, GNU MP} (GMP)
+libraries for arbitrary precision
+arithmetic on numbers. So if you do not see the names of these libraries
+in the output, then your version of @command{gawk} does not support
+arbitrary precision arithmetic.
+
+Even if you aren't interested in arbitrary precision arithmetic, you
+may still benifit from knowing about how @command{gawk} handles numbers
+in general, and the limitations of doing arithmetic with ordinary
+@command{gawk} numbers.
+
+@menu
+* Floating-point Programming:: Effective Floating-point Programming.
+* Floating-point Representation:: Binary Floating-point Representation.
+* Floating-point Context:: Floating-point Context.
+* Rounding Mode:: Floating-point Rounding Mode.
+* Arbitrary Precision Floats:: Arbitrary Precision Floating-point
+ Arithmetic with @command{gawk}.
+* Setting Precision:: Setting the Working Precision.
+* Setting Rounding Mode:: Setting the Rounding Mode.
+* Floating-point Constants:: Representing Floating-point Constants.
+* Changing Precision:: Changing the Precision of a Number.
+* Exact Arithmetic:: Exact Arithmetic with Floating-point Numbers.
+* Integer Programming:: Effective Integer Programming.
+* Arbitrary Precision Integers:: Arbitrary Precision Integer
+ Arithmetic with @command{gawk}.
+* MPFR and GMP Libraries:: Information About the MPFR and GMP Libraries.
+@end menu
+
+@node Floating-point Programming
+@section Effective Floating-point Programming
+
+Numerical programming is an extensive area; if you need to develop
+sophisticated numerical algorithms then @command{gawk} may not be
+the ideal tool, and this documentation may not be sufficient.
+@c FIXME: JOHN: Do you want to cite some actual books?
+It might require a book or two to communicate how to compute
+with ideal accuracy and precision
+and the result often depends on the particular application.
+
+@quotation NOTE
+A floating-point calculation's @dfn{accuracy} is how close it comes
+to the real value. This is as opposed to the @dfn{precision}, which
+usually refers to the number of bits used to represent the number
+(see @uref{http://en.wikipedia.org/wiki/Accuracy_and_precision,
+the Wikipedia article} for more information).
+@end quotation
+
+Binary floating-point representations and arithmetic are inexact.
+Simple values like 0.1 cannot be precisely represented using
+binary floating-point numbers, and the limited precision of
+floating-point numbers means that slight changes in
+the order of operations or the precision of intermediate storage
+can change the result. To make matters worse with arbitrary precision
+floating-point, you can set the precision before starting a computation,
+but then you cannot be sure of the number of significant decimal places
+in the final result.
+
+Sometimes you need to think more about what you really want
+and what's really happening. Consider the two numbers
+in the following example:
+
+@example
+x = 0.875 # 1/2 + 1/4 + 1/8
+y = 0.425
+@end example
+
+Unlike the number in @code{y}, the number stored in @code{x}
+is exactly representable
+in binary since it can be written as a finite sum of one or
+more fractions whose denominators are all powers of two.
+When @command{gawk} reads a floating-point number from
+program source, it automatically rounds that number to whatever
+precision your machine supports. If you try to print the numeric
+content of a variable using an output format string of @code{"%.17g"},
+it may not produce the same number as you assigned to it:
+
+@example
+$ @kbd{gawk 'BEGIN @{ x = 0.875; y = 0.425}
+> @kbd{ printf("%0.17g, %0.17g\n", x, y) @}'}
+@print{} 0.875, 0.42499999999999999
+@end example
+
+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
+used in the previous example, produces an output identical to the input.
+
+Because the underlying representation can be little bit off from the exact value,
+comparing floats to see if they are equal is generally not a good idea.
+Here is an example where it does not work like you expect:
+
+@example
+$ @kbd{gawk 'BEGIN @{ print (0.1 + 12.2 == 12.3) @}'}
+@print{} 0
+@end example
+
+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,
+the error can accumulate and greatly affect the computation itself.
+Here is an attempt to compute the value of the constant
+@value{PI} using one of its many series representations:
+
+@example
+BEGIN @{
+ x = 1.0 / sqrt(3.0)
+ n = 6
+ for (i = 1; i < 30; i++) @{
+ n = n * 2.0
+ x = (sqrt(x * x + 1) - 1) / x
+ printf("%.15f\n", n * x)
+ @}
+@}
+@end example
+
+When run, the early errors propagating through later computations
+cause the loop to terminate prematurely after an attempt to divide by zero.
+
+@example
+$ @kbd{gawk -f pi.awk}
+@print{} 3.215390309173475
+@print{} 3.159659942097510
+@print{} 3.146086215131467
+@print{} 3.142714599645573
+@dots{}
+@print{} 3.224515243534819
+@print{} 2.791117213058638
+@print{} 0.000000000000000
+@error{} gawk: pi.awk:6: fatal: division by zero attempted
+@end example
+
+Here is one more example where the inaccuracies in internal representations
+yield an unexpected result:
+
+@example
+$ @kbd{gawk 'BEGIN @{}
+> @kbd{for (d = 1.1; d <= 1.5; d += 0.1)}
+> @kbd{i++}
+> @kbd{print i}
+> @kbd{@}'}
+@print{} 4
+@end example
+
+Can computation using aribitrary precision help with the previous examples?
+If you are impatient to know, see
+@ref{Exact Arithmetic}.
+
+Instead of aribitrary precision floating-point arithmetic,
+often all you need is an adjustment of your logic
+or a different order for the operations in your calculation.
+The stability and the accuracy of the computation of the constant @value{PI}
+in the previous example can be enhanced by using the following
+simple algebraic transformation:
+
+@example
+(sqrt(x * x + 1) - 1) / x = x / (sqrt(x * x + 1) + x)
+@end example
+
+There is no need to be unduly suspicious about the results from
+floating-point arithmetic. The lesson to remember is that
+floating-point math is always more complex than the math using
+pencil and paper. In order to take advantage of the power
+of computer floating-point, 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 in the end if you simply round
+the display of your final results to the correct number of significant
+decimal digits. Avoid presenting numerical data in a manner that
+implies better precision than is actually the case.
+
+@node Floating-point Representation
+@section Binary Floating-point Representation
+@cindex IEEE-754 format
+
+Although floating-point representations vary from machine to machine,
+the most commonly encountered representation is that defined by the
+IEEE 754 Standard. An IEEE-754 format value has three components:
+
+@itemize @bullet
+@item
+a sign bit telling whether the number is positive or negative,
+
+@item
+an @dfn{exponent} giving its order of magnitude, @var{e},
+
+@item
+and a @dfn{significand}, @var{s},
+specifying the actual digits of the number.
+@end itemize
+
+The value of the
+number is then
+@iftex
+@math{s @cdot 2^e}.
+@end iftex
+@ifnottex
+@var{s * 2^e}.
+@end ifnottex
+The first bit of a non-zero binary significand
+is always one, so the significand in an IEEE-754 format only includes the
+fractional part, leaving the leading one implicit.
+
+Three of the standard IEEE-754 types are 32-bit single precision,
+64-bit double precision and 128-bit quadruple precision.
+The standard also specifies extended precision formats
+to allow greater precisions and larger exponent ranges.
+
+@node Floating-point Context
+@section Floating-point Context
+@cindex context, floating-point
+
+A floating-point context defines the environment for arithmetic operations.
+It governs precision, sets rules for rounding and limits range for exponents.
+The context has the following primary components:
+
+@table @code
+@item precision
+Precision of the floating-point format in bits.
+@item emax
+Maximum exponent allowed for this format.
+@item emin
+Minimum exponent allowed for this format.
+@item underflow behavior
+The format may or may not support gradual underflow.
+@item rounding
+The rounding mode of this context.
+@end table
+
+@ref{table-ieee-formats} lists the precision and exponent
+field values for the basic IEEE-754 binary formats:
+
+@float Table,table-ieee-formats
+@caption{Basic IEEE Formats}
+@multitable @columnfractions .20 .20 .20 .20 .20
+@headitem Name @tab Total bits @tab Precision @tab emin @tab emax
+@item Single @tab 32 @tab 24 @tab @minus{}126 @tab +127
+@item Double @tab 64 @tab 53 @tab @minus{}1022 @tab +1023
+@item Quadruple @tab 128 @tab 113 @tab @minus{}16382 @tab +16383
+@end multitable
+@end float
+
+@quotation NOTE
+The precision numbers include the implied leading one that gives them
+one extra bit of significand.
+@end quotation
+
+A floating-point context can also determine which signals are treated
+as exceptions, and can set rules for arithmetic with special values.
+Please consult the IEEE-754 standard or other resources for details.
+
+@command{gawk} ordinarily uses the hardware double precision
+representation for numbers. On most systems, this is IEEE-754
+floating-point format, corresponding to 64-bit binary with 53 bits
+of precision.
+
+@quotation NOTE
+In case an underflow occurs, the standard allows, but does not require,
+the result from an arithmetic operation to be a number smaller than
+the smallest nonzero normalized number. Such numbers do
+not have as many significant digits as normal numbers, and are called
+@dfn{denormals} or @dfn{subnormals}. The alternative, simply returning a zero,
+is called @dfn{flush to zero}. The basic IEEE-754 binary formats
+support subnormal numbers.
+@end quotation
+
+@node Rounding Mode
+@section Floating-point Rounding Mode
+@cindex rounding mode, floating-point
+
+The @dfn{rounding mode} specifies the behavior for the results of numerical
+operations when discarding extra precision. Each rounding mode indicates
+how the least significant returned digit of a rounded result is to
+be calculated.
+The @code{ROUNDMODE} variable (@pxref{Setting Rounding Mode}) provides
+program level control over the rounding mode.
+@ref{table-rounding-modes} lists the IEEE-754 defined
+rounding modes:
+
+@float Table,table-rounding-modes
+@caption{Rounding Modes}
+@multitable @columnfractions .45 .30 .25
+@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 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
+@end float
+
+The default mode @samp{roundTiesToEven} is the most preferred,
+but the least intuitive. This method does the obvious thing for most values,
+by rounding them up or down to the nearest digit.
+For example, rounding 1.132 to two digits yields 1.13,
+and rounding 1.157 yields 1.16.
+
+However, when it comes to rounding a value that is exactly halfway between,
+things do not work the way you probably learned in school.
+In this case, the number is rounded to the nearest even digit.
+So rounding 0.125 to two digits rounds down to 0.12,
+but rounding 0.6875 to three digits rounds up to 0.688.
+You probably have already encountered this rounding mode when
+using the @code{printf} routine to format floating-point numbers.
+For example:
+
+@example
+BEGIN @{
+ x = -4.5
+ for (i = 1; i < 10; i++) @{
+ x += 1.0
+ printf("%4.1f => %2.0f\n", x, x)
+ @}
+@}
+@end example
+
+@noindent
+produces the following output when run@footnote{It
+is possible for the output to be completely different if the
+C library in your system does not use the IEEE-754 even-rounding
+rule to round halfway cases for @code{printf()}.}:
+
+@example
+-3.5 => -4
+-2.5 => -2
+-1.5 => -2
+-0.5 => 0
+ 0.5 => 0
+ 1.5 => 2
+ 2.5 => 2
+ 3.5 => 4
+ 4.5 => 4
+@end example
+
+The theory behind the rounding mode @samp{roundTiesToEven} is that
+it more or less evenly distributes upward and downward rounds
+of exact halves, which might cause the round-off error
+to cancel itself out. This is the default rounding mode used
+in IEEE-754 computing functions and operators.
+
+The other rounding modes are rarely used.
+Round toward positive infinity (@samp{roundTowardPositive})
+and round toward negative infinity (@samp{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 @samp{roundTowardZero}
+mode can be used for converting floating-point numbers to integers.
+The rounding mode @samp{roundTiesToAway} rounds the result to the
+nearest number and selects the number with the larger magnitude
+if a tie occurs.
+
+Some numerical analysts will tell you that your choice of rounding style
+has tremendous impact on the final outcome, and advise you to wait until
+final output for any rounding. Instead, you can often achieve this goal by
+setting the precision initially to some value sufficiently larger than
+the final desired precision, so that the accumulation of round-off error
+does not influence the outcome.
+If you suspect that results from your computation are
+sensitive to accumulation of round-off error,
+one way to be sure is to look for a significant difference in output
+when you change the rounding mode.
+
+@node Arbitrary Precision Floats
+@section Arbitrary Precision Floating-point Arithmetic with @command{gawk}
+
+@command{gawk} uses the GNU MPFR library
+for arbitrary precision floating-point arithmetic. The MPFR library
+provides precise control over precisions and rounding modes, and gives
+correctly rounded reproducible platform-independent results. With the
+command-line option @option{--bignum} or @option{-M},
+all floating-point arithmetic operators and numeric functions can yield
+results to any desired precision level supported by MPFR.
+Two built-in
+variables @code{PREC}
+(@pxref{Setting Precision})
+and @code{ROUNDMODE}
+(@pxref{Setting Rounding Mode})
+provide control over the working precision and the rounding mode.
+The precision and the rounding mode are set globally for every operation
+to follow.
+
+The default working precision for arbitrary precision floats is 53,
+and the default value for @code{ROUNDMODE} is @code{"N"},
+which selects the IEEE-754
+@samp{roundTiesToEven} (@pxref{Rounding Mode}) rounding mode.@footnote{The
+default precision is 53, since according to the MPFR documentation,
+the library should be able to exactly reproduce all computations with
+double-precision machine floating-point numbers (@code{double} type
+in C), except the default exponent range is much wider and subnormal
+numbers are not implemented.}
+@command{gawk} uses the default exponent range in MPFR
+@iftex
+(@math{emax = 2^{30} - 1, emin = -emax})
+@end iftex
+@ifnottex
+(@var{emax} = 2^30 @minus{} 1, @var{emin} = @minus{}@var{emax})
+@end ifnottex
+for all floating-point contexts.
+There is no explicit mechanism to adjust the exponent range.
+MPFR does not implement subnormal numbers by default,
+and this behavior cannot be changed in @command{gawk}.
+
+@quotation NOTE
+When emulating an IEEE-754 format (@pxref{Setting Precision}),
+@command{gawk} internally adjusts the exponent range
+to the value defined for the format and also performs computations needed for
+gradual underflow (subnormal numbers).
+@end quotation
+
+@quotation NOTE
+MPFR numbers are variable-size entities, consuming only as much space as
+needed to store the significant digits. Since the performance using MPFR
+numbers pales in comparison to doing math using the underlying machine
+types, you should consider using only as much precision as needed by
+your program.
+@end quotation
+
+@node Setting Precision
+@section Setting the Working Precision
+@cindex @code{PREC} variable
+
+@command{gawk} uses a global working precision; it does not keep track of
+the precision or accuracy of individual numbers. Performing an arithmetic
+operation or calling a built-in function rounds the result to the current
+working precision. The default working precision is 53 which can be
+modified using the built-in variable @code{PREC}. You can also set the
+value to one of the following pre-defined case-insensitive strings
+to emulate an IEEE-754 binary format:
+
+@multitable {@code{"double"}} {12345678901234567890123456789012345}
+@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.
+@item @code{"quad"} @tab Basic 128-bit quadruple precision.
+@item @code{"oct"} @tab 256-bit octuple precision.
+@end multitable
+
+The following example illustrates the effects of changing precision
+on arithmetic operations:
+
+@example
+$ @kbd{gawk -M -vPREC=100 'BEGIN @{ x = 1.0e-400; print x + 0; \}
+> @kbd{PREC = "double"; print x + 0 @}'}
+@print{} 1e-400
+@print{} 0
+@end example
+
+Binary and decimal precisions are related approximately according to the
+formula:
+
+@iftex
+@math{prec = 3.322 @cdot dps}
+@end iftex
+@ifnottex
+@var{prec} = 3.322 * @var{dps}
+@end ifnottex
+
+@noindent
+Here, @var{prec} denotes the binary precision
+(measured in bits) and @var{dps} (short for decimal places)
+is the decimal digits. We can easily calculate how many decimal
+digits the 53-bit significand of an IEEE double is equivalent to:
+53 / 3.332 which is equal to about 15.95.
+But what does 15.95 digits actually mean? It depends whether you are
+concerned about how many digits you can rely on, or how many digits
+you need.
+
+It is important to know how many bits it takes to uniquely identify
+a double-precision value (the C type @code{double}). If you want to
+convert from @code{double} to decimal and back to @code{double} (e.g.,
+saving a @code{double} representing an intermediate result to a file, and
+later reading it back to restart the computation), then a few more decimal
+digits are required. 17 digits is generally enough for a @code{double}.
+
+It can also be important to know what decimal numbers can be uniquely
+represented with a @code{double}. If you want to convert
+from decimal to @code{double} and back again, 15 digits is the most that
+you can get. Stated differently, you should not present
+the numbers from your floating-point computations with more than 15
+significant digits in them.
+
+Conversely, it takes a precision of 332 bits to hold an approximation
+of constant @value{PI} that is accurate to 100 decimal places.
+You should always add some extra bits in order to avoid the confusing round-off
+issues that occur because numbers are stored internally in binary.
+
+@node Setting Rounding Mode
+@section Setting the Rounding Mode
+@cindex @code{ROUNDMODE} variable
+
+The built-in variable @code{ROUNDMODE} has the default value @code{"N"},
+which selects the IEEE-754 rounding mode @samp{roundTiesToEven}.
+The other possible values for @code{ROUNDMODE} are @code{"U"} for rounding mode
+@samp{roundTowardPositive}, @code{"D"} for @samp{roundTowardNegative},
+and @code{"Z"} for @samp{roundTowardZero}.
+@command{gawk} also accepts @code{"A"} to select the IEEE-754 mode
+@samp{roundTiesToAway}
+if your version of the MPFR library supports it; otherwise setting
+@code{ROUNDMODE} to this value has no effect. @xref{Rounding Mode},
+for the meanings of the various rounding modes.
+
+Here is an example of how to change the default rounding behavior of
+@code{printf}'s output:
+
+@example
+$ @kbd{gawk -M -vROUNDMODE="Z" 'BEGIN @{ printf("%.2f\n", 1.378) @}'}
+@print{} 1.37
+@end example
+
+@node Floating-point Constants
+@section Representing Floating-point Constants
+@cindex constants, floating-point
+
+Be wary of floating-point constants! When reading a floating-point constant
+from program source code, @command{gawk} uses the default precision,
+unless overridden
+by an assignment to the special variable @code{PREC} on the command
+line, to store it internally as a MPFR number.
+Changing the precision using @code{PREC} in the program text does
+not change the precision of a constant. If you need to
+represent a floating-point constant at a higher precision than the
+default and cannot use a command line assignment to @code{PREC},
+you should either specify the constant as a string, or
+a rational number whenever possible. The following example
+illustrates the differences among various ways to
+print a floating-point constant:
+
+@example
+$ @kbd{gawk -M 'BEGIN @{ PREC = 113; printf("%0.25f\n", 0.1) @}'}
+@print{} 0.1000000000000000055511151
+$ @kbd{gawk -M -vPREC = 113 'BEGIN @{ printf("%0.25f\n", 0.1) @}'}
+@print{} 0.1000000000000000000000000
+$ @kbd{gawk -M 'BEGIN @{ PREC = 113; printf("%0.25f\n", "0.1") @}'}
+@print{} 0.1000000000000000000000000
+$ @kbd{gawk -M 'BEGIN @{ PREC = 113; printf("%0.25f\n", 1/10) @}'}
+@print{} 0.1000000000000000000000000
+@end example
+
+In the first case, the number is stored with the default precision of 53.
+
+@node Changing Precision
+@section Changing the Precision of a Number
+
+@cindex Laurie, Dirk
+@quotation
+@i{The point is that in any variable-precision package,
+a decision is made on how to treat numbers given as data,
+or arising in intermediate results, which are represented in
+floating-point format to a precision lower than working precision.
+Do we promote them to full membership of the high-precision club,
+or do we treat them and all their associates as second-class citizens?
+Sometimes the first course is proper, sometimes the second, and it takes
+careful analysis to tell which.}
+
+Dirk Laurie@footnote{Dirk Laurie.
+@cite{Variable-precision Arithmetic Considered Perilous -- A Detective Story}.
+Electronic Transactions on Numerical Analysis. Volume 28, pp. 168-173, 2008.}
+@end quotation
+
+@command{gawk} does not implicitly modify the precision of any previously
+computed results when the working precision is changed with an assignment
+to @code{PREC}. The precision of a number is always the one that was
+used at the time of its creation, and there is no way for the user
+to explicitly change it afterwards. However, since the result of a
+floating-point arithmetic operation is always an arbitrary precision
+floating-point value---with a precision set by the value of @code{PREC}---one of the
+following workarounds effectively accomplishes the desired behavior:
+
+@example
+x = x + 0.0
+@end example
+
+@noindent
+or:
+
+@example
+x += 0.0
+@end example
+
+@node Exact Arithmetic
+@section Exact Arithmetic with Floating-point Numbers
+
+@quotation CAUTION
+Never depend on the exactness of floating-point arithmetic,
+even for apparently simple expressions!
+@end quotation
+
+Can arbitrary precision arithmetic give exact results? There are
+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
+and underflow are often troublesome.
+
+When @command{gawk} tests the expressions @samp{0.1 + 12.2} and @samp{12.3}
+for equality
+using the machine double precision arithmetic, it decides that they
+are not equal!
+(@xref{Floating-point Programming}.)
+You can get the result you want by increasing the precision;
+56 in this case will get the job done:
+
+@example
+$ @kbd{gawk -M -vPREC=56 'BEGIN @{ print (0.1 + 12.2 == 12.3) @}'}
+@print{} 1
+@end example
+
+If adding more bits is good, perhaps adding even more bits of
+precision is better?
+Here is what happens if we use an even larger value of @code{PREC}:
+
+@example
+$ @kbd{gawk -M -vPREC=201 'BEGIN @{ print (0.1 + 12.2 == 12.3) @}'}
+@print{} 0
+@end example
+
+This is not a bug in @command{gawk} or in the MPFR library.
+It is easy to forget that the finite number of bits used to store the value
+is often just an approximation after proper rounding.
+The test for equality succeeds if and only if @emph{all} bits in the two operands
+are exactly the same. Since this is not necessarily true after floating-point
+computations with a particular precision and effective rounding rule,
+a straight test for equality may not work.
+
+So, don't assume that floating-point values can be compared for equality.
+You should also exercise caution when using other forms of comparisons.
+The standard way to compare between floating-point numbers is to determine
+how much error (or @dfn{tolerance}) you will allow in a comparison and
+check to see if one value is within this error range of the other.
+
+In applications where 15 or fewer decimal places suffice,
+hardware double precision arithmetic can be adequate, and is usually much faster.
+But you do need to keep in mind that every floating-point operation
+can suffer a new rounding error with catastrophic consequences as illustrated
+by our attempt to compute the value of the constant @value{PI},
+(@pxref{Floating-point Programming}).
+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 last example
+(@pxref{Floating-point Programming}),
+you may or may not succeed in getting the correct result by choosing
+an arbitrarily large value for @code{PREC}. Reformulation of
+the problem at hand is often the correct approach in such situations.
+
+
+@node Integer Programming
+@section Effective Integer Programming
+
+As has been mentioned already, @command{gawk} ordinarily uses hardware double
+precision with 64-bit IEEE binary floating-point representation
+for numbers on most systems. A large integer like 9007199254740997
+has a binary representation that, although finite, is more than 53 bits long;
+it must also be rounded to 53 bits.
+The biggest integer that can be stored in a C @code{double} is usually the same
+as the largest possible value of a @code{double}. If your system @code{double}
+is an IEEE 64-bit @code{double}, this largest possible value is an integer and
+can be represented precisely. What more should one know about integers?
+
+If you want to know what is the largest integer, such that it and
+all smaller integers can be stored in 64-bit doubles without losing precision,
+then the answer is
+@iftex
+@math{2^{53}}.
+@end iftex
+@ifnottex
+2^53.
+@end ifnottex
+The next representable number is the even number
+@iftex
+@math{2^{53} + 2},
+@end iftex
+@ifnottex
+2^53 + 2,
+@end ifnottex
+meaning it is unlikely that you will be able to make
+@command{gawk} print
+@iftex
+@math{2^{53} + 1}
+@end iftex
+@ifnottex
+2^53 + 1
+@end ifnottex
+in integer format.
+The range of integers exactly representable by a 64-bit double
+is
+@iftex
+@math{[-2^{53}, 2^{53}]}.
+@end iftex
+@ifnottex
+[@minus{}2^53, 2^53].
+@end ifnottex
+If you ever see an integer outside this range in @command{gawk}
+using 64-bit doubles, you have reason to be very suspicious about
+the accuracy of the output. Here is a simple program with erroneous output:
+
+@example
+$ @kbd{gawk 'BEGIN @{ i = 2^53 - 1; for (j = 0; j < 4; j++) print i + j @}'}
+@print{} 9007199254740991
+@print{} 9007199254740992
+@print{} 9007199254740992
+@print{} 9007199254740994
+@end example
+
+The lesson is to not assume that any large integer printed by @command{gawk}
+represents an exact result from your computation, especially if it wraps
+around on your screen.
+
+@node Arbitrary Precision Integers
+@section Arbitrary Precision Integer Arithmetic with @command{gawk}
+@cindex integer, arbitrary precision
+
+If the option @option{--bignum} or @option{-M} is specified,
+@command{gawk} performs all
+integer arithmetic using GMP arbitrary precision integers.
+Any number that looks like an integer in a program source or data file
+is stored as an arbitrary precision integer.
+The size of the integer is limited only by your computer's memory.
+The current floating-point context has no effect on operations involving integers.
+For example, the following computes
+@iftex
+@math{5^{4^{3^{2}}}},
+@end iftex
+@ifnottex
+5^4^3^2,
+@end ifnottex
+the result of which is beyond the
+limits of ordinary @command{gawk} numbers:
+
+@example
+$ @kbd{gawk -M 'BEGIN @{}
+> @kbd{x = 5^4^3^2}
+> @kbd{print "# of digits =", length(x)}
+> @kbd{print substr(x, 1, 20), "...", substr(x, length(x) - 19, 20)}
+> @kbd{@}'}
+@print{} # of digits = 183231
+@print{} 62060698786608744707 ... 92256259918212890625
+@end example
+
+If you were to compute the same value using arbitrary precision
+floating-point values instead, the precision needed for correct output
+(using the formula
+@iftex
+@math{prec = 3.322 @cdot dps}),
+would be @math{3.322 @cdot 183231},
+@end iftex
+@ifnottex
+@samp{prec = 3.322 * dps}),
+would be 3.322 x 183231,
+@end ifnottex
+or 608693.
+
+The result from an arithmetic operation with an integer and a floating-point value
+is a floating-point value with a precision equal to the working precision.
+The following program calculates the eighth term in
+Sylvester's sequence@footnote{Weisstein, Eric W.
+@cite{Sylvester's Sequence}. From MathWorld--A Wolfram Web Resource.
+@url{http://mathworld.wolfram.com/SylvestersSequence.html}}
+using a recurrence:
+
+@example
+$ @kbd{gawk -M 'BEGIN @{}
+> @kbd{s = 2.0}
+> @kbd{for (i = 1; i <= 7; i++)}
+> @kbd{s = s * (s - 1) + 1}
+> @kbd{print s}
+> @kbd{@}'}
+@print{} 113423713055421845118910464
+@end example
+
+The output differs from the acutal number, 113423713055421844361000443,
+because the default precision of 53 is not enough to represent the
+floating-point results exactly. You can either increase the precision
+(100 is enough in this case), or replace the floating-point constant
+@code{2.0} with an integer, to perform all computations using integer
+arithmetic to get the correct output.
+
+It will sometimes be necessary for @command{gawk} to implicitly convert an
+arbitrary precision integer into an arbitrary precision floating-point value.
+This is primarily because the MPFR library does not always provide the
+relevant 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
+like this:
+
+@example
+gawk -M 'BEGIN @{ n = 13; print (n + 0.0) % 2.0 @}'
+@end example
+
+You can avoid this issue altogether by specifying the number as a float
+to begin with:
+
+@example
+gawk -M 'BEGIN @{ n = 13.0; print n % 2.0 @}'
+@end example
+
+Note that for the particular example above, there is unlikely to be a
+reason for simply not using the following:
+
+@example
+gawk -M 'BEGIN @{ n = 13; print n % 2 @}'
+@end example
+
+
+@node MPFR and GMP Libraries
+@section Information About the MPFR and GMP Libraries
+
+There are a few elements available in the @code{PROCINFO} array
+to provide information about the MPFR and GMP libraries.
+@xref{Auto-set}, for more information.
+
@node Advanced Features
@chapter Advanced Features of @command{gawk}
@cindex advanced features, network connections, See Also networks, connections
diff --git a/doc/texinfo.tex b/doc/texinfo.tex
index 1130b8fc..e4dca02c 100644
--- a/doc/texinfo.tex
+++ b/doc/texinfo.tex
@@ -3,11 +3,11 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2010-12-23.17}
+\def\texinfoversion{2012-04-06.11}
%
% 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 Free Software Foundation, Inc.
+% 2007, 2008, 2009, 2010, 2011, 2012 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
@@ -116,10 +116,11 @@
% Set up fixed words for English if not already set.
\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi
\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi
+\ifx\putworderror\undefined \gdef\putworderror{error}\fi
\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi
\ifx\putwordin\undefined \gdef\putwordin{in}\fi
-\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
-\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
+\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
+\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi
\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi
@@ -158,15 +159,18 @@
\def\spaceisspace{\catcode`\ =\spacecat}
% sometimes characters are active, so we need control sequences.
+\chardef\ampChar = `\&
\chardef\colonChar = `\:
\chardef\commaChar = `\,
\chardef\dashChar = `\-
\chardef\dotChar = `\.
\chardef\exclamChar= `\!
+\chardef\hashChar = `\#
\chardef\lquoteChar= `\`
\chardef\questChar = `\?
\chardef\rquoteChar= `\'
\chardef\semiChar = `\;
+\chardef\slashChar = `\/
\chardef\underChar = `\_
% Ignore a token.
@@ -215,7 +219,7 @@
\tracingmacros2
\tracingrestores1
\showboxbreadth\maxdimen \showboxdepth\maxdimen
- \ifx\eTeXversion\undefined\else % etex gives us more logging
+ \ifx\eTeXversion\thisisundefined\else % etex gives us more logging
\tracingscantokens1
\tracingifs1
\tracinggroups1
@@ -226,6 +230,13 @@
\errorcontextlines16
}%
+% @errormsg{MSG}. Do the index-like expansions on MSG, but if things
+% aren't perfect, it's not the end of the world, being an error message,
+% after all.
+%
+\def\errormsg{\begingroup \indexnofonts \doerrormsg}
+\def\doerrormsg#1{\errmessage{#1}}
+
% add check for \lastpenalty to plain's definitions. If the last thing
% we did was a \nobreak, we don't want to insert more space.
%
@@ -545,7 +556,7 @@
}
\def\inenvironment#1{%
\ifx#1\empty
- out of any environment%
+ outside of any environment%
\else
in environment \expandafter\string#1%
\fi
@@ -557,7 +568,7 @@
\parseargdef\end{%
\if 1\csname iscond.#1\endcsname
\else
- % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03
+ % The general wording of \badenverr may not be ideal.
\expandafter\checkenv\csname#1\endcsname
\csname E#1\endcsname
\endgroup
@@ -608,7 +619,7 @@
\else\ifx\temp\offword \plainnonfrenchspacing
\else
\errhelp = \EMsimple
- \errmessage{Unknown @frenchspacing option `\temp', must be on/off}%
+ \errmessage{Unknown @frenchspacing option `\temp', must be on|off}%
\fi\fi
}
@@ -690,15 +701,6 @@ where each line of input produces a line of output.}
\newdimen\mil \mil=0.001in
-% Old definition--didn't work.
-%\parseargdef\need{\par %
-%% This method tries to make TeX break the page naturally
-%% if the depth of the box does not fit.
-%{\baselineskip=0pt%
-%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak
-%\prevdepth=-1000pt
-%}}
-
\parseargdef\need{%
% Ensure vertical mode, so we don't make a big box in the middle of a
% paragraph.
@@ -849,6 +851,7 @@ where each line of input produces a line of output.}
\makevalueexpandable % we want to expand any @value in FILE.
\turnoffactive % and allow special characters in the expansion
\indexnofonts % Allow `@@' and other weird things in file names.
+ \wlog{texinfo.tex: doing @include of #1^^J}%
\edef\temp{\noexpand\input #1 }%
%
% This trickery is to read FILE outside of a group, in case it makes
@@ -884,7 +887,7 @@ where each line of input produces a line of output.}
\def\popthisfilestack{\errthisfilestackempty}
\def\errthisfilestackempty{\errmessage{Internal error:
the stack of filenames is empty.}}
-
+%
\def\thisfile{}
% @center line
@@ -892,36 +895,46 @@ where each line of input produces a line of output.}
%
\parseargdef\center{%
\ifhmode
- \let\next\centerH
+ \let\centersub\centerH
\else
- \let\next\centerV
+ \let\centersub\centerV
\fi
- \next{\hfil \ignorespaces#1\unskip \hfil}%
+ \centersub{\hfil \ignorespaces#1\unskip \hfil}%
+ \let\centersub\relax % don't let the definition persist, just in case
}
-\def\centerH#1{%
- {%
- \hfil\break
- \advance\hsize by -\leftskip
- \advance\hsize by -\rightskip
- \line{#1}%
- \break
- }%
+\def\centerH#1{{%
+ \hfil\break
+ \advance\hsize by -\leftskip
+ \advance\hsize by -\rightskip
+ \line{#1}%
+ \break
+}}
+%
+\newcount\centerpenalty
+\def\centerV#1{%
+ % The idea here is the same as in \startdefun, \cartouche, etc.: if
+ % @center is the first thing after a section heading, we need to wipe
+ % out the negative parskip inserted by \sectionheading, but still
+ % prevent a page break here.
+ \centerpenalty = \lastpenalty
+ \ifnum\centerpenalty>10000 \vskip\parskip \fi
+ \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi
+ \line{\kern\leftskip #1\kern\rightskip}%
}
-\def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}}
% @sp n outputs n lines of vertical space
-
+%
\parseargdef\sp{\vskip #1\baselineskip}
% @comment ...line which is ignored...
% @c is the same as @comment
% @ignore ... @end ignore is another way to write a comment
-
+%
\def\comment{\begingroup \catcode`\^^M=\other%
\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
\commentxxx}
{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
-
+%
\let\c=\comment
% @paragraphindent NCHARS
@@ -1078,9 +1091,8 @@ where each line of input produces a line of output.}
\newif\ifpdfmakepagedest
% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
-% can be set). So we test for \relax and 0 as well as \undefined,
-% borrowed from ifpdf.sty.
-\ifx\pdfoutput\undefined
+% can be set). So we test for \relax and 0 as well as being undefined.
+\ifx\pdfoutput\thisisundefined
\else
\ifx\pdfoutput\relax
\else
@@ -1095,50 +1107,24 @@ where each line of input produces a line of output.}
% for display in the outlines, and in other places. Thus, we have to
% double any backslashes. Otherwise, a name like "\node" will be
% interpreted as a newline (\n), followed by o, d, e. Not good.
-% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html
-% (and related messages, the final outcome is that it is up to the TeX
-% user to double the backslashes and otherwise make the string valid, so
-% that's what we do).
-
-% double active backslashes.
-%
-{\catcode`\@=0 \catcode`\\=\active
- @gdef@activebackslashdouble{%
- @catcode`@\=@active
- @let\=@doublebackslash}
-}
-
-% To handle parens, we must adopt a different approach, since parens are
-% not active characters. hyperref.dtx (which has the same problem as
-% us) handles it with this amazing macro to replace tokens, with minor
-% changes for Texinfo. It is included here under the GPL by permission
-% from the author, Heiko Oberdiek.
-%
-% #1 is the tokens to replace.
-% #2 is the replacement.
-% #3 is the control sequence with the string.
-%
-\def\HyPsdSubst#1#2#3{%
- \def\HyPsdReplace##1#1##2\END{%
- ##1%
- \ifx\\##2\\%
- \else
- #2%
- \HyReturnAfterFi{%
- \HyPsdReplace##2\END
- }%
- \fi
- }%
- \xdef#3{\expandafter\HyPsdReplace#3#1\END}%
-}
-\long\def\HyReturnAfterFi#1\fi{\fi#1}
-
-% #1 is a control sequence in which to do the replacements.
-\def\backslashparens#1{%
- \xdef#1{#1}% redefine it as its expansion; the definition is simply
- % \lastnode when called from \setref -> \pdfmkdest.
- \HyPsdSubst{(}{\realbackslash(}{#1}%
- \HyPsdSubst{)}{\realbackslash)}{#1}%
+%
+% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and
+% related messages. The final outcome is that it is up to the TeX user
+% to double the backslashes and otherwise make the string valid, so
+% that's what we do. pdftex 1.30.0 (ca.2005) introduced a primitive to
+% do this reliably, so we use it.
+
+% #1 is a control sequence in which to do the replacements,
+% which we \xdef.
+\def\txiescapepdf#1{%
+ \ifx\pdfescapestring\relax
+ % No primitive available; should we give a warning or log?
+ % Many times it won't matter.
+ \else
+ % The expandable \pdfescapestring primitive escapes parentheses,
+ % backslashes, and other special chars.
+ \xdef#1{\pdfescapestring{#1}}%
+ \fi
}
\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
@@ -1197,32 +1183,34 @@ output) for that.)}
%
% #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
\def\dopdfimage#1#2#3{%
- \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
- \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
+ \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
+ \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
%
- % pdftex (and the PDF format) support .png, .jpg, .pdf (among
- % others). Let's try in that order.
+ % pdftex (and the PDF format) support .pdf, .png, .jpg (among
+ % others). Let's try in that order, PDF first since if
+ % someone has a scalable image, presumably better to use that than a
+ % bitmap.
\let\pdfimgext=\empty
\begingroup
- \openin 1 #1.png \ifeof 1
- \openin 1 #1.jpg \ifeof 1
- \openin 1 #1.jpeg \ifeof 1
- \openin 1 #1.JPG \ifeof 1
- \openin 1 #1.pdf \ifeof 1
- \openin 1 #1.PDF \ifeof 1
+ \openin 1 #1.pdf \ifeof 1
+ \openin 1 #1.PDF \ifeof 1
+ \openin 1 #1.png \ifeof 1
+ \openin 1 #1.jpg \ifeof 1
+ \openin 1 #1.jpeg \ifeof 1
+ \openin 1 #1.JPG \ifeof 1
\errhelp = \nopdfimagehelp
\errmessage{Could not find image file #1 for pdf}%
- \else \gdef\pdfimgext{PDF}%
+ \else \gdef\pdfimgext{JPG}%
\fi
- \else \gdef\pdfimgext{pdf}%
+ \else \gdef\pdfimgext{jpeg}%
\fi
- \else \gdef\pdfimgext{JPG}%
+ \else \gdef\pdfimgext{jpg}%
\fi
- \else \gdef\pdfimgext{jpeg}%
+ \else \gdef\pdfimgext{png}%
\fi
- \else \gdef\pdfimgext{jpg}%
+ \else \gdef\pdfimgext{PDF}%
\fi
- \else \gdef\pdfimgext{png}%
+ \else \gdef\pdfimgext{pdf}%
\fi
\closein 1
\endgroup
@@ -1234,8 +1222,8 @@ output) for that.)}
\else
\immediate\pdfximage
\fi
- \ifdim \wd0 >0pt width \imagewidth \fi
- \ifdim \wd2 >0pt height \imageheight \fi
+ \ifdim \wd0 >0pt width \pdfimagewidth \fi
+ \ifdim \wd2 >0pt height \pdfimageheight \fi
\ifnum\pdftexversion<13
#1.\pdfimgext
\else
@@ -1250,10 +1238,9 @@ output) for that.)}
% such as \, aren't expanded when present in a section title.
\indexnofonts
\turnoffactive
- \activebackslashdouble
\makevalueexpandable
\def\pdfdestname{#1}%
- \backslashparens\pdfdestname
+ \txiescapepdf\pdfdestname
\safewhatsit{\pdfdest name{\pdfdestname} xyz}%
}}
%
@@ -1285,28 +1272,22 @@ output) for that.)}
% page number. We could generate a destination for the section
% text in the case where a section has no node, but it doesn't
% seem worth the trouble, since most documents are normally structured.
- \def\pdfoutlinedest{#3}%
+ \edef\pdfoutlinedest{#3}%
\ifx\pdfoutlinedest\empty
\def\pdfoutlinedest{#4}%
\else
- % Doubled backslashes in the name.
- {\activebackslashdouble \xdef\pdfoutlinedest{#3}%
- \backslashparens\pdfoutlinedest}%
+ \txiescapepdf\pdfoutlinedest
\fi
%
- % Also double the backslashes in the display string.
- {\activebackslashdouble \xdef\pdfoutlinetext{#1}%
- \backslashparens\pdfoutlinetext}%
+ % Also escape PDF chars in the display string.
+ \edef\pdfoutlinetext{#1}%
+ \txiescapepdf\pdfoutlinetext
%
\pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
}
%
\def\pdfmakeoutlines{%
\begingroup
- % Thanh's hack / proper braces in bookmarks
- \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
- \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
- %
% Read toc silently, to get counts of subentries for \pdfoutline.
\def\partentry##1##2##3##4{}% ignore parts in the outlines
\def\numchapentry##1##2##3##4{%
@@ -1362,15 +1343,26 @@ output) for that.)}
% Latin 2 (0xea) gets translated to a | character. Info from
% Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
%
- % xx to do this right, we have to translate 8-bit characters to
- % their "best" equivalent, based on the @documentencoding. Right
- % now, I guess we'll just let the pdf reader have its way.
+ % TODO this right, we have to translate 8-bit characters to
+ % their "best" equivalent, based on the @documentencoding. Too
+ % much work for too little return. Just use the ASCII equivalents
+ % we use for the index sort strings.
+ %
\indexnofonts
\setupdatafile
+ % We can have normal brace characters in the PDF outlines, unlike
+ % Texinfo index files. So set that up.
+ \def\{{\lbracecharliteral}%
+ \def\}{\rbracecharliteral}%
\catcode`\\=\active \otherbackslash
\input \tocreadfilename
\endgroup
}
+ {\catcode`[=1 \catcode`]=2
+ \catcode`{=\other \catcode`}=\other
+ \gdef\lbracecharliteral[{]%
+ \gdef\rbracecharliteral[}]%
+ ]
%
\def\skipspaces#1{\def\PP{#1}\def\D{|}%
\ifx\PP\D\let\nextsp\relax
@@ -1380,7 +1372,13 @@ output) for that.)}
\fi
\fi
\nextsp}
- \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax}
+ \def\getfilename#1{%
+ \filenamelength=0
+ % If we don't expand the argument now, \skipspaces will get
+ % snagged on things like "@value{foo}".
+ \edef\temp{#1}%
+ \expandafter\skipspaces\temp|\relax
+ }
\ifnum\pdftexversion < 14
\let \startlink \pdfannotlink
\else
@@ -1512,7 +1510,7 @@ output) for that.)}
% if we are producing pdf, and we have \pdffontattr, then define cmaps.
% (\pdffontattr was introduced many years ago, but people still run
% older pdftex's; it's easy to conditionalize, so we do.)
-\ifpdf \ifx\pdffontattr\undefined \else
+\ifpdf \ifx\pdffontattr\thisisundefined \else
\begingroup
\catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
\catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
@@ -1779,7 +1777,7 @@ end
% Use cm as the default font prefix.
% To specify the font prefix, you must define \fontprefix
% before you read in texinfo.tex.
-\ifx\fontprefix\undefined
+\ifx\fontprefix\thisisundefined
\def\fontprefix{cm}
\fi
% Support font families that don't use the same naming scheme as CM.
@@ -2070,7 +2068,7 @@ end
%
\parseargdef\fonttextsize{%
\def\textsizearg{#1}%
- \wlog{doing @fonttextsize \textsizearg}%
+ %\wlog{doing @fonttextsize \textsizearg}%
%
% Set \globaldefs so that documents can use this inside @tex, since
% makeinfo 4.8 does not support it, but we need it nonetheless.
@@ -2252,12 +2250,14 @@ end
% Markup style setup for left and right quotes.
\defmarkupstylesetup\markupsetuplq{%
- \expandafter\let\expandafter \temp \csname markupsetuplq\currentmarkupstyle\endcsname
+ \expandafter\let\expandafter \temp
+ \csname markupsetuplq\currentmarkupstyle\endcsname
\ifx\temp\relax \markupsetuplqdefault \else \temp \fi
}
\defmarkupstylesetup\markupsetuprq{%
- \expandafter\let\expandafter \temp \csname markupsetuprq\currentmarkupstyle\endcsname
+ \expandafter\let\expandafter \temp
+ \csname markupsetuprq\currentmarkupstyle\endcsname
\ifx\temp\relax \markupsetuprqdefault \else \temp \fi
}
@@ -2291,12 +2291,11 @@ end
\let\markupsetuplqkbd \markupsetnoligaturesquoteleft
-% Allow an option to not replace quotes with a regular directed right
-% quote/apostrophe (char 0x27), but instead use the undirected quote
-% from cmtt (char 0x0d). The undirected quote is ugly, so don't make it
-% the default, but it works for pasting with more pdf viewers (at least
-% evince), the lilypond developers report. xpdf does work with the
-% regular 0x27.
+% Allow an option to not use regular directed right quote/apostrophe
+% (char 0x27), but instead the undirected quote from cmtt (char 0x0d).
+% The undirected quote is ugly, so don't make it the default, but it
+% works for pasting with more pdf viewers (at least evince), the
+% lilypond developers report. xpdf does work with the regular 0x27.
%
\def\codequoteright{%
\expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
@@ -2320,6 +2319,36 @@ end
\else \char'22 \fi
}
+% Commands to set the quote options.
+%
+\parseargdef\codequoteundirected{%
+ \def\temp{#1}%
+ \ifx\temp\onword
+ \expandafter\let\csname SETtxicodequoteundirected\endcsname
+ = t%
+ \else\ifx\temp\offword
+ \expandafter\let\csname SETtxicodequoteundirected\endcsname
+ = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}%
+ \fi\fi
+}
+%
+\parseargdef\codequotebacktick{%
+ \def\temp{#1}%
+ \ifx\temp\onword
+ \expandafter\let\csname SETtxicodequotebacktick\endcsname
+ = t%
+ \else\ifx\temp\offword
+ \expandafter\let\csname SETtxicodequotebacktick\endcsname
+ = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}%
+ \fi\fi
+}
+
% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
\def\noligaturesquoteleft{\relax\lq}
@@ -2347,7 +2376,9 @@ end
\else\ifx\next-%
\else\ifx\next.%
\else\ptexslash
- \fi\fi\fi}
+ \fi\fi\fi
+ \aftersmartic
+}
% like \smartslanted except unconditionally uses \ttsl, and no ic.
% @var is set to this for defun arguments.
@@ -2357,9 +2388,15 @@ end
% ttsl for book titles, do we?
\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
+\def\aftersmartic{}
+\def\var#1{%
+ \let\saveaftersmartic = \aftersmartic
+ \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}%
+ \smartslanted{#1}%
+}
+
\let\i=\smartitalic
\let\slanted=\smartslanted
-\def\var#1{\smartslanted{#1}}
\let\dfn=\smartslanted
\let\emph=\smartitalic
@@ -2455,7 +2492,7 @@ end
\plainfrenchspacing
#1%
}%
- \null
+ \null % reset spacefactor to 1000
}
% We *must* turn on hyphenation at `-' and `_' in @code.
@@ -2487,6 +2524,8 @@ end
}
}
+\def\codex #1{\tclose{#1}\endgroup}
+
\def\realdash{-}
\def\codedash{-\discretionary{}{}{}}
\def\codeunder{%
@@ -2500,7 +2539,6 @@ end
\discretionary{}{}{}}%
{\_}%
}
-\def\codex #1{\tclose{#1}\endgroup}
% An additional complication: the above will allow breaks after, e.g.,
% each of the four underscores in __typeof__. This is undesirable in
@@ -2520,63 +2558,18 @@ end
\allowcodebreaksfalse
\else
\errhelp = \EMsimple
- \errmessage{Unknown @allowcodebreaks option `\txiarg'}%
+ \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}%
\fi\fi
}
-% @kbd is like @code, except that if the argument is just one @key command,
-% then @kbd has no effect.
-\def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}}
-
-% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
-% `example' (@kbd uses ttsl only inside of @example and friends),
-% or `code' (@kbd uses normal tty font always).
-\parseargdef\kbdinputstyle{%
- \def\txiarg{#1}%
- \ifx\txiarg\worddistinct
- \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
- \else\ifx\txiarg\wordexample
- \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
- \else\ifx\txiarg\wordcode
- \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
- \else
- \errhelp = \EMsimple
- \errmessage{Unknown @kbdinputstyle option `\txiarg'}%
- \fi\fi\fi
-}
-\def\worddistinct{distinct}
-\def\wordexample{example}
-\def\wordcode{code}
-
-% Default is `distinct'.
-\kbdinputstyle distinct
-
-\def\xkey{\key}
-\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
-\ifx\one\xkey\ifx\threex\three \key{#2}%
-\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
-\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi}
-
-% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
-\let\indicateurl=\code
-\let\env=\code
-\let\command=\code
-
-% @clicksequence{File @click{} Open ...}
-\def\clicksequence#1{\begingroup #1\endgroup}
-
-% @clickstyle @arrow (by default)
-\parseargdef\clickstyle{\def\click{#1}}
-\def\click{\arrow}
-
% @uref (abbreviation for `urlref') takes an optional (comma-separated)
% second argument specifying the text to display and an optional third
% arg as text to display instead of (rather than in addition to) the url
-% itself. First (mandatory) arg is the url. Perhaps eventually put in
-% a hypertex \special here.
-%
-\def\uref#1{\douref #1,,,\finish}
-\def\douref#1,#2,#3,#4\finish{\begingroup
+% itself. First (mandatory) arg is the url.
+% (This \urefnobreak definition isn't used now, leaving it for a while
+% for comparison.)
+\def\urefnobreak#1{\dourefnobreak #1,,,\finish}
+\def\dourefnobreak#1,#2,#3,#4\finish{\begingroup
\unsepspaces
\pdfurl{#1}%
\setbox0 = \hbox{\ignorespaces #3}%
@@ -2597,6 +2590,103 @@ end
\endlink
\endgroup}
+% This \urefbreak definition is the active one.
+\def\urefbreak{\begingroup \urefcatcodes \dourefbreak}
+\let\uref=\urefbreak
+\def\dourefbreak#1{\urefbreakfinish #1,,,\finish}
+\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example
+ \unsepspaces
+ \pdfurl{#1}%
+ \setbox0 = \hbox{\ignorespaces #3}%
+ \ifdim\wd0 > 0pt
+ \unhbox0 % third arg given, show only that
+ \else
+ \setbox0 = \hbox{\ignorespaces #2}%
+ \ifdim\wd0 > 0pt
+ \ifpdf
+ \unhbox0 % PDF: 2nd arg given, show only it
+ \else
+ \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url
+ \fi
+ \else
+ \urefcode{#1}% only url given, so show it
+ \fi
+ \fi
+ \endlink
+\endgroup}
+
+% Allow line breaks around only a few characters (only).
+\def\urefcatcodes{%
+ \catcode\ampChar=\active \catcode\dotChar=\active
+ \catcode\hashChar=\active \catcode\questChar=\active
+ \catcode\slashChar=\active
+}
+{
+ \urefcatcodes
+ %
+ \global\def\urefcode{\begingroup
+ \setupmarkupstyle{code}%
+ \urefcatcodes
+ \let&\urefcodeamp
+ \let.\urefcodedot
+ \let#\urefcodehash
+ \let?\urefcodequest
+ \let/\urefcodeslash
+ \codex
+ }
+ %
+ % By default, they are just regular characters.
+ \global\def&{\normalamp}
+ \global\def.{\normaldot}
+ \global\def#{\normalhash}
+ \global\def?{\normalquest}
+ \global\def/{\normalslash}
+}
+
+% we put a little stretch before and after the breakable chars, to help
+% line breaking of long url's. The unequal skips make look better in
+% cmtt at least, especially for dots.
+\def\urefprestretch{\urefprebreak \hskip0pt plus.13em }
+\def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em }
+%
+\def\urefcodeamp{\urefprestretch \&\urefpoststretch}
+\def\urefcodedot{\urefprestretch .\urefpoststretch}
+\def\urefcodehash{\urefprestretch \#\urefpoststretch}
+\def\urefcodequest{\urefprestretch ?\urefpoststretch}
+\def\urefcodeslash{\futurelet\next\urefcodeslashfinish}
+{
+ \catcode`\/=\active
+ \global\def\urefcodeslashfinish{%
+ \urefprestretch \slashChar
+ % Allow line break only after the final / in a sequence of
+ % slashes, to avoid line break between the slashes in http://.
+ \ifx\next/\else \urefpoststretch \fi
+ }
+}
+
+% One more complication: by default we'll break after the special
+% characters, but some people like to break before the special chars, so
+% allow that. Also allow no breaking at all, for manual control.
+%
+\parseargdef\urefbreakstyle{%
+ \def\txiarg{#1}%
+ \ifx\txiarg\wordnone
+ \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak}
+ \else\ifx\txiarg\wordbefore
+ \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak}
+ \else\ifx\txiarg\wordafter
+ \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak}
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @urefbreakstyle setting `\txiarg'}%
+ \fi\fi\fi
+}
+\def\wordafter{after}
+\def\wordbefore{before}
+\def\wordnone{none}
+
+\urefbreakstyle after
+
% @url synonym for @uref, since that's how everyone uses it.
%
\let\url=\uref
@@ -2618,6 +2708,51 @@ end
\let\email=\uref
\fi
+% @kbd is like @code, except that if the argument is just one @key command,
+% then @kbd has no effect.
+\def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}}
+
+% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
+% `example' (@kbd uses ttsl only inside of @example and friends),
+% or `code' (@kbd uses normal tty font always).
+\parseargdef\kbdinputstyle{%
+ \def\txiarg{#1}%
+ \ifx\txiarg\worddistinct
+ \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
+ \else\ifx\txiarg\wordexample
+ \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
+ \else\ifx\txiarg\wordcode
+ \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @kbdinputstyle setting `\txiarg'}%
+ \fi\fi\fi
+}
+\def\worddistinct{distinct}
+\def\wordexample{example}
+\def\wordcode{code}
+
+% Default is `distinct'.
+\kbdinputstyle distinct
+
+\def\xkey{\key}
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
+\ifx\one\xkey\ifx\threex\three \key{#2}%
+\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
+\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi}
+
+% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
+\let\indicateurl=\code
+\let\env=\code
+\let\command=\code
+
+% @clicksequence{File @click{} Open ...}
+\def\clicksequence#1{\begingroup #1\endgroup}
+
+% @clickstyle @arrow (by default)
+\parseargdef\clickstyle{\def\click{#1}}
+\def\click{\arrow}
+
% Typeset a dimension, e.g., `in' or `pt'. The only reason for the
% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
%
@@ -2639,6 +2774,7 @@ end
\ifx\temp\empty \else
\space ({\unsepspaces \ignorespaces \temp \unskip})%
\fi
+ \null % reset \spacefactor=1000
}
% @abbr for "Comput. J." and the like.
@@ -2651,6 +2787,7 @@ end
\ifx\temp\empty \else
\space ({\unsepspaces \ignorespaces \temp \unskip})%
\fi
+ \null % reset \spacefactor=1000
}
% @asis just yields its argument. Used with @table, for example.
@@ -2715,20 +2852,48 @@ end
}
}
+% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}.
+% Ignore unless FMTNAME == tex; then it is like @iftex and @tex,
+% except specified as a normal braced arg, so no newlines to worry about.
+%
+\def\outfmtnametex{tex}
+%
+\long\def\inlinefmt#1{\doinlinefmt #1,\finish}
+\long\def\doinlinefmt#1,#2,\finish{%
+ \def\inlinefmtname{#1}%
+ \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi
+}
+% For raw, must switch into @tex before parsing the argument, to avoid
+% setting catcodes prematurely. Doing it this way means that, for
+% example, @inlineraw{html, foo{bar} gets a parse error instead of being
+% ignored. But this isn't important because if people want a literal
+% *right* brace they would have to use a command anyway, so they may as
+% well use a command to get a left brace too. We could re-use the
+% delimiter character idea from \verb, but it seems like overkill.
+%
+\long\def\inlineraw{\tex \doinlineraw}
+\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish}
+\def\doinlinerawtwo#1,#2,\finish{%
+ \def\inlinerawname{#1}%
+ \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi
+ \endgroup % close group opened by \tex.
+}
+
\message{glyphs,}
% and logos.
-% @@ prints an @.
+% @@ prints an @, as does @atchar{}.
\def\@{\char64 }
+\let\atchar=\@
-% Used to generate quoted braces. Unless we're in typewriter, use
-% \ecfont because the CM text fonts do not have braces, and we don't
-% want to switch into math.
+% @{ @} @lbracechar{} @rbracechar{} all generate brace characters.
+% Unless we're in typewriter, use \ecfont because the CM text fonts do
+% not have braces, and we don't want to switch into math.
\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}}
\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}}
-\let\{=\mylbrace
-\let\}=\myrbrace
+\let\{=\mylbrace \let\lbracechar=\{
+\let\}=\myrbrace \let\rbracechar=\}
\begingroup
% Definitions to produce \{ and \} commands for indices,
% and @{ and @} for the aux/toc files.
@@ -2856,7 +3021,7 @@ end
{\tentt \global\dimen0 = 3em}% Width of the box.
\dimen2 = .55pt % Thickness of rules
% The text. (`r' is open on the right, `e' somewhat less so on the left.)
-\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
+\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt}
%
\setbox\errorbox=\hbox to \dimen0{\hfil
\hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
@@ -3005,7 +3170,7 @@ end
% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38
% so we'll define it if necessary.
%
-\ifx\Orb\undefined
+\ifx\Orb\thisisundefined
\def\Orb{\mathhexbox20D}
\fi
@@ -3033,8 +3198,9 @@ end
\newif\ifsetshortcontentsaftertitlepage
\let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
-\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
- \endgroup\page\hbox{}\page}
+\parseargdef\shorttitlepage{%
+ \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}%
+ \endgroup\page\hbox{}\page}
\envdef\titlepage{%
% Open one extra group, as we want to close it in the middle of \Etitlepage.
@@ -3094,7 +3260,7 @@ end
\finishedtitlepagetrue
}
-%%% Macros to be used within @titlepage:
+% Macros to be used within @titlepage:
\let\subtitlerm=\tenrm
\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
@@ -3127,7 +3293,7 @@ end
}
-%%% Set up page headings and footings.
+% Set up page headings and footings.
\let\thispage=\folio
@@ -3279,7 +3445,7 @@ end
% This produces Day Month Year style of output.
% Only define if not already defined, in case a txi-??.tex file has set
% up a different format (e.g., txi-cs.tex does this).
-\ifx\today\undefined
+\ifx\today\thisisundefined
\def\today{%
\number\day\space
\ifcase\month
@@ -3826,18 +3992,18 @@ end
\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
\global\advance\multitablelinespace by-\ht0
\fi
-%% Test to see if parskip is larger than space between lines of
-%% table. If not, do nothing.
-%% If so, set to same dimension as multitablelinespace.
+% Test to see if parskip is larger than space between lines of
+% table. If not, do nothing.
+% If so, set to same dimension as multitablelinespace.
\ifdim\multitableparskip>\multitablelinespace
\global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
- %% than skip between lines in the table.
+\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
+ % than skip between lines in the table.
\fi%
\ifdim\multitableparskip=0pt
\global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
- %% than skip between lines in the table.
+\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
+ % than skip between lines in the table.
\fi}
@@ -4285,6 +4451,7 @@ end
\definedummyword\guillemetright
\definedummyword\guilsinglleft
\definedummyword\guilsinglright
+ \definedummyword\lbracechar
\definedummyword\leq
\definedummyword\minus
\definedummyword\ogonek
@@ -4297,6 +4464,7 @@ end
\definedummyword\quoteleft
\definedummyword\quoteright
\definedummyword\quotesinglbase
+ \definedummyword\rbracechar
\definedummyword\result
\definedummyword\textdegree
%
@@ -4348,7 +4516,9 @@ end
\definedummyword\t
%
% Commands that take arguments.
+ \definedummyword\abbr
\definedummyword\acronym
+ \definedummyword\anchor
\definedummyword\cite
\definedummyword\code
\definedummyword\command
@@ -4358,7 +4528,9 @@ end
\definedummyword\emph
\definedummyword\env
\definedummyword\file
+ \definedummyword\image
\definedummyword\indicateurl
+ \definedummyword\inforef
\definedummyword\kbd
\definedummyword\key
\definedummyword\math
@@ -4405,7 +4577,10 @@ end
% content at all. So for index sorting, we map @{ and @} to strings
% starting with |, since that ASCII character is between ASCII { and }.
\def\{{|a}%
+ \def\lbracechar{|a}%
+ %
\def\}{|b}%
+ \def\rbracechar{|b}%
%
% Non-English letters.
\def\AA{AA}%
@@ -4581,10 +4756,9 @@ end
%
% ..., ready, GO:
%
-\def\safewhatsit#1{%
-\ifhmode
+\def\safewhatsit#1{\ifhmode
#1%
-\else
+ \else
% \lastskip and \lastpenalty cannot both be nonzero simultaneously.
\whatsitskip = \lastskip
\edef\lastskipmacro{\the\lastskip}%
@@ -4608,7 +4782,6 @@ end
% to re-insert the same penalty (values >10000 are used for various
% signals); since we just inserted a non-discardable item, any
% following glue (such as a \parskip) would be a breakpoint. For example:
- %
% @deffn deffn-whatever
% @vindex index-whatever
% Description.
@@ -4621,8 +4794,7 @@ end
% (the whatsit from the \write), so we must insert a \nobreak.
\nobreak\vskip\whatsitskip
\fi
-\fi
-}
+\fi}
% The index entry written in the file actually looks like
% \entry {sortstring}{page}{topic}
@@ -5242,7 +5414,8 @@ end
\global\let\subsubsection = \appendixsubsubsec
}
-\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
+% normally unnmhead0 calls unnumberedzzz:
+\outer\parseargdef\unnumbered{\unnmhead0{#1}}
\def\unnumberedzzz#1{%
\global\secno=0 \global\subsecno=0 \global\subsubsecno=0
\global\advance\unnumberedno by 1
@@ -5286,40 +5459,47 @@ end
\let\top\unnumbered
% Sections.
+%
\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
\def\seczzz#1{%
\global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
\sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
}
-\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz
+% normally calls appendixsectionzzz:
+\outer\parseargdef\appendixsection{\apphead1{#1}}
\def\appendixsectionzzz#1{%
\global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
\sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
}
\let\appendixsec\appendixsection
-\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz
+% normally calls unnumberedseczzz:
+\outer\parseargdef\unnumberedsec{\unnmhead1{#1}}
\def\unnumberedseczzz#1{%
\global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
\sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
}
% Subsections.
-\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz
+%
+% normally calls numberedsubseczzz:
+\outer\parseargdef\numberedsubsec{\numhead2{#1}}
\def\numberedsubseczzz#1{%
\global\subsubsecno=0 \global\advance\subsecno by 1
\sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
}
-\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz
+% normally calls appendixsubseczzz:
+\outer\parseargdef\appendixsubsec{\apphead2{#1}}
\def\appendixsubseczzz#1{%
\global\subsubsecno=0 \global\advance\subsecno by 1
\sectionheading{#1}{subsec}{Yappendix}%
{\appendixletter.\the\secno.\the\subsecno}%
}
-\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
+% normally calls unnumberedsubseczzz:
+\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}}
\def\unnumberedsubseczzz#1{%
\global\subsubsecno=0 \global\advance\subsecno by 1
\sectionheading{#1}{subsec}{Ynothing}%
@@ -5327,21 +5507,25 @@ end
}
% Subsubsections.
-\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz
+%
+% normally numberedsubsubseczzz:
+\outer\parseargdef\numberedsubsubsec{\numhead3{#1}}
\def\numberedsubsubseczzz#1{%
\global\advance\subsubsecno by 1
\sectionheading{#1}{subsubsec}{Ynumbered}%
{\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
}
-\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz
+% normally appendixsubsubseczzz:
+\outer\parseargdef\appendixsubsubsec{\apphead3{#1}}
\def\appendixsubsubseczzz#1{%
\global\advance\subsubsecno by 1
\sectionheading{#1}{subsubsec}{Yappendix}%
{\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
}
-\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
+% normally unnumberedsubsubseczzz:
+\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}}
\def\unnumberedsubsubseczzz#1{%
\global\advance\subsubsecno by 1
\sectionheading{#1}{subsubsec}{Ynothing}%
@@ -5391,14 +5575,13 @@ end
% (including whitespace, linebreaking, etc. around it),
% given all the information in convenient, parsed form.
-%%% Args are the skip and penalty (usually negative)
+% Args are the skip and penalty (usually negative)
\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
-%%% Define plain chapter starts, and page on/off switching for it
% Parameter controlling skip before chapter headings (if needed)
-
\newskip\chapheadingskip
+% Define plain chapter starts, and page on/off switching for it.
\def\chapbreak{\dobreak \chapheadingskip {-4000}}
\def\chappager{\par\vfill\supereject}
% Because \domark is called before \chapoddpage, the filler page will
@@ -5601,6 +5784,8 @@ end
%
\def\sectionheading#1#2#3#4{%
{%
+ \checkenv{}% should not be in an environment.
+ %
% Switch to the right set of fonts.
\csname #2fonts\endcsname \rmisbold
%
@@ -5712,15 +5897,15 @@ end
%
% We'll almost certainly start a paragraph next, so don't let that
% glue accumulate. (Not a breakpoint because it's preceded by a
- % discardable item.)
+ % discardable item.) However, when a paragraph is not started next
+ % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out
+ % or the negative glue will cause weirdly wrong output, typically
+ % obscuring the section heading with something else.
\vskip-\parskip
%
- % This is purely so the last item on the list is a known \penalty >
- % 10000. This is so \startdefun can avoid allowing breakpoints after
- % section headings. Otherwise, it would insert a valid breakpoint between:
- %
- % @section sec-whatever
- % @deffn def-whatever
+ % This is so the last item on the main vertical list is a known
+ % \penalty > 10000, so \startdefun, etc., can recognize the situation
+ % and do the needful.
\penalty 10001
}
@@ -6136,6 +6321,12 @@ end
\normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
% Flag to tell @lisp, etc., not to narrow margin.
\let\nonarrowing = t%
+ %
+ % If this cartouche directly follows a sectioning command, we need the
+ % \parskip glue (backspaced over by default) or the cartouche can
+ % collide with the section heading.
+ \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi
+ %
\vbox\bgroup
\baselineskip=0pt\parskip=0pt\lineskip=0pt
\carttop
@@ -6149,7 +6340,7 @@ end
\lineskip=\normlskip
\parskip=\normpskip
\vskip -\parskip
- \comment % For explanation, see the end of \def\group.
+ \comment % For explanation, see the end of def\group.
}
\def\Ecartouche{%
\ifhmode\par\fi
@@ -6346,7 +6537,7 @@ end
%
\def\Equotation{%
\par
- \ifx\quotationauthor\undefined\else
+ \ifx\quotationauthor\thisisundefined\else
% indent a bit.
\leftline{\kern 2\leftskip \sl ---\quotationauthor}%
\fi
@@ -6505,6 +6696,7 @@ end
\makevalueexpandable
\setupverbatim
\indexnofonts % Allow `@@' and other weird things in file names.
+ \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}%
\input #1
\afterenvbreak
}%
@@ -6554,7 +6746,7 @@ end
% commands also insert a nobreak penalty, and we don't want to allow
% a break between a section heading and a defun.
%
- % As a minor refinement, we avoid "club" headers by signalling
+ % As a further refinement, we avoid "club" headers by signalling
% with penalty of 10003 after the very first @deffn in the
% sequence (see above), and penalty of 10002 after any following
% @def command.
@@ -6621,13 +6813,36 @@ end
\def\domakedefun#1#2#3{%
\envdef#1{%
\startdefun
+ \doingtypefnfalse % distinguish typed functions from all else
\parseargusing\activeparens{\printdefunline#3}%
}%
\def#2{\dodefunx#1}%
\def#3%
}
-%%% Untyped functions:
+\newif\ifdoingtypefn % doing typed function?
+\newif\ifrettypeownline % typeset return type on its own line?
+
+% @deftypefnnewline on|off says whether the return type of typed functions
+% are printed on their own line. This affects @deftypefn, @deftypefun,
+% @deftypeop, and @deftypemethod.
+%
+\parseargdef\deftypefnnewline{%
+ \def\temp{#1}%
+ \ifx\temp\onword
+ \expandafter\let\csname SETtxideftypefnnl\endcsname
+ = \empty
+ \else\ifx\temp\offword
+ \expandafter\let\csname SETtxideftypefnnl\endcsname
+ = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @txideftypefnnl value `\temp',
+ must be on|off}%
+ \fi\fi
+}
+
+% Untyped functions:
% @deffn category name args
\makedefun{deffn}{\deffngeneral{}}
@@ -6646,7 +6861,7 @@ end
\defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
}
-%%% Typed functions:
+% Typed functions:
% @deftypefn category type name args
\makedefun{deftypefn}{\deftypefngeneral{}}
@@ -6661,10 +6876,11 @@ end
%
\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
\dosubind{fn}{\code{#4}}{#1}%
+ \doingtypefntrue
\defname{#2}{#3}{#4}\defunargs{#5\unskip}%
}
-%%% Typed variables:
+% Typed variables:
% @deftypevr category type var args
\makedefun{deftypevr}{\deftypecvgeneral{}}
@@ -6682,7 +6898,7 @@ end
\defname{#2}{#3}{#4}\defunargs{#5\unskip}%
}
-%%% Untyped variables:
+% Untyped variables:
% @defvr category var args
\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
@@ -6693,7 +6909,8 @@ end
% \defcvof {category of}class var args
\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
-%%% Type:
+% Types:
+
% @deftp category name args
\makedefun{deftp}#1 #2 #3\endheader{%
\doind{tp}{\code{#2}}%
@@ -6721,25 +6938,49 @@ end
% We are followed by (but not passed) the arguments, if any.
%
\def\defname#1#2#3{%
+ \par
% Get the values of \leftskip and \rightskip as they were outside the @def...
\advance\leftskip by -\defbodyindent
%
- % How we'll format the type name. Putting it in brackets helps
+ % Determine if we are typesetting the return type of a typed function
+ % on a line by itself.
+ \rettypeownlinefalse
+ \ifdoingtypefn % doing a typed function specifically?
+ % then check user option for putting return type on its own line:
+ \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else
+ \rettypeownlinetrue
+ \fi
+ \fi
+ %
+ % How we'll format the category name. Putting it in brackets helps
% distinguish it from the body text that may end up on the next line
% just below it.
\def\temp{#1}%
\setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
%
- % Figure out line sizes for the paragraph shape.
+ % Figure out line sizes for the paragraph shape. We'll always have at
+ % least two.
+ \tempnum = 2
+ %
% The first line needs space for \box0; but if \rightskip is nonzero,
% we need only space for the part of \box0 which exceeds it:
\dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip
+ %
+ % If doing a return type on its own line, we'll have another line.
+ \ifrettypeownline
+ \advance\tempnum by 1
+ \def\maybeshapeline{0in \hsize}%
+ \else
+ \def\maybeshapeline{}%
+ \fi
+ %
% The continuations:
\dimen2=\hsize \advance\dimen2 by -\defargsindent
- % (plain.tex says that \dimen1 should be used only as global.)
- \parshape 2 0in \dimen0 \defargsindent \dimen2
%
- % Put the type name to the right margin.
+ % The final paragraph shape:
+ \parshape \tempnum 0in \dimen0 \maybeshapeline \defargsindent \dimen2
+ %
+ % Put the category name at the right margin.
\noindent
\hbox to 0pt{%
\hfil\box0 \kern-\hsize
@@ -6761,8 +7002,16 @@ end
% . this still does not fix the ?` and !` ligatures, but so far no
% one has made identifiers using them :).
\df \tt
- \def\temp{#2}% return value type
- \ifx\temp\empty\else \tclose{\temp} \fi
+ \def\temp{#2}% text of the return type
+ \ifx\temp\empty\else
+ \tclose{\temp}% typeset the return type
+ \ifrettypeownline
+ % put return type on its own line; prohibit line break following:
+ \hfil\vadjust{\nobreak}\break
+ \else
+ \space % type on same line, so just followed by a space
+ \fi
+ \fi % no return type
#3% output function name
}%
{\rm\enskip}% hskip 0.5 em of \tenrm
@@ -6880,7 +7129,7 @@ end
% To do this right we need a feature of e-TeX, \scantokens,
% which we arrange to emulate with a temporary file in ordinary TeX.
-\ifx\eTeXversion\undefined
+\ifx\eTeXversion\thisisundefined
\newwrite\macscribble
\def\scantokens#1{%
\toks0={#1}%
@@ -6905,12 +7154,14 @@ end
% ... and for \example:
\spaceisspace
%
- % The \empty here causes a following catcode 5 newline to be eaten
- % as part of reading whitespace after a control sequence. It does
- % not eat a catcode 13 newline. There's no good way to handle the
- % two cases. See the Macro Details node in the manual for the
- % workaround we currently have to recommend for macros and
+ % The \empty here causes a following catcode 5 newline to be eaten as
+ % part of reading whitespace after a control sequence. It does not
+ % eat a catcode 13 newline. There's no good way to handle the two
+ % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX
+ % would then have different behavior). See the Macro Details node in
+ % the manual for the workaround we recommend for macros and
% line-oriented commands.
+ %
\scantokens{#1\empty}%
\endgroup}
@@ -7045,9 +7296,15 @@ end
\def\macroxxx#1{%
\getargs{#1}% now \macname is the macname and \argl the arglist
\ifx\argl\empty % no arguments
- \paramno=0
+ \paramno=0\relax
\else
\expandafter\parsemargdef \argl;%
+ \if\paramno>256\relax
+ \ifx\eTeXversion\thisisundefined
+ \errhelp = \EMsimple
+ \errmessage{You need eTeX to compile a file with macros with more than 256 arguments}
+ \fi
+ \fi
\fi
\if1\csname ismacro.\the\macname\endcsname
\message{Warning: redefining \the\macname}%
@@ -7097,9 +7354,17 @@ end
\def\getmacname#1 #2\relax{\macname={#1}}
\def\getmacargs#1{\def\argl{#1}}
+% For macro processing make @ a letter so that we can make Texinfo private macro names.
+\edef\texiatcatcode{\the\catcode`\@}
+\catcode `@=11\relax
+
% Parse the optional {params} list. Set up \paramno and \paramlist
-% so \defmacro knows what to do. Define \macarg.blah for each blah
-% in the params list to be ##N where N is the position in that list.
+% so \defmacro knows what to do. Define \macarg.BLAH for each BLAH
+% in the params list to some hook where the argument si to be expanded. If
+% there are less than 10 arguments that hook is to be replaced by ##N where N
+% is the position in that list, that is to say the macro arguments are to be
+% defined `a la TeX in the macro body.
+%
% That gets used by \mbodybackslash (above).
%
% We need to get `macro parameter char #' into several definitions.
@@ -7109,12 +7374,33 @@ end
%
% The same technique is used to protect \eatspaces till just before
% the macro is used.
-
+%
+% If there are 10 or more arguments, a different technique is used, where the
+% hook remains in the body, and when macro is to be expanded the body is
+% processed again to replace the arguments.
+%
+% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the
+% argument N value and then \edef the body (nothing else will expand because of
+% the catcode regime underwhich the body was input).
+%
+% If you compile with TeX (not eTeX), and you have macros with 10 or more
+% arguments, you need that no macro has more than 256 arguments, otherwise an
+% error is produced.
\def\parsemargdef#1;{%
\paramno=0\def\paramlist{}%
\let\hash\relax
\let\xeatspaces\relax
\parsemargdefxxx#1,;,%
+ % In case that there are 10 or more arguments we parse again the arguments
+ % list to set new definitions for the \macarg.BLAH macros corresponding to
+ % each BLAH argument. It was anyhow needed to parse already once this list
+ % in order to count the arguments, and as macros with at most 9 arguments
+ % are by far more frequent than macro with 10 or more arguments, defining
+ % twice the \macarg.BLAH macros does not cost too much processing power.
+ \ifnum\paramno<10\relax\else
+ \paramno0\relax
+ \parsemmanyargdef@@#1,;,% 10 or more arguments
+ \fi
}
\def\parsemargdefxxx#1,{%
\if#1;\let\next=\relax
@@ -7125,16 +7411,205 @@ end
\edef\paramlist{\paramlist\hash\the\paramno,}%
\fi\next}
+\def\parsemmanyargdef@@#1,{%
+ \if#1;\let\next=\relax
+ \else
+ \let\next=\parsemmanyargdef@@
+ \edef\tempb{\eatspaces{#1}}%
+ \expandafter\def\expandafter\tempa
+ \expandafter{\csname macarg.\tempb\endcsname}%
+ % Note that we need some extra \noexpand\noexpand, this is because we
+ % don't want \the to be expanded in the \parsermacbody as it uses an
+ % \xdef .
+ \expandafter\edef\tempa
+ {\noexpand\noexpand\noexpand\the\toks\the\paramno}%
+ \advance\paramno by 1\relax
+ \fi\next}
+
% These two commands read recursive and nonrecursive macro bodies.
% (They're different since rec and nonrec macros end differently.)
%
+
+\catcode `\@\texiatcatcode
\long\def\parsemacbody#1@end macro%
{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
\long\def\parsermacbody#1@end rmacro%
{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+\catcode `\@=11\relax
+
+\let\endargs@\relax
+\let\nil@\relax
+\def\nilm@{\nil@}%
+\long\def\nillm@{\nil@}%
+
+% This macro is expanded during the Texinfo macro expansion, not during its
+% definition. It gets all the arguments values and assigns them to macros
+% macarg.ARGNAME
+%
+% #1 is the macro name
+% #2 is the list of argument names
+% #3 is the list of argument values
+\def\getargvals@#1#2#3{%
+ \def\macargdeflist@{}%
+ \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion.
+ \def\paramlist{#2,\nil@}%
+ \def\macroname{#1}%
+ \begingroup
+ \macroargctxt
+ \def\argvaluelist{#3,\nil@}%
+ \def\@tempa{#3}%
+ \ifx\@tempa\empty
+ \setemptyargvalues@
+ \else
+ \getargvals@@
+ \fi
+}
-% This defines the macro itself. There are six cases: recursive and
-% nonrecursive macros of zero, one, and many arguments.
+%
+\def\getargvals@@{%
+ \ifx\paramlist\nilm@
+ % Some sanity check needed here that \argvaluelist is also empty.
+ \ifx\argvaluelist\nillm@
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Too many arguments in macro `\macroname'!}%
+ \fi
+ \let\next\macargexpandinbody@
+ \else
+ \ifx\argvaluelist\nillm@
+ % No more arguments values passed to macro. Set remaining named-arg
+ % macros to empty.
+ \let\next\setemptyargvalues@
+ \else
+ % pop current arg name into \@tempb
+ \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}%
+ \expandafter\@tempa\expandafter{\paramlist}%
+ % pop current argument value into \@tempc
+ \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}%
+ \expandafter\@tempa\expandafter{\argvaluelist}%
+ % Here \@tempb is the current arg name and \@tempc is the current arg value.
+ % First place the new argument macro definition into \@tempd
+ \expandafter\macname\expandafter{\@tempc}%
+ \expandafter\let\csname macarg.\@tempb\endcsname\relax
+ \expandafter\def\expandafter\@tempe\expandafter{%
+ \csname macarg.\@tempb\endcsname}%
+ \edef\@tempd{\long\def\@tempe{\the\macname}}%
+ \push@\@tempd\macargdeflist@
+ \let\next\getargvals@@
+ \fi
+ \fi
+ \next
+}
+
+\def\push@#1#2{%
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter#2%
+ \expandafter\expandafter\expandafter{%
+ \expandafter#1#2}%
+}
+
+% Replace arguments by their values in the macro body, and place the result
+% in macro \@tempa
+\def\macvalstoargs@{%
+ % To do this we use the property that token registers that are \the'ed
+ % within an \edef expand only once. So we are going to place all argument
+ % values into respective token registers.
+ %
+ % First we save the token context, and initialize argument numbering.
+ \begingroup
+ \paramno0\relax
+ % Then, for each argument number #N, we place the corresponding argument
+ % value into a new token list register \toks#N
+ \expandafter\putargsintokens@\saveparamlist@,;,%
+ % Then, we expand the body so that argument are replaced by their
+ % values. The trick for values not to be expanded themselves is that they
+ % are within tokens and that tokens expand only once in an \edef .
+ \edef\@tempc{\csname mac.\macroname .body\endcsname}%
+ % Now we restore the token stack pointer to free the token list registers
+ % which we have used, but we make sure that expanded body is saved after
+ % group.
+ \expandafter
+ \endgroup
+ \expandafter\def\expandafter\@tempa\expandafter{\@tempc}%
+ }
+
+\def\macargexpandinbody@{%
+ %% Define the named-macro outside of this group and then close this group.
+ \expandafter
+ \endgroup
+ \macargdeflist@
+ % First the replace in body the macro arguments by their values, the result
+ % is in \@tempa .
+ \macvalstoargs@
+ % Then we point at the \norecurse or \gobble (for recursive) macro value
+ % with \@tempb .
+ \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname
+ % Depending on whether it is recursive or not, we need some tailing
+ % \egroup .
+ \ifx\@tempb\gobble
+ \let\@tempc\relax
+ \else
+ \let\@tempc\egroup
+ \fi
+ % And now we do the real job:
+ \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}%
+ \@tempd
+}
+
+\def\putargsintokens@#1,{%
+ \if#1;\let\next\relax
+ \else
+ \let\next\putargsintokens@
+ % First we allocate the new token list register, and give it a temporary
+ % alias \@tempb .
+ \toksdef\@tempb\the\paramno
+ % Then we place the argument value into that token list register.
+ \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname
+ \expandafter\@tempb\expandafter{\@tempa}%
+ \advance\paramno by 1\relax
+ \fi
+ \next
+}
+
+% Save the token stack pointer into macro #1
+\def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}}
+% Restore the token stack pointer from number in macro #1
+\def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax}
+% newtoks that can be used non \outer .
+\def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi}
+
+% Tailing missing arguments are set to empty
+\def\setemptyargvalues@{%
+ \ifx\paramlist\nilm@
+ \let\next\macargexpandinbody@
+ \else
+ \expandafter\setemptyargvaluesparser@\paramlist\endargs@
+ \let\next\setemptyargvalues@
+ \fi
+ \next
+}
+
+\def\setemptyargvaluesparser@#1,#2\endargs@{%
+ \expandafter\def\expandafter\@tempa\expandafter{%
+ \expandafter\def\csname macarg.#1\endcsname{}}%
+ \push@\@tempa\macargdeflist@
+ \def\paramlist{#2}%
+}
+
+% #1 is the element target macro
+% #2 is the list macro
+% #3,#4\endargs@ is the list value
+\def\pop@#1#2#3,#4\endargs@{%
+ \def#1{#3}%
+ \def#2{#4}%
+}
+\long\def\longpop@#1#2#3,#4\endargs@{%
+ \long\def#1{#3}%
+ \long\def#2{#4}%
+}
+
+% This defines a Texinfo @macro. There are eight cases: recursive and
+% nonrecursive macros of zero, one, up to nine, and many arguments.
% Much magic with \expandafter here.
% \xdef is used so that macro definitions will survive the file
% they're defined in; @include reads the file inside a group.
@@ -7153,17 +7628,25 @@ end
\expandafter\noexpand\csname\the\macname xxx\endcsname}%
\expandafter\xdef\csname\the\macname xxx\endcsname##1{%
\egroup\noexpand\scanmacro{\temp}}%
- \else % many
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \noexpand\csname\the\macname xx\endcsname}%
- \expandafter\xdef\csname\the\macname xx\endcsname##1{%
- \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
- \expandafter\expandafter
- \expandafter\xdef
- \expandafter\expandafter
- \csname\the\macname xxx\endcsname
- \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+ \else
+ \ifnum\paramno<10\relax % at most 9
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \noexpand\csname\the\macname xx\endcsname}%
+ \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+ \expandafter\expandafter
+ \expandafter\xdef
+ \expandafter\expandafter
+ \csname\the\macname xxx\endcsname
+ \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+ \else % 10 or more
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \noexpand\getargvals@{\the\macname}{\argl}%
+ }%
+ \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
+ \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble
+ \fi
\fi
\else
\ifcase\paramno
@@ -7180,23 +7663,33 @@ end
\egroup
\noexpand\norecurse{\the\macname}%
\noexpand\scanmacro{\temp}\egroup}%
- \else % many
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \expandafter\noexpand\csname\the\macname xx\endcsname}%
- \expandafter\xdef\csname\the\macname xx\endcsname##1{%
- \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
- \expandafter\expandafter
- \expandafter\xdef
- \expandafter\expandafter
- \csname\the\macname xxx\endcsname
- \paramlist{%
- \egroup
- \noexpand\norecurse{\the\macname}%
- \noexpand\scanmacro{\temp}\egroup}%
+ \else % at most 9
+ \ifnum\paramno<10\relax
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \expandafter\noexpand\csname\the\macname xx\endcsname}%
+ \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+ \expandafter\expandafter
+ \expandafter\xdef
+ \expandafter\expandafter
+ \csname\the\macname xxx\endcsname
+ \paramlist{%
+ \egroup
+ \noexpand\norecurse{\the\macname}%
+ \noexpand\scanmacro{\temp}\egroup}%
+ \else % 10 or more:
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \noexpand\getargvals@{\the\macname}{\argl}%
+ }%
+ \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
+ \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse
+ \fi
\fi
\fi}
+\catcode `\@\texiatcatcode\relax
+
\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
% \braceorline decides whether the next nonwhitespace character is a
@@ -7235,7 +7728,8 @@ end
% @inforef is relatively simple.
\def\inforef #1{\inforefzzz #1,,,,**}
-\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
+\def\inforefzzz #1,#2,#3,#4**{%
+ \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
node \samp{\ignorespaces#1{}}}
% @node's only job in TeX is to define \lastnode, which is used in
@@ -7296,11 +7790,32 @@ end
\toks0 = \expandafter{\lastsection}%
\immediate \writexrdef{title}{\the\toks0 }%
\immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
- \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout
+ \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout
}%
\fi
}
+% @xrefautosectiontitle on|off says whether @section(ing) names are used
+% automatically in xrefs, if the third arg is not explicitly specified.
+% This was provided as a "secret" @set xref-automatic-section-title
+% variable, now it's official.
+%
+\parseargdef\xrefautomaticsectiontitle{%
+ \def\temp{#1}%
+ \ifx\temp\onword
+ \expandafter\let\csname SETxref-automatic-section-title\endcsname
+ = \empty
+ \else\ifx\temp\offword
+ \expandafter\let\csname SETxref-automatic-section-title\endcsname
+ = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @xrefautomaticsectiontitle value `\temp',
+ must be on|off}%
+ \fi\fi
+}
+
+%
% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is
% the node name, #2 the name of the Info cross-reference, #3 the printed
% node name, #4 the name of the Info file, #5 the name of the printed
@@ -7309,26 +7824,41 @@ end
\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
\def\ref#1{\xrefX[#1,,,,,,,]}
+%
+\newbox\toprefbox
+\newbox\printedrefnamebox
+\newbox\infofilenamebox
+\newbox\printedmanualbox
+%
\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
\unsepspaces
- \def\printedmanual{\ignorespaces #5}%
+ %
+ % Get args without leading/trailing spaces.
\def\printedrefname{\ignorespaces #3}%
- \setbox1=\hbox{\printedmanual\unskip}%
- \setbox0=\hbox{\printedrefname\unskip}%
- \ifdim \wd0 = 0pt
+ \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}%
+ %
+ \def\infofilename{\ignorespaces #4}%
+ \setbox\infofilenamebox = \hbox{\infofilename\unskip}%
+ %
+ \def\printedmanual{\ignorespaces #5}%
+ \setbox\printedmanualbox = \hbox{\printedmanual\unskip}%
+ %
+ % If the printed reference name (arg #3) was not explicitly given in
+ % the @xref, figure out what we want to use.
+ \ifdim \wd\printedrefnamebox = 0pt
% No printed node name was explicitly given.
- \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
- % Use the node name inside the square brackets.
+ \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax
+ % Not auto section-title: use node name inside the square brackets.
\def\printedrefname{\ignorespaces #1}%
\else
- % Use the actual chapter/section title appear inside
- % the square brackets. Use the real section title if we have it.
- \ifdim \wd1 > 0pt
- % It is in another manual, so we don't have it.
+ % Auto section-title: use chapter/section title inside
+ % the square brackets if we have it.
+ \ifdim \wd\printedmanualbox > 0pt
+ % It is in another manual, so we don't have it; use node name.
\def\printedrefname{\ignorespaces #1}%
\else
\ifhavexrefs
- % We know the real title if we have the xref values.
+ % We (should) know the real title if we have the xref values.
\def\printedrefname{\refx{#1-title}{}}%
\else
% Otherwise just copy the Info node name.
@@ -7342,13 +7872,20 @@ end
\ifpdf
{\indexnofonts
\turnoffactive
+ \makevalueexpandable
% This expands tokens, so do it after making catcode changes, so _
- % etc. don't get their TeX definitions.
+ % etc. don't get their TeX definitions. This ignores all spaces in
+ % #4, including (wrongly) those in the middle of the filename.
\getfilename{#4}%
%
- % See comments at \activebackslashdouble.
- {\activebackslashdouble \xdef\pdfxrefdest{#1}%
- \backslashparens\pdfxrefdest}%
+ % This (wrongly) does not take account of leading or trailing
+ % spaces in #1, which should be ignored.
+ \edef\pdfxrefdest{#1}%
+ \ifx\pdfxrefdest\empty
+ \def\pdfxrefdest{Top}% no empty targets
+ \else
+ \txiescapepdf\pdfxrefdest % escape PDF special chars
+ \fi
%
\leavevmode
\startlink attr{/Border [0 0 0]}%
@@ -7375,29 +7912,42 @@ end
\iffloat\Xthisreftitle
% If the user specified the print name (third arg) to the ref,
% print it instead of our usual "Figure 1.2".
- \ifdim\wd0 = 0pt
+ \ifdim\wd\printedrefnamebox = 0pt
\refx{#1-snt}{}%
\else
\printedrefname
\fi
%
- % if the user also gave the printed manual name (fifth arg), append
+ % If the user also gave the printed manual name (fifth arg), append
% "in MANUALNAME".
- \ifdim \wd1 > 0pt
+ \ifdim \wd\printedmanualbox > 0pt
\space \putwordin{} \cite{\printedmanual}%
\fi
\else
% node/anchor (non-float) references.
+ %
+ % If we use \unhbox to print the node names, TeX does not insert
+ % empty discretionaries after hyphens, which means that it will not
+ % find a line break at a hyphen in a node names. Since some manuals
+ % are best written with fairly long node names, containing hyphens,
+ % this is a loss. Therefore, we give the text of the node name
+ % again, so it is as if TeX is seeing it for the first time.
+ %
+ \ifdim \wd\printedmanualbox > 0pt
+ % Cross-manual reference with a printed manual name.
+ %
+ \crossmanualxref{\cite{\printedmanual\unskip}}%
+ %
+ \else\ifdim \wd\infofilenamebox > 0pt
+ % Cross-manual reference with only an info filename (arg 4), no
+ % printed manual name (arg 5). This is essentially the same as
+ % the case above; we output the filename, since we have nothing else.
+ %
+ \crossmanualxref{\code{\infofilename\unskip}}%
%
- % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
- % insert empty discretionaries after hyphens, which means that it will
- % not find a line break at a hyphen in a node names. Since some manuals
- % are best written with fairly long node names, containing hyphens, this
- % is a loss. Therefore, we give the text of the node name again, so it
- % is as if TeX is seeing it for the first time.
- \ifdim \wd1 > 0pt
- \putwordSection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}%
\else
+ % Reference within this manual.
+ %
% _ (for example) has to be the character _ for the purposes of the
% control sequence corresponding to the node, but it has to expand
% into the usual \leavevmode...\vrule stuff for purposes of
@@ -7409,7 +7959,7 @@ end
\setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
\ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
}%
- % output the `[mynode]' via a macro so it can be overridden.
+ % output the `[mynode]' via the macro below so it can be overridden.
\xrefprintnodename\printedrefname
%
% But we always want a comma and a space:
@@ -7417,11 +7967,37 @@ end
%
% output the `page 3'.
\turnoffactive \putwordpage\tie\refx{#1-pg}{}%
- \fi
+ \fi\fi
\fi
\endlink
\endgroup}
+% Output a cross-manual xref to #1. Used just above (twice).
+%
+% Only include the text "Section ``foo'' in" if the foo is neither
+% missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply
+% "see The Foo Manual", the idea being to refer to the whole manual.
+%
+% But, this being TeX, we can't easily compare our node name against the
+% string "Top" while ignoring the possible spaces before and after in
+% the input. By adding the arbitrary 7sp below, we make it much less
+% likely that a real node name would have the same width as "Top" (e.g.,
+% in a monospaced font). Hopefully it will never happen in practice.
+%
+% For the same basic reason, we retypeset the "Top" at every
+% reference, since the current font is indeterminate.
+%
+\def\crossmanualxref#1{%
+ \setbox\toprefbox = \hbox{Top\kern7sp}%
+ \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}%
+ \ifdim \wd2 > 7sp % nonempty?
+ \ifdim \wd2 = \wd\toprefbox \else % same as Top?
+ \putwordSection{} ``\printedrefname'' \putwordin{}\space
+ \fi
+ \fi
+ #1%
+}
+
% This macro is called from \xrefX for the `[nodename]' part of xref
% output. It's a separate macro only so it can be changed more easily,
% since square brackets don't work well in some documents. Particularly
@@ -7637,7 +8213,7 @@ end
% space to prevent strange expansion errors.)
\def\supereject{\par\penalty -20000\footnoteno =0 }
-% @footnotestyle is meaningful for info output only.
+% @footnotestyle is meaningful for Info output only.
\let\footnotestyle=\comment
{\catcode `\@=11
@@ -7700,6 +8276,8 @@ end
% expands into a box, it must come within the paragraph, lest it
% provide a place where TeX can split the footnote.
\footstrut
+ %
+ % Invoke rest of plain TeX footnote routine.
\futurelet\next\fo@t
}
}%end \catcode `\@=11
@@ -7787,7 +8365,7 @@ end
it from ftp://tug.org/tex/epsf.tex.}
%
\def\image#1{%
- \ifx\epsfbox\undefined
+ \ifx\epsfbox\thisisundefined
\ifwarnednoepsf \else
\errhelp = \noepsfhelp
\errmessage{epsf.tex not found, images will be ignored}%
@@ -7811,6 +8389,13 @@ end
% If the image is by itself, center it.
\ifvmode
\imagevmodetrue
+ \else \ifx\centersub\centerV
+ % for @center @image, we need a vbox so we can have our vertical space
+ \imagevmodetrue
+ \vbox\bgroup % vbox has better behavior than vtop herev
+ \fi\fi
+ %
+ \ifimagevmode
\nobreak\medskip
% Usually we'll have text after the image which will insert
% \parskip glue, so insert it here too to equalize the space
@@ -7820,9 +8405,13 @@ end
\fi
%
% Leave vertical mode so that indentation from an enclosing
- % environment such as @quotation is respected. On the other hand, if
- % it's at the top level, we don't want the normal paragraph indentation.
- \noindent
+ % environment such as @quotation is respected.
+ % However, if we're at the top level, we don't want the
+ % normal paragraph indentation.
+ % On the other hand, if we are in the case of @center @image, we don't
+ % want to start a paragraph, which will create a hsize-width box and
+ % eradicate the centering.
+ \ifx\centersub\centerV\else \noindent \fi
%
% Output the image.
\ifpdf
@@ -7834,7 +8423,10 @@ end
\epsfbox{#1.eps}%
\fi
%
- \ifimagevmode \medskip \fi % space after the standalone image
+ \ifimagevmode
+ \medskip % space after a standalone image
+ \fi
+ \ifx\centersub\centerV \egroup \fi
\endgroup}
@@ -8252,7 +8844,7 @@ directory should work if nowhere else does.}
%
% Latin1 (ISO-8859-1) character definitions.
\def\latonechardefs{%
- \gdef^^a0{~}
+ \gdef^^a0{\tie}
\gdef^^a1{\exclamdown}
\gdef^^a2{\missingcharmsg{CENT SIGN}}
\gdef^^a3{{\pounds}}
@@ -8282,7 +8874,7 @@ directory should work if nowhere else does.}
\gdef^^b9{$^1$}
\gdef^^ba{\ordm}
%
- \gdef^^bb{\guilletright}
+ \gdef^^bb{\guillemetright}
\gdef^^bc{$1\over4$}
\gdef^^bd{$1\over2$}
\gdef^^be{$3\over4$}
@@ -8374,7 +8966,7 @@ directory should work if nowhere else does.}
% Latin2 (ISO-8859-2) character definitions.
\def\lattwochardefs{%
- \gdef^^a0{~}
+ \gdef^^a0{\tie}
\gdef^^a1{\ogonek{A}}
\gdef^^a2{\u{}}
\gdef^^a3{\L}
@@ -8547,7 +9139,7 @@ directory should work if nowhere else does.}
\gdef\DeclareUnicodeCharacter#1#2{%
\countUTFz = "#1\relax
- \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
+ %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
\begingroup
\parseXMLCharref
\def\UTFviiiTwoOctets##1##2{%
@@ -9223,28 +9815,21 @@ directory should work if nowhere else does.}
\message{and turning on texinfo input format.}
+\def^^L{\par} % remove \outer, so ^L can appear in an @comment
+
% DEL is a comment character, in case @c does not suffice.
\catcode`\^^? = 14
% Define macros to output various characters with catcode for normal text.
-\catcode`\"=\other
-\catcode`\~=\other
-\catcode`\^=\other
-\catcode`\_=\other
-\catcode`\|=\other
-\catcode`\<=\other
-\catcode`\>=\other
-\catcode`\+=\other
-\catcode`\$=\other
-\def\normaldoublequote{"}
-\def\normaltilde{~}
-\def\normalcaret{^}
-\def\normalunderscore{_}
-\def\normalverticalbar{|}
-\def\normalless{<}
-\def\normalgreater{>}
-\def\normalplus{+}
-\def\normaldollar{$}%$ font-lock fix
+\catcode`\"=\other \def\normaldoublequote{"}
+\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix
+\catcode`\+=\other \def\normalplus{+}
+\catcode`\<=\other \def\normalless{<}
+\catcode`\>=\other \def\normalgreater{>}
+\catcode`\^=\other \def\normalcaret{^}
+\catcode`\_=\other \def\normalunderscore{_}
+\catcode`\|=\other \def\normalverticalbar{|}
+\catcode`\~=\other \def\normaltilde{~}
% This macro is used to make a character print one way in \tt
% (where it can probably be output as-is), and another way in other fonts,
@@ -9322,14 +9907,24 @@ directory should work if nowhere else does.}
% In texinfo, backslash is an active character; it prints the backslash
% in fixed width font.
-\catcode`\\=\active
-@def@normalbackslash{{@tt@backslashcurfont}}
+\catcode`\\=\active % @ for escape char from now on.
+
+% The story here is that in math mode, the \char of \backslashcurfont
+% ends up printing the roman \ from the math symbol font (because \char
+% in math mode uses the \mathcode, and plain.tex sets
+% \mathcode`\\="026E). It seems better for @backslashchar{} to always
+% print a typewriter backslash, hence we use an explicit \mathchar,
+% which is the decimal equivalent of "715c (class 7, e.g., use \fam;
+% ignored family value; char position "5C). We can't use " for the
+% usual hex value because it has already been made active.
+@def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}}
+@let@backslashchar = @normalbackslash % @backslashchar{} is for user documents.
+
% On startup, @fixbackslash assigns:
% @let \ = @normalbackslash
-
% \rawbackslash defines an active \ to do \backslashcurfont.
% \otherbackslash defines an active \ to be a literal `\' character with
-% catcode other.
+% catcode other. We switch back and forth between these.
@gdef@rawbackslash{@let\=@backslashcurfont}
@gdef@otherbackslash{@let\=@realbackslash}
@@ -9337,16 +9932,16 @@ directory should work if nowhere else does.}
% the literal character `\'.
%
@def@normalturnoffactive{%
- @let\=@normalbackslash
@let"=@normaldoublequote
- @let~=@normaltilde
+ @let$=@normaldollar %$ font-lock fix
+ @let+=@normalplus
+ @let<=@normalless
+ @let>=@normalgreater
+ @let\=@normalbackslash
@let^=@normalcaret
@let_=@normalunderscore
@let|=@normalverticalbar
- @let<=@normalless
- @let>=@normalgreater
- @let+=@normalplus
- @let$=@normaldollar %$ font-lock fix
+ @let~=@normaltilde
@markupsetuplqdefault
@markupsetuprqdefault
@unsepspaces
@@ -9378,10 +9973,19 @@ directory should work if nowhere else does.}
% Say @foo, not \foo, in error messages.
@escapechar = `@@
+% These (along with & and #) are made active for url-breaking, so need
+% active definitions as the normal characters.
+@def@normaldot{.}
+@def@normalquest{?}
+@def@normalslash{/}
+
% These look ok in all fonts, so just make them not special.
-@catcode`@& = @other
-@catcode`@# = @other
-@catcode`@% = @other
+% @hashchar{} gets its own user-level command, because of #line.
+@catcode`@& = @other @def@normalamp{&}
+@catcode`@# = @other @def@normalhash{#}
+@catcode`@% = @other @def@normalpercent{%}
+
+@let @hashchar = @normalhash
@c Finally, make ` and ' active, so that txicodequoteundirected and
@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we
diff --git a/eval.c b/eval.c
index e3ab52eb..d3e38f03 100644
--- a/eval.c
+++ b/eval.c
@@ -36,9 +36,11 @@ IOBUF *curfile = NULL; /* current data file */
int exiting = FALSE;
int (*interpret)(INSTRUCTION *);
+#define MAX_EXEC_HOOKS 10
+static int num_exec_hook = 0;
+static Func_pre_exec pre_execute[MAX_EXEC_HOOKS];
+static Func_post_exec post_execute = NULL;
-extern int pre_execute(INSTRUCTION **);
-extern void post_execute(INSTRUCTION *);
extern void frame_popped();
#if __GNUC__ < 2
@@ -437,6 +439,8 @@ flags2str(int flagval)
{ NUMINT, "NUMINT" },
{ INTIND, "INTIND" },
{ WSTRCUR, "WSTRCUR" },
+ { MPFN, "MPFN" },
+ { MPZN, "MPZN" },
{ ARRAYMAXED, "ARRAYMAXED" },
{ HALFHAT, "HALFHAT" },
{ XARRAY, "XARRAY" },
@@ -563,6 +567,7 @@ posix_compare(NODE *s1, NODE *s2)
return ret;
}
+
/* cmp_nodes --- compare two nodes, returning negative, 0, positive */
int
@@ -582,21 +587,13 @@ cmp_nodes(NODE *t1, NODE *t2)
if (t1->flags & INTIND)
t1 = force_string(t1);
if (t2->flags & INTIND)
- t2 = force_string(t2);
-
- if ((t1->flags & NUMBER) && (t2->flags & NUMBER)) {
- if (t1->numbr == t2->numbr)
- ret = 0;
- /* don't subtract, in case one or both are infinite */
- else if (t1->numbr < t2->numbr)
- ret = -1;
- else
- ret = 1;
- return ret;
- }
+ t2 = force_string(t2);
- t1 = force_string(t1);
- t2 = force_string(t2);
+ if ((t1->flags & NUMBER) && (t2->flags & NUMBER))
+ return cmp_numbers(t1, t2);
+
+ (void) force_string(t1);
+ (void) force_string(t2);
len1 = t1->stlen;
len2 = t2->stlen;
ldiff = len1 - len2;
@@ -700,6 +697,7 @@ void
set_IGNORECASE()
{
static short warned = FALSE;
+ NODE *n = IGNORECASE_node->var_value;
if ((do_lint || do_traditional) && ! warned) {
warned = TRUE;
@@ -708,17 +706,19 @@ set_IGNORECASE()
load_casetable();
if (do_traditional)
IGNORECASE = FALSE;
- else if ((IGNORECASE_node->var_value->flags & (STRING|STRCUR)) != 0) {
- if ((IGNORECASE_node->var_value->flags & MAYBE_NUM) == 0) {
- IGNORECASE_node->var_value = force_string(IGNORECASE_node->var_value);
- IGNORECASE = (IGNORECASE_node->var_value->stlen > 0);
- } else
- IGNORECASE = (force_number(IGNORECASE_node->var_value) != 0.0);
- } else if ((IGNORECASE_node->var_value->flags & (NUMCUR|NUMBER)) != 0)
- IGNORECASE = (force_number(IGNORECASE_node->var_value) != 0.0);
+ else if ((n->flags & (STRING|STRCUR)) != 0) {
+ if ((n->flags & MAYBE_NUM) == 0) {
+ (void) force_string(n);
+ IGNORECASE = (n->stlen > 0);
+ } else {
+ (void) force_number(n);
+ IGNORECASE = ! iszero(n);
+ }
+ } else if ((n->flags & (NUMCUR|NUMBER)) != 0)
+ IGNORECASE = ! iszero(n);
else
IGNORECASE = FALSE; /* shouldn't happen */
-
+
set_RS(); /* set_RS() calls set_FS() if need be, for us */
}
@@ -729,7 +729,7 @@ set_BINMODE()
{
static short warned = FALSE;
char *p;
- NODE *v;
+ NODE *v = BINMODE_node->var_value;
if ((do_lint || do_traditional) && ! warned) {
warned = TRUE;
@@ -737,16 +737,15 @@ set_BINMODE()
}
if (do_traditional)
BINMODE = 0;
- else if ((BINMODE_node->var_value->flags & NUMBER) != 0) {
- BINMODE = (int) force_number(BINMODE_node->var_value);
+ else if ((v->flags & NUMBER) != 0) {
+ (void) force_number(v);
+ BINMODE = get_number_si(v);
/* Make sure the value is rational. */
if (BINMODE < 0)
BINMODE = 0;
else if (BINMODE > 3)
BINMODE = 3;
- }
- else if ((BINMODE_node->var_value->flags & STRING) != 0) {
- v = BINMODE_node->var_value;
+ } else if ((v->flags & STRING) != 0) {
p = v->stptr;
/*
@@ -795,8 +794,7 @@ set_BINMODE()
break;
}
}
- }
- else
+ } else
BINMODE = 3; /* shouldn't happen */
}
@@ -922,16 +920,16 @@ set_LINT()
{
#ifndef NO_LINT
int old_lint = do_lint;
+ NODE *n = LINT_node->var_value;
- if ((LINT_node->var_value->flags & (STRING|STRCUR)) != 0) {
- if ((LINT_node->var_value->flags & MAYBE_NUM) == 0) {
+ if ((n->flags & (STRING|STRCUR)) != 0) {
+ if ((n->flags & MAYBE_NUM) == 0) {
const char *lintval;
size_t lintlen;
- NODE *tmp;
- tmp = LINT_node->var_value = force_string(LINT_node->var_value);
- lintval = tmp->stptr;
- lintlen = tmp->stlen;
+ n = force_string(LINT_node->var_value);
+ lintval = n->stptr;
+ lintlen = n->stlen;
if (lintlen > 0) {
do_flags |= DO_LINT_ALL;
if (lintlen == 5 && strncmp(lintval, "fatal", 5) == 0)
@@ -946,14 +944,16 @@ set_LINT()
lintfunc = warning;
}
} else {
- if (force_number(LINT_node->var_value) != 0.0)
+ (void) force_number(n);
+ if (! iszero(n))
do_flags |= DO_LINT_ALL;
else
do_flags &= ~(DO_LINT_ALL|DO_LINT_INVALID);
lintfunc = warning;
}
- } else if ((LINT_node->var_value->flags & (NUMCUR|NUMBER)) != 0) {
- if (force_number(LINT_node->var_value) != 0.0)
+ } else if ((n->flags & (NUMCUR|NUMBER)) != 0) {
+ (void) force_number(n);
+ if (! iszero(n))
do_flags |= DO_LINT_ALL;
else
do_flags &= ~(DO_LINT_ALL|DO_LINT_INVALID);
@@ -1029,9 +1029,14 @@ unset_ERRNO(void)
void
update_NR()
{
+#ifdef HAVE_MPFR
+ if (is_mpg_number(NR_node->var_value))
+ (void) mpg_update_var(NR_node);
+ else
+#endif
if (NR_node->var_value->numbr != NR) {
unref(NR_node->var_value);
- NR_node->var_value = make_number((AWKNUM) NR);
+ NR_node->var_value = make_number(NR);
}
}
@@ -1040,11 +1045,14 @@ update_NR()
void
update_NF()
{
- if (NF == -1 || NF_node->var_value->numbr != NF) {
+ long l;
+
+ l = get_number_si(NF_node->var_value);
+ if (NF == -1 || l != NF) {
if (NF == -1)
(void) get_field(UNLIMITED - 1, NULL); /* parse record */
unref(NF_node->var_value);
- NF_node->var_value = make_number((AWKNUM) NF);
+ NF_node->var_value = make_number(NF);
}
}
@@ -1053,9 +1061,14 @@ update_NF()
void
update_FNR()
{
+#ifdef HAVE_MPFR
+ if (is_mpg_number(FNR_node->var_value))
+ (void) mpg_update_var(FNR_node);
+ else
+#endif
if (FNR_node->var_value->numbr != FNR) {
unref(FNR_node->var_value);
- FNR_node->var_value = make_number((AWKNUM) FNR);
+ FNR_node->var_value = make_number(FNR);
}
}
@@ -1153,7 +1166,9 @@ r_get_field(NODE *n, Func_ptr *assign, int reference)
}
}
- field_num = (long) force_number(n);
+ (void) force_number(n);
+ field_num = get_number_si(n);
+
if (field_num < 0)
fatal(_("attempt to access field %ld"), field_num);
@@ -1410,7 +1425,8 @@ free_arrayfor(NODE *r)
}
-/* unwind_stack --- pop items off the run-time stack;
+/*
+ * unwind_stack --- pop items off the run-time stack;
* 'n' is the # of items left in the stack.
*/
@@ -1471,14 +1487,6 @@ unwind_stack(long n)
#define pop_stack() (void) unwind_stack(0)
-/*
- * This generated compiler warnings from GCC 4.4. Who knows why.
- *
-#define eval_condition(t) (((t)->flags & MAYBE_NUM) && force_number(t), \
- ((t)->flags & NUMBER) ? ((t)->numbr != 0.0) : ((t)->stlen != 0))
-*/
-
-
static inline int
eval_condition(NODE *t)
{
@@ -1492,15 +1500,15 @@ eval_condition(NODE *t)
force_number(t);
if ((t->flags & NUMBER) != 0)
- return (t->numbr != 0.0);
+ return ! iszero(t);
return (t->stlen != 0);
}
-/* cmp_scalar -- compare two nodes on the stack */
+/* cmp_scalars -- compare two nodes on the stack */
static inline int
-cmp_scalar()
+cmp_scalars()
{
NODE *t1, *t2;
int di;
@@ -1517,20 +1525,22 @@ cmp_scalar()
return di;
}
-
/* op_assign --- assignment operators excluding = */
static void
op_assign(OPCODE op)
{
NODE **lhs;
- NODE *t1;
+ NODE *t1, *t2;
AWKNUM x = 0.0, x1, x2;
lhs = POP_ADDRESS();
t1 = *lhs;
- x1 = force_number(t1);
- TOP_NUMBER(x2);
+ x1 = force_number(t1)->numbr;
+
+ t2 = TOP_SCALAR();
+ x2 = force_number(t2)->numbr;
+ DEREF(t2);
switch (op) {
case Op_assign_plus:
@@ -1580,7 +1590,6 @@ op_assign(OPCODE op)
REPLACE(t1);
}
-
/* PUSH_CODE --- push a code onto the runtime stack */
void
@@ -1607,7 +1616,8 @@ POP_CODE()
}
-/* Implementation of BEGINFILE and ENDFILE requires saving an execution
+/*
+ * Implementation of BEGINFILE and ENDFILE requires saving an execution
* state and the ability to return to that state. The state is
* defined by the instruction triggering the BEGINFILE/ENDFILE rule, the
* run-time stack, the rule and the source file. The source line is available in
@@ -1675,6 +1685,56 @@ pop_exec_state(int *rule, char **src, long *sz)
return cp;
}
+
+/* register_exec_hook --- add exec hooks in the interpreter. */
+
+int
+register_exec_hook(Func_pre_exec preh, Func_post_exec posth)
+{
+ int pos = 0;
+
+ /*
+ * multiple post-exec hooks aren't supported. post-exec hook is mainly
+ * for use by the debugger.
+ */
+
+ if (! preh || (post_execute && posth))
+ return FALSE;
+
+ if (num_exec_hook == MAX_EXEC_HOOKS)
+ return FALSE;
+
+ /*
+ * Add to the beginning of the array but do not displace the
+ * debugger hook if it exists.
+ */
+ if (num_exec_hook > 0) {
+ pos = !! do_debug;
+ if (num_exec_hook > pos)
+ memmove(pre_execute + pos + 1, pre_execute + pos,
+ (num_exec_hook - pos) * sizeof (preh));
+ }
+ pre_execute[pos] = preh;
+ num_exec_hook++;
+
+ if (posth)
+ post_execute = posth;
+
+ return TRUE;
+}
+
+
+/* interpreter routine when not debugging */
+#include "interpret.h"
+
+/* interpreter routine with exec hook(s). Used when debugging and/or with MPFR. */
+#define r_interpret h_interpret
+#define EXEC_HOOK 1
+#include "interpret.h"
+#undef EXEC_HOOK
+#undef r_interpret
+
+
void
init_interpret()
{
@@ -1696,26 +1756,22 @@ init_interpret()
frame_ptr->vname = NULL;
/* initialize TRUE and FALSE nodes */
- node_Boolean[FALSE] = make_number(0);
- node_Boolean[FALSE]->flags |= NUMINT;
+ node_Boolean[FALSE] = make_number(0.0);
node_Boolean[TRUE] = make_number(1.0);
- node_Boolean[TRUE]->flags |= NUMINT;
+ if (! is_mpg_number(node_Boolean[FALSE])) {
+ node_Boolean[FALSE]->flags |= NUMINT;
+ node_Boolean[TRUE]->flags |= NUMINT;
+ }
- /* select the interpreter routine */
- if (do_debug)
- interpret = debug_interpret;
+ /*
+ * Select the interpreter routine. The version without
+ * any exec hook support (r_interpret) is faster by about
+ * 5%, or more depending on the opcodes.
+ */
+
+ if (num_exec_hook > 0)
+ interpret = h_interpret;
else
- interpret = r_interpret;
+ interpret = r_interpret;
}
-
-/* interpreter routine when not debugging */
-#include "interpret.h"
-
-/* interpreter routine when deubugging with gawk --debug */
-#define r_interpret debug_interpret
-#define DEBUGGING 1
-#include "interpret.h"
-#undef DEBUGGING
-#undef r_interpret
-
diff --git a/ext.c b/ext.c
index 3c30b1a2..0f74ad15 100644
--- a/ext.c
+++ b/ext.c
@@ -7,7 +7,7 @@
*/
/*
- * Copyright (C) 1995 - 2001, 2003-2011 the Free Software Foundation, Inc.
+ * Copyright (C) 1995 - 2001, 2003-2012 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -33,12 +33,8 @@
#include <dlfcn.h>
-#ifdef __GNUC__
-static unsigned long long dummy; /* fake out gcc for dynamic loading? */
-#endif
-
/* do_ext --- load an extension at run-time: interface to load_ext */
-
+
NODE *
do_ext(int nargs)
{
@@ -70,12 +66,6 @@ load_ext(const char *lib_name, const char *init_func, NODE *obj)
int flags = RTLD_LAZY;
int *gpl_compat;
-#ifdef __GNUC__
- AWKNUM junk;
-
- junk = (AWKNUM) dummy;
-#endif
-
if (do_sandbox)
fatal(_("extensions are not allowed in sandbox mode"));
@@ -95,7 +85,6 @@ load_ext(const char *lib_name, const char *init_func, NODE *obj)
if (gpl_compat == NULL)
fatal(_("extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n"),
lib_name, dlerror());
-
func = (NODE *(*)(NODE *, void *)) dlsym(dl, init_func);
if (func == NULL)
fatal(_("extension: library `%s': cannot call function `%s' (%s)\n"),
diff --git a/extension/ChangeLog b/extension/ChangeLog
index 002cd3a9..7c6976de 100644
--- a/extension/ChangeLog
+++ b/extension/ChangeLog
@@ -49,8 +49,13 @@
* filefuncs.c (do_stat): Ditto.
2011-08-31 John Haque <j.eh@mchsi.com>
- * arrayparm.c, filefuncs.c, fork.c, ordchr.c, readfile.c,
- rwarray.c, testarg.c: Updated.
+
+ * arrayparm.c, filefuncs.c, fork.c, ordchr.c, readfile.c,
+ rwarray.c, testarg.c: Updated.
+
+2012-03-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.0.1: Release tar ball made.
2011-06-23 Arnold D. Robbins <arnold@skeeve.com>
diff --git a/field.c b/field.c
index 91789d2f..68bd699d 100644
--- a/field.c
+++ b/field.c
@@ -194,24 +194,34 @@ rebuild_record()
* so that unrefing a field doesn't try to unref into the old $0.
*/
for (cops = ops, i = 1; i <= NF; i++) {
- if (fields_arr[i]->stlen > 0) {
+ NODE *r = fields_arr[i];
+ if (r->stlen > 0) {
NODE *n;
getnode(n);
- if ((fields_arr[i]->flags & FIELD) == 0) {
+ if ((r->flags & FIELD) == 0) {
*n = *Null_field;
- n->stlen = fields_arr[i]->stlen;
- if ((fields_arr[i]->flags & (NUMCUR|NUMBER)) != 0) {
- n->flags |= (fields_arr[i]->flags & (NUMCUR|NUMBER));
- n->numbr = fields_arr[i]->numbr;
+ n->stlen = r->stlen;
+ if ((r->flags & (NUMCUR|NUMBER)) != 0) {
+ n->flags |= (r->flags & (MPFN|MPZN|NUMCUR|NUMBER));
+#ifdef HAVE_MPFR
+ if (is_mpg_float(r)) {
+ mpfr_init(n->mpg_numbr);
+ mpfr_set(n->mpg_numbr, r->mpg_numbr, ROUND_MODE);
+ } else if (is_mpg_integer(r)) {
+ mpz_init(n->mpg_i);
+ mpz_set(n->mpg_i, r->mpg_i);
+ } else
+#endif
+ n->numbr = r->numbr;
}
} else {
- *n = *(fields_arr[i]);
+ *n = *r;
n->flags &= ~(MALLOC|STRING);
}
n->stptr = cops;
- unref(fields_arr[i]);
+ unref(r);
fields_arr[i] = n;
assert((n->flags & WSTRCUR) == 0);
}
@@ -323,7 +333,8 @@ set_NF()
assert(NF != -1);
- nf = (long) force_number(NF_node->var_value);
+ (void) force_number(NF_node->var_value);
+ nf = get_number_si(NF_node->var_value);
if (nf < 0)
fatal(_("NF set to negative value"));
NF = nf;
diff --git a/getopt.c b/getopt.c
index 6521f48e..d0996d4a 100644
--- a/getopt.c
+++ b/getopt.c
@@ -2,7 +2,7 @@
NOTE: getopt is part of the C library, so if you don't know what
"Keep this file name-space clean" means, talk to drepper@gnu.org
before changing it!
- Copyright (C) 1987-1996,1998-2004,2008,2009,2010
+ Copyright (C) 1987-1996,1998-2004,2008,2009,2010,2011
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -17,9 +17,8 @@
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- 02110-1301 USA. */
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
Ditto for AIX 3.2 and <stdlib.h>. */
@@ -49,14 +48,22 @@
# endif
#endif
+/* !@#$%^&*() !!!!!!!! */
+#ifdef GAWK
+#undef ELIDE_CODE
+#endif
+
#ifndef ELIDE_CODE
/* This needs to come after some library #include
to get __GNU_LIBRARY__ defined. */
-#ifdef __GNU_LIBRARY__
-/* Don't include stdlib.h for non-GNU C libraries because some of them
- contain conflicting prototypes for getopt. */
+#if defined (__GNU_LIBRARY__) || defined (__CYGWIN__) || defined(__DJGPP__)
+/* Don't include stdlib.h for
+ * non-GNU C libraries
+ * non-Cygwin
+ * non-DJGPP
+ * because some of them contain conflicting prototypes for getopt. */
# include <stdlib.h>
# include <unistd.h>
#endif /* GNU C library. */
@@ -74,7 +81,7 @@
# define _(msgid) gettext (msgid)
#endif
-#if defined _LIBC && defined USE_IN_LIBIO
+#if defined _LIBC
# include <wchar.h>
#endif
@@ -526,23 +533,29 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
|| !strchr (optstring, argv[d->optind][1])))))
{
char *nameend;
+ unsigned int namelen;
const struct option *p;
const struct option *pfound = NULL;
+ struct option_list
+ {
+ const struct option *p;
+ struct option_list *next;
+ int needs_free;
+ } *ambig_list = NULL;
int exact = 0;
- int ambig = 0;
int indfound = -1;
int option_index;
for (nameend = d->__nextchar; *nameend && *nameend != '='; nameend++)
/* Do nothing. */ ;
+ namelen = nameend - d->__nextchar;
/* Test all long options for either exact match
or abbreviated matches. */
for (p = longopts, option_index = 0; p->name; p++, option_index++)
- if (!strncmp (p->name, d->__nextchar, nameend - d->__nextchar))
+ if (!strncmp (p->name, d->__nextchar, namelen))
{
- if ((unsigned int) (nameend - d->__nextchar)
- == (unsigned int) strlen (p->name))
+ if (namelen == (unsigned int) strlen (p->name))
{
/* Exact match found. */
pfound = p;
@@ -560,19 +573,47 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
|| pfound->has_arg != p->has_arg
|| pfound->flag != p->flag
|| pfound->val != p->val)
+ {
/* Second or later nonexact match found. */
- ambig = 1;
+ struct option_list *newp = malloc (sizeof (*newp));
+ newp->p = p;
+ newp->needs_free = 1;
+ newp->next = ambig_list;
+ ambig_list = newp;
+ }
}
- if (ambig && !exact)
+ if (ambig_list != NULL && !exact)
{
if (print_errors)
{
-#if defined _LIBC && defined USE_IN_LIBIO
- char *buf;
+ struct option_list first;
+ first.p = pfound;
+ first.next = ambig_list;
+ first.needs_free = 0;
+ ambig_list = &first;
+
+#if defined _LIBC
+ char *buf = NULL;
+ size_t buflen = 0;
+
+ FILE *fp = open_memstream (&buf, &buflen);
+ if (fp != NULL)
+ {
+ fprintf (fp,
+ _("%s: option '%s' is ambiguous; possibilities:"),
+ argv[0], argv[d->optind]);
- if (__asprintf (&buf, _("%s: option '%s' is ambiguous\n"),
- argv[0], argv[d->optind]) >= 0)
+ do
+ {
+ fprintf (fp, " '--%s'", ambig_list->p->name);
+ ambig_list = ambig_list->next;
+ }
+ while (ambig_list != NULL);
+
+ fputc_unlocked ('\n', fp);
+
+ if (__builtin_expect (fclose (fp) != EOF, 1))
{
_IO_flockfile (stderr);
@@ -586,9 +627,24 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
free (buf);
}
+ }
#else
- fprintf (stderr, _("%s: option '%s' is ambiguous\n"),
+ fprintf (stderr,
+ _("%s: option '%s' is ambiguous; possibilities:"),
argv[0], argv[d->optind]);
+ do
+ {
+ struct option_list *tmp_next;
+
+ fprintf (stderr, " '--%s'", ambig_list->p->name);
+ tmp_next = ambig_list->next;
+ if (ambig_list->needs_free)
+ free(ambig_list);
+ ambig_list = tmp_next;
+ }
+ while (ambig_list != NULL);
+
+ fputc ('\n', stderr);
#endif
}
d->__nextchar += strlen (d->__nextchar);
@@ -611,7 +667,7 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
{
if (print_errors)
{
-#if defined _LIBC && defined USE_IN_LIBIO
+#if defined _LIBC
char *buf;
int n;
#endif
@@ -619,7 +675,7 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
if (argv[d->optind - 1][1] == '-')
{
/* --option */
-#if defined _LIBC && defined USE_IN_LIBIO
+#if defined _LIBC
n = __asprintf (&buf, _("\
%s: option '--%s' doesn't allow an argument\n"),
argv[0], pfound->name);
@@ -632,7 +688,7 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
else
{
/* +option or -option */
-#if defined _LIBC && defined USE_IN_LIBIO
+#if defined _LIBC
n = __asprintf (&buf, _("\
%s: option '%c%s' doesn't allow an argument\n"),
argv[0], argv[d->optind - 1][0],
@@ -645,7 +701,7 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
#endif
}
-#if defined _LIBC && defined USE_IN_LIBIO
+#if defined _LIBC
if (n >= 0)
{
_IO_flockfile (stderr);
@@ -678,7 +734,7 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
{
if (print_errors)
{
-#if defined _LIBC && defined USE_IN_LIBIO
+#if defined _LIBC
char *buf;
if (__asprintf (&buf, _("\
@@ -729,7 +785,7 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
{
if (print_errors)
{
-#if defined _LIBC && defined USE_IN_LIBIO
+#if defined _LIBC
char *buf;
int n;
#endif
@@ -737,7 +793,7 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
if (argv[d->optind][1] == '-')
{
/* --option */
-#if defined _LIBC && defined USE_IN_LIBIO
+#if defined _LIBC
n = __asprintf (&buf, _("%s: unrecognized option '--%s'\n"),
argv[0], d->__nextchar);
#else
@@ -748,7 +804,7 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
else
{
/* +option or -option */
-#if defined _LIBC && defined USE_IN_LIBIO
+#if defined _LIBC
n = __asprintf (&buf, _("%s: unrecognized option '%c%s'\n"),
argv[0], argv[d->optind][0], d->__nextchar);
#else
@@ -757,7 +813,7 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
#endif
}
-#if defined _LIBC && defined USE_IN_LIBIO
+#if defined _LIBC
if (n >= 0)
{
_IO_flockfile (stderr);
@@ -795,19 +851,19 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
{
if (print_errors)
{
-#if defined _LIBC && defined USE_IN_LIBIO
+#if defined _LIBC
char *buf;
int n;
#endif
-#if defined _LIBC && defined USE_IN_LIBIO
+#if defined _LIBC
n = __asprintf (&buf, _("%s: invalid option -- '%c'\n"),
argv[0], c);
#else
fprintf (stderr, _("%s: invalid option -- '%c'\n"), argv[0], c);
#endif
-#if defined _LIBC && defined USE_IN_LIBIO
+#if defined _LIBC
if (n >= 0)
{
_IO_flockfile (stderr);
@@ -838,6 +894,9 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
int indfound = 0;
int option_index;
+ if (longopts == NULL)
+ goto no_longs;
+
/* This is an option that requires an argument. */
if (*d->__nextchar != '\0')
{
@@ -850,7 +909,7 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
{
if (print_errors)
{
-#if defined _LIBC && defined USE_IN_LIBIO
+#if defined _LIBC
char *buf;
if (__asprintf (&buf,
@@ -924,7 +983,7 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
{
if (print_errors)
{
-#if defined _LIBC && defined USE_IN_LIBIO
+#if defined _LIBC
char *buf;
if (__asprintf (&buf, _("%s: option '-W %s' is ambiguous\n"),
@@ -964,7 +1023,7 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
{
if (print_errors)
{
-#if defined _LIBC && defined USE_IN_LIBIO
+#if defined _LIBC
char *buf;
if (__asprintf (&buf, _("\
@@ -1003,7 +1062,7 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
{
if (print_errors)
{
-#if defined _LIBC && defined USE_IN_LIBIO
+#if defined _LIBC
char *buf;
if (__asprintf (&buf, _("\
@@ -1045,6 +1104,8 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
}
return pfound->val;
}
+
+ no_longs:
d->__nextchar = NULL;
return 'W'; /* Let the application handle it. */
}
@@ -1076,7 +1137,7 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
{
if (print_errors)
{
-#if defined _LIBC && defined USE_IN_LIBIO
+#if defined _LIBC
char *buf;
if (__asprintf (&buf, _("\
diff --git a/getopt.h b/getopt.h
index b84953f7..82d0ab9e 100644
--- a/getopt.h
+++ b/getopt.h
@@ -1,5 +1,5 @@
/* Declarations for getopt.
- Copyright (C) 1989-1994,1996-1999,2001,2003,2004
+ Copyright (C) 1989-1994,1996-1999,2001,2003,2004,2009,2010
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -14,9 +14,8 @@
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- 02110-1301 USA. */
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
#ifndef _GETOPT_H
@@ -158,9 +157,9 @@ extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
additional functionality can be disable at runtime. This redirection
helps to also do this at runtime. */
# ifdef __REDIRECT
- extern int __REDIRECT (getopt, (int ___argc, char *const *___argv,
+ extern int __REDIRECT_NTH (getopt, (int ___argc, char *const *___argv,
const char *__shortopts),
- __posix_getopt) __THROW;
+ __posix_getopt);
# else
extern int __posix_getopt (int ___argc, char *const *___argv,
const char *__shortopts) __THROW;
diff --git a/getopt1.c b/getopt1.c
index 95f2fb35..03fba35e 100644
--- a/getopt1.c
+++ b/getopt1.c
@@ -13,9 +13,8 @@
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- 02110-1301 USA. */
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
#ifdef HAVE_CONFIG_H
#include <config.h>
@@ -46,6 +45,11 @@
#endif
#endif
+/* !@#$%^&*() !!!!!!!! */
+#ifdef GAWK
+#undef ELIDE_CODE
+#endif
+
#ifndef ELIDE_CODE
diff --git a/getopt_int.h b/getopt_int.h
index 6a32a514..b0d7695a 100644
--- a/getopt_int.h
+++ b/getopt_int.h
@@ -14,9 +14,8 @@
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- 02110-1301 USA. */
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
#ifndef _GETOPT_INT_H
#define _GETOPT_INT_H 1
diff --git a/install-sh b/install-sh
index 4fbbae7b..377bb868 100755
--- a/install-sh
+++ b/install-sh
@@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2006-10-14.15
+scriptversion=2011-11-20.07; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@@ -35,7 +35,7 @@ scriptversion=2006-10-14.15
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
+# 'make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
@@ -48,7 +48,7 @@ IFS=" "" $nl"
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
+doit=${DOITPROG-}
if test -z "$doit"; then
doit_exec=exec
else
@@ -58,34 +58,49 @@ fi
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+ test "$posix_glob" != "?" || {
+ if (set -f) 2>/dev/null; then
+ posix_glob=
+ else
+ posix_glob=:
+ fi
+ }
+'
-posix_glob=
posix_mkdir=
# Desired mode of installed file.
mode=0755
+chgrpcmd=
chmodcmd=$chmodprog
chowncmd=
-chgrpcmd=
-stripcmd=
+mvcmd=$mvprog
rmcmd="$rmprog -f"
-mvcmd="$mvprog"
+stripcmd=
+
src=
dst=
dir_arg=
-dstarg=
+dst_arg=
+
+copy_on_change=false
no_target_directory=
-usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
or: $0 [OPTION]... SRCFILES... DIRECTORY
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
or: $0 [OPTION]... -d DIRECTORIES...
@@ -95,65 +110,59 @@ In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
In the 4th, create DIRECTORIES.
Options:
--c (ignored)
--d create directories instead of installing files.
--g GROUP $chgrpprog installed files to GROUP.
--m MODE $chmodprog installed files to MODE.
--o USER $chownprog installed files to USER.
--s $stripprog installed files.
--t DIRECTORY install into DIRECTORY.
--T report an error if DSTFILE is a directory.
---help display this help and exit.
---version display version info and exit.
+ --help display this help and exit.
+ --version display version info and exit.
+
+ -c (ignored)
+ -C install only if different (preserve the last data modification time)
+ -d create directories instead of installing files.
+ -g GROUP $chgrpprog installed files to GROUP.
+ -m MODE $chmodprog installed files to MODE.
+ -o USER $chownprog installed files to USER.
+ -s $stripprog installed files.
+ -t DIRECTORY install into DIRECTORY.
+ -T report an error if DSTFILE is a directory.
Environment variables override the default commands:
- CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+ RMPROG STRIPPROG
"
while test $# -ne 0; do
case $1 in
- -c) shift
- continue;;
+ -c) ;;
- -d) dir_arg=true
- shift
- continue;;
+ -C) copy_on_change=true;;
+
+ -d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
+ shift;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
- shift
- shift
case $mode in
*' '* | *' '* | *'
'* | *'*'* | *'?'* | *'['*)
echo "$0: invalid mode: $mode" >&2
exit 1;;
esac
- continue;;
+ shift;;
-o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
+ shift;;
- -s) stripcmd=$stripprog
- shift
- continue;;
+ -s) stripcmd=$stripprog;;
- -t) dstarg=$2
- shift
- shift
- continue;;
+ -t) dst_arg=$2
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
+ shift;;
- -T) no_target_directory=true
- shift
- continue;;
+ -T) no_target_directory=true;;
--version) echo "$0 $scriptversion"; exit $?;;
@@ -165,21 +174,26 @@ while test $# -ne 0; do
*) break;;
esac
+ shift
done
-if test $# -ne 0 && test -z "$dir_arg$dstarg"; then
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
# When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
# Otherwise, the last argument is the destination. Remove it from $@.
for arg
do
- if test -n "$dstarg"; then
+ if test -n "$dst_arg"; then
# $@ is not empty: it contains at least $arg.
- set fnord "$@" "$dstarg"
+ set fnord "$@" "$dst_arg"
shift # fnord
fi
shift # arg
- dstarg=$arg
+ dst_arg=$arg
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
done
fi
@@ -188,13 +202,17 @@ if test $# -eq 0; then
echo "$0: no input file specified." >&2
exit 1
fi
- # It's OK to call `install-sh -d' without argument.
+ # It's OK to call 'install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
- trap '(exit $?); exit' 1 2 13 15
+ do_exit='(exit $ret); exit $ret'
+ trap "ret=129; $do_exit" 1
+ trap "ret=130; $do_exit" 2
+ trap "ret=141; $do_exit" 13
+ trap "ret=143; $do_exit" 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
@@ -222,9 +240,9 @@ fi
for src
do
- # Protect names starting with `-'.
+ # Protect names problematic for 'test' and other utilities.
case $src in
- -*) src=./$src ;;
+ -* | [=\(\)!]) src=./$src;;
esac
if test -n "$dir_arg"; then
@@ -242,22 +260,17 @@ do
exit 1
fi
- if test -z "$dstarg"; then
+ if test -z "$dst_arg"; then
echo "$0: no destination specified." >&2
exit 1
fi
-
- dst=$dstarg
- # Protect names starting with `-'.
- case $dst in
- -*) dst=./$dst ;;
- esac
+ dst=$dst_arg
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
if test -n "$no_target_directory"; then
- echo "$0: $dstarg: Is a directory" >&2
+ echo "$0: $dst_arg: Is a directory" >&2
exit 1
fi
dstdir=$dst
@@ -341,7 +354,7 @@ do
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
- # other-writeable bit of parent directory when it shouldn't.
+ # other-writable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
ls_ld_tmpdir=`ls -ld "$tmpdir"`
case $ls_ld_tmpdir in
@@ -378,33 +391,26 @@ do
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
- /*) prefix=/ ;;
- -*) prefix=./ ;;
- *) prefix= ;;
+ /*) prefix='/';;
+ [-=\(\)!]*) prefix='./';;
+ *) prefix='';;
esac
- case $posix_glob in
- '')
- if (set -f) 2>/dev/null; then
- posix_glob=true
- else
- posix_glob=false
- fi ;;
- esac
+ eval "$initialize_posix_glob"
oIFS=$IFS
IFS=/
- $posix_glob && set -f
+ $posix_glob set -f
set fnord $dstdir
shift
- $posix_glob && set +f
+ $posix_glob set +f
IFS=$oIFS
prefixes=
for d
do
- test -z "$d" && continue
+ test X"$d" = X && continue
prefix=$prefix$d
if test -d "$prefix"; then
@@ -459,41 +465,54 @@ do
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $cpprog $src $dsttmp" command.
#
- { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
- && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
- && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
- && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
-
- # Now rename the file to the real destination.
- { $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \
- || {
- # The rename failed, perhaps because mv can't rename something else
- # to itself, or perhaps because mv is so ancient that it does not
- # support -f.
-
- # Now remove or move aside any old file at destination location.
- # We try this two ways since rm can't unlink itself on some
- # systems and the destination file might be busy for other
- # reasons. In this case, the final cleanup might fail but the new
- # file should still install successfully.
- {
- if test -f "$dst"; then
- $doit $rmcmd -f "$dst" 2>/dev/null \
- || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \
- && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\
- || {
- echo "$0: cannot unlink or rename $dst" >&2
- (exit 1); exit 1
- }
- else
- :
- fi
- } &&
-
- # Now rename the file to the real destination.
- $doit $mvcmd "$dsttmp" "$dst"
- }
- } || exit 1
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+ { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+ { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+ # If -C, don't bother to copy if it wouldn't change the file.
+ if $copy_on_change &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+
+ eval "$initialize_posix_glob" &&
+ $posix_glob set -f &&
+ set X $old && old=:$2:$4:$5:$6 &&
+ set X $new && new=:$2:$4:$5:$6 &&
+ $posix_glob set +f &&
+
+ test "$old" = "$new" &&
+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+ then
+ rm -f "$dsttmp"
+ else
+ # Rename the file to the real destination.
+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+ {
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
+ }
+ fi || exit 1
trap '' 0
fi
@@ -503,5 +522,6 @@ done
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
# End:
diff --git a/int_array.c b/int_array.c
index 9dd20bea..0fa37642 100644
--- a/int_array.c
+++ b/int_array.c
@@ -40,10 +40,6 @@ static NODE **int_list(NODE *symbol, NODE *t);
static NODE **int_copy(NODE *symbol, NODE *newsymb);
static NODE **int_dump(NODE *symbol, NODE *ndump);
-#ifdef ARRAYDEBUG
-static NODE **int_option(NODE *opt, NODE *val);
-#endif
-
static uint32_t int_hash(uint32_t k, uint32_t hsize);
static inline NODE **int_find(NODE *symbol, long k, uint32_t hash1);
static NODE **int_insert(NODE *symbol, long k, uint32_t hash1);
@@ -59,9 +55,6 @@ array_ptr int_array_func[] = {
int_list,
int_copy,
int_dump,
-#ifdef ARRAYDEBUG
- int_option,
-#endif
};
@@ -86,7 +79,7 @@ is_integer(NODE *symbol, NODE *subs)
long l;
AWKNUM d;
- if (subs == Nnull_string)
+ if (subs == Nnull_string || do_mpfr)
return NULL;
if ((subs->flags & NUMINT) != 0)
@@ -804,25 +797,3 @@ grow_int_table(NODE *symbol)
}
efree(old);
}
-
-
-#ifdef ARRAYDEBUG
-
-static NODE **
-int_option(NODE *opt, NODE *val)
-{
- int newval;
- NODE *tmp;
- NODE **ret = (NODE **) ! NULL;
-
- tmp = force_string(opt);
- (void) force_number(val);
- if (strcmp(tmp->stptr, "INT_CHAIN_MAX") == 0) {
- newval = (int) val->numbr;
- if (newval > 0)
- INT_CHAIN_MAX = newval;
- } else
- ret = NULL;
- return ret;
-}
-#endif
diff --git a/interpret.h b/interpret.h
index 67a702e3..009e6e10 100644
--- a/interpret.h
+++ b/interpret.h
@@ -1,37 +1,48 @@
/*
- * interpret:
- * code is a list of instructions to run. returns the exit value
- * from the awk code.
+ * interpret.h --- run a list of instructions.
*/
-
- /* N.B.:
- * 1) reference counting done for both number and string values.
- * 2) Stack operations:
- * Use REPLACE[_XX] if last stack operation was TOP[_XX],
- * PUSH[_XX] if last operation was POP[_XX] instead.
- * 3) UPREF and DREF -- see awk.h
+
+/*
+ * Copyright (C) 1986, 1988, 1989, 1991-2012 the Free Software Foundation, Inc.
+ *
+ * This file is part of GAWK, the GNU implementation of the
+ * AWK Programming Language.
+ *
+ * GAWK is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GAWK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
+
int
r_interpret(INSTRUCTION *code)
{
INSTRUCTION *pc; /* current instruction */
+ OPCODE op; /* current opcode */
NODE *r = NULL;
NODE *m;
INSTRUCTION *ni;
NODE *t1, *t2;
- NODE *f; /* function definition */
NODE **lhs;
- AWKNUM x, x1, x2;
+ AWKNUM x, x2;
int di;
Regexp *rp;
- int stdio_problem = FALSE;
/* array subscript */
#define mk_sub(n) (n == 1 ? POP_SCALAR() : concat_exp(n, TRUE))
-#ifdef DEBUGGING
-#define JUMPTO(x) do { post_execute(pc); pc = (x); goto top; } while (FALSE)
+#ifdef EXEC_HOOK
+#define JUMPTO(x) do { if (post_execute) post_execute(pc); pc = (x); goto top; } while (FALSE)
#else
#define JUMPTO(x) do { pc = (x); goto top; } while (FALSE)
#endif
@@ -51,12 +62,14 @@ top:
if (pc->source_line > 0)
sourceline = pc->source_line;
-#ifdef DEBUGGING
- if (! pre_execute(&pc))
- goto top;
+#ifdef EXEC_HOOK
+ for (di = 0; di < num_exec_hook; di++) {
+ if (! pre_execute[di](& pc))
+ goto top;
+ }
#endif
- switch (pc->opcode) {
+ switch ((op = pc->opcode)) {
case Op_rule:
currule = pc->in_rule; /* for sole use in Op_K_next, Op_K_nextfile, Op_K_getline */
/* fall through */
@@ -65,6 +78,9 @@ top:
break;
case Op_atexit:
+ {
+ int stdio_problem = FALSE;
+
/* avoid false source indications */
source = NULL;
sourceline = 0;
@@ -87,6 +103,7 @@ top:
*/
if (stdio_problem && ! exiting && exit_val == 0)
exit_val = 1;
+ }
break;
case Op_stop:
@@ -147,7 +164,7 @@ top:
break;
case Node_var_array:
- if (pc->opcode == Op_push_arg)
+ if (op == Op_push_arg)
PUSH(m);
else
fatal(_("attempt to use array `%s' in a scalar context"),
@@ -303,8 +320,7 @@ top:
t1 = POP_SCALAR();
di = eval_condition(t1);
DEREF(t1);
- if ((pc->opcode == Op_and && di)
- || (pc->opcode == Op_or && ! di))
+ if ((op == Op_and && di) || (op == Op_or && ! di))
break;
r = node_Boolean[di];
UPREF(r);
@@ -330,164 +346,175 @@ top:
break;
case Op_equal:
- r = node_Boolean[cmp_scalar() == 0];
+ r = node_Boolean[cmp_scalars() == 0];
UPREF(r);
REPLACE(r);
break;
case Op_notequal:
- r = node_Boolean[cmp_scalar() != 0];
+ r = node_Boolean[cmp_scalars() != 0];
UPREF(r);
REPLACE(r);
break;
case Op_less:
- r = node_Boolean[cmp_scalar() < 0];
+ r = node_Boolean[cmp_scalars() < 0];
UPREF(r);
REPLACE(r);
break;
case Op_greater:
- r = node_Boolean[cmp_scalar() > 0];
+ r = node_Boolean[cmp_scalars() > 0];
UPREF(r);
REPLACE(r);
break;
case Op_leq:
- r = node_Boolean[cmp_scalar() <= 0];
+ r = node_Boolean[cmp_scalars() <= 0];
UPREF(r);
REPLACE(r);
break;
case Op_geq:
- r = node_Boolean[cmp_scalar() >= 0];
+ r = node_Boolean[cmp_scalars() >= 0];
UPREF(r);
REPLACE(r);
break;
case Op_plus_i:
- x2 = force_number(pc->memory);
+ x2 = force_number(pc->memory)->numbr;
goto plus;
-
case Op_plus:
- POP_NUMBER(x2);
+ t2 = POP_NUMBER();
+ x2 = t2->numbr;
+ DEREF(t2);
plus:
- TOP_NUMBER(x1);
- r = make_number(x1 + x2);
+ t1 = TOP_NUMBER();
+ r = make_number(t1->numbr + x2);
+ DEREF(t1);
REPLACE(r);
break;
case Op_minus_i:
- x2 = force_number(pc->memory);
+ x2 = force_number(pc->memory)->numbr;
goto minus;
-
case Op_minus:
- POP_NUMBER(x2);
+ t2 = POP_NUMBER();
+ x2 = t2->numbr;
+ DEREF(t2);
minus:
- TOP_NUMBER(x1);
- r = make_number(x1 - x2);
+ t1 = TOP_NUMBER();
+ r = make_number(t1->numbr - x2);
+ DEREF(t1);
REPLACE(r);
break;
case Op_times_i:
- x2 = force_number(pc->memory);
+ x2 = force_number(pc->memory)->numbr;
goto times;
-
case Op_times:
- POP_NUMBER(x2);
+ t2 = POP_NUMBER();
+ x2 = t2->numbr;
+ DEREF(t2);
times:
- TOP_NUMBER(x1);
- r = make_number(x1 * x2);
+ t1 = TOP_NUMBER();
+ r = make_number(t1->numbr * x2);
+ DEREF(t1);
REPLACE(r);
break;
case Op_exp_i:
- x2 = force_number(pc->memory);
- goto exponent;
-
+ x2 = force_number(pc->memory)->numbr;
+ goto exp;
case Op_exp:
- POP_NUMBER(x2);
-exponent:
- TOP_NUMBER(x1);
- x = calc_exp(x1, x2);
- r = make_number(x);
+ t2 = POP_NUMBER();
+ x2 = t2->numbr;
+ DEREF(t2);
+exp:
+ t1 = TOP_NUMBER();
+ r = make_number(calc_exp(t1->numbr, x2));
+ DEREF(t1);
REPLACE(r);
break;
case Op_quotient_i:
- x2 = force_number(pc->memory);
+ x2 = force_number(pc->memory)->numbr;
goto quotient;
-
case Op_quotient:
- POP_NUMBER(x2);
+ t2 = POP_NUMBER();
+ x2 = t2->numbr;
+ DEREF(t2);
quotient:
+ t1 = TOP_NUMBER();
if (x2 == 0)
fatal(_("division by zero attempted"));
-
- TOP_NUMBER(x1);
- x = x1 / x2;
- r = make_number(x);
+ r = make_number(t1->numbr / x2);
+ DEREF(t1);
REPLACE(r);
break;
case Op_mod_i:
- x2 = force_number(pc->memory);
+ x2 = force_number(pc->memory)->numbr;
goto mod;
-
case Op_mod:
- POP_NUMBER(x2);
+ t2 = POP_NUMBER();
+ x2 = t2->numbr;
+ DEREF(t2);
mod:
+ t1 = TOP_NUMBER();
if (x2 == 0)
fatal(_("division by zero attempted in `%%'"));
-
- TOP_NUMBER(x1);
#ifdef HAVE_FMOD
- x = fmod(x1, x2);
+ x = fmod(t1->numbr, x2);
#else /* ! HAVE_FMOD */
- (void) modf(x1 / x2, &x);
- x = x1 - x * x2;
+ (void) modf(t1->numbr / x2, &x);
+ x = t1->numbr - x * x2;
#endif /* ! HAVE_FMOD */
r = make_number(x);
+
+ DEREF(t1);
REPLACE(r);
- break;
+ break;
case Op_preincrement:
case Op_predecrement:
- x2 = pc->opcode == Op_preincrement ? 1.0 : -1.0;
+ x = op == Op_preincrement ? 1.0 : -1.0;
lhs = TOP_ADDRESS();
t1 = *lhs;
- x1 = force_number(t1);
+ force_number(t1);
if (t1->valref == 1 && t1->flags == (MALLOC|NUMCUR|NUMBER)) {
/* optimization */
- t1->numbr = x1 + x2;
+ t1->numbr += x;
+ r = t1;
} else {
+ r = *lhs = make_number(t1->numbr + x);
unref(t1);
- t1 = *lhs = make_number(x1 + x2);
}
- UPREF(t1);
- REPLACE(t1);
+ UPREF(r);
+ REPLACE(r);
break;
case Op_postincrement:
case Op_postdecrement:
- x2 = pc->opcode == Op_postincrement ? 1.0 : -1.0;
+ x = op == Op_postincrement ? 1.0 : -1.0;
lhs = TOP_ADDRESS();
t1 = *lhs;
- x1 = force_number(t1);
+ force_number(t1);
+ r = make_number(t1->numbr);
if (t1->valref == 1 && t1->flags == (MALLOC|NUMCUR|NUMBER)) {
- /* optimization */
- t1->numbr = x1 + x2;
+ /* optimization */
+ t1->numbr += x;
} else {
+ *lhs = make_number(t1->numbr + x);
unref(t1);
- *lhs = make_number(x1 + x2);
}
- r = make_number(x1);
REPLACE(r);
break;
case Op_unary_minus:
- TOP_NUMBER(x1);
- r = make_number(-x1);
+ t1 = TOP_NUMBER();
+ r = make_number(-t1->numbr);
+ DEREF(t1);
REPLACE(r);
break;
@@ -532,7 +559,7 @@ mod:
Func_ptr assign;
t1 = TOP_SCALAR();
- lhs = r_get_field(t1, &assign, FALSE);
+ lhs = r_get_field(t1, & assign, FALSE);
decr_sp();
DEREF(t1);
unref(*lhs);
@@ -555,7 +582,7 @@ mod:
*lhs = dupnode(t1);
}
- if (t1 != t2 && t1->valref == 1) {
+ if (t1 != t2 && t1->valref == 1 && (t1->flags & MPFN) == 0) {
size_t nlen = t1->stlen + t2->stlen;
erealloc(t1->stptr, char *, nlen + 2, "r_interpret");
@@ -592,7 +619,7 @@ mod:
case Op_assign_quotient:
case Op_assign_mod:
case Op_assign_exp:
- op_assign(pc->opcode);
+ op_assign(op);
break;
case Op_var_update: /* update value of NR, FNR or NF */
@@ -601,8 +628,9 @@ mod:
case Op_var_assign:
case Op_field_assign:
+ r = TOP();
if (pc->assign_ctxt == Op_sub_builtin
- && TOP()->numbr == 0.0 /* top of stack has a number == 0 */
+ && get_number_si(r) == 0 /* top of stack has a number == 0 */
) {
/* There wasn't any substitutions. If the target is a FIELD,
* this means no field re-splitting or $0 reconstruction.
@@ -612,14 +640,14 @@ mod:
break;
} else if ((pc->assign_ctxt == Op_K_getline
|| pc->assign_ctxt == Op_K_getline_redir)
- && TOP()->numbr <= 0.0 /* top of stack has a number <= 0 */
+ && get_number_si(r) <= 0 /* top of stack has a number <= 0 */
) {
/* getline returned EOF or error */
break;
}
- if (pc->opcode == Op_var_assign)
+ if (op == Op_var_assign)
pc->assign_var();
else
pc->field_assign();
@@ -649,7 +677,6 @@ mod:
if (di) {
/* match found */
-
t2 = POP_SCALAR();
DEREF(t2);
JUMPTO(pc->target_jmp);
@@ -671,9 +698,10 @@ mod:
case Op_in_array:
t1 = POP_ARRAY();
t2 = mk_sub(pc->expr_count);
- di = (in_array(t1, t2) != NULL);
+ r = node_Boolean[(in_array(t1, t2) != NULL)];
DEREF(t2);
- PUSH(make_number((AWKNUM) di));
+ UPREF(r);
+ PUSH(r);
break;
case Op_arrayfor_init:
@@ -816,8 +844,8 @@ match_re:
di = research(rp, t1->stptr, 0, t1->stlen,
avoid_dfa(m, t1->stptr, t1->stlen));
- di = (di == -1) ^ (pc->opcode != Op_nomatch);
- if(pc->opcode != Op_match_rec) {
+ di = (di == -1) ^ (op != Op_nomatch);
+ if (op != Op_match_rec) {
decr_sp();
DEREF(t1);
}
@@ -842,9 +870,9 @@ match_re:
case Op_indirect_func_call:
{
+ NODE *f = NULL;
int arg_count;
- f = NULL;
arg_count = (pc + 1)->expr_count;
t1 = PEEK(arg_count); /* indirect var */
assert(t1->type == Node_val); /* @a[1](p) not allowed in grammar */
@@ -855,7 +883,8 @@ match_re:
if (f != NULL && strcmp(f->vname, t1->stptr) == 0) {
/* indirect var hasn't been reassigned */
- goto func_call;
+ ni = setup_frame(pc);
+ JUMPTO(ni); /* Op_func */
}
f = lookup(t1->stptr);
}
@@ -865,10 +894,14 @@ match_re:
pc->func_name);
pc->func_body = f; /* save for next call */
- goto func_call;
+ ni = setup_frame(pc);
+ JUMPTO(ni); /* Op_func */
}
case Op_func_call:
+ {
+ NODE *f;
+
/* retrieve function definition node */
f = pc->func_body;
if (f == NULL) {
@@ -894,11 +927,9 @@ match_re:
JUMPTO(ni);
}
-func_call:
ni = setup_frame(pc);
-
- /* run the function instructions */
- JUMPTO(ni); /* Op_func */
+ JUMPTO(ni); /* Op_func */
+ }
case Op_K_return:
m = POP_SCALAR(); /* return value */
@@ -1074,8 +1105,9 @@ func_call:
fatal(_("`exit' cannot be called in the current context"));
exiting = TRUE;
- POP_NUMBER(x1);
- exit_val = (int) x1;
+ t1 = POP_NUMBER();
+ exit_val = (int) get_number_si(t1);
+ DEREF(t1);
#ifdef VMS
if (exit_val == 0)
exit_val = EXIT_SUCCESS;
@@ -1171,7 +1203,7 @@ func_call:
break;
default:
- fatal(_("Sorry, don't know how to interpret `%s'"), opcode2str(pc->opcode));
+ fatal(_("Sorry, don't know how to interpret `%s'"), opcode2str(op));
}
JUMPTO(pc->nexti);
@@ -1184,4 +1216,3 @@ func_call:
#undef mk_sub
#undef JUMPTO
}
-
diff --git a/io.c b/io.c
index b2d29825..9c47bad6 100644
--- a/io.c
+++ b/io.c
@@ -72,11 +72,15 @@
#include <netdb.h>
#endif /* HAVE_NETDB_H */
+#if defined(HAVE_POPEN_H)
+#include "popen.h"
+#endif
+
#ifndef HAVE_GETADDRINFO
#include "missing_d/getaddrinfo.h"
#endif
-#ifndef AI_ADDRCONFIG /* This is a recent symbol, not everyone has it */
+#ifndef AI_ADDRCONFIG /* not everyone has this symbol */
#define AI_ADDRCONFIG 0
#endif /* AI_ADDRCONFIG */
@@ -132,46 +136,57 @@
#define PIPES_SIMULATED
#endif
+#ifdef HAVE_MPFR
+/* increment NR or FNR */
+#define INCREMENT_REC(X) (do_mpfr && X == (LONG_MAX - 1)) ? \
+ (mpz_add_ui(M##X, M##X, 1), X = 0) : X++
+#else
+#define INCREMENT_REC(X) X++
+#endif
+
typedef enum { CLOSE_ALL, CLOSE_TO, CLOSE_FROM } two_way_close_type;
-/* Several macros make the code a bit clearer: */
-/* */
-/* */
-/* <defines and enums>= */
+/* Several macros to make the code a bit clearer. */
#define at_eof(iop) (((iop)->flag & IOP_AT_EOF) != 0)
#define has_no_data(iop) ((iop)->dataend == NULL)
#define no_data_left(iop) ((iop)->off >= (iop)->dataend)
-/* The key point to the design is to split out the code that searches through */
-/* a buffer looking for the record and the terminator into separate routines, */
-/* with a higher-level routine doing the reading of data and buffer management. */
-/* This makes the code easier to manage; the buffering code is the same independent */
-/* of how we find a record. Communication is via the return value: */
-/* */
-/* */
-/* <defines and enums>= */
+
+/*
+ * The key point to the design is to split out the code that searches through
+ * a buffer looking for the record and the terminator into separate routines,
+ * with a higher-level routine doing the reading of data and buffer management.
+ * This makes the code easier to manage; the buffering code is the same
+ * independent of how we find a record. Communication is via the return
+ * value:
+ */
+
typedef enum recvalues {
REC_OK, /* record and terminator found, recmatch struct filled in */
NOTERM, /* no terminator found, give me more input data */
TERMATEND, /* found terminator at end of buffer */
- TERMNEAREND /* found terminator close to end of buffer, for RE might be bigger */
+ TERMNEAREND /* found terminator close to end of buffer, for when
+ the RE might be match more data further in
+ the file. */
} RECVALUE;
-/* Between calls to a scanning routine, the state is stored in */
-/* an [[enum scanstate]] variable. Not all states apply to all */
-/* variants, but the higher code doesn't really care. */
-/* */
-/* */
-/* <defines and enums>= */
+
+/*
+ * Between calls to a scanning routine, the state is stored in
+ * an enum scanstate variable. Not all states apply to all
+ * variants, but the higher code doesn't really care.
+ */
+
typedef enum scanstate {
NOSTATE, /* scanning not started yet (all) */
INLEADER, /* skipping leading data (RS = "") */
INDATA, /* in body of record (all) */
INTERM /* scanning terminator (RS = "", RS = regexp) */
} SCANSTATE;
-/* When a record is seen ([[REC_OK]] or [[TERMATEND]]), the following */
-/* structure is filled in. */
-/* */
-/* */
-/* <recmatch>= */
+
+/*
+ * When a record is seen (REC_OK or TERMATEND), the following
+ * structure is filled in.
+ */
+
struct recmatch {
char *start; /* record start */
size_t len; /* length of record */
@@ -210,28 +225,27 @@ static NODE *in_PROCINFO(const char *pidx1, const char *pidx2, NODE **full_idx);
static long get_read_timeout(IOBUF *iop);
static ssize_t read_with_timeout(int fd, char *buf, size_t size);
-#if defined(HAVE_POPEN_H)
-#include "popen.h"
-#endif
-
static int read_can_timeout = FALSE;
static long read_timeout;
static long read_default_timeout;
static struct redirect *red_head = NULL;
static NODE *RS = NULL;
-static Regexp *RS_re_yes_case;
-static Regexp *RS_re_no_case;
+static Regexp *RS_re_yes_case; /* regexp for RS when ignoring case */
+static Regexp *RS_re_no_case; /* regexp for RS when not ignoring case */
static Regexp *RS_regexp;
int RS_is_null;
-extern int output_is_tty;
extern NODE *ARGC_node;
extern NODE *ARGV_node;
extern NODE *ARGIND_node;
+<<<<<<< HEAD
+=======
extern NODE **fields_arr;
+>>>>>>> xgawk
+/* init_io --- set up timeout related variables */
void
init_io()
@@ -291,6 +305,8 @@ static int vmsrtl_fileno(fp) FILE *fp; { return fileno(fp); }
#define fileno(FP) (((FP) && *(FP)) ? vmsrtl_fileno(FP) : -1)
#endif /* VMS */
+/* after_beginfile --- reset necessary state after BEGINFILE has run */
+
void
after_beginfile(IOBUF **curfile)
{
@@ -337,13 +353,14 @@ nextfile(IOBUF **curfile, int skipping)
static IOBUF mybuf;
const char *fname;
int fd = INVALID_HANDLE;
- int errcode;
+ int errcode = 0;
IOBUF *iop = *curfile;
+ long argc;
if (skipping) { /* for 'nextfile' call */
errcode = 0;
if (iop != NULL) {
- errcode = iop->errcode;
+ errcode = iop->errcode;
(void) iop_close(iop);
}
*curfile = NULL;
@@ -360,7 +377,9 @@ nextfile(IOBUF **curfile, int skipping)
return 0;
}
- for (; i < (long) (ARGC_node->lnode->numbr); i++) {
+ argc = get_number_si(ARGC_node->var_value);
+
+ for (; i < argc; i++) {
tmp = make_number((AWKNUM) i);
(void) force_string(tmp);
arg = in_array(ARGV_node, tmp);
@@ -383,11 +402,14 @@ nextfile(IOBUF **curfile, int skipping)
if (! do_traditional)
update_ERRNO_int(errno);
- /* This is a kludge. */
unref(FILENAME_node->var_value);
FILENAME_node->var_value = dupnode(arg);
+#ifdef HAVE_MPFR
+ if (is_mpg_number(FNR_node->var_value))
+ mpz_set_ui(MFNR, 0);
+#endif
FNR = 0;
- iop = *curfile = iop_alloc(fd, fname, &mybuf, FALSE);
+ iop = *curfile = iop_alloc(fd, fname, & mybuf, FALSE);
if (fd == INVALID_HANDLE)
iop->errcode = errcode;
else
@@ -408,7 +430,7 @@ nextfile(IOBUF **curfile, int skipping)
FILENAME_node->var_value = make_string("-", 1);
FILENAME_node->var_value->flags |= MAYBE_NUM; /* be pedantic */
fname = "-";
- iop = *curfile = iop_alloc(fileno(stdin), fname, &mybuf, FALSE);
+ iop = *curfile = iop_alloc(fileno(stdin), fname, & mybuf, FALSE);
iop->flag |= IOP_NOFREE_OBJ;
if (iop->fd == INVALID_HANDLE) {
@@ -431,7 +453,14 @@ nextfile(IOBUF **curfile, int skipping)
void
set_FNR()
{
- FNR = (long) FNR_node->var_value->numbr;
+ NODE *n = FNR_node->var_value;
+ (void) force_number(n);
+#ifdef HAVE_MPFR
+ if (is_mpg_number(n))
+ FNR = mpg_set_var(FNR_node);
+ else
+#endif
+ FNR = get_number_si(n);
}
/* set_NR --- update internal NR from awk variable */
@@ -439,7 +468,14 @@ set_FNR()
void
set_NR()
{
- NR = (long) NR_node->var_value->numbr;
+ NODE *n = NR_node->var_value;
+ (void) force_number(n);
+#ifdef HAVE_MPFR
+ if (is_mpg_number(n))
+ NR = mpg_set_var(NR_node);
+ else
+#endif
+ NR = get_number_si(n);
}
/* inrec --- This reads in a record from the input file */
@@ -456,15 +492,15 @@ inrec(IOBUF *iop, int *errcode)
else if ((iop->flag & IOP_CLOSED) != 0)
cnt = EOF;
else
- cnt = get_a_record(&begin, iop, errcode);
+ cnt = get_a_record(& begin, iop, errcode);
if (cnt == EOF) {
retval = 1;
if (*errcode > 0)
update_ERRNO_int(*errcode);
} else {
- NR += 1;
- FNR += 1;
+ INCREMENT_REC(NR);
+ INCREMENT_REC(FNR);
set_record(begin, cnt);
}
@@ -487,7 +523,7 @@ remap_std_file(int oldfd)
if (newfd == INVALID_HANDLE)
newfd = open("/dev/null", O_RDWR);
if (newfd >= 0) {
- /* dup2() will close oldfd for us first. */
+ /* if oldfd is open, dup2() will close oldfd for us first. */
ret = dup2(newfd, oldfd);
if (ret == 0)
close(newfd);
@@ -530,7 +566,7 @@ iop_close(IOBUF *iop)
ret = close(iop->fd);
if (iop->close_func != NULL)
- (*iop->close_func)(iop);
+ iop->close_func(iop);
if (ret == -1)
warning(_("close of fd %d (`%s') failed (%s)"), iop->fd,
@@ -550,7 +586,7 @@ iop_close(IOBUF *iop)
unref(fields_arr[0]);
fields_arr[0] = t;
/*
- * 1/27/2003: This used to be here:
+ * This used to be here:
*
* reset_record();
*
@@ -658,11 +694,11 @@ redirect(NODE *redir_exp, int redirtype, int *errflg)
lintwarn(_("filename `%s' for `%s' redirection may be result of logical expression"),
str, what);
+#ifdef HAVE_SOCKETS
/*
- * XXX: Use /inet4 and /inet6 with plain /inet being whatever
- * we get back from the system.
+ * Use /inet4 to force IPv4, /inet6 to force IPv6, and plain
+ * /inet will be whatever we get back from the system.
*/
-#ifdef HAVE_SOCKETS
if (inetfile(str, & len, NULL)) {
tflag |= RED_SOCKET;
if (strncmp(str + len, "tcp/", 4) == 0)
@@ -678,7 +714,7 @@ redirect(NODE *redir_exp, int redirtype, int *errflg)
* if at all possible. Messing with signal() for
* SIGCLD leads to lots of headaches. However, if
* we've gotten EOF from a child input pipeline, it's
- * good bet that the child has died. So recover it.
+ * a good bet that the child has died. So recover it.
*/
if ((rp->flag & RED_EOF) && redirtype == redirect_pipein) {
if (rp->pid != -1)
@@ -728,7 +764,7 @@ redirect(NODE *redir_exp, int redirtype, int *errflg)
while (rp->fp == NULL && rp->iop == NULL) {
if (! new_rp && rp->flag & RED_EOF) {
/*
- * encountered EOF on file or pipe -- must be cleared
+ * Encountered EOF on file or pipe -- must be cleared
* by explicit close() before reading more
*/
save_rp = NULL;
@@ -838,7 +874,7 @@ redirect(NODE *redir_exp, int redirtype, int *errflg)
/* too many files open -- close one and try again */
if (errno == EMFILE || errno == ENFILE)
close_one();
-#if defined __MINGW32__ || defined __sun
+#if defined __MINGW32__
else if (errno == 0) /* HACK! */
close_one();
#endif
@@ -861,9 +897,8 @@ redirect(NODE *redir_exp, int redirtype, int *errflg)
*/
if (errflg != NULL)
*errflg = errno;
- if (redirtype == redirect_output
- || redirtype == redirect_append
- ) {
+ if ( redirtype == redirect_output
+ || redirtype == redirect_append) {
/* multiple messages make life easier for translators */
if (*direction == 'f')
fatal(_("can't redirect from `%s' (%s)"),
@@ -935,7 +970,7 @@ close_one()
if ((rp->flag & (RED_FILE|RED_WRITE)) == (RED_FILE|RED_WRITE)) {
rp->flag |= RED_USED;
errno = 0;
- if (/* do_lint && */ fclose(rp->fp) != 0)
+ if (fclose(rp->fp) != 0)
warning(_("close of `%s' failed (%s)."),
rp->value, strerror(errno));
rp->fp = NULL;
@@ -1007,7 +1042,7 @@ do_close(int nargs)
*/
if (do_posix) {
unref(tmp);
- return make_number((AWKNUM) 0);
+ tmp = make_number((AWKNUM) 0);
}
return tmp;
}
@@ -1049,7 +1084,8 @@ close_rp(struct redirect *rp, two_way_close_type how)
rp->iop = NULL;
}
- } else if ((rp->flag & (RED_PIPE|RED_WRITE)) == (RED_PIPE|RED_WRITE)) { /* write to pipe */
+ } else if ((rp->flag & (RED_PIPE|RED_WRITE)) == (RED_PIPE|RED_WRITE)) {
+ /* write to pipe */
status = pclose(rp->fp);
if ((BINMODE & 1) != 0)
os_setbinmode(fileno(stdin), O_BINARY);
@@ -1089,14 +1125,15 @@ close_redir(struct redirect *rp, int exitwarn, two_way_close_type how)
status = close_rp(rp, how);
- /* SVR4 awk checks and warns about status of close */
if (status != 0) {
int save_errno = errno;
char *s = strerror(save_errno);
/*
- * Too many people have complained about this.
- * As of 2.15.6, it is now under lint control.
+ * BWK's awk, as far back as SVR4 (1989) would check
+ * and warn about the status of close. However, when
+ * we did this we got too many complaints, so we moved
+ * it to be under lint control.
*/
if (do_lint) {
if ((rp->flag & RED_PIPE) != 0)
@@ -1201,7 +1238,7 @@ close_io(int *stdio_problem)
for (rp = red_head; rp != NULL; rp = next) {
next = rp->next;
/*
- * close_redir() will print a message if needed
+ * close_redir() will print a message if needed.
* if do_lint, warn about lack of explicit close
*/
if (close_redir(rp, do_lint, CLOSE_ALL))
@@ -1209,7 +1246,7 @@ close_io(int *stdio_problem)
rp = NULL;
}
/*
- * Some of the non-Unix os's have problems doing an fclose
+ * Some of the non-Unix os's have problems doing an fclose()
* on stdout and stderr. Since we don't really need to close
* them, we just flush them, and do that across the board.
*/
@@ -1279,34 +1316,34 @@ socketopen(int family, int type, const char *localpname,
struct addrinfo *rres, *rres0;
struct addrinfo rhints;
- int lerror;
- int rerror;
+ int lerror, rerror;
int socket_fd = INVALID_HANDLE;
int any_remote_host = (strcmp(remotehostname, "0") == 0);
- memset (&lhints, '\0', sizeof (lhints));
+ memset(& lhints, '\0', sizeof (lhints));
lhints.ai_flags = AI_PASSIVE | AI_ADDRCONFIG;
lhints.ai_socktype = type;
lhints.ai_family = family;
- lerror = getaddrinfo (NULL, localpname, &lhints, &lres);
+ lerror = getaddrinfo(NULL, localpname, & lhints, & lres);
if (lerror) {
if (strcmp(localpname, "0") != 0)
fatal(_("local port %s invalid in `/inet'"), localpname);
lres0 = NULL;
- lres = &lhints;
+ lres = & lhints;
} else
lres0 = lres;
while (lres != NULL) {
- memset (&rhints, '\0', sizeof (rhints));
+ memset (& rhints, '\0', sizeof (rhints));
rhints.ai_flags = lhints.ai_flags;
rhints.ai_socktype = lhints.ai_socktype;
rhints.ai_family = lhints.ai_family;
rhints.ai_protocol = lhints.ai_protocol;
- rerror = getaddrinfo (any_remote_host ? NULL : remotehostname, remotepname, &rhints, &rres);
+ rerror = getaddrinfo(any_remote_host ? NULL : remotehostname,
+ remotepname, & rhints, & rres);
if (rerror) {
if (lres0 != NULL)
freeaddrinfo(lres0);
@@ -1330,7 +1367,8 @@ socketopen(int family, int type, const char *localpname,
(char *) & on, sizeof(on));
#ifdef SO_LINGER
linger.l_onoff = 1;
- linger.l_linger = 30; /* linger for 30/100 second */
+ /* linger for 30/100 second */
+ linger.l_linger = 30;
setsockopt(socket_fd, SOL_SOCKET, SO_LINGER,
(char *) & linger, sizeof(linger));
#endif
@@ -1346,12 +1384,12 @@ socketopen(int family, int type, const char *localpname,
int clientsocket_fd = INVALID_HANDLE;
struct sockaddr_storage remote_addr;
- socklen_t namelen = sizeof (remote_addr);
+ socklen_t namelen = sizeof(remote_addr);
if (listen(socket_fd, 1) >= 0
&& (clientsocket_fd = accept(socket_fd,
- (struct sockaddr *) &remote_addr,
- &namelen)) >= 0) {
+ (struct sockaddr *) & remote_addr,
+ & namelen)) >= 0) {
close(socket_fd);
socket_fd = clientsocket_fd;
break;
@@ -1360,15 +1398,15 @@ socketopen(int family, int type, const char *localpname,
#ifdef MSG_PEEK
char buf[10];
struct sockaddr_storage remote_addr;
- socklen_t readle;
+ socklen_t read_len;
if (recvfrom(socket_fd, buf, 1, MSG_PEEK,
(struct sockaddr *) & remote_addr,
- & readle) >= 0
- && readle
+ & read_len) >= 0
+ && read_len
&& connect(socket_fd,
- (struct sockaddr *)& remote_addr,
- readle) == 0)
+ (struct sockaddr *) & remote_addr,
+ read_len) == 0)
break;
#endif
}
@@ -1409,11 +1447,10 @@ devopen(const char *name, const char *mode)
int len;
int family;
- flag = str2mode(mode);
-
if (strcmp(name, "-") == 0)
return fileno(stdin);
+ flag = str2mode(mode);
openfd = INVALID_HANDLE;
if (do_traditional)
@@ -1437,9 +1474,9 @@ devopen(const char *name, const char *mode)
struct stat sbuf;
cp += 3;
- openfd = (int) strtoul(cp, &ptr, 10);
+ openfd = (int) strtoul(cp, & ptr, 10);
if (openfd <= INVALID_HANDLE || ptr == cp
- || fstat(openfd, &sbuf) < 0)
+ || fstat(openfd, & sbuf) < 0)
openfd = INVALID_HANDLE;
}
/* do not set close-on-exec for inherited fd's */
@@ -1502,7 +1539,7 @@ devopen(const char *name, const char *mode)
cp++;
/*
* The remote port ends the special file name.
- * This means there already is a 0 at the end of the string.
+ * This means there already is a '\0' at the end of the string.
* Therefore no need to patch any string ending.
*
* Here too, require a port, let them explicitly put 0 if
@@ -1516,48 +1553,48 @@ devopen(const char *name, const char *mode)
{
#define DEFAULT_RETRIES 20
- static unsigned long def_retries = DEFAULT_RETRIES;
- static int first_time = TRUE;
- unsigned long retries = 0;
- static long msleep = 1000;
-
- if (first_time) {
- char *cp, *end;
- unsigned long count = 0;
- char *ms2;
-
- first_time = FALSE;
- if ((cp = getenv("GAWK_SOCK_RETRIES")) != NULL) {
- count = strtoul(cp, &end, 10);
- if (end != cp && count > 0)
- def_retries = count;
- }
-
- /*
- * Env var is in milliseconds, paramter to usleep()
- * is microseconds, make the conversion. Default is
- * 1 millisecond.
- */
- if ((ms2 = getenv("GAWK_MSEC_SLEEP")) != NULL) {
- msleep = strtol(ms2, &end, 10);
- if (end == ms2 || msleep < 0)
- msleep = 1000;
- else
- msleep *= 1000;
- }
+ static unsigned long def_retries = DEFAULT_RETRIES;
+ static int first_time = TRUE;
+ unsigned long retries = 0;
+ static long msleep = 1000;
+
+ if (first_time) {
+ char *cp, *end;
+ unsigned long count = 0;
+ char *ms2;
+
+ first_time = FALSE;
+ if ((cp = getenv("GAWK_SOCK_RETRIES")) != NULL) {
+ count = strtoul(cp, & end, 10);
+ if (end != cp && count > 0)
+ def_retries = count;
}
- retries = def_retries;
- do {
- openfd = socketopen(family, protocol, localpname, cp, hostname);
- retries--;
- } while (openfd == INVALID_HANDLE && retries > 0 && usleep(msleep) == 0);
+ /*
+ * Env var is in milliseconds, paramter to usleep()
+ * is microseconds, make the conversion. Default is
+ * 1 millisecond.
+ */
+ if ((ms2 = getenv("GAWK_MSEC_SLEEP")) != NULL) {
+ msleep = strtol(ms2, & end, 10);
+ if (end == ms2 || msleep < 0)
+ msleep = 1000;
+ else
+ msleep *= 1000;
+ }
}
+ retries = def_retries;
+
+ do {
+ openfd = socketopen(family, protocol, localpname, cp, hostname);
+ retries--;
+ } while (openfd == INVALID_HANDLE && retries > 0 && usleep(msleep) == 0);
+ }
- *localpnamelastcharp = '/';
- *hostnameslastcharp = '/';
+ *localpnamelastcharp = '/';
+ *hostnameslastcharp = '/';
#else /* ! HAVE_SOCKETS */
- fatal(_("TCP/IP communications are not supported"));
+ fatal(_("TCP/IP communications are not supported"));
#endif /* HAVE_SOCKETS */
}
@@ -1569,8 +1606,8 @@ strictopen:
/* on OS/2 directory access via open() is not permitted */
struct stat buf;
- if (stat(name, &buf) == 0 && S_ISDIR(buf.st_mode))
- errno = EISDIR;
+ if (stat(name, & buf) == 0 && S_ISDIR(buf.st_mode))
+ errno = EISDIR;
}
#endif
if (openfd != INVALID_HANDLE) {
@@ -1616,9 +1653,11 @@ two_way_open(const char *str, struct redirect *rp)
fclose(rp->fp);
return FALSE;
}
+ os_close_on_exec(fd, str, "socket", "to/from");
os_close_on_exec(newfd, str, "socket", "to/from");
rp->iop = iop_alloc(newfd, str, NULL, TRUE);
if (rp->iop == NULL) {
+ close(newfd);
fclose(rp->fp);
return FALSE;
}
@@ -1643,20 +1682,20 @@ two_way_open(const char *str, struct redirect *rp)
pid_t pid;
struct stat statb;
struct termios st;
- /* Use array of chars to avoid ascii / ebcdic issues */
+ /* Use array of chars to avoid ASCII / EBCDIC issues */
static char pty_chars[] = "pqrstuvwxyzabcdefghijklmno";
int i;
if (! initialized) {
initialized = TRUE;
#ifdef HAVE_GRANTPT
- have_dev_ptmx = (stat("/dev/ptmx", &statb) >= 0);
+ have_dev_ptmx = (stat("/dev/ptmx", & statb) >= 0);
#endif
i = 0;
do {
c = pty_chars[i++];
sprintf(slavenam, "/dev/pty%c0", c);
- if (stat(slavenam, &statb) >= 0) {
+ if (stat(slavenam, & statb) >= 0) {
first_pty_letter = c;
break;
}
@@ -1684,8 +1723,9 @@ two_way_open(const char *str, struct redirect *rp)
if (first_pty_letter) {
/*
* Assume /dev/ptyXNN and /dev/ttyXN naming system.
- * The FIRST_PTY_LETTER gives the first X to try. We try in the
- * sequence FIRST_PTY_LETTER, .., 'z', 'a', .., FIRST_PTY_LETTER.
+ * The FIRST_PTY_LETTER gives the first X to try.
+ * We try in the sequence FIRST_PTY_LETTER, ..,
+ * 'z', 'a', .., FIRST_PTY_LETTER.
* Is this worthwhile, or just over-zealous?
*/
c = first_pty_letter;
@@ -1695,7 +1735,7 @@ two_way_open(const char *str, struct redirect *rp)
for (i = 0; i < 16; i++) {
sprintf(slavenam, "/dev/pty%c%x", c, i);
- if (stat(slavenam, &statb) < 0) {
+ if (stat(slavenam, & statb) < 0) {
no_ptys = TRUE; /* bypass all this next time */
goto use_pipes;
}
@@ -1737,7 +1777,7 @@ two_way_open(const char *str, struct redirect *rp)
ioctl(slave, I_PUSH, "ldterm");
#endif
- tcgetattr(slave, &st);
+ tcgetattr(slave, & st);
st.c_iflag &= ~(ISTRIP | IGNCR | INLCR | IXOFF);
st.c_iflag |= (ICRNL | IGNPAR | BRKINT | IXON);
st.c_oflag &= ~OPOST;
@@ -1745,10 +1785,6 @@ two_way_open(const char *str, struct redirect *rp)
st.c_cflag |= CREAD | CS8 | CLOCAL;
st.c_lflag &= ~(ECHO | ECHOE | ECHOK | NOFLSH | TOSTOP);
st.c_lflag |= ISIG;
-#if 0
- st.c_cc[VMIN] = 1;
- st.c_cc[VTIME] = 0;
-#endif
/* Set some control codes to default values */
#ifdef VINTR
@@ -1766,9 +1802,9 @@ two_way_open(const char *str, struct redirect *rp)
#ifdef VEOF
st.c_cc[VEOF] = '\004'; /* ^d */
#endif
- tcsetattr(slave, TCSANOW, &st);
+ tcsetattr(slave, TCSANOW, & st);
- switch (pid = fork ()) {
+ switch (pid = fork()) {
case 0:
/* Child process */
setsid();
@@ -1808,9 +1844,9 @@ two_way_open(const char *str, struct redirect *rp)
}
/* parent */
- if (close(slave)) {
+ if (close(slave) != 0) {
close(master);
- (void) kill(pid, SIGKILL); /* overkill? (pardon pun) */
+ (void) kill(pid, SIGKILL);
fatal(_("close of slave pty failed (%s)"), strerror(errno));
}
@@ -1818,7 +1854,7 @@ two_way_open(const char *str, struct redirect *rp)
rp->iop = iop_alloc(master, str, NULL, TRUE);
if (rp->iop == NULL) {
(void) close(master);
- (void) kill(pid, SIGKILL); /* overkill? (pardon pun) */
+ (void) kill(pid, SIGKILL);
return FALSE;
}
@@ -1831,7 +1867,7 @@ two_way_open(const char *str, struct redirect *rp)
iop_close(rp->iop);
rp->iop = NULL;
(void) close(master);
- (void) kill(pid, SIGKILL); /* overkill? (pardon pun) */
+ (void) kill(pid, SIGKILL);
if (dup_master > 0)
(void) close(dup_master);
return FALSE;
@@ -1871,7 +1907,7 @@ use_pipes:
save_stdout = dup(1); /* duplicate stdout */
if (save_stdout == -1 || save_stdin == -1) {
- /* if an error occurrs close all open file handles */
+ /* if an error occurs close all open file handles */
save_errno = errno;
if (save_stdin != -1)
close(save_stdin);
@@ -1974,7 +2010,7 @@ use_pipes:
(void) close(ctop[1]);
(void) close(ptoc[0]);
(void) close(ptoc[1]);
- (void) kill(pid, SIGKILL); /* overkill? (pardon pun) */
+ (void) kill(pid, SIGKILL);
return FALSE;
}
@@ -1986,7 +2022,7 @@ use_pipes:
(void) close(ctop[1]);
(void) close(ptoc[0]);
(void) close(ptoc[1]);
- (void) kill(pid, SIGKILL); /* overkill? (pardon pun) */
+ (void) kill(pid, SIGKILL);
return FALSE;
}
@@ -2028,9 +2064,9 @@ wait_any(int interesting) /* pid of interest, if any */
qstat = signal(SIGQUIT, SIG_IGN);
for (;;) {
#ifdef HAVE_SYS_WAIT_H /* POSIX compatible sys/wait.h */
- pid = wait(&status);
+ pid = wait(& status);
#else
- pid = wait((union wait *)&status);
+ pid = wait((union wait *) & status);
#endif
if (interesting && pid == interesting) {
break;
@@ -2063,27 +2099,31 @@ gawk_popen(const char *cmd, struct redirect *rp)
#endif
/*
- * used to wait for any children to synchronize input and output,
+ * We used to wait for any children to synchronize input and output,
* but this could cause gawk to hang when it is started in a pipeline
- * and thus has a child process feeding it input (shell dependent)
+ * and thus has a child process feeding it input (shell dependent).
+ *
+ * (void) wait_any(0); // wait for outstanding processes
*/
- /*(void) wait_any(0);*/ /* wait for outstanding processes */
if (pipe(p) < 0)
fatal(_("cannot open pipe `%s' (%s)"), cmd, strerror(errno));
#ifdef __EMX__
- save_stdout = dup(1); /* save stdout */
rp->iop = NULL;
+ save_stdout = dup(1); /* save stdout */
if (save_stdout == -1) {
- close(p[0]); close(p[1]);
- return rp->iop; /* failed */
+ close(p[0]);
+ close(p[1]);
+ return NULL; /* failed */
}
close(1); /* close stdout */
if (dup(p[1]) != 1) {
- close(p[0]); close(p[1]);
- fatal(_("moving pipe to stdout in child failed (dup: %s)"), strerror(errno));
+ close(p[0]);
+ close(p[1]);
+ fatal(_("moving pipe to stdout in child failed (dup: %s)"),
+ strerror(errno));
}
/* none of these handles must be inherited by the child process */
@@ -2204,7 +2244,7 @@ gawk_pclose(struct redirect *rp)
/* do_getline --- read in a line, into var and with redirection */
NODE *
-do_getline_redir(int intovar, int redirtype)
+do_getline_redir(int into_variable, enum redirval redirtype)
{
struct redirect *rp = NULL;
IOBUF *iop;
@@ -2215,12 +2255,12 @@ do_getline_redir(int intovar, int redirtype)
NODE **lhs = NULL;
int redir_error = 0;
- if (intovar)
+ if (into_variable)
lhs = POP_ADDRESS();
- assert(redirtype != 0);
+ assert(redirtype != redirect_none);
redir_exp = TOP();
- rp = redirect(redir_exp, redirtype, &redir_error);
+ rp = redirect(redir_exp, redirtype, & redir_error);
DEREF(redir_exp);
decr_sp();
if (rp == NULL) {
@@ -2235,10 +2275,15 @@ do_getline_redir(int intovar, int redirtype)
return make_number((AWKNUM) 0.0);
errcode = 0;
- cnt = get_a_record(&s, iop, &errcode);
+ cnt = get_a_record(& s, iop, & errcode);
if (errcode != 0) {
+<<<<<<< HEAD
+ if (! do_traditional && errcode != -1)
+ update_ERRNO_saved(errcode);
+=======
if (! do_traditional && (errcode != -1))
update_ERRNO_int(errcode);
+>>>>>>> xgawk
return make_number((AWKNUM) -1.0);
}
@@ -2270,34 +2315,40 @@ do_getline_redir(int intovar, int redirtype)
/* do_getline --- read in a line, into var and without redirection */
NODE *
-do_getline(int intovar, IOBUF *iop)
+do_getline(int into_variable, IOBUF *iop)
{
int cnt = EOF;
char *s = NULL;
int errcode;
if (iop == NULL) { /* end of input */
- if (intovar)
+ if (into_variable)
(void) POP_ADDRESS();
return make_number((AWKNUM) 0.0);
}
errcode = 0;
- cnt = get_a_record(&s, iop, &errcode);
+ cnt = get_a_record(& s, iop, & errcode);
if (errcode != 0) {
+<<<<<<< HEAD
+ if (! do_traditional && errcode != -1)
+ update_ERRNO_saved(errcode);
+ if (into_variable)
+=======
if (! do_traditional && (errcode != -1))
update_ERRNO_int(errcode);
if (intovar)
+>>>>>>> xgawk
(void) POP_ADDRESS();
return make_number((AWKNUM) -1.0);
}
if (cnt == EOF)
return NULL; /* try next file */
- NR++;
- FNR++;
+ INCREMENT_REC(NR);
+ INCREMENT_REC(FNR);
- if (! intovar) /* no optional var. */
+ if (! into_variable) /* no optional var. */
set_record(s, cnt);
else { /* assignment to variable */
NODE **lhs;
@@ -2360,7 +2411,7 @@ init_awkpath(path_info *pi)
memcpy(p, start, len);
/* add directory punctuation if necessary */
- if (! isdirpunct(*(end - 1)))
+ if (! isdirpunct(end[-1]))
p[len++] = '/';
p[len] = '\0';
@@ -2534,23 +2585,12 @@ int
srcopen(SRCFILE *s)
{
if (s->stype == SRC_STDIN)
- return (0);
+ return fileno(stdin);
if (s->stype == SRC_FILE || s->stype == SRC_INC)
return devopen(s->fullpath, "r");
return INVALID_HANDLE;
}
-#ifdef TEST
-int bufsize = 8192;
-
-void
-fatal(const char *s)
-{
- printf("%s\n", s);
- exit(EXIT_FAILURE);
-}
-#endif
-
/* open hooks, mainly for use by extension functions */
static struct open_hook {
@@ -2637,12 +2677,12 @@ iop_alloc(int fd, const char *name, IOBUF *iop, int do_openhooks)
(void)(! do_traditional && (unref(RT_node->var_value), \
RT_node->var_value = make_string(str, len)))
-/* grow must increase size of buffer, set end, make sure off and dataend point at */
-/* right spot. */
-/* */
-/* */
-/* <growbuffer>= */
-/* grow_iop_buffer --- grow the buffer */
+/*
+ * grow_iop_buffer:
+ *
+ * grow must increase size of buffer, set end, make sure off and dataend
+ * point at the right spot.
+ */
static void
grow_iop_buffer(IOBUF *iop)
@@ -2676,10 +2716,8 @@ grow_iop_buffer(IOBUF *iop)
iop->end = iop->buf + iop->size;
}
-/* Here are the routines. */
-/* */
-/* */
-/* <rs1scan>= */
+/* Here are the routines. */
+
/* rs1scan --- scan for a single character record terminator */
static RECVALUE
@@ -2760,19 +2798,19 @@ rs1scan(IOBUF *iop, struct recmatch *recm, SCANSTATE *state)
int len = iop->dataend - bp;
int found = 0;
- memset(&mbs, 0, sizeof(mbstate_t));
+ memset(& mbs, 0, sizeof(mbstate_t));
do {
if (*bp == rs)
found = 1;
if (is_valid_character(*bp))
mbclen = 1;
else
- mbclen = mbrlen(bp, len, &mbs);
- if ( (mbclen == 1)
- || (mbclen == (size_t) -1)
- || (mbclen == (size_t) -2)
- || (mbclen == 0)) {
- /* We treat it as a singlebyte character. */
+ mbclen = mbrlen(bp, len, & mbs);
+ if ( mbclen == 1
+ || mbclen == (size_t) -1
+ || mbclen == (size_t) -2
+ || mbclen == 0) {
+ /* We treat it as a single-byte character. */
mbclen = 1;
}
len -= mbclen;
@@ -2782,8 +2820,8 @@ rs1scan(IOBUF *iop, struct recmatch *recm, SCANSTATE *state)
/* Check that newline found isn't the sentinel. */
if (found && (bp - mbclen) < iop->dataend) {
/*
- * set len to what we have so far, in case this is
- * all there is
+ * Set len to what we have so far, in case this is
+ * all there is.
*/
recm->len = bp - recm->start - mbclen;
recm->rt_start = bp - mbclen;
@@ -2817,7 +2855,6 @@ rs1scan(IOBUF *iop, struct recmatch *recm, SCANSTATE *state)
}
}
-/* <rsrescan>= */
/* rsrescan --- search for a regex match in the buffer */
static RECVALUE
@@ -2907,21 +2944,15 @@ again:
* This matches the "xyz" and ends up putting the
* "abc" into the front of the next record. Ooops.
*
- * The remaybelong() function looks to see if the
+ * The re->maybe_long member is true if the
* regex contains one of: + * ? |. This is a very
* simple heuristic, but in combination with the
* "end of match within a few bytes of end of buffer"
* check, should keep things reasonable.
*/
- /*
- * XXX: The reisstring and remaybelong tests should
- * really be done once when RS is assigned to and
- * then tested as flags here. Maybe one day.
- */
-
/* succession of tests is easier to trace in GDB. */
- if (remaybelong(RS->stptr, RS->stlen)) {
+ if (RSre->maybe_long) {
char *matchend = iop->off + reend;
if (iop->dataend - matchend < RS->stlen)
@@ -2931,7 +2962,6 @@ again:
return REC_OK;
}
-/* <rsnullscan>= */
/* rsnullscan --- handle RS = "" */
static RECVALUE
@@ -3008,7 +3038,6 @@ find_longest_terminator:
return REC_OK;
}
-/* <getarecord>= */
/* get_a_record --- read a record from IOP into out, return length of EOF, set RT */
static int
@@ -3030,9 +3059,9 @@ get_a_record(char **out, /* pointer to pointer to data */
read_timeout = get_read_timeout(iop);
if (iop->get_record != NULL)
- return (*iop->get_record)(out, iop, errcode);
+ return iop->get_record(out, iop, errcode);
- /* <fill initial buffer>= */
+ /* fill initial buffer */
if (has_no_data(iop) || no_data_left(iop)) {
iop->count = iop->read_func(iop->fd, iop->buf, iop->readsize);
if (iop->count == 0) {
@@ -3049,10 +3078,12 @@ get_a_record(char **out, /* pointer to pointer to data */
}
}
- /* <loop through file to find a record>= */
+ /* loop through file to find a record */
state = NOSTATE;
for (;;) {
size_t dataend_off;
+ size_t room_left;
+ size_t amt_to_read;
ret = (*matchrec)(iop, & recm, & state);
iop->flag &= ~IOP_AT_START;
@@ -3060,64 +3091,62 @@ get_a_record(char **out, /* pointer to pointer to data */
break;
/* need to add more data to buffer */
- /* <shift data down in buffer>= */
+ /* shift data down in buffer */
dataend_off = iop->dataend - iop->off;
memmove(iop->buf, iop->off, dataend_off);
iop->off = iop->buf;
iop->dataend = iop->buf + dataend_off;
- /* <adjust recm contents>= */
+ /* adjust recm contents */
recm.start = iop->off;
if (recm.rt_start != NULL)
recm.rt_start = iop->off + recm.len;
- /* <read more data, break if EOF>= */
- {
+ /* read more data, break if EOF */
#define min(x, y) (x < y ? x : y)
- /* subtract one in read count to leave room for sentinel */
- size_t room_left = iop->end - iop->dataend - 1;
- size_t amt_to_read = min(iop->readsize, room_left);
-
- if (amt_to_read < iop->readsize) {
- grow_iop_buffer(iop);
- /* <adjust recm contents>= */
- recm.start = iop->off;
- if (recm.rt_start != NULL)
- recm.rt_start = iop->off + recm.len;
-
- /* recalculate amt_to_read */
- room_left = iop->end - iop->dataend - 1;
- amt_to_read = min(iop->readsize, room_left);
- }
- while (amt_to_read + iop->readsize < room_left)
- amt_to_read += iop->readsize;
+ /* subtract one in read count to leave room for sentinel */
+ room_left = iop->end - iop->dataend - 1;
+ amt_to_read = min(iop->readsize, room_left);
+
+ if (amt_to_read < iop->readsize) {
+ grow_iop_buffer(iop);
+ /* adjust recm contents */
+ recm.start = iop->off;
+ if (recm.rt_start != NULL)
+ recm.rt_start = iop->off + recm.len;
+
+ /* recalculate amt_to_read */
+ room_left = iop->end - iop->dataend - 1;
+ amt_to_read = min(iop->readsize, room_left);
+ }
+ while (amt_to_read + iop->readsize < room_left)
+ amt_to_read += iop->readsize;
#ifdef SSIZE_MAX
- /*
- * POSIX limits read to SSIZE_MAX. There are (bizarre)
- * systems where this amount is small.
- */
- amt_to_read = min(amt_to_read, SSIZE_MAX);
+ /*
+ * POSIX limits read to SSIZE_MAX. There are (bizarre)
+ * systems where this amount is small.
+ */
+ amt_to_read = min(amt_to_read, SSIZE_MAX);
#endif
- iop->count = iop->read_func(iop->fd, iop->dataend, amt_to_read);
- if (iop->count == -1) {
- *errcode = errno;
- iop->flag |= IOP_AT_EOF;
- break;
- } else if (iop->count == 0) {
- /*
- * hit EOF before matching RS, so end
- * the record and set RT to ""
- */
- iop->flag |= IOP_AT_EOF;
- break;
- } else
- iop->dataend += iop->count;
- }
+ iop->count = iop->read_func(iop->fd, iop->dataend, amt_to_read);
+ if (iop->count == -1) {
+ *errcode = errno;
+ iop->flag |= IOP_AT_EOF;
+ break;
+ } else if (iop->count == 0) {
+ /*
+ * hit EOF before matching RS, so end
+ * the record and set RT to ""
+ */
+ iop->flag |= IOP_AT_EOF;
+ break;
+ } else
+ iop->dataend += iop->count;
}
- /* <set record, RT, return right value>= */
+ /* set record, RT, return right value */
/*
* rtval is not a static pointer to avoid dangling pointer problems
@@ -3258,7 +3287,7 @@ pty_vs_pipe(const char *command)
if (val->flags & MAYBE_NUM)
(void) force_number(val);
if (val->flags & NUMBER)
- return (val->numbr != 0.0);
+ return ! iszero(val);
else
return (val->stlen != 0);
}
@@ -3386,13 +3415,15 @@ get_read_timeout(IOBUF *iop)
if (full_idx == NULL || strcmp(name, last_name) != 0) {
val = in_PROCINFO(name, "READ_TIMEOUT", & full_idx);
if (last_name != NULL)
- efree(last_name);
+ efree((void *) last_name);
last_name = estrdup(name, strlen(name));
} else /* use cached full index */
val = in_array(PROCINFO_node, full_idx);
- if (val != NULL)
- tmout = (long) force_number(val);
+ if (val != NULL) {
+ (void) force_number(val);
+ tmout = get_number_si(val);
+ }
} else
tmout = read_default_timeout; /* initialized from env. variable in init_io() */
@@ -3408,6 +3439,7 @@ get_read_timeout(IOBUF *iop)
static ssize_t
read_with_timeout(int fd, char *buf, size_t size)
{
+#ifndef __MINGW32__
fd_set readfds;
struct timeval tv;
@@ -3433,6 +3465,9 @@ read_with_timeout(int fd, char *buf, size_t size)
errno = EAGAIN;
#endif
return -1;
+#else /* __MINGW32__ */
+ return read(fd, buf, size);
+#endif /* __MINGW32__ */
}
diff --git a/m4/ChangeLog b/m4/ChangeLog
index 8aaeb418..4e4e7c84 100644
--- a/m4/ChangeLog
+++ b/m4/ChangeLog
@@ -1,3 +1,26 @@
+<<<<<<< HEAD
+2012-04-01 John Haque <j.eh@mchsi.com>
+
+ * mpfr.m4: New file.
+=======
+2012-04-27 Arnold D. Robbins <arnold@skeeve.com>
+
+ Update to autoconf 2.69, automake 1.12.
+
+ * codeset.m4, glibc2.m4, glibc21.m4, intdiv0.m4, intl.m4, intldir.m4,
+ intlmacosx.m4, intmax.m4, inttypes-pri.m4, inttypes_h.m4, lcmessage.m4,
+ lock.m4, longlong.m4, printf-posix.m4, size_max.m4, stdint_h.m4,
+ uintmax_t.m4, visibility.m4, wchar_t.m4, wint_t.m4, xsize.m4: Updated.
+>>>>>>> gawk-4.0-stable
+
+2012-03-30 Arnold D. Robbins <arnold@skeeve.com>
+
+ * noreturn.m4: New file.
+
+2012-03-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.0.1: Release tar ball made.
+
2011-06-23 Arnold D. Robbins <arnold@skeeve.com>
* ChangeLog.0: Rotated ChangeLog into this file.
diff --git a/m4/codeset.m4 b/m4/codeset.m4
index 223955b4..a53c0426 100644
--- a/m4/codeset.m4
+++ b/m4/codeset.m4
@@ -1,5 +1,5 @@
-# codeset.m4 serial 2 (gettext-0.16)
-dnl Copyright (C) 2000-2002, 2006 Free Software Foundation, Inc.
+# codeset.m4 serial 4 (gettext-0.18)
+dnl Copyright (C) 2000-2002, 2006, 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -8,14 +8,14 @@ dnl From Bruno Haible.
AC_DEFUN([AM_LANGINFO_CODESET],
[
- AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,
+ AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset],
[AC_TRY_LINK([#include <langinfo.h>],
[char* cs = nl_langinfo(CODESET); return !cs;],
- am_cv_langinfo_codeset=yes,
- am_cv_langinfo_codeset=no)
+ [am_cv_langinfo_codeset=yes],
+ [am_cv_langinfo_codeset=no])
])
if test $am_cv_langinfo_codeset = yes; then
- AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
+ AC_DEFINE([HAVE_LANGINFO_CODESET], [1],
[Define if you have <langinfo.h> and nl_langinfo(CODESET).])
fi
])
diff --git a/m4/glibc2.m4 b/m4/glibc2.m4
index e8f5bfe6..f148c12c 100644
--- a/m4/glibc2.m4
+++ b/m4/glibc2.m4
@@ -1,5 +1,5 @@
-# glibc2.m4 serial 1
-dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc.
+# glibc2.m4 serial 2
+dnl Copyright (C) 2000-2002, 2004, 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -9,22 +9,22 @@ dnl with or without modifications, as long as this notice is preserved.
AC_DEFUN([gt_GLIBC2],
[
- AC_CACHE_CHECK(whether we are using the GNU C Library 2 or newer,
- ac_cv_gnu_library_2,
+ AC_CACHE_CHECK([whether we are using the GNU C Library 2 or newer],
+ [ac_cv_gnu_library_2],
[AC_EGREP_CPP([Lucky GNU user],
- [
+ [
#include <features.h>
#ifdef __GNU_LIBRARY__
#if (__GLIBC__ >= 2)
Lucky GNU user
#endif
#endif
- ],
- ac_cv_gnu_library_2=yes,
- ac_cv_gnu_library_2=no)
+ ],
+ [ac_cv_gnu_library_2=yes],
+ [ac_cv_gnu_library_2=no])
]
)
- AC_SUBST(GLIBC2)
+ AC_SUBST([GLIBC2])
GLIBC2="$ac_cv_gnu_library_2"
]
)
diff --git a/m4/glibc21.m4 b/m4/glibc21.m4
index d95fd986..68ada9d4 100644
--- a/m4/glibc21.m4
+++ b/m4/glibc21.m4
@@ -1,5 +1,5 @@
-# glibc21.m4 serial 3
-dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc.
+# glibc21.m4 serial 4
+dnl Copyright (C) 2000-2002, 2004, 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -9,22 +9,22 @@ dnl with or without modifications, as long as this notice is preserved.
AC_DEFUN([gl_GLIBC21],
[
- AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer,
- ac_cv_gnu_library_2_1,
+ AC_CACHE_CHECK([whether we are using the GNU C Library 2.1 or newer],
+ [ac_cv_gnu_library_2_1],
[AC_EGREP_CPP([Lucky GNU user],
- [
+ [
#include <features.h>
#ifdef __GNU_LIBRARY__
#if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
Lucky GNU user
#endif
#endif
- ],
- ac_cv_gnu_library_2_1=yes,
- ac_cv_gnu_library_2_1=no)
+ ],
+ [ac_cv_gnu_library_2_1=yes],
+ [ac_cv_gnu_library_2_1=no])
]
)
- AC_SUBST(GLIBC21)
+ AC_SUBST([GLIBC21])
GLIBC21="$ac_cv_gnu_library_2_1"
]
)
diff --git a/m4/intdiv0.m4 b/m4/intdiv0.m4
index b8d78176..289c4df5 100644
--- a/m4/intdiv0.m4
+++ b/m4/intdiv0.m4
@@ -1,5 +1,5 @@
-# intdiv0.m4 serial 1 (gettext-0.11.3)
-dnl Copyright (C) 2002 Free Software Foundation, Inc.
+# intdiv0.m4 serial 3 (gettext-0.18)
+dnl Copyright (C) 2002, 2007-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -14,16 +14,27 @@ AC_DEFUN([gt_INTDIV0],
AC_CACHE_CHECK([whether integer division by zero raises SIGFPE],
gt_cv_int_divbyzero_sigfpe,
[
- AC_TRY_RUN([
+ gt_cv_int_divbyzero_sigfpe=
+changequote(,)dnl
+ case "$host_os" in
+ macos* | darwin[6-9]* | darwin[1-9][0-9]*)
+ # On MacOS X 10.2 or newer, just assume the same as when cross-
+ # compiling. If we were to perform the real test, 1 Crash Report
+ # dialog window would pop up.
+ case "$host_cpu" in
+ i[34567]86 | x86_64)
+ gt_cv_int_divbyzero_sigfpe="guessing yes" ;;
+ esac
+ ;;
+ esac
+changequote([,])dnl
+ if test -z "$gt_cv_int_divbyzero_sigfpe"; then
+ AC_TRY_RUN([
#include <stdlib.h>
#include <signal.h>
static void
-#ifdef __cplusplus
sigfpe_handler (int sig)
-#else
-sigfpe_handler (sig) int sig;
-#endif
{
/* Exit with code 0 if SIGFPE, with code 1 if any other signal. */
exit (sig != SIGFPE);
@@ -50,21 +61,24 @@ int main ()
nan = y / y;
exit (1);
}
-], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no,
- [
- # Guess based on the CPU.
- case "$host_cpu" in
- alpha* | i[34567]86 | m68k | s390*)
- gt_cv_int_divbyzero_sigfpe="guessing yes";;
- *)
- gt_cv_int_divbyzero_sigfpe="guessing no";;
- esac
- ])
+], [gt_cv_int_divbyzero_sigfpe=yes], [gt_cv_int_divbyzero_sigfpe=no],
+ [
+ # Guess based on the CPU.
+changequote(,)dnl
+ case "$host_cpu" in
+ alpha* | i[34567]86 | x86_64 | m68k | s390*)
+ gt_cv_int_divbyzero_sigfpe="guessing yes";;
+ *)
+ gt_cv_int_divbyzero_sigfpe="guessing no";;
+ esac
+changequote([,])dnl
+ ])
+ fi
])
case "$gt_cv_int_divbyzero_sigfpe" in
*yes) value=1;;
*) value=0;;
esac
- AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value,
+ AC_DEFINE_UNQUOTED([INTDIV0_RAISES_SIGFPE], [$value],
[Define if integer division by zero raises signal SIGFPE.])
])
diff --git a/m4/intl.m4 b/m4/intl.m4
index dcefb118..335b23c2 100644
--- a/m4/intl.m4
+++ b/m4/intl.m4
@@ -1,5 +1,5 @@
-# intl.m4 serial 3 (gettext-0.16)
-dnl Copyright (C) 1995-2006 Free Software Foundation, Inc.
+# intl.m4 serial 17 (gettext-0.18)
+dnl Copyright (C) 1995-2009 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -15,9 +15,9 @@ dnl They are *not* in the public domain.
dnl Authors:
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
-dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006.
+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2009.
-AC_PREREQ(2.52)
+AC_PREREQ([2.52])
dnl Checks for all prerequisites of the intl subdirectory,
dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
@@ -33,7 +33,6 @@ AC_DEFUN([AM_INTL_SUBDIR],
AC_REQUIRE([gl_VISIBILITY])dnl
AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl
AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl
- AC_REQUIRE([gt_TYPE_LONGDOUBLE])dnl
AC_REQUIRE([gt_TYPE_WCHAR_T])dnl
AC_REQUIRE([gt_TYPE_WINT_T])dnl
AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
@@ -41,14 +40,24 @@ AC_DEFUN([AM_INTL_SUBDIR],
AC_REQUIRE([gt_PRINTF_POSIX])
AC_REQUIRE([gl_GLIBC21])dnl
AC_REQUIRE([gl_XSIZE])dnl
+ AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl
AC_REQUIRE([gt_INTL_MACOSX])dnl
+ dnl Support for automake's --enable-silent-rules.
+ case "$enable_silent_rules" in
+ yes) INTL_DEFAULT_VERBOSITY=0;;
+ no) INTL_DEFAULT_VERBOSITY=1;;
+ *) INTL_DEFAULT_VERBOSITY=1;;
+ esac
+ AC_SUBST([INTL_DEFAULT_VERBOSITY])
+
AC_CHECK_TYPE([ptrdiff_t], ,
[AC_DEFINE([ptrdiff_t], [long],
[Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
])
AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
- AC_CHECK_FUNCS([asprintf fwprintf putenv setenv setlocale snprintf wcslen])
+ AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \
+ snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb])
dnl Use the _snprintf function only if it is declared (because on NetBSD it
dnl is defined as a weak alias of snprintf; we prefer to use the latter).
@@ -79,6 +88,12 @@ AC_DEFUN([AM_INTL_SUBDIR],
HAVE_SNPRINTF=0
fi
AC_SUBST([HAVE_SNPRINTF])
+ if test "$ac_cv_func_newlocale" = yes; then
+ HAVE_NEWLOCALE=1
+ else
+ HAVE_NEWLOCALE=0
+ fi
+ AC_SUBST([HAVE_NEWLOCALE])
if test "$ac_cv_func_wprintf" = yes; then
HAVE_WPRINTF=1
else
@@ -98,7 +113,7 @@ AC_DEFUN([AM_INTL_SUBDIR],
dnl exported variables _also_ in the static library.
if test "$enable_shared" = yes; then
case "$host_os" in
- cygwin*) is_woe32dll=yes ;;
+ mingw* | cygwin*) is_woe32dll=yes ;;
*) is_woe32dll=no ;;
esac
else
@@ -107,6 +122,31 @@ AC_DEFUN([AM_INTL_SUBDIR],
WOE32DLL=$is_woe32dll
AC_SUBST([WOE32DLL])
+ dnl On mingw and Cygwin, we can activate special Makefile rules which add
+ dnl version information to the shared libraries and executables.
+ case "$host_os" in
+ mingw* | cygwin*) is_woe32=yes ;;
+ *) is_woe32=no ;;
+ esac
+ WOE32=$is_woe32
+ AC_SUBST([WOE32])
+ if test $WOE32 = yes; then
+ dnl Check for a program that compiles Windows resource files.
+ AC_CHECK_TOOL([WINDRES], [windres])
+ fi
+
+ dnl Determine whether when creating a library, "-lc" should be passed to
+ dnl libtool or not. On many platforms, it is required for the libtool option
+ dnl -no-undefined to work. On HP-UX, however, the -lc - stored by libtool
+ dnl in the *.la files - makes it impossible to create multithreaded programs,
+ dnl because libtool also reorders the -lc to come before the -pthread, and
+ dnl this disables pthread_create() <http://docs.hp.com/en/1896/pthreads.html>.
+ case "$host_os" in
+ hpux*) LTLIBC="" ;;
+ *) LTLIBC="-lc" ;;
+ esac
+ AC_SUBST([LTLIBC])
+
dnl Rename some macros and functions used for locking.
AH_BOTTOM([
#define __libc_lock_t gl_lock_t
@@ -122,22 +162,31 @@ AC_DEFUN([AM_INTL_SUBDIR],
#define __libc_lock_lock_recursive gl_recursive_lock_lock
#define __libc_lock_unlock_recursive gl_recursive_lock_unlock
#define glthread_in_use libintl_thread_in_use
-#define glthread_lock_init libintl_lock_init
-#define glthread_lock_lock libintl_lock_lock
-#define glthread_lock_unlock libintl_lock_unlock
-#define glthread_lock_destroy libintl_lock_destroy
-#define glthread_rwlock_init libintl_rwlock_init
-#define glthread_rwlock_rdlock libintl_rwlock_rdlock
-#define glthread_rwlock_wrlock libintl_rwlock_wrlock
-#define glthread_rwlock_unlock libintl_rwlock_unlock
-#define glthread_rwlock_destroy libintl_rwlock_destroy
-#define glthread_recursive_lock_init libintl_recursive_lock_init
-#define glthread_recursive_lock_lock libintl_recursive_lock_lock
-#define glthread_recursive_lock_unlock libintl_recursive_lock_unlock
-#define glthread_recursive_lock_destroy libintl_recursive_lock_destroy
-#define glthread_once libintl_once
-#define glthread_once_call libintl_once_call
+#define glthread_lock_init_func libintl_lock_init_func
+#define glthread_lock_lock_func libintl_lock_lock_func
+#define glthread_lock_unlock_func libintl_lock_unlock_func
+#define glthread_lock_destroy_func libintl_lock_destroy_func
+#define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded
+#define glthread_rwlock_init_func libintl_rwlock_init_func
+#define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded
+#define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func
+#define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded
+#define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func
+#define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded
+#define glthread_rwlock_unlock_func libintl_rwlock_unlock_func
+#define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded
+#define glthread_rwlock_destroy_func libintl_rwlock_destroy_func
+#define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded
+#define glthread_recursive_lock_init_func libintl_recursive_lock_init_func
+#define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded
+#define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func
+#define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded
+#define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func
+#define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded
+#define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func
+#define glthread_once_func libintl_once_func
#define glthread_once_singlethreaded libintl_once_singlethreaded
+#define glthread_once_multithreaded libintl_once_multithreaded
])
])
@@ -174,38 +223,24 @@ AC_DEFUN([gt_INTL_SUBDIR_CORE],
AC_TRY_LINK(
[int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }],
[],
- [AC_DEFINE([HAVE_BUILTIN_EXPECT], 1,
+ [AC_DEFINE([HAVE_BUILTIN_EXPECT], [1],
[Define to 1 if the compiler understands __builtin_expect.])])
AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h])
AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \
- stpcpy strcasecmp strdup strtoul tsearch argz_count argz_stringify \
- argz_next __fsetlocking])
+ stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \
+ argz_stringify argz_next __fsetlocking])
dnl Use the *_unlocked functions only if they are declared.
dnl (because some of them were defined without being declared in Solaris
dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
dnl on Solaris 2.5.1 to run on Solaris 2.6).
dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
- gt_CHECK_DECL(feof_unlocked, [#include <stdio.h>])
- gt_CHECK_DECL(fgets_unlocked, [#include <stdio.h>])
+ gt_CHECK_DECL([feof_unlocked], [#include <stdio.h>])
+ gt_CHECK_DECL([fgets_unlocked], [#include <stdio.h>])
AM_ICONV
- dnl glibc >= 2.4 has a NL_LOCALE_NAME macro when _GNU_SOURCE is defined,
- dnl and a _NL_LOCALE_NAME macro always.
- AC_CACHE_CHECK([for NL_LOCALE_NAME macro], gt_cv_nl_locale_name,
- [AC_TRY_LINK([#include <langinfo.h>
-#include <locale.h>],
- [char* cs = nl_langinfo(_NL_LOCALE_NAME(LC_MESSAGES));],
- gt_cv_nl_locale_name=yes,
- gt_cv_nl_locale_name=no)
- ])
- if test $gt_cv_nl_locale_name = yes; then
- AC_DEFINE(HAVE_NL_LOCALE_NAME, 1,
- [Define if you have <langinfo.h> and it defines the NL_LOCALE_NAME macro if _GNU_SOURCE is defined.])
- fi
-
dnl intl/plural.c is generated from intl/plural.y. It requires bison,
dnl because plural.y uses bison specific features. It requires at least
dnl bison-1.26 because earlier versions generate a plural.c that doesn't
@@ -243,7 +278,7 @@ dnl gt_CHECK_DECL(FUNC, INCLUDES)
dnl Check whether a function is declared.
AC_DEFUN([gt_CHECK_DECL],
[
- AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1,
+ AC_CACHE_CHECK([whether $1 is declared], [ac_cv_have_decl_$1],
[AC_TRY_COMPILE([$2], [
#ifndef $1
char *p = (char *) $1;
diff --git a/m4/intldir.m4 b/m4/intldir.m4
index 7a28843f..ebae76d3 100644
--- a/m4/intldir.m4
+++ b/m4/intldir.m4
@@ -1,5 +1,5 @@
-# intldir.m4 serial 1 (gettext-0.16)
-dnl Copyright (C) 2006 Free Software Foundation, Inc.
+# intldir.m4 serial 2 (gettext-0.18)
+dnl Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -13,7 +13,7 @@ dnl by the GNU Library General Public License, and the rest of the GNU
dnl gettext package package is covered by the GNU General Public License.
dnl They are *not* in the public domain.
-AC_PREREQ(2.52)
+AC_PREREQ([2.52])
dnl Tells the AM_GNU_GETTEXT macro to consider an intl/ directory.
AC_DEFUN([AM_GNU_GETTEXT_INTL_SUBDIR], [])
diff --git a/m4/intlmacosx.m4 b/m4/intlmacosx.m4
index d3f0d904..dd910259 100644
--- a/m4/intlmacosx.m4
+++ b/m4/intlmacosx.m4
@@ -1,5 +1,5 @@
-# intlmacosx.m4 serial 1 (gettext-0.17)
-dnl Copyright (C) 2004-2007 Free Software Foundation, Inc.
+# intlmacosx.m4 serial 3 (gettext-0.18)
+dnl Copyright (C) 2004-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -19,7 +19,7 @@ AC_DEFUN([gt_INTL_MACOSX],
[
dnl Check for API introduced in MacOS X 10.2.
AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
- gt_cv_func_CFPreferencesCopyAppValue,
+ [gt_cv_func_CFPreferencesCopyAppValue],
[gt_save_LIBS="$LIBS"
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>],
@@ -28,11 +28,11 @@ AC_DEFUN([gt_INTL_MACOSX],
[gt_cv_func_CFPreferencesCopyAppValue=no])
LIBS="$gt_save_LIBS"])
if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
- AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1,
+ AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
[Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
fi
dnl Check for API introduced in MacOS X 10.3.
- AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent,
+ AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent],
[gt_save_LIBS="$LIBS"
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();],
@@ -40,7 +40,7 @@ AC_DEFUN([gt_INTL_MACOSX],
[gt_cv_func_CFLocaleCopyCurrent=no])
LIBS="$gt_save_LIBS"])
if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
- AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1,
+ AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1],
[Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
fi
INTL_MACOSX_LIBS=
diff --git a/m4/intmax.m4 b/m4/intmax.m4
index ce7a8a49..74aaaf5e 100644
--- a/m4/intmax.m4
+++ b/m4/intmax.m4
@@ -1,5 +1,5 @@
-# intmax.m4 serial 3 (gettext-0.16)
-dnl Copyright (C) 2002-2005 Free Software Foundation, Inc.
+# intmax.m4 serial 5 (gettext-0.18)
+dnl Copyright (C) 2002-2005, 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -12,7 +12,7 @@ AC_DEFUN([gt_TYPE_INTMAX_T],
[
AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
AC_REQUIRE([gl_AC_HEADER_STDINT_H])
- AC_CACHE_CHECK(for intmax_t, gt_cv_c_intmax_t,
+ AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t],
[AC_TRY_COMPILE([
#include <stddef.h>
#include <stdlib.h>
@@ -24,10 +24,10 @@ AC_DEFUN([gt_TYPE_INTMAX_T],
#endif
], [intmax_t x = -1;
return !x;],
- gt_cv_c_intmax_t=yes,
- gt_cv_c_intmax_t=no)])
+ [gt_cv_c_intmax_t=yes],
+ [gt_cv_c_intmax_t=no])])
if test $gt_cv_c_intmax_t = yes; then
- AC_DEFINE(HAVE_INTMAX_T, 1,
+ AC_DEFINE([HAVE_INTMAX_T], [1],
[Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
fi
])
diff --git a/m4/inttypes-pri.m4 b/m4/inttypes-pri.m4
index 7c7f8940..718a4f4e 100644
--- a/m4/inttypes-pri.m4
+++ b/m4/inttypes-pri.m4
@@ -1,12 +1,12 @@
-# inttypes-pri.m4 serial 4 (gettext-0.16)
-dnl Copyright (C) 1997-2002, 2006 Free Software Foundation, Inc.
+# inttypes-pri.m4 serial 6 (gettext-0.18)
+dnl Copyright (C) 1997-2002, 2006, 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
-AC_PREREQ(2.52)
+AC_PREREQ([2.52])
# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
# macros to non-string values. This is the case on AIX 4.3.3.
@@ -16,17 +16,17 @@ AC_DEFUN([gt_INTTYPES_PRI],
AC_CHECK_HEADERS([inttypes.h])
if test $ac_cv_header_inttypes_h = yes; then
AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
- gt_cv_inttypes_pri_broken,
+ [gt_cv_inttypes_pri_broken],
[
AC_TRY_COMPILE([#include <inttypes.h>
#ifdef PRId32
char *p = PRId32;
#endif
-], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes)
+], [], [gt_cv_inttypes_pri_broken=no], [gt_cv_inttypes_pri_broken=yes])
])
fi
if test "$gt_cv_inttypes_pri_broken" = yes; then
- AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1,
+ AC_DEFINE_UNQUOTED([PRI_MACROS_BROKEN], [1],
[Define if <inttypes.h> exists and defines unusable PRI* macros.])
PRI_MACROS_BROKEN=1
else
diff --git a/m4/inttypes_h.m4 b/m4/inttypes_h.m4
index 76171888..782d77ed 100644
--- a/m4/inttypes_h.m4
+++ b/m4/inttypes_h.m4
@@ -1,5 +1,5 @@
-# inttypes_h.m4 serial 7
-dnl Copyright (C) 1997-2004, 2006 Free Software Foundation, Inc.
+# inttypes_h.m4 serial 9
+dnl Copyright (C) 1997-2004, 2006, 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -11,21 +11,16 @@ dnl From Paul Eggert.
AC_DEFUN([gl_AC_HEADER_INTTYPES_H],
[
- if test "OS/390" = "`uname`"
- then
- gl_cv_header_inttypes_h=no
- else
- AC_CACHE_CHECK([for inttypes.h], gl_cv_header_inttypes_h,
- [AC_TRY_COMPILE(
- [#include <sys/types.h>
+ AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h],
+ [AC_TRY_COMPILE(
+ [#include <sys/types.h>
#include <inttypes.h>],
- [uintmax_t i = (uintmax_t) -1; return !i;],
- gl_cv_header_inttypes_h=yes,
- gl_cv_header_inttypes_h=no)])
- if test $gl_cv_header_inttypes_h = yes; then
- AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1,
- [Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
- and declares uintmax_t. ])
- fi
+ [uintmax_t i = (uintmax_t) -1; return !i;],
+ [gl_cv_header_inttypes_h=yes],
+ [gl_cv_header_inttypes_h=no])])
+ if test $gl_cv_header_inttypes_h = yes; then
+ AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1],
+ [Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
+ and declares uintmax_t. ])
fi
])
diff --git a/m4/lcmessage.m4 b/m4/lcmessage.m4
index 19aa77e4..1a705431 100644
--- a/m4/lcmessage.m4
+++ b/m4/lcmessage.m4
@@ -1,5 +1,6 @@
-# lcmessage.m4 serial 4 (gettext-0.14.2)
-dnl Copyright (C) 1995-2002, 2004-2005 Free Software Foundation, Inc.
+# lcmessage.m4 serial 6 (gettext-0.18)
+dnl Copyright (C) 1995-2002, 2004-2005, 2008-2010 Free Software Foundation,
+dnl Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -20,11 +21,11 @@ dnl Ulrich Drepper <drepper@cygnus.com>, 1995.
AC_DEFUN([gt_LC_MESSAGES],
[
- AC_CACHE_CHECK([for LC_MESSAGES], gt_cv_val_LC_MESSAGES,
+ AC_CACHE_CHECK([for LC_MESSAGES], [gt_cv_val_LC_MESSAGES],
[AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
- gt_cv_val_LC_MESSAGES=yes, gt_cv_val_LC_MESSAGES=no)])
+ [gt_cv_val_LC_MESSAGES=yes], [gt_cv_val_LC_MESSAGES=no])])
if test $gt_cv_val_LC_MESSAGES = yes; then
- AC_DEFINE(HAVE_LC_MESSAGES, 1,
+ AC_DEFINE([HAVE_LC_MESSAGES], [1],
[Define if your <locale.h> file defines LC_MESSAGES.])
fi
])
diff --git a/m4/lock.m4 b/m4/lock.m4
index 0224f2ff..9da8465e 100644
--- a/m4/lock.m4
+++ b/m4/lock.m4
@@ -1,254 +1,33 @@
-# lock.m4 serial 6 (gettext-0.16)
-dnl Copyright (C) 2005-2006 Free Software Foundation, Inc.
+# lock.m4 serial 10 (gettext-0.18)
+dnl Copyright (C) 2005-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
-dnl Tests for a multithreading library to be used.
-dnl Defines at most one of the macros USE_POSIX_THREADS, USE_SOLARIS_THREADS,
-dnl USE_PTH_THREADS, USE_WIN32_THREADS
-dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use
-dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with
-dnl libtool).
-dnl Sets the variables LIBMULTITHREAD and LTLIBMULTITHREAD similarly, for
-dnl programs that really need multithread functionality. The difference
-dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak
-dnl symbols, typically LIBTHREAD="" whereas LIBMULTITHREAD="-lpthread".
-dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for
-dnl multithread-safe programs.
-
-AC_DEFUN([gl_LOCK_EARLY],
-[
- AC_REQUIRE([gl_LOCK_EARLY_BODY])
-])
-
-dnl The guts of gl_LOCK_EARLY. Needs to be expanded only once.
-
-AC_DEFUN([gl_LOCK_EARLY_BODY],
-[
- dnl Ordering constraints: This macro modifies CPPFLAGS in a way that
- dnl influences the result of the autoconf tests that test for *_unlocked
- dnl declarations, on AIX 5 at least. Therefore it must come early.
- AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl
- AC_BEFORE([$0], [gl_ARGP])dnl
-
- AC_REQUIRE([AC_CANONICAL_HOST])
- AC_REQUIRE([AC_GNU_SOURCE]) dnl needed for pthread_rwlock_t on glibc systems
- dnl Check for multithreading.
- AC_ARG_ENABLE(threads,
-AC_HELP_STRING([--enable-threads={posix|solaris|pth|win32}], [specify multithreading API])
-AC_HELP_STRING([--disable-threads], [build without multithread safety]),
- [gl_use_threads=$enableval],
- [case "$host_os" in
- dnl Disable multithreading by default on OSF/1, because it interferes
- dnl with fork()/exec(): When msgexec is linked with -lpthread, its child
- dnl process gets an endless segmentation fault inside execvp().
- osf*) gl_use_threads=no ;;
- *) gl_use_threads=yes ;;
- esac
- ])
- if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
- # For using <pthread.h>:
- case "$host_os" in
- osf*)
- # On OSF/1, the compiler needs the flag -D_REENTRANT so that it
- # groks <pthread.h>. cc also understands the flag -pthread, but
- # we don't use it because 1. gcc-2.95 doesn't understand -pthread,
- # 2. putting a flag into CPPFLAGS that has an effect on the linker
- # causes the AC_TRY_LINK test below to succeed unexpectedly,
- # leading to wrong values of LIBTHREAD and LTLIBTHREAD.
- CPPFLAGS="$CPPFLAGS -D_REENTRANT"
- ;;
- esac
- # Some systems optimize for single-threaded programs by default, and
- # need special flags to disable these optimizations. For example, the
- # definition of 'errno' in <errno.h>.
- case "$host_os" in
- aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
- solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
- esac
- fi
-])
-
-dnl The guts of gl_LOCK. Needs to be expanded only once.
-
-AC_DEFUN([gl_LOCK_BODY],
+AC_DEFUN([gl_LOCK],
[
- AC_REQUIRE([gl_LOCK_EARLY_BODY])
- gl_threads_api=none
- LIBTHREAD=
- LTLIBTHREAD=
- LIBMULTITHREAD=
- LTLIBMULTITHREAD=
- if test "$gl_use_threads" != no; then
- dnl Check whether the compiler and linker support weak declarations.
- AC_MSG_CHECKING([whether imported symbols can be declared weak])
- gl_have_weak=no
- AC_TRY_LINK([extern void xyzzy ();
-#pragma weak xyzzy], [xyzzy();], [gl_have_weak=yes])
- AC_MSG_RESULT([$gl_have_weak])
- if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
- # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
- # it groks <pthread.h>. It's added above, in gl_LOCK_EARLY_BODY.
- AC_CHECK_HEADER(pthread.h, gl_have_pthread_h=yes, gl_have_pthread_h=no)
- if test "$gl_have_pthread_h" = yes; then
- # Other possible tests:
- # -lpthreads (FSU threads, PCthreads)
- # -lgthreads
- gl_have_pthread=
- # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
- # in libc. IRIX 6.5 has the first one in both libc and libpthread, but
- # the second one only in libpthread, and lock.c needs it.
- AC_TRY_LINK([#include <pthread.h>],
- [pthread_mutex_lock((pthread_mutex_t*)0);
- pthread_mutexattr_init((pthread_mutexattr_t*)0);],
- [gl_have_pthread=yes])
- # Test for libpthread by looking for pthread_kill. (Not pthread_self,
- # since it is defined as a macro on OSF/1.)
- if test -n "$gl_have_pthread"; then
- # The program links fine without libpthread. But it may actually
- # need to link with libpthread in order to create multiple threads.
- AC_CHECK_LIB(pthread, pthread_kill,
- [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
- # On Solaris and HP-UX, most pthread functions exist also in libc.
- # Therefore pthread_in_use() needs to actually try to create a
- # thread: pthread_create from libc will fail, whereas
- # pthread_create will actually create a thread.
- case "$host_os" in
- solaris* | hpux*)
- AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], 1,
- [Define if the pthread_in_use() detection is hard.])
- esac
- ])
- else
- # Some library is needed. Try libpthread and libc_r.
- AC_CHECK_LIB(pthread, pthread_kill,
- [gl_have_pthread=yes
- LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread
- LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread])
- if test -z "$gl_have_pthread"; then
- # For FreeBSD 4.
- AC_CHECK_LIB(c_r, pthread_kill,
- [gl_have_pthread=yes
- LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r
- LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r])
- fi
- fi
- if test -n "$gl_have_pthread"; then
- gl_threads_api=posix
- AC_DEFINE([USE_POSIX_THREADS], 1,
- [Define if the POSIX multithreading library can be used.])
- if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
- if test $gl_have_weak = yes; then
- AC_DEFINE([USE_POSIX_THREADS_WEAK], 1,
- [Define if references to the POSIX multithreading library should be made weak.])
- LIBTHREAD=
- LTLIBTHREAD=
- fi
- fi
- # OSF/1 4.0 and MacOS X 10.1 lack the pthread_rwlock_t type and the
- # pthread_rwlock_* functions.
- AC_CHECK_TYPE([pthread_rwlock_t],
- [AC_DEFINE([HAVE_PTHREAD_RWLOCK], 1,
- [Define if the POSIX multithreading library has read/write locks.])],
- [],
- [#include <pthread.h>])
- # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro.
- AC_TRY_COMPILE([#include <pthread.h>],
- [#if __FreeBSD__ == 4
+ AC_REQUIRE([gl_THREADLIB])
+ if test "$gl_threads_api" = posix; then
+ # OSF/1 4.0 and MacOS X 10.1 lack the pthread_rwlock_t type and the
+ # pthread_rwlock_* functions.
+ AC_CHECK_TYPE([pthread_rwlock_t],
+ [AC_DEFINE([HAVE_PTHREAD_RWLOCK], [1],
+ [Define if the POSIX multithreading library has read/write locks.])],
+ [],
+ [#include <pthread.h>])
+ # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro.
+ AC_TRY_COMPILE([#include <pthread.h>],
+ [#if __FreeBSD__ == 4
error "No, in FreeBSD 4.0 recursive mutexes actually don't work."
#else
int x = (int)PTHREAD_MUTEX_RECURSIVE;
return !x;
#endif],
- [AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], 1,
- [Define if the <pthread.h> defines PTHREAD_MUTEX_RECURSIVE.])])
- fi
- fi
- fi
- if test -z "$gl_have_pthread"; then
- if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then
- gl_have_solaristhread=
- gl_save_LIBS="$LIBS"
- LIBS="$LIBS -lthread"
- AC_TRY_LINK([#include <thread.h>
-#include <synch.h>],
- [thr_self();],
- [gl_have_solaristhread=yes])
- LIBS="$gl_save_LIBS"
- if test -n "$gl_have_solaristhread"; then
- gl_threads_api=solaris
- LIBTHREAD=-lthread
- LTLIBTHREAD=-lthread
- LIBMULTITHREAD="$LIBTHREAD"
- LTLIBMULTITHREAD="$LTLIBTHREAD"
- AC_DEFINE([USE_SOLARIS_THREADS], 1,
- [Define if the old Solaris multithreading library can be used.])
- if test $gl_have_weak = yes; then
- AC_DEFINE([USE_SOLARIS_THREADS_WEAK], 1,
- [Define if references to the old Solaris multithreading library should be made weak.])
- LIBTHREAD=
- LTLIBTHREAD=
- fi
- fi
- fi
- fi
- if test "$gl_use_threads" = pth; then
- gl_save_CPPFLAGS="$CPPFLAGS"
- AC_LIB_LINKFLAGS(pth)
- gl_have_pth=
- gl_save_LIBS="$LIBS"
- LIBS="$LIBS -lpth"
- AC_TRY_LINK([#include <pth.h>], [pth_self();], gl_have_pth=yes)
- LIBS="$gl_save_LIBS"
- if test -n "$gl_have_pth"; then
- gl_threads_api=pth
- LIBTHREAD="$LIBPTH"
- LTLIBTHREAD="$LTLIBPTH"
- LIBMULTITHREAD="$LIBTHREAD"
- LTLIBMULTITHREAD="$LTLIBTHREAD"
- AC_DEFINE([USE_PTH_THREADS], 1,
- [Define if the GNU Pth multithreading library can be used.])
- if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
- if test $gl_have_weak = yes; then
- AC_DEFINE([USE_PTH_THREADS_WEAK], 1,
- [Define if references to the GNU Pth multithreading library should be made weak.])
- LIBTHREAD=
- LTLIBTHREAD=
- fi
- fi
- else
- CPPFLAGS="$gl_save_CPPFLAGS"
- fi
- fi
- if test -z "$gl_have_pthread"; then
- if test "$gl_use_threads" = yes || test "$gl_use_threads" = win32; then
- if { case "$host_os" in
- mingw*) true;;
- *) false;;
- esac
- }; then
- gl_threads_api=win32
- AC_DEFINE([USE_WIN32_THREADS], 1,
- [Define if the Win32 multithreading API can be used.])
- fi
- fi
- fi
+ [AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], [1],
+ [Define if the <pthread.h> defines PTHREAD_MUTEX_RECURSIVE.])])
fi
- AC_MSG_CHECKING([for multithread API to use])
- AC_MSG_RESULT([$gl_threads_api])
- AC_SUBST(LIBTHREAD)
- AC_SUBST(LTLIBTHREAD)
- AC_SUBST(LIBMULTITHREAD)
- AC_SUBST(LTLIBMULTITHREAD)
-])
-
-AC_DEFUN([gl_LOCK],
-[
- AC_REQUIRE([gl_LOCK_EARLY])
- AC_REQUIRE([gl_LOCK_BODY])
gl_PREREQ_LOCK
])
@@ -256,56 +35,3 @@ AC_DEFUN([gl_LOCK],
AC_DEFUN([gl_PREREQ_LOCK], [
AC_REQUIRE([AC_C_INLINE])
])
-
-dnl Survey of platforms:
-dnl
-dnl Platform Available Compiler Supports test-lock
-dnl flavours option weak result
-dnl --------------- --------- --------- -------- ---------
-dnl Linux 2.4/glibc posix -lpthread Y OK
-dnl
-dnl GNU Hurd/glibc posix
-dnl
-dnl FreeBSD 5.3 posix -lc_r Y
-dnl posix -lkse ? Y
-dnl posix -lpthread ? Y
-dnl posix -lthr Y
-dnl
-dnl FreeBSD 5.2 posix -lc_r Y
-dnl posix -lkse Y
-dnl posix -lthr Y
-dnl
-dnl FreeBSD 4.0,4.10 posix -lc_r Y OK
-dnl
-dnl NetBSD 1.6 --
-dnl
-dnl OpenBSD 3.4 posix -lpthread Y OK
-dnl
-dnl MacOS X 10.[123] posix -lpthread Y OK
-dnl
-dnl Solaris 7,8,9 posix -lpthread Y Sol 7,8: 0.0; Sol 9: OK
-dnl solaris -lthread Y Sol 7,8: 0.0; Sol 9: OK
-dnl
-dnl HP-UX 11 posix -lpthread N (cc) OK
-dnl Y (gcc)
-dnl
-dnl IRIX 6.5 posix -lpthread Y 0.5
-dnl
-dnl AIX 4.3,5.1 posix -lpthread N AIX 4: 0.5; AIX 5: OK
-dnl
-dnl OSF/1 4.0,5.1 posix -pthread (cc) N OK
-dnl -lpthread (gcc) Y
-dnl
-dnl Cygwin posix -lpthread Y OK
-dnl
-dnl Any of the above pth -lpth 0.0
-dnl
-dnl Mingw win32 N OK
-dnl
-dnl BeOS 5 --
-dnl
-dnl The test-lock result shows what happens if in test-lock.c EXPLICIT_YIELD is
-dnl turned off:
-dnl OK if all three tests terminate OK,
-dnl 0.5 if the first test terminates OK but the second one loops endlessly,
-dnl 0.0 if the first test already loops endlessly.
diff --git a/m4/longlong.m4 b/m4/longlong.m4
index 3716c09f..cca3c1a9 100644
--- a/m4/longlong.m4
+++ b/m4/longlong.m4
@@ -1,5 +1,5 @@
-# longlong.m4 serial 8
-dnl Copyright (C) 1999-2006 Free Software Foundation, Inc.
+# longlong.m4 serial 14
+dnl Copyright (C) 1999-2007, 2009-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -7,42 +7,100 @@ dnl with or without modifications, as long as this notice is preserved.
dnl From Paul Eggert.
# Define HAVE_LONG_LONG_INT if 'long long int' works.
-# This fixes a bug in Autoconf 2.60, but can be removed once we
-# assume 2.61 everywhere.
+# This fixes a bug in Autoconf 2.61, but can be removed once we
+# assume 2.62 everywhere.
# Note: If the type 'long long int' exists but is only 32 bits large
-# (as on some very old compilers), AC_TYPE_LONG_LONG_INT will not be
+# (as on some very old compilers), HAVE_LONG_LONG_INT will not be
# defined. In this case you can treat 'long long int' like 'long int'.
AC_DEFUN([AC_TYPE_LONG_LONG_INT],
[
AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int],
[AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[long long int ll = 9223372036854775807ll;
- long long int nll = -9223372036854775807LL;
- typedef int a[((-9223372036854775807LL < 0
- && 0 < 9223372036854775807ll)
- ? 1 : -1)];
- int i = 63;]],
- [[long long int llmax = 9223372036854775807ll;
- return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
- | (llmax / ll) | (llmax % ll));]])],
- [ac_cv_type_long_long_int=yes],
+ [_AC_TYPE_LONG_LONG_SNIPPET],
+ [dnl This catches a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
+ dnl If cross compiling, assume the bug isn't important, since
+ dnl nobody cross compiles for this platform as far as we know.
+ AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[@%:@include <limits.h>
+ @%:@ifndef LLONG_MAX
+ @%:@ define HALF \
+ (1LL << (sizeof (long long int) * CHAR_BIT - 2))
+ @%:@ define LLONG_MAX (HALF - 1 + HALF)
+ @%:@endif]],
+ [[long long int n = 1;
+ int i;
+ for (i = 0; ; i++)
+ {
+ long long int m = n << i;
+ if (m >> i != n)
+ return 1;
+ if (LLONG_MAX / 2 < m)
+ break;
+ }
+ return 0;]])],
+ [ac_cv_type_long_long_int=yes],
+ [ac_cv_type_long_long_int=no],
+ [ac_cv_type_long_long_int=yes])],
[ac_cv_type_long_long_int=no])])
if test $ac_cv_type_long_long_int = yes; then
- AC_DEFINE([HAVE_LONG_LONG_INT], 1,
+ AC_DEFINE([HAVE_LONG_LONG_INT], [1],
[Define to 1 if the system has the type `long long int'.])
fi
])
-# This macro is obsolescent and should go away soon.
-AC_DEFUN([gl_AC_TYPE_LONG_LONG],
+# Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works.
+# This fixes a bug in Autoconf 2.61, but can be removed once we
+# assume 2.62 everywhere.
+
+# Note: If the type 'unsigned long long int' exists but is only 32 bits
+# large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT
+# will not be defined. In this case you can treat 'unsigned long long int'
+# like 'unsigned long int'.
+
+AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT],
[
- AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
- ac_cv_type_long_long=$ac_cv_type_long_long_int
- if test $ac_cv_type_long_long = yes; then
- AC_DEFINE(HAVE_LONG_LONG, 1,
- [Define if you have the 'long long' type.])
+ AC_CACHE_CHECK([for unsigned long long int],
+ [ac_cv_type_unsigned_long_long_int],
+ [AC_LINK_IFELSE(
+ [_AC_TYPE_LONG_LONG_SNIPPET],
+ [ac_cv_type_unsigned_long_long_int=yes],
+ [ac_cv_type_unsigned_long_long_int=no])])
+ if test $ac_cv_type_unsigned_long_long_int = yes; then
+ AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1],
+ [Define to 1 if the system has the type `unsigned long long int'.])
fi
])
+
+# Expands to a C program that can be used to test for simultaneous support
+# of 'long long' and 'unsigned long long'. We don't want to say that
+# 'long long' is available if 'unsigned long long' is not, or vice versa,
+# because too many programs rely on the symmetry between signed and unsigned
+# integer types (excluding 'bool').
+AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET],
+[
+ AC_LANG_PROGRAM(
+ [[/* For now, do not test the preprocessor; as of 2007 there are too many
+ implementations with broken preprocessors. Perhaps this can
+ be revisited in 2012. In the meantime, code should not expect
+ #if to work with literals wider than 32 bits. */
+ /* Test literals. */
+ long long int ll = 9223372036854775807ll;
+ long long int nll = -9223372036854775807LL;
+ unsigned long long int ull = 18446744073709551615ULL;
+ /* Test constant expressions. */
+ typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
+ ? 1 : -1)];
+ typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
+ ? 1 : -1)];
+ int i = 63;]],
+ [[/* Test availability of runtime routines for shift and division. */
+ long long int llmax = 9223372036854775807ll;
+ unsigned long long int ullmax = 18446744073709551615ull;
+ return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
+ | (llmax / ll) | (llmax % ll)
+ | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
+ | (ullmax / ull) | (ullmax % ull));]])
+])
diff --git a/m4/mpfr.m4 b/m4/mpfr.m4
new file mode 100644
index 00000000..7d9e678b
--- /dev/null
+++ b/m4/mpfr.m4
@@ -0,0 +1,62 @@
+dnl Check for MPFR and dependencies
+dnl Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+dnl
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+dnl
+dnl Defines HAVE_MPFR to 1 if a working MPFR/GMP setup is
+dnl found, and sets @LIBMPFR@ to the necessary libraries.
+
+AC_DEFUN([GNUPG_CHECK_MPFR],
+[
+ AC_ARG_WITH([mpfr],
+ AC_HELP_STRING([--with-mpfr=DIR],
+ [look for the mpfr and gmp libraries in DIR]),
+ [_do_mpfr=$withval],[_do_mpfr=yes])
+
+ if test "$_do_mpfr" != "no" ; then
+ if test -d "$withval" ; then
+ CPPFLAGS="${CPPFLAGS} -I$withval/include"
+ LDFLAGS="${LDFLAGS} -L$withval/lib"
+ fi
+
+ _mpfr_save_libs=$LIBS
+ _combo="-lmpfr -lgmp"
+ LIBS="$LIBS $_combo"
+
+ AC_MSG_CHECKING([whether mpfr via \"$_combo\" is present and usable])
+
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([
+#include <stdio.h>
+#include <mpfr.h>
+#include <gmp.h>
+],[
+mpfr_t p;
+mpz_t z;
+mpfr_init(p);
+mpz_init(z);
+mpfr_printf("%Rf%Zd", p, z);
+mpfr_clear(p);
+mpz_clear(z);
+])],_found_mpfr=yes,_found_mpfr=no)
+
+ AC_MSG_RESULT([$_found_mpfr])
+
+ LIBS=$_mpfr_save_libs
+
+ if test $_found_mpfr = yes ; then
+ AC_DEFINE(HAVE_MPFR,1,
+ [Define to 1 if you have fully functional mpfr and gmp libraries.])
+ AC_SUBST(LIBMPFR,$_combo)
+ break
+ fi
+
+ unset _mpfr_save_libs
+ unset _combo
+ unset _found_mpfr
+ fi
+])dnl
diff --git a/m4/noreturn.m4 b/m4/noreturn.m4
new file mode 100644
index 00000000..7fa7d377
--- /dev/null
+++ b/m4/noreturn.m4
@@ -0,0 +1,38 @@
+dnl Date: Sun, 26 Feb 2012 11:31:50 -0800
+dnl From: Paul Eggert <eggert@cs.ucla.edu>
+dnl To: arnold@skeeve.com
+dnl CC: bug-grep@gnu.org
+dnl Subject: Re: avoid gcc 4.6.2 'may be used before set' warnings in dfa.c
+dnl
+dnl On 02/26/2012 01:18 AM, arnold@skeeve.com wrote:
+dnl > It looks like I can just use the code as it is now in grep. I have asked
+dnl > for compile failures and haven't gotten any.
+dnl
+dnl Sure, but the gnulib support for this is better
+dnl than what's in the dfa code. It could be that
+dnl your correspondents aren't using the less-common hosts
+dnl or compiler warning options that gnulib is ported to.
+dnl
+dnl In the long run stdnoreturn.h or _Noreturn is the way to go,
+dnl since they're part of the C standard.
+dnl
+dnl If you'd rather not create a separate file, how about if
+dnl we change the dfa code to use _Noreturn instead of
+dnl <stdnoreturn.h> and noreturn, and you can put the
+dnl following into your configure.ac so that config.h
+dnl defines _Noreturn the same way gnulib does:
+
+AC_DEFUN([GAWK_AC_NORETURN],[
+AH_VERBATIM([_Noreturn],
+[/* The _Noreturn keyword of C11. */
+#ifndef _Noreturn
+# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \
+ || 0x5110 <= __SUNPRO_C)
+# define _Noreturn __attribute__ ((__noreturn__))
+# elif defined _MSC_VER && 1200 <= _MSC_VER
+# define _Noreturn __declspec (noreturn)
+# else
+# define _Noreturn
+# endif
+#endif
+])])
diff --git a/m4/printf-posix.m4 b/m4/printf-posix.m4
index af10170a..1eacf95a 100644
--- a/m4/printf-posix.m4
+++ b/m4/printf-posix.m4
@@ -1,5 +1,5 @@
-# printf-posix.m4 serial 2 (gettext-0.13.1)
-dnl Copyright (C) 2003 Free Software Foundation, Inc.
+# printf-posix.m4 serial 5 (gettext-0.18)
+dnl Copyright (C) 2003, 2007, 2009-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -27,17 +27,18 @@ int main ()
return (strcmp (buf, "55 33") != 0);
}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no,
[
- AC_EGREP_CPP(notposix, [
-#if defined __NetBSD__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__
+ AC_EGREP_CPP([notposix], [
+#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__
notposix
#endif
- ], gt_cv_func_printf_posix="guessing no",
- gt_cv_func_printf_posix="guessing yes")
+ ],
+ [gt_cv_func_printf_posix="guessing no"],
+ [gt_cv_func_printf_posix="guessing yes"])
])
])
case $gt_cv_func_printf_posix in
*yes)
- AC_DEFINE(HAVE_POSIX_PRINTF, 1,
+ AC_DEFINE([HAVE_POSIX_PRINTF], [1],
[Define if your printf() function supports format strings with positions.])
;;
esac
diff --git a/m4/size_max.m4 b/m4/size_max.m4
index bfba811e..ce992db1 100644
--- a/m4/size_max.m4
+++ b/m4/size_max.m4
@@ -1,5 +1,5 @@
-# size_max.m4 serial 5
-dnl Copyright (C) 2003, 2005-2006 Free Software Foundation, Inc.
+# size_max.m4 serial 9
+dnl Copyright (C) 2003, 2005-2006, 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -8,10 +8,9 @@ dnl From Bruno Haible.
AC_DEFUN([gl_SIZE_MAX],
[
- AC_CHECK_HEADERS(stdint.h)
+ AC_CHECK_HEADERS([stdint.h])
dnl First test whether the system already has SIZE_MAX.
- AC_MSG_CHECKING([for SIZE_MAX])
- AC_CACHE_VAL([gl_cv_size_max], [
+ AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [
gl_cv_size_max=
AC_EGREP_CPP([Found it], [
#include <limits.h>
@@ -21,16 +20,16 @@ AC_DEFUN([gl_SIZE_MAX],
#ifdef SIZE_MAX
Found it
#endif
-], gl_cv_size_max=yes)
+], [gl_cv_size_max=yes])
if test -z "$gl_cv_size_max"; then
dnl Define it ourselves. Here we assume that the type 'size_t' is not wider
dnl than the type 'unsigned long'. Try hard to find a definition that can
dnl be used in a preprocessor #if, i.e. doesn't contain a cast.
- _AC_COMPUTE_INT([sizeof (size_t) * CHAR_BIT - 1], size_t_bits_minus_1,
+ AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1],
[#include <stddef.h>
-#include <limits.h>], size_t_bits_minus_1=)
- _AC_COMPUTE_INT([sizeof (size_t) <= sizeof (unsigned int)], fits_in_uint,
- [#include <stddef.h>], fits_in_uint=)
+#include <limits.h>], [size_t_bits_minus_1=])
+ AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)],
+ [#include <stddef.h>], [fits_in_uint=])
if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then
if test $fits_in_uint = 1; then
dnl Even though SIZE_MAX fits in an unsigned int, it must be of type
@@ -38,7 +37,7 @@ Found it
AC_TRY_COMPILE([#include <stddef.h>
extern size_t foo;
extern unsigned long foo;
- ], [], fits_in_uint=0)
+ ], [], [fits_in_uint=0])
fi
dnl We cannot use 'expr' to simplify this expression, because 'expr'
dnl works only with 'long' integers in the host environment, while we
@@ -54,9 +53,23 @@ Found it
fi
fi
])
- AC_MSG_RESULT([$gl_cv_size_max])
if test "$gl_cv_size_max" != yes; then
AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max],
[Define as the maximum value of type 'size_t', if the system doesn't define it.])
fi
+ dnl Don't redefine SIZE_MAX in config.h if config.h is re-included after
+ dnl <stdint.h>. Remember that the #undef in AH_VERBATIM gets replaced with
+ dnl #define by AC_DEFINE_UNQUOTED.
+ AH_VERBATIM([SIZE_MAX],
+[/* Define as the maximum value of type 'size_t', if the system doesn't define
+ it. */
+#ifndef SIZE_MAX
+# undef SIZE_MAX
+#endif])
+])
+
+dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
+dnl Remove this when we can assume autoconf >= 2.61.
+m4_ifdef([AC_COMPUTE_INT], [], [
+ AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
])
diff --git a/m4/stdint_h.m4 b/m4/stdint_h.m4
index 86da6d78..b8e3c6cc 100644
--- a/m4/stdint_h.m4
+++ b/m4/stdint_h.m4
@@ -1,5 +1,5 @@
-# stdint_h.m4 serial 6
-dnl Copyright (C) 1997-2004, 2006 Free Software Foundation, Inc.
+# stdint_h.m4 serial 8
+dnl Copyright (C) 1997-2004, 2006, 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -11,21 +11,16 @@ dnl From Paul Eggert.
AC_DEFUN([gl_AC_HEADER_STDINT_H],
[
- if test "OS/390" = "`uname`"
- then
- gl_cv_header_stdint_h=no
- else
- AC_CACHE_CHECK([for stdint.h], gl_cv_header_stdint_h,
- [AC_TRY_COMPILE(
- [#include <sys/types.h>
+ AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h],
+ [AC_TRY_COMPILE(
+ [#include <sys/types.h>
#include <stdint.h>],
- [uintmax_t i = (uintmax_t) -1; return !i;],
- gl_cv_header_stdint_h=yes,
- gl_cv_header_stdint_h=no)])
- if test $gl_cv_header_stdint_h = yes; then
- AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1,
- [Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
- and declares uintmax_t. ])
- fi
+ [uintmax_t i = (uintmax_t) -1; return !i;],
+ [gl_cv_header_stdint_h=yes],
+ [gl_cv_header_stdint_h=no])])
+ if test $gl_cv_header_stdint_h = yes; then
+ AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1],
+ [Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
+ and declares uintmax_t. ])
fi
])
diff --git a/m4/uintmax_t.m4 b/m4/uintmax_t.m4
index bf83ed74..03b51bcf 100644
--- a/m4/uintmax_t.m4
+++ b/m4/uintmax_t.m4
@@ -1,12 +1,12 @@
-# uintmax_t.m4 serial 9
-dnl Copyright (C) 1997-2004 Free Software Foundation, Inc.
+# uintmax_t.m4 serial 12
+dnl Copyright (C) 1997-2004, 2007-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Paul Eggert.
-AC_PREREQ(2.13)
+AC_PREREQ([2.13])
# Define uintmax_t to 'unsigned long' or 'unsigned long long'
# if it is not already defined in <stdint.h> or <inttypes.h>.
@@ -16,15 +16,15 @@ AC_DEFUN([gl_AC_TYPE_UINTMAX_T],
AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
AC_REQUIRE([gl_AC_HEADER_STDINT_H])
if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then
- AC_REQUIRE([gl_AC_TYPE_UNSIGNED_LONG_LONG])
- test $ac_cv_type_unsigned_long_long = yes \
+ AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
+ test $ac_cv_type_unsigned_long_long_int = yes \
&& ac_type='unsigned long long' \
|| ac_type='unsigned long'
- AC_DEFINE_UNQUOTED(uintmax_t, $ac_type,
+ AC_DEFINE_UNQUOTED([uintmax_t], [$ac_type],
[Define to unsigned long or unsigned long long
if <stdint.h> and <inttypes.h> don't define.])
else
- AC_DEFINE(HAVE_UINTMAX_T, 1,
+ AC_DEFINE([HAVE_UINTMAX_T], [1],
[Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>.])
fi
])
diff --git a/m4/visibility.m4 b/m4/visibility.m4
index 2ff6330a..077c4765 100644
--- a/m4/visibility.m4
+++ b/m4/visibility.m4
@@ -1,5 +1,5 @@
-# visibility.m4 serial 1 (gettext-0.15)
-dnl Copyright (C) 2005 Free Software Foundation, Inc.
+# visibility.m4 serial 3 (gettext-0.18)
+dnl Copyright (C) 2005, 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -26,18 +26,40 @@ AC_DEFUN([gl_VISIBILITY],
CFLAG_VISIBILITY=
HAVE_VISIBILITY=0
if test -n "$GCC"; then
+ dnl First, check whether -Werror can be added to the command line, or
+ dnl whether it leads to an error because of some other option that the
+ dnl user has put into $CC $CFLAGS $CPPFLAGS.
+ AC_MSG_CHECKING([whether the -Werror option is usable])
+ AC_CACHE_VAL([gl_cv_cc_vis_werror], [
+ gl_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -Werror"
+ AC_TRY_COMPILE([], [],
+ [gl_cv_cc_vis_werror=yes],
+ [gl_cv_cc_vis_werror=no])
+ CFLAGS="$gl_save_CFLAGS"])
+ AC_MSG_RESULT([$gl_cv_cc_vis_werror])
+ dnl Now check whether visibility declarations are supported.
AC_MSG_CHECKING([for simple visibility declarations])
- AC_CACHE_VAL(gl_cv_cc_visibility, [
+ AC_CACHE_VAL([gl_cv_cc_visibility], [
gl_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fvisibility=hidden"
+ dnl We use the option -Werror and a function dummyfunc, because on some
+ dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning
+ dnl "visibility attribute not supported in this configuration; ignored"
+ dnl at the first function definition in every compilation unit, and we
+ dnl don't want to use the option in this case.
+ if test $gl_cv_cc_vis_werror = yes; then
+ CFLAGS="$CFLAGS -Werror"
+ fi
AC_TRY_COMPILE(
[extern __attribute__((__visibility__("hidden"))) int hiddenvar;
extern __attribute__((__visibility__("default"))) int exportedvar;
extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
- extern __attribute__((__visibility__("default"))) int exportedfunc (void);],
+ extern __attribute__((__visibility__("default"))) int exportedfunc (void);
+ void dummyfunc (void) {}],
[],
- gl_cv_cc_visibility=yes,
- gl_cv_cc_visibility=no)
+ [gl_cv_cc_visibility=yes],
+ [gl_cv_cc_visibility=no])
CFLAGS="$gl_save_CFLAGS"])
AC_MSG_RESULT([$gl_cv_cc_visibility])
if test $gl_cv_cc_visibility = yes; then
diff --git a/m4/wchar_t.m4 b/m4/wchar_t.m4
index cde2129a..ed804e66 100644
--- a/m4/wchar_t.m4
+++ b/m4/wchar_t.m4
@@ -1,5 +1,5 @@
-# wchar_t.m4 serial 1 (gettext-0.12)
-dnl Copyright (C) 2002-2003 Free Software Foundation, Inc.
+# wchar_t.m4 serial 3 (gettext-0.18)
+dnl Copyright (C) 2002-2003, 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -10,11 +10,11 @@ dnl Prerequisite: AC_PROG_CC
AC_DEFUN([gt_TYPE_WCHAR_T],
[
- AC_CACHE_CHECK([for wchar_t], gt_cv_c_wchar_t,
+ AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t],
[AC_TRY_COMPILE([#include <stddef.h>
wchar_t foo = (wchar_t)'\0';], ,
- gt_cv_c_wchar_t=yes, gt_cv_c_wchar_t=no)])
+ [gt_cv_c_wchar_t=yes], [gt_cv_c_wchar_t=no])])
if test $gt_cv_c_wchar_t = yes; then
- AC_DEFINE(HAVE_WCHAR_T, 1, [Define if you have the 'wchar_t' type.])
+ AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.])
fi
])
diff --git a/m4/wint_t.m4 b/m4/wint_t.m4
index b8fff9c8..a6c7d15c 100644
--- a/m4/wint_t.m4
+++ b/m4/wint_t.m4
@@ -1,5 +1,5 @@
-# wint_t.m4 serial 1 (gettext-0.12)
-dnl Copyright (C) 2003 Free Software Foundation, Inc.
+# wint_t.m4 serial 4 (gettext-0.18)
+dnl Copyright (C) 2003, 2007-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -10,11 +10,19 @@ dnl Prerequisite: AC_PROG_CC
AC_DEFUN([gt_TYPE_WINT_T],
[
- AC_CACHE_CHECK([for wint_t], gt_cv_c_wint_t,
- [AC_TRY_COMPILE([#include <wchar.h>
+ AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t],
+ [AC_TRY_COMPILE([
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
wint_t foo = (wchar_t)'\0';], ,
- gt_cv_c_wint_t=yes, gt_cv_c_wint_t=no)])
+ [gt_cv_c_wint_t=yes], [gt_cv_c_wint_t=no])])
if test $gt_cv_c_wint_t = yes; then
- AC_DEFINE(HAVE_WINT_T, 1, [Define if you have the 'wint_t' type.])
+ AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.])
fi
])
diff --git a/m4/xsize.m4 b/m4/xsize.m4
index 85bb721e..b653693a 100644
--- a/m4/xsize.m4
+++ b/m4/xsize.m4
@@ -1,5 +1,5 @@
-# xsize.m4 serial 3
-dnl Copyright (C) 2003-2004 Free Software Foundation, Inc.
+# xsize.m4 serial 4
+dnl Copyright (C) 2003-2004, 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -9,5 +9,5 @@ AC_DEFUN([gl_XSIZE],
dnl Prerequisites of lib/xsize.h.
AC_REQUIRE([gl_SIZE_MAX])
AC_REQUIRE([AC_C_INLINE])
- AC_CHECK_HEADERS(stdint.h)
+ AC_CHECK_HEADERS([stdint.h])
])
diff --git a/main.c b/main.c
index 9df5869f..2324d9a0 100644
--- a/main.c
+++ b/main.c
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1986, 1988, 1989, 1991-2011 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-2012 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 2011
+#define UPDATE_YEAR 2012
#include "awk.h"
#include "getopt.h"
@@ -35,6 +35,8 @@
#define DEFAULT_PROFILE "awkprof.out" /* where to put profile */
#define DEFAULT_VARFILE "awkvars.out" /* where to put vars */
+#define DEFAULT_PREC 53
+#define DEFAULT_ROUNDMODE "N" /* round to nearest */
static const char *varfile = DEFAULT_VARFILE;
const char *command_file = NULL; /* debugger commands */
@@ -55,11 +57,10 @@ static void nostalgia(void) ATTRIBUTE_NORETURN;
static void version(void) ATTRIBUTE_NORETURN;
static void init_fds(void);
static void init_groupset(void);
-
static void save_argv(int, char **);
extern int debug_prog(INSTRUCTION *pc); /* debug.c */
-
+extern int init_debug(); /* debug.c */
/* These nodes store all the special variables AWK uses */
NODE *ARGC_node, *ARGIND_node, *ARGV_node, *BINMODE_node, *CONVFMT_node;
@@ -67,6 +68,7 @@ NODE *ENVIRON_node, *ERRNO_node, *FIELDWIDTHS_node, *FILENAME_node;
NODE *FNR_node, *FPAT_node, *FS_node, *IGNORECASE_node, *LINT_node;
NODE *NF_node, *NR_node, *OFMT_node, *OFS_node, *ORS_node, *PROCINFO_node;
NODE *RLENGTH_node, *RSTART_node, *RS_node, *RT_node, *SUBSEP_node;
+NODE *PREC_node, *ROUNDMODE_node;
NODE *TEXTDOMAIN_node;
NODE *_r; /* used as temporary in stack macros */
@@ -160,30 +162,31 @@ void (*lintfunc)(const char *mesg, ...) = warning;
static const struct option optab[] = {
{ "traditional", no_argument, NULL, 'c' },
- { "lint", optional_argument, NULL, 'L' },
+ { "lint", optional_argument, NULL, 'L' },
{ "lint-old", no_argument, NULL, 't' },
{ "optimize", no_argument, NULL, 'O' },
{ "posix", no_argument, NULL, 'P' },
{ "nostalgia", no_argument, & do_nostalgia, 1 },
{ "gen-pot", no_argument, NULL, 'g' },
- { "non-decimal-data", no_argument, NULL, 'n' },
- { "pretty-print", optional_argument, NULL, 'o' },
- { "profile", optional_argument, NULL, 'p' },
- { "debug", optional_argument, NULL, 'D' },
- { "copyright", no_argument, NULL, 'C' },
- { "field-separator", required_argument, NULL, 'F' },
- { "file", required_argument, NULL, 'f' },
+ { "non-decimal-data", no_argument, NULL, 'n' },
+ { "pretty-print", optional_argument, NULL, 'o' },
+ { "profile", optional_argument, NULL, 'p' },
+ { "debug", optional_argument, NULL, 'D' },
+ { "copyright", no_argument, NULL, 'C' },
+ { "field-separator", required_argument, NULL, 'F' },
+ { "file", required_argument, NULL, 'f' },
{ "re-interval", no_argument, NULL, 'r' },
- { "source", required_argument, NULL, 'e' },
- { "load", required_argument, NULL, 'l' },
- { "dump-variables", optional_argument, NULL, 'd' },
- { "assign", required_argument, NULL, 'v' },
- { "version", no_argument, NULL, 'V' },
- { "help", no_argument, NULL, 'h' },
- { "exec", required_argument, NULL, 'E' },
+ { "source", required_argument, NULL, 'e' },
+ { "load", required_argument, NULL, 'l' },
+ { "dump-variables", optional_argument, NULL, 'd' },
+ { "assign", required_argument, NULL, 'v' },
+ { "version", no_argument, NULL, 'V' },
+ { "help", no_argument, NULL, 'h' },
+ { "exec", required_argument, NULL, 'E' },
{ "use-lc-numeric", no_argument, & use_lc_numeric, 1 },
{ "characters-as-bytes", no_argument, & do_binary, 'b' },
{ "sandbox", no_argument, NULL, 'S' },
+ { "bignum", no_argument, NULL, 'M' },
#if defined(YYDEBUG) || defined(GAWKDEBUG)
{ "parsedebug", no_argument, NULL, 'Y' },
#endif
@@ -198,9 +201,8 @@ main(int argc, char **argv)
{
/*
* The + on the front tells GNU getopt not to rearrange argv.
- * Note: reserve -l for future use, for xgawk's -l option.
*/
- const char *optlist = "+F:f:v:W;m:bcCd::D::e:E:gh:l:L:nNo::Op::PrStVY";
+ const char *optlist = "+F:f:v:W;m:bcCd::D::e:E:gh:l:L:nNo::Op::MPrStVY";
int stopped_early = FALSE;
int old_optind;
int i;
@@ -291,6 +293,8 @@ main(int argc, char **argv)
/* init array handling. */
array_init();
+ output_fp = stdout;
+
/* we do error messages ourselves on invalid options */
opterr = FALSE;
@@ -442,6 +446,12 @@ main(int argc, char **argv)
set_prof_file(DEFAULT_PROFILE);
break;
+ case 'M':
+#ifdef HAVE_MPFR
+ do_flags |= DO_MPFR;
+#endif
+ break;
+
case 'P':
do_flags |= DO_POSIX;
break;
@@ -558,13 +568,30 @@ out:
}
#endif
+ if (do_debug) /* Need to register the debugger pre-exec hook before any other */
+ init_debug();
+
+#ifdef HAVE_MPFR
+ /* Set up MPFR defaults, and register pre-exec hook to process arithmetic opcodes */
+ if (do_mpfr)
+ init_mpfr(DEFAULT_PREC, DEFAULT_ROUNDMODE);
+#endif
+
/* load group set */
init_groupset();
/* initialize the null string */
Nnull_string = make_string("", 0);
- Nnull_string->numbr = 0.0;
- Nnull_string->flags = (MALLOC|STRCUR|STRING|NUMCUR|NUMBER);
+#ifdef HAVE_MPFR
+ if (do_mpfr) {
+ mpz_init(Nnull_string->mpg_i);
+ Nnull_string->flags = (MALLOC|STRCUR|STRING|MPZN|NUMCUR|NUMBER);
+ } else
+#endif
+ {
+ Nnull_string->numbr = 0.0;
+ Nnull_string->flags = (MALLOC|STRCUR|STRING|NUMCUR|NUMBER);
+ }
/*
* Tell the regex routines how they should work.
@@ -573,8 +600,6 @@ out:
*/
resetup();
- init_interpret();
-
/* Set up the special variables */
init_vars();
@@ -625,6 +650,9 @@ out:
optind++;
}
+ /* Select the interpreter routine */
+ init_interpret();
+
init_args(optind, argc,
do_posix ? argv[0] : myname,
argv);
@@ -756,6 +784,7 @@ usage(int exitval, FILE *fp)
fputs(_("\t-l library\t\t--load=library\n"), fp);
fputs(_("\t-L [fatal]\t\t--lint[=fatal]\n"), fp);
fputs(_("\t-n\t\t\t--non-decimal-data\n"), fp);
+ fputs(_("\t-M\t\t\t--bignum\n"), fp);
fputs(_("\t-N\t\t\t--use-lc-numeric\n"), fp);
fputs(_("\t-o[file]\t\t--pretty-print[=file]\n"), fp);
fputs(_("\t-O\t\t\t--optimize\n"), fp);
@@ -930,6 +959,7 @@ static const struct varinit varinit[] = {
{&FPAT_node, "FPAT", "[^[:space:]]+", 0, NULL, set_FPAT, FALSE, NON_STANDARD },
{&IGNORECASE_node, "IGNORECASE", NULL, 0, NULL, set_IGNORECASE, FALSE, NON_STANDARD },
{&LINT_node, "LINT", NULL, 0, NULL, set_LINT, FALSE, NON_STANDARD },
+{&PREC_node, "PREC", NULL, DEFAULT_PREC, NULL, set_PREC, FALSE, NON_STANDARD},
{&NF_node, "NF", NULL, -1, update_NF, set_NF, FALSE, 0 },
{&NR_node, "NR", NULL, 0, update_NR, set_NR, TRUE, 0 },
{&OFMT_node, "OFMT", "%.6g", 0, NULL, set_OFMT, TRUE, 0 },
@@ -937,6 +967,7 @@ static const struct varinit varinit[] = {
{&ORS_node, "ORS", "\n", 0, NULL, set_ORS, TRUE, 0 },
{NULL, "PROCINFO", NULL, 0, NULL, NULL, FALSE, NO_INSTALL | NON_STANDARD },
{&RLENGTH_node, "RLENGTH", NULL, 0, NULL, NULL, FALSE, 0 },
+{&ROUNDMODE_node, "ROUNDMODE", DEFAULT_ROUNDMODE, 0, NULL, set_ROUNDMODE, FALSE, NON_STANDARD },
{&RS_node, "RS", "\n", 0, NULL, set_RS, TRUE, 0 },
{&RSTART_node, "RSTART", NULL, 0, NULL, NULL, FALSE, 0 },
{&RT_node, "RT", "", 0, NULL, NULL, FALSE, NON_STANDARD },
@@ -957,8 +988,10 @@ init_vars()
if ((vp->flags & NO_INSTALL) != 0)
continue;
n = *(vp->spec) = install_symbol(estrdup(vp->name, strlen(vp->name)), Node_var);
- n->var_value = vp->strval == NULL ? make_number(vp->numval)
- : make_string(vp->strval, strlen(vp->strval));
+ if (vp->strval != NULL)
+ n->var_value = make_string(vp->strval, strlen(vp->strval));
+ else
+ n->var_value = make_number(vp->numval);
n->var_assign = (Func_ptr) vp->assign;
n->var_update = (Func_ptr) vp->update;
if (vp->do_assign)
@@ -1046,6 +1079,8 @@ load_procinfo()
{
#if defined (HAVE_GETGROUPS) && defined(NGROUPS_MAX) && NGROUPS_MAX > 0
int i;
+#endif
+#if (defined (HAVE_GETGROUPS) && defined(NGROUPS_MAX) && NGROUPS_MAX > 0) || defined(HAVE_MPFR)
char name[100];
#endif
AWKNUM value;
@@ -1055,6 +1090,15 @@ load_procinfo()
update_PROCINFO_str("version", VERSION);
update_PROCINFO_str("strftime", def_strftime_format);
+#ifdef HAVE_MPFR
+ sprintf(name, "GNU MPFR %s", mpfr_get_version());
+ update_PROCINFO_str("mpfr_version", name);
+ sprintf(name, "GNU MP %s", gmp_version);
+ update_PROCINFO_str("gmp_version", name);
+ update_PROCINFO_num("prec_max", MPFR_PREC_MAX);
+ update_PROCINFO_num("prec_min", MPFR_PREC_MIN);
+#endif
+
#ifdef GETPGRP_VOID
#define getpgrp_arg() /* nothing */
#else
@@ -1331,7 +1375,11 @@ nostalgia()
static void
version()
{
- printf("%s\n", version_string);
+ printf("%s", version_string);
+#ifdef HAVE_MPFR
+ printf(" (GNU MPFR %s, GNU MP %s)", mpfr_get_version(), gmp_version);
+#endif
+ printf("\n");
/*
* Per GNU coding standards, print copyright info,
* then exit successfully, do nothing else.
@@ -1384,17 +1432,20 @@ init_groupset()
*/
ngroups = getgroups(0, NULL);
#endif
- if (ngroups == -1)
- fatal(_("could not find groups: %s"), strerror(errno));
- else if (ngroups == 0)
+ /* If an error or no groups, just give up and get on with life. */
+ if (ngroups <= 0)
return;
/* fill in groups */
emalloc(groupset, GETGROUPS_T *, ngroups * sizeof(GETGROUPS_T), "init_groupset");
ngroups = getgroups(ngroups, groupset);
- if (ngroups == -1)
- fatal(_("could not find groups: %s"), strerror(errno));
+ /* same thing here, give up but keep going */
+ if (ngroups == -1) {
+ efree(groupset);
+ ngroups = 0;
+ groupset = NULL;
+ }
#endif
}
diff --git a/mbsupport.h b/mbsupport.h
index f647d788..1eb1a444 100644
--- a/mbsupport.h
+++ b/mbsupport.h
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 2004, 2005, 2011 the Free Software Foundation, Inc.
+ * Copyright (C) 2004, 2005, 2011, 2012 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -71,7 +71,7 @@
/* All this glop is for dfa.c. Bleah. */
-#ifndef DJGPP
+#ifndef __DJGPP__
#define wchar_t char
#endif
@@ -81,7 +81,9 @@
#define WEOF EOF
#define towupper toupper
#define towlower tolower
-#define btowc(x) (x)
+#ifndef __DJGPP__
+#define btowc(x) ((int)x)
+#endif
#define iswalnum isalnum
#define iswalpha isalpha
#define iswupper isupper
diff --git a/missing b/missing
index 1c8ff704..9a556482 100755
--- a/missing
+++ b/missing
@@ -1,10 +1,9 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
-scriptversion=2006-05-10.23
+scriptversion=2012-01-06.18; # UTC
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
-# Free Software Foundation, Inc.
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
@@ -18,9 +17,7 @@ scriptversion=2006-05-10.23
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -28,7 +25,7 @@ scriptversion=2006-05-10.23
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
- echo 1>&2 "Try \`$0 --help' for more information"
+ echo 1>&2 "Try '$0 --help' for more information"
exit 1
fi
@@ -36,7 +33,7 @@ run=:
sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
-# In the cases where this matters, `missing' is being run in the
+# In the cases where this matters, 'missing' is being run in the
# srcdir already.
if test -f configure.ac; then
configure_ac=configure.ac
@@ -67,7 +64,7 @@ case $1 in
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+Handle 'PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
error status if there is no known handling for PROGRAM.
Options:
@@ -76,18 +73,20 @@ Options:
--run try to run the given command, and emulate it if it fails
Supported PROGRAM values:
- aclocal touch file \`aclocal.m4'
- autoconf touch file \`configure'
- autoheader touch file \`config.h.in'
+ aclocal touch file 'aclocal.m4'
+ autoconf touch file 'configure'
+ autoheader touch file 'config.h.in'
autom4te touch the output file, or create a stub one
- automake touch all \`Makefile.in' files
- bison create \`y.tab.[ch]', if possible, from existing .[ch]
- flex create \`lex.yy.c', if possible, from existing .c
+ automake touch all 'Makefile.in' files
+ bison create 'y.tab.[ch]', if possible, from existing .[ch]
+ flex create 'lex.yy.c', if possible, from existing .c
help2man touch the output file
- lex create \`lex.yy.c', if possible, from existing .c
+ lex create 'lex.yy.c', if possible, from existing .c
makeinfo touch the output file
- tar try tar, gnutar, gtar, then tar without non-portable flags
- yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+ yacc create 'y.tab.[ch]', if possible, from existing .[ch]
+
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
Send bug reports to <bug-automake@gnu.org>."
exit $?
@@ -99,37 +98,35 @@ Send bug reports to <bug-automake@gnu.org>."
;;
-*)
- echo 1>&2 "$0: Unknown \`$1' option"
- echo 1>&2 "Try \`$0 --help' for more information"
+ echo 1>&2 "$0: Unknown '$1' option"
+ echo 1>&2 "Try '$0 --help' for more information"
exit 1
;;
esac
+# normalize program name to check for.
+program=`echo "$1" | sed '
+ s/^gnu-//; t
+ s/^gnu//; t
+ s/^g//; t'`
+
# Now exit if we have it, but it failed. Also exit now if we
# don't have it and --version was passed (most likely to detect
-# the program).
+# the program). This is about non-GNU programs, so use $1 not
+# $program.
case $1 in
- lex|yacc)
+ lex*|yacc*)
# Not GNU programs, they don't have --version.
;;
- tar)
- if test -n "$run"; then
- echo 1>&2 "ERROR: \`tar' requires --run"
- exit 1
- elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
- exit 1
- fi
- ;;
-
*)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
# Could not run --version or --help. This is probably someone
- # running `$TOOL --version' or `$TOOL --help' to check whether
+ # running '$TOOL --version' or '$TOOL --help' to check whether
# $TOOL exists and not knowing $TOOL uses missing.
exit 1
fi
@@ -138,30 +135,30 @@ esac
# If it does not exist, or fails to run (possibly an outdated version),
# try to emulate it.
-case $1 in
+case $program in
aclocal*)
echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`acinclude.m4' or \`${configure_ac}'. You might want
- to install the \`Automake' and \`Perl' packages. Grab them from
+WARNING: '$1' is $msg. You should only need it if
+ you modified 'acinclude.m4' or '${configure_ac}'. You might want
+ to install the Automake and Perl packages. Grab them from
any GNU archive site."
touch aclocal.m4
;;
- autoconf)
+ autoconf*)
echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`${configure_ac}'. You might want to install the
- \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
+WARNING: '$1' is $msg. You should only need it if
+ you modified '${configure_ac}'. You might want to install the
+ Autoconf and GNU m4 packages. Grab them from any GNU
archive site."
touch configure
;;
- autoheader)
+ autoheader*)
echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`acconfig.h' or \`${configure_ac}'. You might want
- to install the \`Autoconf' and \`GNU m4' packages. Grab them
+WARNING: '$1' is $msg. You should only need it if
+ you modified 'acconfig.h' or '${configure_ac}'. You might want
+ to install the Autoconf and GNU m4 packages. Grab them
from any GNU archive site."
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
test -z "$files" && files="config.h"
@@ -178,21 +175,21 @@ WARNING: \`$1' is $msg. You should only need it if
automake*)
echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
- You might want to install the \`Automake' and \`Perl' packages.
+WARNING: '$1' is $msg. You should only need it if
+ you modified 'Makefile.am', 'acinclude.m4' or '${configure_ac}'.
+ You might want to install the Automake and Perl packages.
Grab them from any GNU archive site."
find . -type f -name Makefile.am -print |
sed 's/\.am$/.in/' |
while read f; do touch "$f"; done
;;
- autom4te)
+ autom4te*)
echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
+WARNING: '$1' is needed, but is $msg.
You might have modified some files without having the
proper tools for further handling them.
- You can get \`$1' as part of \`Autoconf' from any GNU
+ You can get '$1' as part of Autoconf from any GNU
archive site."
file=`echo "$*" | sed -n "$sed_output"`
@@ -210,15 +207,15 @@ WARNING: \`$1' is needed, but is $msg.
fi
;;
- bison|yacc)
+ bison*|yacc*)
echo 1>&2 "\
-WARNING: \`$1' $msg. You should only need it if
- you modified a \`.y' file. You may need the \`Bison' package
+WARNING: '$1' $msg. You should only need it if
+ you modified a '.y' file. You may need the Bison package
in order for those modifications to take effect. You can get
- \`Bison' from any GNU archive site."
+ Bison from any GNU archive site."
rm -f y.tab.c y.tab.h
if test $# -ne 1; then
- eval LASTARG="\${$#}"
+ eval LASTARG=\${$#}
case $LASTARG in
*.y)
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
@@ -240,15 +237,15 @@ WARNING: \`$1' $msg. You should only need it if
fi
;;
- lex|flex)
+ lex*|flex*)
echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a \`.l' file. You may need the \`Flex' package
+WARNING: '$1' is $msg. You should only need it if
+ you modified a '.l' file. You may need the Flex package
in order for those modifications to take effect. You can get
- \`Flex' from any GNU archive site."
+ Flex from any GNU archive site."
rm -f lex.yy.c
if test $# -ne 1; then
- eval LASTARG="\${$#}"
+ eval LASTARG=\${$#}
case $LASTARG in
*.l)
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
@@ -263,12 +260,12 @@ WARNING: \`$1' is $msg. You should only need it if
fi
;;
- help2man)
+ help2man*)
echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
+WARNING: '$1' is $msg. You should only need it if
you modified a dependency of a manual page. You may need the
- \`Help2man' package in order for those modifications to take
- effect. You can get \`Help2man' from any GNU archive site."
+ Help2man package in order for those modifications to take
+ effect. You can get Help2man from any GNU archive site."
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
@@ -277,18 +274,18 @@ WARNING: \`$1' is $msg. You should only need it if
else
test -z "$file" || exec >$file
echo ".ab help2man is required to generate this page"
- exit 1
+ exit $?
fi
;;
- makeinfo)
+ makeinfo*)
echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a \`.texi' or \`.texinfo' file, or any other file
+WARNING: '$1' is $msg. You should only need it if
+ you modified a '.texi' or '.texinfo' file, or any other file
indirectly affecting the aspect of the manual. The spurious
- call might also be the consequence of using a buggy \`make' (AIX,
- DU, IRIX). You might want to install the \`Texinfo' package or
- the \`GNU make' package. Grab either from any GNU archive site."
+ call might also be the consequence of using a buggy 'make' (AIX,
+ DU, IRIX). You might want to install the Texinfo package or
+ the GNU make package. Grab either from any GNU archive site."
# The file to touch is that specified with -o ...
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
@@ -310,49 +307,14 @@ WARNING: \`$1' is $msg. You should only need it if
touch $file
;;
- tar)
- shift
-
- # We have already tried tar in the generic part.
- # Look for gnutar/gtar before invocation to avoid ugly error
- # messages.
- if (gnutar --version > /dev/null 2>&1); then
- gnutar "$@" && exit 0
- fi
- if (gtar --version > /dev/null 2>&1); then
- gtar "$@" && exit 0
- fi
- firstarg="$1"
- if shift; then
- case $firstarg in
- *o*)
- firstarg=`echo "$firstarg" | sed s/o//`
- tar "$firstarg" "$@" && exit 0
- ;;
- esac
- case $firstarg in
- *h*)
- firstarg=`echo "$firstarg" | sed s/h//`
- tar "$firstarg" "$@" && exit 0
- ;;
- esac
- fi
-
- echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
- You may want to install GNU tar or Free paxutils, or check the
- command line arguments."
- exit 1
- ;;
-
*)
echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
+WARNING: '$1' is needed, and is $msg.
You might have modified some files without having the
- proper tools for further handling them. Check the \`README' file,
+ proper tools for further handling them. Check the 'README' file,
it often tells you about the needed prerequisites for installing
this package. You may also peek at any GNU archive site, in case
- some other package would contain this missing \`$1' program."
+ some other package would contain this missing '$1' program."
exit 1
;;
esac
@@ -363,5 +325,6 @@ exit 0
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
# End:
diff --git a/missing_d/ChangeLog b/missing_d/ChangeLog
index 4a06aa60..ff29a926 100644
--- a/missing_d/ChangeLog
+++ b/missing_d/ChangeLog
@@ -1,3 +1,11 @@
+2012-05-04 Arnold D. Robbins <arnold@skeeve.com>
+
+ * snprintf.c [DJGPP]: Change to __DJGPP__.
+
+2012-03-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.0.1: Release tar ball made.
+
2011-11-02 Pat Rankin <r.pat.rankin@gmail.com>
* wcmisc.c: Make code be conditional upon corresponding !HAVE_WCxxx.
diff --git a/missing_d/gawkbool.h b/missing_d/gawkbool.h
new file mode 100644
index 00000000..c75a5a10
--- /dev/null
+++ b/missing_d/gawkbool.h
@@ -0,0 +1,40 @@
+/*
+ * gawkbool.h -- replacement definitions for bool.
+ */
+
+/*
+ * Copyright (C) 2012 the Free Software Foundation, Inc.
+ *
+ * This file is part of GAWK, the GNU implementation of the
+ * AWK Programming Language.
+ *
+ * GAWK is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GAWK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/* This stuff largely taken from the Autoconf doc. */
+
+#ifndef __bool_true_false_are_defined
+# ifndef HAVE__BOOL
+# ifdef __cplusplus
+typedef bool _Bool;
+# else
+# define _Bool signed char
+# endif
+# endif
+# define bool _Bool
+# define false 0
+# define true 1
+# define __bool_true_false_are_defined 1
+#endif
diff --git a/missing_d/snprintf.c b/missing_d/snprintf.c
index 254a8e0b..12e50925 100644
--- a/missing_d/snprintf.c
+++ b/missing_d/snprintf.c
@@ -86,10 +86,10 @@ safe_tmpfile (void)
if ((fd = mkstemp (tmpfilename)) < 0)
return NULL;
-#if ! defined(DJGPP) && ! defined(MSDOS) && ! defined(_MSC_VER) \
+#if ! defined(__DJGPP__) && ! defined(MSDOS) && ! defined(_MSC_VER) \
&& ! defined(_WIN32) && ! defined(__CRTRSXNT__) && ! defined(__EMX__) \
&& ! defined(__MINGW32__) && ! defined(__WIN32__)
- /* If not MS, unlink after opening. */
+ /* If not MS or OS/2, unlink after opening. */
unlink (tmpfilename);
free(tmpfilename);
tmpfilename = NULL;
diff --git a/mkinstalldirs b/mkinstalldirs
index ef7e16fd..55d537f8 100755
--- a/mkinstalldirs
+++ b/mkinstalldirs
@@ -1,7 +1,7 @@
#! /bin/sh
# mkinstalldirs --- make directory hierarchy
-scriptversion=2006-05-11.19
+scriptversion=2009-04-28.21; # UTC
# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
# Created: 1993-05-16
@@ -81,9 +81,9 @@ case $dirmode in
echo "mkdir -p -- $*"
exec mkdir -p -- "$@"
else
- # On NextStep and OpenStep, the `mkdir' command does not
+ # On NextStep and OpenStep, the 'mkdir' command does not
# recognize any option. It will interpret all options as
- # directories to create, and then abort because `.' already
+ # directories to create, and then abort because '.' already
# exists.
test -d ./-p && rmdir ./-p
test -d ./--version && rmdir ./--version
@@ -157,5 +157,6 @@ exit $errstatus
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
# End:
diff --git a/mpfr.c b/mpfr.c
new file mode 100644
index 00000000..b28c7206
--- /dev/null
+++ b/mpfr.c
@@ -0,0 +1,1620 @@
+/*
+ * mpfr.c - routines for arbitrary-precision number support in gawk.
+ */
+
+/*
+ * Copyright (C) 2012 the Free Software Foundation, Inc.
+ *
+ * This file is part of GAWK, the GNU implementation of the
+ * AWK Programming Language.
+ *
+ * GAWK is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GAWK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "awk.h"
+
+#ifdef HAVE_MPFR
+
+#if !defined(MPFR_VERSION_MAJOR) || MPFR_VERSION_MAJOR < 3
+typedef mp_exp_t mpfr_exp_t;
+#endif
+
+extern NODE **fmt_list; /* declared in eval.c */
+
+mpz_t mpzval; /* GMP integer type, used as temporary in few places */
+mpz_t MNR;
+mpz_t MFNR;
+int do_ieee_fmt; /* IEEE-754 floating-point emulation */
+mpfr_rnd_t ROUND_MODE;
+
+static mpfr_rnd_t get_rnd_mode(const char rmode);
+static NODE *mpg_force_number(NODE *n);
+static NODE *mpg_make_number(double);
+static NODE *mpg_format_val(const char *format, int index, NODE *s);
+static int mpg_interpret(INSTRUCTION **cp);
+
+static mpfr_exp_t min_exp = MPFR_EMIN_DEFAULT;
+static mpfr_exp_t max_exp = MPFR_EMAX_DEFAULT;
+
+/* temporaries used in bit ops */
+static NODE *_tz1;
+static NODE *_tz2;
+static mpz_t _mpz1;
+static mpz_t _mpz2;
+static mpz_ptr mpz1;
+static mpz_ptr mpz2;
+
+static NODE *get_bit_ops(const char *op);
+#define free_bit_ops() (DEREF(_tz1), DEREF(_tz2))
+
+/* temporary MPFR floats used to hold converted GMP integer operands */
+static mpfr_t _mpf_t1;
+static mpfr_t _mpf_t2;
+
+/*
+ * PRECISION_MIN is the precision used to initialize _mpf_t1 and _mpf_t2.
+ * 64 bits should be enough for exact conversion of most integers to floats.
+ */
+
+#define PRECISION_MIN 64
+
+/* mf = { _mpf_t1, _mpf_t2 } */
+static inline mpfr_ptr mpg_tofloat(mpfr_ptr mf, mpz_ptr mz);
+/* T = {t1, t2} */
+#define MP_FLOAT(T) is_mpg_integer(T) ? mpg_tofloat(_mpf_##T, (T)->mpg_i) : (T)->mpg_numbr
+
+
+/* init_mpfr --- set up MPFR related variables */
+
+void
+init_mpfr(mpfr_prec_t prec, const char *rmode)
+{
+ mpfr_set_default_prec(prec);
+ ROUND_MODE = get_rnd_mode(rmode[0]);
+ mpfr_set_default_rounding_mode(ROUND_MODE);
+ make_number = mpg_make_number;
+ str2number = mpg_force_number;
+ format_val = mpg_format_val;
+ cmp_numbers = mpg_cmp;
+
+ mpz_init(MNR);
+ mpz_init(MFNR);
+ do_ieee_fmt = FALSE;
+
+ mpz_init(_mpz1);
+ mpz_init(_mpz2);
+ mpfr_init2(_mpf_t1, PRECISION_MIN);
+ mpfr_init2(_mpf_t2, PRECISION_MIN);
+ mpz_init(mpzval);
+
+ register_exec_hook(mpg_interpret, 0);
+}
+
+/* mpg_node --- allocate a node to store MPFR float or GMP integer */
+
+NODE *
+mpg_node(unsigned int tp)
+{
+ NODE *r;
+ getnode(r);
+ r->type = Node_val;
+
+ if (tp == MPFN) {
+ /* Initialize, set precision to the default precision, and value to NaN */
+ mpfr_init(r->mpg_numbr);
+ r->flags = MPFN;
+ } else {
+ /* Initialize and set value to 0 */
+ mpz_init(r->mpg_i);
+ r->flags = MPZN;
+ }
+
+ r->valref = 1;
+ r->flags |= MALLOC|NUMBER|NUMCUR;
+ r->stptr = NULL;
+ r->stlen = 0;
+#if MBS_SUPPORT
+ r->wstptr = NULL;
+ r->wstlen = 0;
+#endif /* defined MBS_SUPPORT */
+ return r;
+}
+
+/*
+ * mpg_make_number --- make a arbitrary-precision number node
+ * and initialize with a C double
+ */
+
+static NODE *
+mpg_make_number(double x)
+{
+ NODE *r;
+ double ival;
+
+ if ((ival = double_to_int(x)) != x) {
+ int tval;
+ r = mpg_float();
+ tval = mpfr_set_d(r->mpg_numbr, x, ROUND_MODE);
+ IEEE_FMT(r->mpg_numbr, tval);
+ } else {
+ r = mpg_integer();
+ mpz_set_d(r->mpg_i, ival);
+ }
+ return r;
+}
+
+/* mpg_strtoui --- assign arbitrary-precision integral value from a string */
+
+int
+mpg_strtoui(mpz_ptr zi, char *str, size_t len, char **end, int base)
+{
+ char *s = str;
+ char *start;
+ int ret = -1;
+
+ /*
+ * mpz_set_str does not like leading 0x or 0X for hex (or 0 for octal)
+ * with a non-zero base argument.
+ */
+ if (base == 16 && len >= 2 && *s == '0' && (s[1] == 'x' || s[1] == 'X')) {
+ s += 2; len -= 2;
+ } else if (base == 8 && len >= 1 && *s == '0') {
+ s++; len--;
+ }
+ start = s;
+
+ while (len > 0) {
+ switch (*s) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ break;
+ case '8':
+ case '9':
+ if (base == 8)
+ goto done;
+ break;
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ if (base == 16)
+ break;
+ default:
+ goto done;
+ }
+ s++; len--;
+ }
+done:
+ if (s > start) {
+ char save = *s;
+ *s = '\0';
+ ret = mpz_set_str(zi, start, base);
+ *s = save;
+ }
+ if (end != NULL)
+ *end = s;
+ return ret;
+}
+
+
+/* mpg_maybe_float --- test if a string may contain arbitrary-precision float */
+
+static int
+mpg_maybe_float(const char *str, int use_locale)
+{
+ int dec_point = '.';
+ const char *s = str;
+
+#if defined(HAVE_LOCALE_H)
+ /*
+ * loc.decimal_point may not have been initialized yet,
+ * so double check it before using it.
+ */
+ if (use_locale && loc.decimal_point != NULL && loc.decimal_point[0] != '\0')
+ dec_point = loc.decimal_point[0]; /* XXX --- assumes one char */
+#endif
+
+ if (strlen(s) >= 3
+ && ( ( (s[0] == 'i' || s[0] == 'I')
+ && (s[1] == 'n' || s[1] == 'N')
+ && (s[2] == 'f' || s[2] == 'F'))
+ || ( (s[0] == 'n' || s[0] == 'N')
+ && (s[1] == 'a' || s[1] == 'A')
+ && (s[2] == 'n' || s[2] == 'N'))))
+ return TRUE;
+
+ for (; *s != '\0'; s++) {
+ if (*s == dec_point || *s == 'e' || *s == 'E')
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+/* mpg_zero --- initialize with arbitrary-precision integer(GMP) and set value to zero */
+
+static inline void
+mpg_zero(NODE *n)
+{
+ if (is_mpg_float(n)) {
+ mpfr_clear(n->mpg_numbr);
+ n->flags &= ~MPFN;
+ }
+ if (! is_mpg_integer(n)) {
+ mpz_init(n->mpg_i); /* this also sets its value to 0 */
+ n->flags |= MPZN;
+ } else
+ mpz_set_si(n->mpg_i, 0);
+}
+
+
+/* force_mpnum --- force a value to be a GMP integer or MPFR float */
+
+static int
+force_mpnum(NODE *n, int do_nondec, int use_locale)
+{
+ char *cp, *cpend, *ptr, *cp1;
+ char save;
+ int tval, base = 10;
+
+ if (n->stlen == 0) {
+ mpg_zero(n);
+ return FALSE;
+ }
+
+ cp = n->stptr;
+ cpend = n->stptr + n->stlen;
+ while (cp < cpend && isspace((unsigned char) *cp))
+ cp++;
+ if (cp == cpend) { /* only spaces */
+ mpg_zero(n);
+ return FALSE;
+ }
+
+ save = *cpend;
+ *cpend = '\0';
+
+ if (*cp == '+' || *cp == '-')
+ cp1 = cp + 1;
+ else
+ cp1 = cp;
+
+ if (do_nondec)
+ base = get_numbase(cp1, use_locale);
+
+ if (! mpg_maybe_float(cp1, use_locale)) {
+ mpg_zero(n);
+ errno = 0;
+ mpg_strtoui(n->mpg_i, cp1, cpend - cp1, & ptr, base);
+ if (*cp == '-')
+ mpz_neg(n->mpg_i, n->mpg_i);
+ goto done;
+ }
+
+ if (is_mpg_integer(n)) {
+ mpz_clear(n->mpg_i);
+ n->flags &= ~MPZN;
+ }
+
+ if (! is_mpg_float(n)) {
+ mpfr_init(n->mpg_numbr);
+ n->flags |= MPFN;
+ }
+
+ errno = 0;
+ tval = mpfr_strtofr(n->mpg_numbr, cp, & ptr, base, ROUND_MODE);
+ IEEE_FMT(n->mpg_numbr, tval);
+done:
+ /* trailing space is OK for NUMBER */
+ while (isspace((unsigned char) *ptr))
+ ptr++;
+ *cpend = save;
+ if (errno == 0 && ptr == cpend)
+ return TRUE;
+ errno = 0;
+ return FALSE;
+}
+
+/* mpg_force_number --- force a value to be a multiple-precision number */
+
+static NODE *
+mpg_force_number(NODE *n)
+{
+ unsigned int newflags = 0;
+
+ if (is_mpg_number(n) && (n->flags & NUMCUR))
+ return n;
+
+ if (n->flags & MAYBE_NUM) {
+ n->flags &= ~MAYBE_NUM;
+ newflags = NUMBER;
+ }
+
+ if (force_mpnum(n, (do_non_decimal_data && ! do_traditional), TRUE)) {
+ n->flags |= newflags;
+ n->flags |= NUMCUR;
+ }
+ return n;
+}
+
+/* mpg_format_val --- format a numeric value based on format */
+
+static NODE *
+mpg_format_val(const char *format, int index, NODE *s)
+{
+ NODE *dummy[2], *r;
+ unsigned int oflags;
+
+ /* create dummy node for a sole use of format_tree */
+ dummy[1] = s;
+ oflags = s->flags;
+
+ if (is_mpg_integer(s) || mpfr_integer_p(s->mpg_numbr)) {
+ /* integral value, use %d */
+ r = format_tree("%d", 2, dummy, 2);
+ s->stfmt = -1;
+ } else {
+ r = format_tree(format, fmt_list[index]->stlen, dummy, 2);
+ assert(r != NULL);
+ s->stfmt = (char) index;
+ }
+ s->flags = oflags;
+ s->stlen = r->stlen;
+ if ((s->flags & STRCUR) != 0)
+ efree(s->stptr);
+ s->stptr = r->stptr;
+ freenode(r); /* Do not unref(r)! We want to keep s->stptr == r->stpr. */
+
+ s->flags |= STRCUR;
+ free_wstr(s);
+ return s;
+}
+
+/* mpg_cmp --- compare two numbers */
+
+int
+mpg_cmp(const NODE *t1, const NODE *t2)
+{
+ /*
+ * For the purposes of sorting, NaN is considered greater than
+ * any other value, and all NaN values are considered equivalent and equal.
+ */
+
+ if (is_mpg_float(t1)) {
+ if (is_mpg_float(t2)) {
+ if (mpfr_nan_p(t1->mpg_numbr))
+ return ! mpfr_nan_p(t2->mpg_numbr);
+ if (mpfr_nan_p(t2->mpg_numbr))
+ return -1;
+ return mpfr_cmp(t1->mpg_numbr, t2->mpg_numbr);
+ }
+ if (mpfr_nan_p(t1->mpg_numbr))
+ return 1;
+ return mpfr_cmp_z(t1->mpg_numbr, t2->mpg_i);
+ } else if (is_mpg_float(t2)) {
+ int ret;
+ if (mpfr_nan_p(t2->mpg_numbr))
+ return -1;
+ ret = mpfr_cmp_z(t2->mpg_numbr, t1->mpg_i);
+ return ret > 0 ? -1 : (ret < 0);
+ } else if (is_mpg_integer(t1)) {
+ return mpz_cmp(t1->mpg_i, t2->mpg_i);
+ }
+
+ /* t1 and t2 are AWKNUMs */
+ return cmp_awknums(t1, t2);
+}
+
+
+/*
+ * mpg_update_var --- update NR or FNR.
+ * NR_node->var_value(mpz_t) = MNR(mpz_t) * LONG_MAX + NR(long)
+ */
+
+NODE *
+mpg_update_var(NODE *n)
+{
+ NODE *val = n->var_value;
+ long nr = 0;
+ mpz_ptr nq = 0;
+
+ if (n == NR_node) {
+ nr = NR;
+ nq = MNR;
+ } else if (n == FNR_node) {
+ nr = FNR;
+ nq = MFNR;
+ } else
+ cant_happen();
+
+ if (mpz_sgn(nq) == 0) {
+ /* Efficiency hack similar to that for AWKNUM */
+ if (is_mpg_float(val) || mpz_get_si(val->mpg_i) != nr) {
+ unref(n->var_value);
+ val = n->var_value = mpg_integer();
+ mpz_set_si(val->mpg_i, nr);
+ }
+ } else {
+ unref(n->var_value);
+ val = n->var_value = mpg_integer();
+ mpz_set_si(val->mpg_i, nr);
+ mpz_addmul_ui(val->mpg_i, nq, LONG_MAX); /* val->mpg_i += nq * LONG_MAX */
+ }
+ return val;
+}
+
+/* mpg_set_var --- set NR or FNR */
+
+long
+mpg_set_var(NODE *n)
+{
+ long nr = 0;
+ mpz_ptr nq = 0, r;
+ NODE *val = n->var_value;
+
+ if (n == NR_node)
+ nq = MNR;
+ else if (n == FNR_node)
+ nq = MFNR;
+ else
+ cant_happen();
+
+ if (is_mpg_integer(val))
+ r = val->mpg_i;
+ else {
+ /* convert float to integer */
+ mpfr_get_z(mpzval, val->mpg_numbr, MPFR_RNDZ);
+ r = mpzval;
+ }
+ nr = mpz_fdiv_q_ui(nq, r, LONG_MAX); /* nq (MNR or MFNR) is quotient */
+ return nr; /* remainder (NR or FNR) */
+}
+
+/* set_PREC --- update MPFR PRECISION related variables when PREC assigned to */
+
+void
+set_PREC()
+{
+ long prec = 0;
+ NODE *val;
+ static const struct ieee_fmt {
+ const char *name;
+ mpfr_prec_t precision;
+ mpfr_exp_t emax;
+ mpfr_exp_t emin;
+ } ieee_fmts[] = {
+{ "half", 11, 16, -23 }, /* binary16 */
+{ "single", 24, 128, -148 }, /* binary32 */
+{ "double", 53, 1024, -1073 }, /* binary64 */
+{ "quad", 113, 16384, -16493 }, /* binary128 */
+{ "oct", 237, 262144, -262377 }, /* binary256, not in the IEEE 754-2008 standard */
+
+ /*
+ * For any bitwidth = 32 * k ( k >= 4),
+ * precision = 13 + bitwidth - int(4 * log2(bitwidth))
+ * emax = 1 << bitwidth - precision - 1
+ * emin = 4 - emax - precision
+ */
+ };
+
+ if (! do_mpfr)
+ return;
+
+ val = PREC_node->var_value;
+ if (val->flags & MAYBE_NUM)
+ force_number(val);
+
+ if ((val->flags & (STRING|NUMBER)) == STRING) {
+ int i, j;
+
+ /* emulate IEEE-754 binary format */
+
+ for (i = 0, j = sizeof(ieee_fmts)/sizeof(ieee_fmts[0]); i < j; i++) {
+ if (strcasecmp(ieee_fmts[i].name, val->stptr) == 0)
+ break;
+ }
+
+ if (i < j) {
+ prec = ieee_fmts[i].precision;
+
+ /*
+ * We *DO NOT* change the MPFR exponent range using
+ * mpfr_set_{emin, emax} here. See format_ieee() for details.
+ */
+ max_exp = ieee_fmts[i].emax;
+ min_exp = ieee_fmts[i].emin;
+
+ do_ieee_fmt = TRUE;
+ }
+ }
+
+ if (prec <= 0) {
+ force_number(val);
+ prec = get_number_si(val);
+ if (prec < MPFR_PREC_MIN || prec > MPFR_PREC_MAX) {
+ force_string(val);
+ warning(_("PREC value `%.*s' is invalid"), (int) val->stlen, val->stptr);
+ prec = 0;
+ } else
+ do_ieee_fmt = FALSE;
+ }
+
+ if (prec > 0)
+ mpfr_set_default_prec(prec);
+}
+
+
+/* get_rnd_mode --- convert string to MPFR rounding mode */
+
+static mpfr_rnd_t
+get_rnd_mode(const char rmode)
+{
+ switch (rmode) {
+ case 'N':
+ case 'n':
+ return MPFR_RNDN; /* round to nearest (IEEE-754 roundTiesToEven) */
+ case 'Z':
+ case 'z':
+ return MPFR_RNDZ; /* round toward zero (IEEE-754 roundTowardZero) */
+ case 'U':
+ case 'u':
+ return MPFR_RNDU; /* round toward plus infinity (IEEE-754 roundTowardPositive) */
+ case 'D':
+ case 'd':
+ return MPFR_RNDD; /* round toward minus infinity (IEEE-754 roundTowardNegative) */
+#if defined(MPFR_VERSION_MAJOR) && MPFR_VERSION_MAJOR > 2
+ case 'A':
+ case 'a':
+ return MPFR_RNDA; /* round away from zero (IEEE-754 roundTiesToAway) */
+#endif
+ default:
+ break;
+ }
+ return -1;
+}
+
+/*
+ * set_ROUNDMODE --- update MPFR rounding mode related variables
+ * when ROUNDMODE assigned to
+ */
+
+void
+set_ROUNDMODE()
+{
+ if (do_mpfr) {
+ mpfr_rnd_t rndm = -1;
+ NODE *n;
+ n = force_string(ROUNDMODE_node->var_value);
+ if (n->stlen == 1)
+ rndm = get_rnd_mode(n->stptr[0]);
+ if (rndm != -1) {
+ mpfr_set_default_rounding_mode(rndm);
+ ROUND_MODE = rndm;
+ } else
+ warning(_("RNDMODE value `%.*s' is invalid"), (int) n->stlen, n->stptr);
+ }
+}
+
+
+/* format_ieee --- make sure a number follows IEEE-754 floating-point standard */
+
+int
+format_ieee(mpfr_ptr x, int tval)
+{
+ /*
+ * The MPFR doc says that it's our responsibility to make sure all numbers
+ * including those previously created are in range after we've changed the
+ * exponent range. Most MPFR operations and functions require
+ * the input arguments to have exponents within the current exponent range.
+ * Any argument outside the range results in a MPFR assertion failure
+ * like this:
+ *
+ * $ gawk -M 'BEGIN { x=1.0e-10000; print x+0; PREC="double"; print x+0}'
+ * 1e-10000
+ * init2.c:52: MPFR assertion failed ....
+ *
+ * A "naive" approach would be to keep track of the ternary state and
+ * the rounding mode for each number, and make sure it is in the current
+ * exponent range (using mpfr_check_range) before using it in an
+ * operation or function. Instead, we adopt the following strategy.
+ *
+ * When gawk starts, the exponent range is the MPFR default
+ * [MPFR_EMIN_DEFAULT, MPFR_EMAX_DEFAULT]. Any number that gawk
+ * creates must have exponent in this range (excluding infinities, NaNs and zeros).
+ * Each MPFR operation or function is performed with this default exponent
+ * range.
+ *
+ * When emulating IEEE-754 format, the exponents are *temporarily* changed,
+ * mpfr_check_range is called to make sure the number is in the new range,
+ * and mpfr_subnormalize is used to round following the rules of subnormal
+ * arithmetic. The exponent range is then *restored* to the original value
+ * [MPFR_EMIN_DEFAULT, MPFR_EMAX_DEFAULT].
+ */
+
+ (void) mpfr_set_emin(min_exp);
+ (void) mpfr_set_emax(max_exp);
+ tval = mpfr_check_range(x, tval, ROUND_MODE);
+ tval = mpfr_subnormalize(x, tval, ROUND_MODE);
+ (void) mpfr_set_emin(MPFR_EMIN_DEFAULT);
+ (void) mpfr_set_emax(MPFR_EMAX_DEFAULT);
+ return tval;
+}
+
+
+/* do_mpfr_atan2 --- do the atan2 function */
+
+NODE *
+do_mpfr_atan2(int nargs)
+{
+ NODE *t1, *t2, *res;
+ mpfr_ptr p1, p2;
+ int tval;
+
+ t2 = POP_SCALAR();
+ t1 = POP_SCALAR();
+
+ if (do_lint) {
+ if ((t1->flags & (NUMCUR|NUMBER)) == 0)
+ lintwarn(_("atan2: received non-numeric first argument"));
+ if ((t2->flags & (NUMCUR|NUMBER)) == 0)
+ lintwarn(_("atan2: received non-numeric second argument"));
+ }
+ force_number(t1);
+ force_number(t2);
+
+ p1 = MP_FLOAT(t1);
+ p2 = MP_FLOAT(t2);
+ res = mpg_float();
+ /* See MPFR documentation for handling of special values like +inf as an argument */
+ tval = mpfr_atan2(res->mpg_numbr, p1, p2, ROUND_MODE);
+ IEEE_FMT(res->mpg_numbr, tval);
+
+ DEREF(t1);
+ DEREF(t2);
+ return res;
+}
+
+
+#define SPEC_MATH(X) \
+NODE *t1, *res; \
+mpfr_ptr p1; \
+int tval; \
+t1 = POP_SCALAR(); \
+if (do_lint && (t1->flags & (NUMCUR|NUMBER)) == 0) \
+ lintwarn(_("%s: received non-numeric argument"), #X); \
+force_number(t1); \
+p1 = MP_FLOAT(t1); \
+res = mpg_float(); \
+tval = mpfr_##X(res->mpg_numbr, p1, ROUND_MODE); \
+IEEE_FMT(res->mpg_numbr, tval); \
+DEREF(t1); \
+return res
+
+
+/* do_mpfr_sin --- do the sin function */
+
+NODE *
+do_mpfr_sin(int nargs)
+{
+ SPEC_MATH(sin);
+}
+
+/* do_mpfr_cos --- do the cos function */
+
+NODE *
+do_mpfr_cos(int nargs)
+{
+ SPEC_MATH(cos);
+}
+
+/* do_mpfr_exp --- exponential function */
+
+NODE *
+do_mpfr_exp(int nargs)
+{
+ SPEC_MATH(exp);
+}
+
+/* do_mpfr_log --- the log function */
+
+NODE *
+do_mpfr_log(int nargs)
+{
+ SPEC_MATH(log);
+}
+
+/* do_mpfr_sqrt --- do the sqrt function */
+
+NODE *
+do_mpfr_sqrt(int nargs)
+{
+ SPEC_MATH(sqrt);
+}
+
+/* do_mpfr_int --- convert double to int for awk */
+
+NODE *
+do_mpfr_int(int nargs)
+{
+ NODE *tmp, *r;
+
+ tmp = POP_SCALAR();
+ if (do_lint && (tmp->flags & (NUMCUR|NUMBER)) == 0)
+ lintwarn(_("int: received non-numeric argument"));
+ force_number(tmp);
+
+ if (is_mpg_integer(tmp)) {
+ r = mpg_integer();
+ mpz_set(r->mpg_i, tmp->mpg_i);
+ } else {
+ if (! mpfr_number_p(tmp->mpg_numbr)) {
+ /* [+-]inf or NaN */
+ return tmp;
+ }
+
+ r = mpg_integer();
+ mpfr_get_z(r->mpg_i, tmp->mpg_numbr, MPFR_RNDZ);
+ }
+
+ DEREF(tmp);
+ return r;
+}
+
+/* do_mpfr_compl --- perform a ~ operation */
+
+NODE *
+do_mpfr_compl(int nargs)
+{
+ NODE *tmp, *r;
+ mpz_ptr zptr;
+
+ tmp = POP_SCALAR();
+ if (do_lint && (tmp->flags & (NUMCUR|NUMBER)) == 0)
+ lintwarn(_("compl: received non-numeric argument"));
+
+ force_number(tmp);
+ if (is_mpg_float(tmp)) {
+ mpfr_ptr p = tmp->mpg_numbr;
+
+ if (! mpfr_number_p(p)) {
+ /* [+-]inf or NaN */
+ return tmp;
+ }
+ if (do_lint) {
+ if (mpfr_sgn(p) < 0)
+ lintwarn("%s",
+ mpg_fmt(_("compl(%Rg): negative value will give strange results"), p)
+ );
+ if (! mpfr_integer_p(p))
+ lintwarn("%s",
+ mpg_fmt(_("comp(%Rg): fractional value will be truncated"), p)
+ );
+ }
+
+ mpfr_get_z(mpzval, p, MPFR_RNDZ); /* float to integer conversion */
+ zptr = mpzval;
+ } else {
+ /* (tmp->flags & MPZN) != 0 */
+ zptr = tmp->mpg_i;
+ if (do_lint) {
+ if (mpz_sgn(zptr) < 0)
+ lintwarn("%s",
+ mpg_fmt(_("cmpl(%Zd): negative values will give strange results"), zptr)
+ );
+ }
+ }
+
+ r = mpg_integer();
+ mpz_com(r->mpg_i, zptr);
+ DEREF(tmp);
+ return r;
+}
+
+
+/*
+ * get_bit_ops --- get the numeric operands of a binary function.
+ * Returns a copy of the operand if either is inf or nan. Otherwise
+ * each operand is converted to an integer if necessary, and
+ * the results are placed in the variables mpz1 and mpz2.
+ */
+
+static NODE *
+get_bit_ops(const char *op)
+{
+ _tz2 = POP_SCALAR();
+ _tz1 = POP_SCALAR();
+
+ if (do_lint) {
+ if ((_tz1->flags & (NUMCUR|NUMBER)) == 0)
+ lintwarn(_("%s: received non-numeric first argument"), op);
+ if ((_tz2->flags & (NUMCUR|NUMBER)) == 0)
+ lintwarn(_("%s: received non-numeric second argument"), op);
+ }
+
+ force_number(_tz1);
+ force_number(_tz2);
+
+ if (is_mpg_float(_tz1)) {
+ mpfr_ptr left = _tz1->mpg_numbr;
+ if (! mpfr_number_p(left)) {
+ /* inf or NaN */
+ NODE *res;
+ res = mpg_float();
+ mpfr_set(res->mpg_numbr, _tz1->mpg_numbr, ROUND_MODE);
+ return res;
+ }
+
+ if (do_lint) {
+ if (mpfr_sgn(left) < 0)
+ lintwarn("%s",
+ mpg_fmt(_("%s(%Rg, ..): negative values will give strange results"),
+ op, left)
+ );
+ if (! mpfr_integer_p(left))
+ lintwarn("%s",
+ mpg_fmt(_("%s(%Rg, ..): fractional values will be truncated"),
+ op, left)
+ );
+ }
+
+ mpfr_get_z(_mpz1, left, MPFR_RNDZ); /* float to integer conversion */
+ mpz1 = _mpz1;
+ } else {
+ /* (_tz1->flags & MPZN) != 0 */
+ mpz1 = _tz1->mpg_i;
+ if (do_lint) {
+ if (mpz_sgn(mpz1) < 0)
+ lintwarn("%s",
+ mpg_fmt(_("%s(%Zd, ..): negative values will give strange results"),
+ op, mpz1)
+ );
+ }
+ }
+
+ if (is_mpg_float(_tz2)) {
+ mpfr_ptr right = _tz2->mpg_numbr;
+ if (! mpfr_number_p(right)) {
+ /* inf or NaN */
+ NODE *res;
+ res = mpg_float();
+ mpfr_set(res->mpg_numbr, _tz2->mpg_numbr, ROUND_MODE);
+ return res;
+ }
+
+ if (do_lint) {
+ if (mpfr_sgn(right) < 0)
+ lintwarn("%s",
+ mpg_fmt(_("%s(.., %Rg): negative values will give strange results"),
+ op, right)
+ );
+ if (! mpfr_integer_p(right))
+ lintwarn("%s",
+ mpg_fmt(_("%s(.., %Rg): fractional values will be truncated"),
+ op, right)
+ );
+ }
+
+ mpfr_get_z(_mpz2, right, MPFR_RNDZ); /* float to integer conversion */
+ mpz2 = _mpz2;
+ } else {
+ /* (_tz2->flags & MPZN) != 0 */
+ mpz2 = _tz2->mpg_i;
+ if (do_lint) {
+ if (mpz_sgn(mpz2) < 0)
+ lintwarn("%s",
+ mpg_fmt(_("%s(.., %Zd): negative values will give strange results"),
+ op, mpz2)
+ );
+ }
+ }
+
+ return NULL;
+}
+
+/* do_mpfr_lshift --- perform a << operation */
+
+NODE *
+do_mpfr_lshift(int nargs)
+{
+ NODE *res;
+ unsigned long shift;
+
+ if ((res = get_bit_ops("lshift")) == NULL) {
+
+ /*
+ * mpz_get_ui: If op is too big to fit an unsigned long then just
+ * the least significant bits that do fit are returned.
+ * The sign of op is ignored, only the absolute value is used.
+ */
+
+ shift = mpz_get_ui(mpz2); /* GMP integer => unsigned long conversion */
+ res = mpg_integer();
+ mpz_mul_2exp(res->mpg_i, mpz1, shift); /* res = mpz1 * 2^shift */
+ }
+ free_bit_ops();
+ return res;
+}
+
+/* do_mpfr_rshift --- perform a >> operation */
+
+NODE *
+do_mpfr_rhift(int nargs)
+{
+ NODE *res;
+ unsigned long shift;
+
+ if ((res = get_bit_ops("rshift")) == NULL) {
+ /*
+ * mpz_get_ui: If op is too big to fit an unsigned long then just
+ * the least significant bits that do fit are returned.
+ * The sign of op is ignored, only the absolute value is used.
+ */
+
+ shift = mpz_get_ui(mpz2); /* GMP integer => unsigned long conversion */
+ res = mpg_integer();
+ mpz_fdiv_q_2exp(res->mpg_i, mpz1, shift); /* res = mpz1 / 2^shift, round towards inf */
+ }
+ free_bit_ops();
+ return res;
+}
+
+/* do_mpfr_and --- perform an & operation */
+
+NODE *
+do_mpfr_and(int nargs)
+{
+ NODE *res;
+
+ if ((res = get_bit_ops("and")) == NULL) {
+ res = mpg_integer();
+ mpz_and(res->mpg_i, mpz1, mpz2);
+ }
+ free_bit_ops();
+ return res;
+}
+
+/* do_mpfr_or --- perform an | operation */
+
+NODE *
+do_mpfr_or(int nargs)
+{
+ NODE *res;
+
+ if ((res = get_bit_ops("or")) == NULL) {
+ res = mpg_integer();
+ mpz_ior(res->mpg_i, mpz1, mpz2);
+ }
+ free_bit_ops();
+ return res;
+}
+
+/* do_mpfr_strtonum --- the strtonum function */
+
+NODE *
+do_mpfr_strtonum(int nargs)
+{
+ NODE *tmp, *r;
+
+ tmp = POP_SCALAR();
+ if ((tmp->flags & (NUMBER|NUMCUR)) == 0) {
+ r = mpg_integer(); /* will be changed to MPFR float if necessary in force_mpnum() */
+ r->stptr = tmp->stptr;
+ r->stlen = tmp->stlen;
+ force_mpnum(r, TRUE, use_lc_numeric);
+ r->stptr = NULL;
+ r->stlen = 0;
+ } else {
+ (void) force_number(tmp);
+ if (is_mpg_float(tmp)) {
+ int tval;
+ r = mpg_float();
+ tval = mpfr_set(r->mpg_numbr, tmp->mpg_numbr, ROUND_MODE);
+ IEEE_FMT(r->mpg_numbr, tval);
+ } else {
+ r = mpg_integer();
+ mpz_set(r->mpg_i, tmp->mpg_i);
+ }
+ }
+
+ DEREF(tmp);
+ return r;
+}
+
+/* do_mpfr_xor --- perform an ^ operation */
+
+NODE *
+do_mpfr_xor(int nargs)
+{
+ NODE *res;
+
+ if ((res = get_bit_ops("xor")) == NULL) {
+ res = mpg_integer();
+ mpz_xor(res->mpg_i, mpz1, mpz2);
+ }
+ free_bit_ops();
+ return res;
+}
+
+
+static int firstrand = TRUE;
+static gmp_randstate_t state;
+static mpz_t seed; /* current seed */
+
+/* do_mpfr_rand --- do the rand function */
+
+NODE *
+do_mpfr_rand(int nargs ATTRIBUTE_UNUSED)
+{
+ NODE *res;
+ int tval;
+
+ if (firstrand) {
+#if 0
+ /* Choose the default algorithm */
+ gmp_randinit_default(state);
+#endif
+ /*
+ * Choose a specific (Mersenne Twister) algorithm in case the default
+ * changes in the future.
+ */
+
+ gmp_randinit_mt(state);
+
+ mpz_init(seed);
+ mpz_set_ui(seed, 1);
+ /* seed state */
+ gmp_randseed(state, seed);
+ firstrand = FALSE;
+ }
+ res = mpg_float();
+ tval = mpfr_urandomb(res->mpg_numbr, state);
+ IEEE_FMT(res->mpg_numbr, tval);
+ return res;
+}
+
+
+/* do_mpfr_srand --- seed the random number generator */
+
+NODE *
+do_mpfr_srand(int nargs)
+{
+ NODE *res;
+
+ if (firstrand) {
+#if 0
+ /* Choose the default algorithm */
+ gmp_randinit_default(state);
+#endif
+ /*
+ * Choose a specific algorithm (Mersenne Twister) in case default
+ * changes in the future.
+ */
+
+ gmp_randinit_mt(state);
+
+ mpz_init(seed);
+ mpz_set_ui(seed, 1);
+ /* No need to seed state, will change it below */
+ firstrand = FALSE;
+ }
+
+ res = mpg_integer();
+ mpz_set(res->mpg_i, seed); /* previous seed */
+
+ if (nargs == 0)
+ mpz_set_ui(seed, (unsigned long) time((time_t *) 0));
+ else {
+ NODE *tmp;
+ tmp = POP_SCALAR();
+ if (do_lint && (tmp->flags & (NUMCUR|NUMBER)) == 0)
+ lintwarn(_("srand: received non-numeric argument"));
+ force_number(tmp);
+ if (is_mpg_float(tmp))
+ mpfr_get_z(seed, tmp->mpg_numbr, MPFR_RNDZ);
+ else /* MP integer */
+ mpz_set(seed, tmp->mpg_i);
+ DEREF(tmp);
+ }
+
+ gmp_randseed(state, seed);
+ return res;
+}
+
+/*
+ * mpg_tofloat --- convert an arbitrary-precision integer operand to
+ * a float without loss of precision. It is assumed that the
+ * MPFR variable has already been initialized.
+ */
+
+static inline mpfr_ptr
+mpg_tofloat(mpfr_ptr mf, mpz_ptr mz)
+{
+ size_t prec;
+
+ /*
+ * When implicitely converting a GMP integer operand to a MPFR float, use
+ * a precision sufficiently large to hold the converted value exactly.
+ *
+ * $ ./gawk -M 'BEGIN { print 13 % 2 }'
+ * 1
+ * If the user-specified precision is used to convert the integer 13 to a
+ * float, one will get:
+ * $ ./gawk -M 'BEGIN { PREC=2; print 13 % 2.0 }'
+ * 0
+ */
+
+ prec = mpz_sizeinbase(mz, 2); /* most significant 1 bit position starting at 1 */
+ if (prec > PRECISION_MIN) {
+ prec -= (size_t) mpz_scan1(mz, 0); /* least significant 1 bit index starting at 0 */
+ if (prec > MPFR_PREC_MAX)
+ prec = MPFR_PREC_MAX;
+ if (prec > PRECISION_MIN)
+ mpfr_set_prec(mf, prec);
+ }
+
+ mpfr_set_z(mf, mz, ROUND_MODE);
+ return mf;
+}
+
+
+/* mpg_add --- add arbitrary-precision numbers */
+
+static NODE *
+mpg_add(NODE *t1, NODE *t2)
+{
+ NODE *r;
+ int tval;
+
+ if (is_mpg_integer(t1) && is_mpg_integer(t2)) {
+ r = mpg_integer();
+ mpz_add(r->mpg_i, t1->mpg_i, t2->mpg_i);
+ } else {
+ r = mpg_float();
+ if (is_mpg_integer(t2))
+ tval = mpfr_add_z(r->mpg_numbr, t1->mpg_numbr, t2->mpg_i, ROUND_MODE);
+ else if (is_mpg_integer(t1))
+ tval = mpfr_add_z(r->mpg_numbr, t2->mpg_numbr, t1->mpg_i, ROUND_MODE);
+ else
+ tval = mpfr_add(r->mpg_numbr, t1->mpg_numbr, t2->mpg_numbr, ROUND_MODE);
+ IEEE_FMT(r->mpg_numbr, tval);
+ }
+ return r;
+}
+
+/* mpg_sub --- subtract arbitrary-precision numbers */
+
+static NODE *
+mpg_sub(NODE *t1, NODE *t2)
+{
+ NODE *r;
+ int tval;
+
+ if (is_mpg_integer(t1) && is_mpg_integer(t2)) {
+ r = mpg_integer();
+ mpz_sub(r->mpg_i, t1->mpg_i, t2->mpg_i);
+ } else {
+ r = mpg_float();
+ if (is_mpg_integer(t2))
+ tval = mpfr_sub_z(r->mpg_numbr, t1->mpg_numbr, t2->mpg_i, ROUND_MODE);
+ else if (is_mpg_integer(t1)) {
+#if (!defined(MPFR_VERSION) || (MPFR_VERSION < MPFR_VERSION_NUM(3,1,0)))
+ NODE *tmp = t1;
+ t1 = t2;
+ t2 = tmp;
+ tval = mpfr_sub_z(r->mpg_numbr, t1->mpg_numbr, t2->mpg_i, ROUND_MODE);
+ tval = mpfr_neg(r->mpg_numbr, r->mpg_numbr, ROUND_MODE);
+ t2 = t1;
+ t1 = tmp;
+#else
+ tval = mpfr_z_sub(r->mpg_numbr, t1->mpg_i, t2->mpg_numbr, ROUND_MODE);
+#endif
+ } else
+ tval = mpfr_sub(r->mpg_numbr, t1->mpg_numbr, t2->mpg_numbr, ROUND_MODE);
+ IEEE_FMT(r->mpg_numbr, tval);
+ }
+ return r;
+}
+
+/* mpg_mul --- multiply arbitrary-precision numbers */
+
+static NODE *
+mpg_mul(NODE *t1, NODE *t2)
+{
+ NODE *r;
+ int tval;
+
+ if (is_mpg_integer(t1) && is_mpg_integer(t2)) {
+ r = mpg_integer();
+ mpz_mul(r->mpg_i, t1->mpg_i, t2->mpg_i);
+ } else {
+ r = mpg_float();
+ if (is_mpg_integer(t2))
+ tval = mpfr_mul_z(r->mpg_numbr, t1->mpg_numbr, t2->mpg_i, ROUND_MODE);
+ else if (is_mpg_integer(t1))
+ tval = mpfr_mul_z(r->mpg_numbr, t2->mpg_numbr, t1->mpg_i, ROUND_MODE);
+ else
+ tval = mpfr_mul(r->mpg_numbr, t1->mpg_numbr, t2->mpg_numbr, ROUND_MODE);
+ IEEE_FMT(r->mpg_numbr, tval);
+ }
+ return r;
+}
+
+
+/* mpg_pow --- exponentiation involving arbitrary-precision numbers */
+
+static NODE *
+mpg_pow(NODE *t1, NODE *t2)
+{
+ NODE *r;
+ int tval;
+
+ if (is_mpg_integer(t1) && is_mpg_integer(t2)) {
+ if (mpz_sgn(t2->mpg_i) >= 0 && mpz_fits_ulong_p(t2->mpg_i)) {
+ r = mpg_integer();
+ mpz_pow_ui(r->mpg_i, t1->mpg_i, mpz_get_ui(t2->mpg_i));
+ } else {
+ mpfr_ptr p1, p2;
+ p1 = MP_FLOAT(t1);
+ p2 = MP_FLOAT(t2);
+ r = mpg_float();
+ tval = mpfr_pow(r->mpg_numbr, p1, p2, ROUND_MODE);
+ IEEE_FMT(r->mpg_numbr, tval);
+ }
+ } else {
+ r = mpg_float();
+ if (is_mpg_integer(t2))
+ tval = mpfr_pow_z(r->mpg_numbr, t1->mpg_numbr, t2->mpg_i, ROUND_MODE);
+ else {
+ mpfr_ptr p1;
+ p1 = MP_FLOAT(t1);
+ tval = mpfr_pow(r->mpg_numbr, p1, t2->mpg_numbr, ROUND_MODE);
+ }
+ IEEE_FMT(r->mpg_numbr, tval);
+ }
+ return r;
+}
+
+/* mpg_div --- arbitrary-precision division */
+
+static NODE *
+mpg_div(NODE *t1, NODE *t2)
+{
+ NODE *r;
+ int tval;
+
+ if (is_mpg_integer(t1) && is_mpg_integer(t2)
+ && (mpz_sgn(t2->mpg_i) != 0) /* not dividing by 0 */
+ && mpz_divisible_p(t1->mpg_i, t2->mpg_i)
+ ) {
+ r = mpg_integer();
+ mpz_divexact(r->mpg_i, t1->mpg_i, t2->mpg_i);
+ } else {
+ mpfr_ptr p1, p2;
+ p1 = MP_FLOAT(t1);
+ p2 = MP_FLOAT(t2);
+ r = mpg_float();
+ tval = mpfr_div(r->mpg_numbr, p1, p2, ROUND_MODE);
+ IEEE_FMT(r->mpg_numbr, tval);
+ }
+ return r;
+}
+
+/* mpg_mod --- modulus operation with arbitrary-precision numbers */
+
+static NODE *
+mpg_mod(NODE *t1, NODE *t2)
+{
+ NODE *r;
+ int tval;
+
+ if (is_mpg_integer(t1) && is_mpg_integer(t2)) {
+ r = mpg_integer();
+ mpz_mod(r->mpg_i, t1->mpg_i, t2->mpg_i);
+ } else {
+ mpfr_ptr p1, p2;
+ p1 = MP_FLOAT(t1);
+ p2 = MP_FLOAT(t2);
+ r = mpg_float();
+ tval = mpfr_fmod(r->mpg_numbr, p1, p2, ROUND_MODE);
+ IEEE_FMT(r->mpg_numbr, tval);
+ }
+ return r;
+}
+
+/*
+ * mpg_interpret --- pre-exec hook in the interpreter. Handles
+ * arithmetic operations with MPFR/GMP numbers.
+ */
+
+static int
+mpg_interpret(INSTRUCTION **cp)
+{
+ INSTRUCTION *pc = *cp; /* current instruction */
+ OPCODE op; /* current opcode */
+ NODE *r = NULL;
+ NODE *t1, *t2;
+ NODE **lhs;
+ int tval; /* the ternary value returned by a MPFR function */
+
+ switch ((op = pc->opcode)) {
+ case Op_plus_i:
+ t2 = force_number(pc->memory);
+ goto plus;
+ case Op_plus:
+ t2 = POP_NUMBER();
+plus:
+ t1 = TOP_NUMBER();
+ r = mpg_add(t1, t2);
+ DEREF(t1);
+ if (op == Op_plus)
+ DEREF(t2);
+ REPLACE(r);
+ break;
+
+ case Op_minus_i:
+ t2 = force_number(pc->memory);
+ goto minus;
+ case Op_minus:
+ t2 = POP_NUMBER();
+minus:
+ t1 = TOP_NUMBER();
+ r = mpg_sub(t1, t2);
+ DEREF(t1);
+ if (op == Op_minus)
+ DEREF(t2);
+ REPLACE(r);
+ break;
+
+ case Op_times_i:
+ t2 = force_number(pc->memory);
+ goto times;
+ case Op_times:
+ t2 = POP_NUMBER();
+times:
+ t1 = TOP_NUMBER();
+ r = mpg_mul(t1, t2);
+ DEREF(t1);
+ if (op == Op_times)
+ DEREF(t2);
+ REPLACE(r);
+ break;
+
+ case Op_exp_i:
+ t2 = force_number(pc->memory);
+ goto exp;
+ case Op_exp:
+ t2 = POP_NUMBER();
+exp:
+ t1 = TOP_NUMBER();
+ r = mpg_pow(t1, t2);
+ DEREF(t1);
+ if (op == Op_exp)
+ DEREF(t2);
+ REPLACE(r);
+ break;
+
+ case Op_quotient_i:
+ t2 = force_number(pc->memory);
+ goto quotient;
+ case Op_quotient:
+ t2 = POP_NUMBER();
+quotient:
+ t1 = TOP_NUMBER();
+ r = mpg_div(t1, t2);
+ DEREF(t1);
+ if (op == Op_quotient)
+ DEREF(t2);
+ REPLACE(r);
+ break;
+
+ case Op_mod_i:
+ t2 = force_number(pc->memory);
+ goto mod;
+ case Op_mod:
+ t2 = POP_NUMBER();
+mod:
+ t1 = TOP_NUMBER();
+ r = mpg_mod(t1, t2);
+ DEREF(t1);
+ if (op == Op_mod)
+ DEREF(t2);
+ REPLACE(r);
+ break;
+
+ case Op_preincrement:
+ case Op_predecrement:
+ lhs = TOP_ADDRESS();
+ t1 = *lhs;
+ force_number(t1);
+
+ if (is_mpg_integer(t1)) {
+ if (t1->valref == 1 && t1->flags == (MALLOC|MPZN|NUMCUR|NUMBER))
+ /* Efficiency hack. Big speed-up (> 30%) in a tight loop */
+ r = t1;
+ else
+ r = *lhs = mpg_integer();
+ if (op == Op_preincrement)
+ mpz_add_ui(r->mpg_i, t1->mpg_i, 1);
+ else
+ mpz_sub_ui(r->mpg_i, t1->mpg_i, 1);
+ } else {
+
+ /*
+ * An optimization like the one above is not going to work
+ * for a floating-point number. With it,
+ * gawk -M 'BEGIN { PREC=53; i=2^53+0.0; PREC=113; ++i; print i}'
+ * will output 2^53 instead of 2^53+1.
+ */
+
+ r = *lhs = mpg_float();
+ tval = mpfr_add_si(r->mpg_numbr, t1->mpg_numbr,
+ op == Op_preincrement ? 1 : -1,
+ ROUND_MODE);
+ IEEE_FMT(r->mpg_numbr, tval);
+ }
+ if (r != t1)
+ unref(t1);
+ UPREF(r);
+ REPLACE(r);
+ break;
+
+ case Op_postincrement:
+ case Op_postdecrement:
+ lhs = TOP_ADDRESS();
+ t1 = *lhs;
+ force_number(t1);
+
+ if (is_mpg_integer(t1)) {
+ r = mpg_integer();
+ mpz_set(r->mpg_i, t1->mpg_i);
+ if (t1->valref == 1 && t1->flags == (MALLOC|MPZN|NUMCUR|NUMBER))
+ /* Efficiency hack. Big speed-up (> 30%) in a tight loop */
+ t2 = t1;
+ else
+ t2 = *lhs = mpg_integer();
+ if (op == Op_postincrement)
+ mpz_add_ui(t2->mpg_i, t1->mpg_i, 1);
+ else
+ mpz_sub_ui(t2->mpg_i, t1->mpg_i, 1);
+ } else {
+ r = mpg_float();
+ tval = mpfr_set(r->mpg_numbr, t1->mpg_numbr, ROUND_MODE);
+ IEEE_FMT(r->mpg_numbr, tval);
+ t2 = *lhs = mpg_float();
+ tval = mpfr_add_si(t2->mpg_numbr, t1->mpg_numbr,
+ op == Op_postincrement ? 1 : -1,
+ ROUND_MODE);
+ IEEE_FMT(t2->mpg_numbr, tval);
+ }
+ if (t2 != t1)
+ unref(t1);
+ REPLACE(r);
+ break;
+
+ case Op_unary_minus:
+ t1 = TOP_NUMBER();
+ if (is_mpg_float(t1)) {
+ r = mpg_float();
+ tval = mpfr_neg(r->mpg_numbr, t1->mpg_numbr, ROUND_MODE);
+ IEEE_FMT(r->mpg_numbr, tval);
+ } else {
+ r = mpg_integer();
+ mpz_neg(r->mpg_i, t1->mpg_i);
+ }
+ DEREF(t1);
+ REPLACE(r);
+ break;
+
+ case Op_assign_plus:
+ case Op_assign_minus:
+ case Op_assign_times:
+ case Op_assign_quotient:
+ case Op_assign_mod:
+ case Op_assign_exp:
+ lhs = POP_ADDRESS();
+ t1 = *lhs;
+ force_number(t1);
+ t2 = TOP_NUMBER();
+
+ switch (op) {
+ case Op_assign_plus:
+ r = mpg_add(t1, t2);
+ break;
+ case Op_assign_minus:
+ r = mpg_sub(t1, t2);
+ break;
+ case Op_assign_times:
+ r = mpg_mul(t1, t2);
+ break;
+ case Op_assign_quotient:
+ r = mpg_div(t1, t2);
+ break;
+ case Op_assign_mod:
+ r = mpg_mod(t1, t2);
+ break;
+ case Op_assign_exp:
+ r = mpg_pow(t1, t2);
+ break;
+ default:
+ cant_happen();
+ }
+
+ DEREF(t2);
+ unref(*lhs);
+ *lhs = r;
+ UPREF(r);
+ REPLACE(r);
+ break;
+
+ default:
+ return TRUE; /* unhandled */
+ }
+
+ *cp = pc->nexti; /* next instruction to execute */
+ return FALSE;
+}
+
+
+/* mpg_fmt --- output formatted string with special MPFR/GMP conversion specifiers */
+
+const char *
+mpg_fmt(const char *mesg, ...)
+{
+ static char *tmp = NULL;
+ int ret;
+ va_list args;
+
+ if (tmp != NULL) {
+ mpfr_free_str(tmp);
+ tmp = NULL;
+ }
+ va_start(args, mesg);
+ ret = mpfr_vasprintf(& tmp, mesg, args);
+ va_end(args);
+ if (ret >= 0 && tmp != NULL)
+ return tmp;
+ return mesg;
+}
+
+#else
+
+void
+set_PREC()
+{
+ /* dummy function */
+}
+
+void
+set_ROUNDMODE()
+{
+ /* dummy function */
+}
+
+#endif
diff --git a/msg.c b/msg.c
index 10f3837a..78818187 100644
--- a/msg.c
+++ b/msg.c
@@ -62,6 +62,21 @@ err(const char *s, const char *emsg, va_list argp)
(void) fprintf(stderr, "%d: ", sourceline);
}
+
+#ifdef HAVE_MPFR
+ if (FNR_node && is_mpg_number(FNR_node->var_value)) {
+ NODE *val;
+ val = mpg_update_var(FNR_node);
+ assert((val->flags & MPZN) != 0);
+ if (mpz_sgn(val->mpg_i) > 0) {
+ file = FILENAME_node->var_value->stptr;
+ (void) putc('(', stderr);
+ if (file)
+ (void) fprintf(stderr, "FILENAME=%s ", file);
+ (void) mpfr_fprintf(stderr, "FNR=%Zd) ", val->mpg_i);
+ }
+ } else
+#endif
if (FNR > 0) {
file = FILENAME_node->var_value->stptr;
(void) putc('(', stderr);
@@ -69,6 +84,7 @@ err(const char *s, const char *emsg, va_list argp)
(void) fprintf(stderr, "FILENAME=%s ", file);
(void) fprintf(stderr, "FNR=%ld) ", FNR);
}
+
(void) fprintf(stderr, "%s", s);
vfprintf(stderr, emsg, argp);
(void) fprintf(stderr, "\n");
diff --git a/node.c b/node.c
index 73d3ec41..8dbe68a9 100644
--- a/node.c
+++ b/node.c
@@ -26,15 +26,21 @@
#include "awk.h"
#include "math.h"
+#include "floatmagic.h" /* definition of isnan */
static int is_ieee_magic_val(const char *val);
+static NODE *r_make_number(double x);
static AWKNUM get_ieee_magic_val(const char *val);
extern NODE **fmt_list; /* declared in eval.c */
+NODE *(*make_number)(double) = r_make_number;
+NODE *(*str2number)(NODE *) = r_force_number;
+NODE *(*format_val)(const char *, int, NODE *) = r_format_val;
+int (*cmp_numbers)(const NODE *, const NODE *) = cmp_awknums;
/* force_number --- force a value to be numeric */
-AWKNUM
+NODE *
r_force_number(NODE *n)
{
char *cp;
@@ -45,7 +51,7 @@ r_force_number(NODE *n)
extern double strtod();
if (n->flags & NUMCUR)
- return n->numbr;
+ return n;
/* all the conditionals are an attempt to avoid the expensive strtod */
@@ -54,7 +60,7 @@ r_force_number(NODE *n)
n->numbr = 0.0;
if (n->stlen == 0) {
- return 0.0;
+ return n;
}
cp = n->stptr;
@@ -67,14 +73,14 @@ r_force_number(NODE *n)
*/
if (! do_posix) {
if (isalpha((unsigned char) *cp)) {
- return 0.0;
+ return n;
} else if (n->stlen == 4 && is_ieee_magic_val(n->stptr)) {
if (n->flags & MAYBE_NUM)
n->flags &= ~MAYBE_NUM;
n->flags |= NUMBER|NUMCUR;
n->numbr = get_ieee_magic_val(n->stptr);
- return n->numbr;
+ return n;
}
/* else
fall through */
@@ -92,7 +98,7 @@ r_force_number(NODE *n)
/* CANNOT do non-decimal and saw 0x */
|| (! do_non_decimal_data && cp[0] == '0'
&& (cp[1] == 'x' || cp[1] == 'X'))))) {
- return 0.0;
+ return n;
}
if (n->flags & MAYBE_NUM) {
@@ -109,12 +115,12 @@ r_force_number(NODE *n)
if (cp == n->stptr) /* no leading spaces */
n->flags |= NUMINT;
}
- return n->numbr;
+ return n;
}
if (do_non_decimal_data) { /* main.c assures false if do_posix */
errno = 0;
- if (! do_traditional && isnondecimal(cp, TRUE)) {
+ if (! do_traditional && get_numbase(cp, TRUE) != 10) {
n->numbr = nondec2awknum(cp, cpend - cp);
n->flags |= NUMCUR;
ptr = cpend;
@@ -139,7 +145,7 @@ finish:
errno = 0;
}
- return n->numbr;
+ return n;
}
@@ -162,10 +168,10 @@ static const char *values[] = {
};
#define NVAL (sizeof(values)/sizeof(values[0]))
-/* format_val --- format a numeric value based on format */
+/* r_format_val --- format a numeric value based on format */
NODE *
-format_val(const char *format, int index, NODE *s)
+r_format_val(const char *format, int index, NODE *s)
{
char buf[BUFSIZ];
char *sp = buf;
@@ -190,7 +196,8 @@ format_val(const char *format, int index, NODE *s)
/* not an integral value, or out of range */
if ((val = double_to_int(s->numbr)) != s->numbr
- || val <= LONG_MIN || val >= LONG_MAX) {
+ || val <= LONG_MIN || val >= LONG_MAX
+ ) {
/*
* Once upon a time, we just blindly did this:
* sprintf(sp, format, s->numbr);
@@ -201,11 +208,12 @@ format_val(const char *format, int index, NODE *s)
*/
NODE *dummy[2], *r;
- unsigned short oflags;
+ unsigned int oflags;
/* create dummy node for a sole use of format_tree */
dummy[1] = s;
oflags = s->flags;
+
if (val == s->numbr) {
/* integral value, but outside range of %ld, use %.0f */
r = format_tree("%.0f", 4, dummy, 2);
@@ -316,17 +324,17 @@ r_dupnode(NODE *n)
return r;
}
-/* make_number --- allocate a node with defined number */
+/* r_make_number --- allocate a node with defined number */
-NODE *
-make_number(AWKNUM x)
+static NODE *
+r_make_number(double x)
{
NODE *r;
getnode(r);
r->type = Node_val;
r->numbr = x;
- r->valref = 1;
r->flags = MALLOC|NUMBER|NUMCUR;
+ r->valref = 1;
r->stptr = NULL;
r->stlen = 0;
#if MBS_SUPPORT
@@ -336,6 +344,32 @@ make_number(AWKNUM x)
return r;
}
+/* cmp_awknums --- compare two AWKNUMs */
+
+int
+cmp_awknums(const NODE *t1, const NODE *t2)
+{
+ /*
+ * This routine is also used to sort numeric array indices or values.
+ * For the purposes of sorting, NaN is considered greater than
+ * any other value, and all NaN values are considered equivalent and equal.
+ * This isn't in compliance with IEEE standard, but compliance w.r.t. NaN
+ * comparison at the awk level is a different issue, and needs to be dealt
+ * with in the interpreter for each opcode seperately.
+ */
+
+ if (isnan(t1->numbr))
+ return ! isnan(t2->numbr);
+ if (isnan(t2->numbr))
+ return -1;
+ /* don't subtract, in case one or both are infinite */
+ if (t1->numbr == t2->numbr)
+ return 0;
+ if (t1->numbr < t2->numbr)
+ return -1;
+ return 1;
+}
+
/* r_make_str_node --- make a string node */
@@ -437,6 +471,13 @@ r_unref(NODE *tmp)
efree(tmp->stptr);
#endif
+#ifdef HAVE_MPFR
+ if (is_mpg_float(tmp))
+ mpfr_clear(tmp->mpg_numbr);
+ else if (is_mpg_integer(tmp))
+ mpz_clear(tmp->mpg_i);
+#endif
+
free_wstr(tmp);
freenode(tmp);
}
@@ -577,12 +618,14 @@ parse_escape(const char **string_ptr)
}
}
-/* isnondecimal --- return true if number is not a decimal number */
+/* get_numbase --- return the base to use for the number in 's' */
int
-isnondecimal(const char *str, int use_locale)
+get_numbase(const char *s, int use_locale)
{
int dec_point = '.';
+ const char *str = s;
+
#if defined(HAVE_LOCALE_H)
/*
* loc.decimal_point may not have been initialized yet,
@@ -593,11 +636,11 @@ isnondecimal(const char *str, int use_locale)
#endif
if (str[0] != '0')
- return FALSE;
+ return 10;
/* leading 0x or 0X */
if (str[1] == 'x' || str[1] == 'X')
- return TRUE;
+ return 16;
/*
* Numbers with '.', 'e', or 'E' are decimal.
@@ -607,12 +650,16 @@ isnondecimal(const char *str, int use_locale)
*/
for (; *str != '\0'; str++) {
if (*str == 'e' || *str == 'E' || *str == dec_point)
- return FALSE;
+ return 10;
else if (! isdigit((unsigned char) *str))
break;
}
- return TRUE;
+ if (! isdigit((unsigned char) s[1])
+ || s[1] == '8' || s[1] == '9'
+ )
+ return 10;
+ return 8;
}
#if MBS_SUPPORT
diff --git a/pc/ChangeLog b/pc/ChangeLog
index a5ce6002..1eb51812 100644
--- a/pc/ChangeLog
+++ b/pc/ChangeLog
@@ -1,7 +1,103 @@
+2012-05-06 Eli Zaretskii <eliz@gnu.org>
+
+ * config.sed: Update DJGPP -> __DJGPP__.
+
+2012-04-16 Eli Zaretskii <eliz@gnu.org>
+
+ * Makefile.tst (PGAWK): Redefine as "../gawk.exe -p".
+ (MPFR_TESTS): New variable, a list of MPFR-related tests.
+ (mpfr-tests): A new target.
+ (badargs): Reset GREP_OPTIONS to empty, to avoid gratuitous
+ failures when the user has something like -nH there.
+ (mpfrieee, mpfrexprange, mpfrrnd, mpfrnr, mpfrsort, mpfrbigint):
+ New tests.
+
+ * Makefile (default): Add descriptions of mingw32-mpfr and
+ mingw32-libreadline-mpfr targets.
+ (PRSPFILE, DRSPFILE, PRSP, DRSP, PLDRSP, DLDRSP, DO_PLNK)
+ (DO_PBIND, DO_DLNK, DO_DBIND, PLDJG, DLDJG, PLMINGW32)
+ (DLMINGW32, PAWKOBJS1, PAWKOBJS2, DAWKOBJS2, PGAWKOBJS)
+ (DGAWKOBJS): Remove unused variables.
+ (djgpp, djgpp-debug, mingw32): Don't use them.
+ (mingw32): Add -D__USE_MINGW_ANSI_STDIO to compilation flags.
+ (mingw32-readline, mingw32-mpfr, mingw32-readline-mpfr): New targets.
+ (CFLAGS, AWKOBJS2): Don't reference obsolete DYN_FLAGS and DYN_OBJ
+ variables.
+ (AWKOBJS2): Add symbol$O.
+ (AWKOBJS3): New variable, lists MPFR-related object files.
+ (AWKOBJS): Add $(AWKOBJS3).
+ (all): Remove pgawk.exe and dgawk.exe.
+ (pgawk.exe, dgawk.exe, $(PRSPFILE) $(DRSPFILE), eval_p$O)
+ (profile_p$O): Remove targets.
+ (random$O, debug$O): Don't depend on floatmagic.h
+ (eval$O): Depend on interpret.h.
+ (clean): Prepend '-' to command line, to ignore errors due to
+ non-existent files.
+
+ * config.h: Comment out "#undef HAVE_LIBREADLINE" (again).
+
+2012-03-29 Arnold D. Robbins <arnold@skeeve.com>
+
+ * config.h: Add definition for _Noreturn.
+
2012-03-20 Andrew J. Schorr <aschorr@telemetry-investments.com>
* gawkmisc.pc (deflibpath): New global variable.
+2012-03-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.0.1: Release tar ball made.
+
+2012-03-20 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.tst (printfbad3): New test.
+
+2012-03-14 Eli Zaretskii <eliz@gnu.org>
+
+ * gawkmisc.pc (btowc): New version for DJGPP.
+
+2012-03-01 Scott Deifik <scottd.mail@sbcglobal.net>
+
+ * Makefile.tst: Sync with mainline version.
+
+2012-03-01 Eli Zaretskii <eliz@gnu.org>
+
+ * Makefile: Quiet confusing info messages from the linker when
+ gawk is linked against readline as a shared library.
+
+2012-02-22 Eli Zaretskii <eliz@gnu.org>
+
+ * Makefile.tst: Update CMP and CP definitions, add "Expect xxxx to
+ fail with MinGW" messages as needed.
+
+2012-02-15 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawkmisc.pc (execvp): Modify signature, return -1
+ on error.
+
+2012-02-11 Eli Zaretskii <eliz@gnu.org>
+
+ Fix dependencies in pc/Makefile.
+ * Makefile ($(ALLOBJS) $(LIBOBJS) eval_p$O profile_p$O): Add eval_d$O,
+ debug$O, and command$O.
+
+ Support MinGW build with the readline library.
+ * Makefile (default): Add a line for the mingw32-readline target.
+ (mingw32-readline): New target, passes -DHAVE_LIBREADLINE to the
+ compiler and adds -lreadline to the linker command line.
+
+ * config.sed: Comment out "#undef HAVE_LIBREADLINE", so that it
+ could be #define'd on the compiler command line.
+
+2012-02-10 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawkmisc.pc (execvp): New function based on code from Eli
+ Zaretskii to make dgawk's restarting the debugger work.
+
+2012-01-27 Scott Deifik <scottd.mail@sbcglobal.net>
+
+ * Makefile.tst: Sync with mainline version.
+
2011-12-12 Scott Deifik <scottd.mail@sbcglobal.net>
* Makefile.tst: Sync with mainline version.
diff --git a/pc/Makefile b/pc/Makefile
index 6156ce96..21fe0bfe 100644
--- a/pc/Makefile
+++ b/pc/Makefile
@@ -14,6 +14,11 @@ default:
@echo " emxnt ... NT exe [emx/gcc with RSXNT] "
@echo " emxbnd .. OS/2 and DOS 32-bit exe [emx/gcc] "
@echo " mingw32 . Windows32 exe [Mingw32 GNU C] "
+ @echo " mingw32-readline . Like mingw32, but with readline "
+ @echo " [You will need to have GNU readline library installed.] "
+ @echo " mingw32-mpfr . Like mingw32, but with MPFR "
+ @echo " [You will need to have GNU MPFR library installed.] "
+ @echo " mingw32-readline-mpfr . mingw32 with readline and MPFR "
@echo " ----------------------------------------------------- "
@echo " test .... Perform tests (see README_d/README.pc) "
@echo " install . Install gawk under $(prefix)/ "
@@ -37,8 +42,6 @@ default:
#======================= Configuration ==================================
RSPFILE = gawk.rsp
-PRSPFILE = pgawk.rsp
-DRSPFILE = dgawk.rsp
#
# Choose method for passing arguments to the linker.
#
@@ -48,11 +51,7 @@ DRSPFILE = dgawk.rsp
#
# else use brain-dead approach (emxbnd will need 'tr').
RSP = $(RSPFILE)
-PRSP = $(PRSPFILE)
-DRSP = $(DRSPFILE)
LDRSP = @$(RSP)
-PLDRSP = @$(PRSP)
-DLDRSP = @$(DRSP)
LNKRSP = $(LDRSP)
#------------------------------------------------------------------------
# Some makes do not define MAKE (and ndmake does not allow a define).
@@ -78,10 +77,6 @@ install = 1
# that $($X) can be expanded.
DO_LNK = $($(LNK))
DO_BIND= $($(BIND))
-DO_PLNK = $($(PLNK))
-DO_PBIND= $($(PBIND))
-DO_DLNK = $($(DLNK))
-DO_DBIND= $($(DBIND))
#========================================================================
# End of general configuration. Some platform-specific configuration
# notes appear below.
@@ -95,21 +90,19 @@ prefix = $(DJDIR)
pkgdatadir = $(prefix)/share/awk
endif
LDJG = $(CC) $(LF) -o gawk.exe $(LDRSP) $(LF2)
-PLDJG = $(CC) $(LF) -o pgawk.exe $(PLDRSP) $(LF2)
-DLDJG = $(CC) $(LF) -o dgawk.exe $(DLDRSP) $(LF2)
BDJG = stubify -g awk.exe | stubedit awk.exe runfile=gawk
djgpp:
$(MAK) all \
CC=gcc O=.o CF=-O2 \
- LNK=LDJG PLNK=PLDJG DLNK=DLDJG LF=-s LF2=-lm \
- BIND=BDJG PBIND='' DBIND=''
+ LNK=LDJG LF=-s LF2=-lm \
+ BIND=BDJG
djgpp-debug:
$(MAK) all \
CC=gcc O=.o CF='-O2 -g' \
- LNK=LDJG PLNK=PLDJG DLNK=DLDJG LF2=-lm \
- BIND=BDJG PBIND='' DBIND=''
+ LNK=LDJG LF2=-lm \
+ BIND=BDJG
#========================================================================
#========================== EMX =========================================
@@ -156,34 +149,54 @@ emxbnd-debug:
#========================================================================
LMINGW32 = $(CC) $(LF) -o $@ $(GAWKOBJS) $(LF2)
-PLMINGW32 = $(CC) $(LF) -o $@ $(PGAWKOBJS) $(LF2)
-DLMINGW32 = $(CC) $(LF) -o $@ $(DGAWKOBJS) $(LF2)
# The following might work around command-line length limitations:
#LMINGW32 = $(CC) $(LF) -o $@ *.o $(LF2)
mingw32:
$(MAK) all \
- CC=gcc O=.o CF="-O2 -gdwarf-2 -g3" OBJ=popen.o \
+ CC=gcc O=.o CF="-D__USE_MINGW_ANSI_STDIO -O2 -gdwarf-2 -g3" \
+ OBJ=popen.o LNK=LMINGW32 LF="-gdwarf-2 -g3" LF2=-lmsvcp60 RSP=
+
+mingw32-readline:
+ $(MAK) all \
+ CC=gcc O=.o \
+ CF="-D__USE_MINGW_ANSI_STDIO -DHAVE_LIBREADLINE -O2 -gdwarf-2 -g3" \
+ OBJ=popen.o LNK=LMINGW32 LF="-gdwarf-2 -g3" \
+ LF2="-lreadline -lmsvcp60 -Wl,--enable-auto-import" RSP=
+
+mingw32-mpfr:
+ $(MAK) all \
+ CC=gcc O=.o \
+ CF="-D__USE_MINGW_ANSI_STDIO -DHAVE_MPFR -O2 -gdwarf-2 -g3" \
+ OBJ=popen.o LNK=LMINGW32 LF="-gdwarf-2 -g3" \
+ LF2="-lmpfr -lgmp -lmsvcp60 -Wl,--enable-auto-import" RSP=
+
+mingw32-readline-mpfr:
+ $(MAK) all \
+ CC=gcc O=.o \
+ CF="-D__USE_MINGW_ANSI_STDIO -DHAVE_LIBREADLINE -DHAVE_MPFR -O2 -gdwarf-2 -g3" \
+ OBJ=popen.o LNK=LMINGW32 LF="-gdwarf-2 -g3" \
+ LF2="-lmpfr -lgmp -lreadline -lmsvcp60 -Wl,--enable-auto-import" RSP=
+
+mingw32-readline:
+ $(MAK) all \
+ CC=gcc O=.o CF="-DHAVE_LIBREADLINE -O2 -gdwarf-2 -g3" OBJ=popen.o \
LNK=LMINGW32 PLNK=PLMINGW32 DLNK=DLMINGW32 \
- LF="-gdwarf-2 -g3" LF2=-lmsvcp60 RSP=
+ LF="-gdwarf-2 -g3" \
+ LF2="-lreadline -lmsvcp60 -Wl,--enable-auto-import" RSP=
# Define BIND for BINDless compiles, otherwise $($(BIND)) may break.
BIND = EMPTY
PBIND = EMPTY
EMPTY=
-# bitwise operations (-DBITOPS) and non-decimal input data (-DNONDECDATA) are
-# undocumented in 3.0.3. They may be enabled in config.h, or added to CFLAGS.
-CFLAGS = $(CF) -DGAWK -I. -DHAVE_CONFIG_H $(DYN_FLAGS)
+CFLAGS = $(CF) -DGAWK -I. -DHAVE_CONFIG_H
# object files
AWKOBJS1 = array$O builtin$O eval$O field$O floatcomp$O gawkmisc$O io$O main$O
-AWKOBJS2 = ext$O msg$O node$O profile$O re$O replace$O version$O $(DYN_OBJ)
-PAWKOBJS1 = array$O builtin$O eval_p$O field$O floatcomp$O gawkmisc$O io$O main$O
-PAWKOBJS2 = ext$O msg$O node$O profile_p$O re$O replace$O version$O $(DYN_OBJ)
-DAWKOBJS1 = array$O builtin$O debug$O eval_d$O field$O floatcomp$O gawkmisc$O io$O main$O
-DAWKOBJS2 = ext$O msg$O node$O profile$O re$O replace$O version$O command$O $(DYN_OBJ)
-AWKOBJS = $(AWKOBJS1) $(AWKOBJS2)
+AWKOBJS2 = ext$O msg$O node$O profile$O re$O replace$O version$O symbol$O
+AWKOBJS3 = debug$O cint_array$O int_array$O mpfr$O str_array$O command$O
+AWKOBJS = $(AWKOBJS1) $(AWKOBJS2) $(AWKOBJS3)
ALLOBJS = $(AWKOBJS) awkgram$O getid$O $(OBJ)
@@ -192,8 +205,6 @@ ALLOBJS = $(AWKOBJS) awkgram$O getid$O $(OBJ)
LIBOBJS= getopt$O getopt1$O dfa$O regex$O random$O
GAWKOBJS = $(ALLOBJS) $(LIBOBJS)
-PGAWKOBJS = $(PAWKOBJS1) $(PAWKOBJS2) $(LIBOBJS) awkgram$O getid$O $(OBJ)
-DGAWKOBJS = $(DAWKOBJS1) $(DAWKOBJS2) $(LIBOBJS) awkgram$O getid$O $(OBJ)
# clear out suffixes list
# .SUFFIXES:
@@ -203,52 +214,34 @@ DGAWKOBJS = $(DAWKOBJS1) $(DAWKOBJS2) $(LIBOBJS) awkgram$O getid$O $(OBJ)
$(CC) -c $(CFLAGS) $<
# rules to build gawk
-all : gawk.exe pgawk.exe dgawk.exe
+all : gawk.exe
gawk.exe:: $(GAWKOBJS) $(RSP)
$(DO_LNK)
$(DO_BIND)
-pgawk.exe:: $(PGAWKOBJS) $(PRSP)
- $(DO_PLNK)
- $(DO_PBIND)
-
-dgawk.exe:: $(DGAWKOBJS) $(DRSP)
- $(DO_DLNK)
- $(DO_DBIND)
-
$(RSPFILE) : $(GAWKOBJS)
echo $(AWKOBJS1)$P > $@
echo $(AWKOBJS2)$P >> $@
echo awkgram$O getid$O $(OBJ) $(LIBOBJS)$P >> $@
-$(PRSPFILE) : $(PGAWKOBJS)
- echo $(PAWKOBJS1)$P > $@
- echo $(PAWKOBJS2)$P >> $@
- echo awkgram$O getid$O $(OBJ) $(LIBOBJS)$P >> $@
-
-$(DRSPFILE) : $(DGAWKOBJS)
- echo $(DAWKOBJS1)$P > $@
- echo $(DAWKOBJS2)$P >> $@
- echo awkgram$O getid$O $(OBJ) $(LIBOBJS)$P >> $@
-
# Notes to dependencies:
# 1. The dependency on getopt.h is because unistd.h includes it,
# and we have -I. on the compiler command line. unistd.h is
# included by awk.h.
# 2. custom.h is not mentioned because pc ports don't use it.
-$(ALLOBJS) $(LIBOBJS) eval_p$O profile_p$O: \
+$(ALLOBJS) $(LIBOBJS): \
awk.h regex.h config.h gettext.h mbsupport.h protos.h dfa.h getopt.h
builtin$O: floatmagic.h random.h popen.h
-random$O: floatmagic.h random.h
+random$O: random.h
-debug$O: floatmagic.h
+node$O: floatmagic.h
command$O debug$O: cmd.h
-dfa$O: xalloc.h
+dfa$O: xalloc.h
gawkmisc$O: pc/gawkmisc.pc
@@ -258,9 +251,7 @@ io$O: popen.h
regex$O: regcomp.c regexec.c regex_internal.h
-eval_p$O: eval.c
-
-profile_p$O: profile.c
+eval$O: interpret.h
# A bug in ndmake requires the following rule
awkgram$O: awk.h awkgram.c
@@ -291,7 +282,7 @@ install2:
gawk -v prefix=$(prefix) -f install.awk
clean:
- rm -rf gawk pgawk dgawk *.exe gawk.map *.o *.obj core a.out $(RSPFILE) $(PRSPFILE) $(DRSPFILE) $(DYN_EXP)
+ -rm -rf gawk *.exe gawk.map *.o *.obj core a.out $(RSPFILE) $(PRSPFILE) $(DRSPFILE) $(DYN_EXP)
# cd doc && $(MAKE) clean
# cd test && $(MAKE) clean
# cd awklib && $(MAKE) clean
diff --git a/pc/Makefile.tst b/pc/Makefile.tst
index f14341c8..ab566531 100644
--- a/pc/Makefile.tst
+++ b/pc/Makefile.tst
@@ -1,6 +1,6 @@
# Makefile for GNU Awk test suite.
#
-# Copyright (C) 1988-2011 the Free Software Foundation, Inc.
+# Copyright (C) 1988-2012 the Free Software Foundation, Inc.
#
# This file is part of GAWK, the GNU implementation of the
# AWK Programming Language.
@@ -67,7 +67,7 @@ AWK2 = '..\gawk.exe'
AWKPROG = ../gawk.exe
# Define PGAWK
-PGAWK = ../pgawk.exe
+PGAWK = ../gawk.exe -p
# Set your cmp command here (you can use most versions of diff instead of cmp
# if you don't want to convert the .ok files to the DOS CR/LF format).
@@ -86,8 +86,8 @@ PGAWK = ../pgawk.exe
#CMP = cmp
# See the comment above for why you might want to set CMP to "env LFN=n diff"
#CMP = env LFN=n diff
-CMP = diff
-#CMP = diff -c
+#CMP = diff
+CMP = diff -u
#CMP = gcmp
# cmp replacement program for PC where the error messages aren't
@@ -96,9 +96,9 @@ TESTOUTCMP = $(AWK) -f ../testoutcmp.awk
# Set your "cp," "mv," and "mkdir" commands here. Note: DOS's copy must take
# forward slashes.
-#CP = cp
+CP = cp
#CP = : && command -c copy
-CP = command.com /c copy
+#CP = command.com /c copy
MV = cmd.exe /c ren
@@ -124,37 +124,43 @@ abs_builddir = .
# Get rid of core files when cleaning and generated .ok file
CLEANFILES = core core.* fmtspcl.ok
-# try to keep these sorted
+# try to keep these sorted. each letter starts a new line
BASIC_TESTS = \
addcomma anchgsub argarray arrayparm arrayprm2 arrayprm3 \
arrayref arrymem1 arryref2 arryref3 arryref4 arryref5 arynasty \
arynocls aryprm1 aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 \
- aryprm8 arysubnm asgext awkpath back89 backgsub childin clobber \
- closebad clsflnam compare compare2 concat1 concat2 concat3 \
- concat4 convfmt datanonl defref delargv delarpm2 delarprm delfunc \
- dfastress dynlj eofsplit exitval1 exitval2 fcall_exit fcall_exit2 \
- fldchg fldchgnf fnamedat fnarray fnarray2 fnaryscl fnasgnm fnmisc \
- fordel forref forsimp fsbs fsrs fsspcoln fstabplus funsemnl funsmnam \
- funstack getline getline2 getline3 getline4 \
- getlnbuf getnr2tb getnr2tm \
+ aryprm8 arysubnm asgext awkpath \
+ back89 backgsub \
+ childin clobber closebad clsflnam compare compare2 concat1 concat2 \
+ concat3 concat4 convfmt \
+ datanonl defref delargv delarpm2 delarprm delfunc dfastress dynlj \
+ eofsplit exitval1 exitval2 \
+ fcall_exit fcall_exit2 fldchg fldchgnf fnamedat fnarray fnarray2 \
+ fnaryscl fnasgnm fnmisc fordel forref forsimp fsbs fsrs fsspcoln \
+ fstabplus funsemnl funsmnam funstack \
+ getline getline2 getline3 getline4 getlnbuf getnr2tb getnr2tm \
gsubasgn gsubtest gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 \
gsubtst7 gsubtst8 \
- hex hsprint inputred intest intprec iobug1 leaddig leadnl litoct \
- longsub longwrds manglprm math membug1 messages minusstr mmap8k \
- mtchi18n nasty nasty2 negexp negrange nested nfldstr nfneg \
- nfset nlfldsep nlinstr nlstrina noeffect nofile nofmtch noloop1 \
- noloop2 nonl noparms nors nulrsend numindex numsubstr octsub ofmt \
- ofmta ofmtbig ofmtfidl ofmts onlynl opasnidx opasnslf paramdup \
- paramres paramtyp parse1 parsefld parseme pcntplus posix2008sub \
- prdupval prec printf0 printf1 prmarscl prmreuse prt1eval prtoeval \
- rand range1 rebt8b1 redfilnm regeq regrange reindops reparse resplit \
- rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 rstest3 rstest4 \
- rstest5 rswhite scalar sclforin sclifin sortempty splitargv \
- splitarr splitdef splitvar splitwht strcat1 strnum1 strtod subamp \
- subi18n subsepnm subslash substr swaplns synerr1 synerr2 tradanch \
- tweakfld uninit2 uninit3 uninit4 uninit5 uninitialized unterm \
- uparrfs wideidx wideidx2 widesub widesub2 widesub3 widesub4 \
- wjposer1 zero2 zeroe0 zeroflag
+ hex hsprint \
+ inputred intest intprec iobug1 \
+ leaddig leadnl litoct longsub longwrds \
+ manglprm math membug1 messages minusstr mmap8k mtchi18n \
+ nasty nasty2 negexp negrange nested nfldstr nfneg nfset nlfldsep \
+ nlinstr nlstrina noeffect nofile nofmtch noloop1 noloop2 nonl \
+ noparms nors nulrsend numindex numsubstr \
+ octsub ofmt ofmta ofmtbig ofmtfidl ofmts onlynl opasnidx opasnslf \
+ paramdup paramres paramtyp parse1 parsefld parseme pcntplus \
+ posix2008sub prdupval prec printf0 printf1 prmarscl prmreuse \
+ prt1eval prtoeval \
+ rand range1 rebt8b1 redfilnm regeq regrange reindops reparse \
+ resplit rri1 rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 \
+ rstest3 rstest4 rstest5 rswhite \
+ scalar sclforin sclifin sortempty splitargv splitarr splitdef \
+ splitvar splitwht strcat1 strnum1 strtod subamp subi18n \
+ subsepnm subslash substr swaplns synerr1 synerr2 tradanch tweakfld \
+ uninit2 uninit3 uninit4 uninit5 uninitialized unterm uparrfs \
+ wideidx wideidx2 widesub widesub2 widesub3 widesub4 wjposer1 \
+ zero2 zeroe0 zeroflag
UNIX_TESTS = \
fflush getlnhd localenl pid pipeio1 pipeio2 poundbang rtlen rtlen01 \
@@ -162,15 +168,16 @@ UNIX_TESTS = \
GAWK_EXT_TESTS = \
aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \
- backw badargs beginfile1 beginfile2 \
- binmode1 clos1way delsub devfd devfd1 \
- devfd2 dumpvars exit fieldwdth fpat1 fpat2 fpat3 \
- fpatnull fsfwfs funlen \
+ backw badargs beginfile1 beginfile2 binmode1 \
+ clos1way delsub devfd devfd1 devfd2 dumpvars exit \
+ fieldwdth fpat1 fpat2 fpat3 fpatnull fsfwfs funlen \
fwtest fwtest2 fwtest3 \
gensub gensub2 getlndir gnuops2 gnuops3 gnureops \
- icasefs icasers igncdym igncfs ignrcas2 ignrcase indirectcall lint \
- lintold lintwarn manyfiles match1 match2 match3 mbstr1 nastyparm \
- next nondec nondec2 patsplit posix printfbad1 printfbad2 procinfs \
+ icasefs icasers igncdym igncfs ignrcas2 ignrcase indirectcall \
+ lint lintold lintwarn \
+ manyfiles match1 match2 match3 mbstr1 \
+ nastyparm next nondec nondec2 \
+ patsplit posix printfbad1 printfbad2 printfbad3 procinfs \
profile1 profile2 profile3 pty1 \
rebuf regx8bit reint reint2 rsstart1 \
rsstart2 rsstart3 rstest6 shadow sortfor sortu splitarg4 strftime \
@@ -179,6 +186,7 @@ GAWK_EXT_TESTS = \
EXTRA_TESTS = inftest regtest
INET_TESTS = inetdayu inetdayt inetechu inetecht
MACHINE_TESTS = double1 double2 fmtspcl intformat
+MPFR_TESTS = mpfrnr mpfrrnd mpfrieee mpfrexprange mpfrsort mpfrbigint
LOCALE_CHARSET_TESTS = \
asort asorti fmttest fnarydel fnparydl lc_num1 mbfw1 \
mbprintf1 mbprintf2 mbprintf3 rebt8b2 rtlenmb sort1 sprintfc
@@ -226,6 +234,8 @@ inet: inetmesg $(INET_TESTS)
machine-tests: $(MACHINE_TESTS)
+mpfr-tests: $(MPFR_TESTS)
+
msg::
@echo ""
@echo "Any output from $(CMP) is bad news, although some differences"
@@ -353,7 +363,7 @@ argtest::
badargs::
@echo $@
- @-$(AWK) -f 2>&1 | grep -v patchlevel >_$@
+ @-$(AWK) -f 2>&1 | GREP_OPTIONS='' grep -v patchlevel >_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nonl::
@@ -448,6 +458,7 @@ pipeio1::
pipeio2::
@echo $@
+ @echo Expect pipeio2 to fail with MinGW
@$(AWK) -v SRCDIR=$(srcdir) -f $(srcdir)/pipeio2.awk >_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
@@ -671,6 +682,7 @@ devfd1::
# The program text is the '1' which will print each record. How compact can you get?
devfd2::
@echo $@
+ @echo Expect devfd2 to fail in MinGW
@$(AWK) 1 /dev/fd/4 /dev/fd/5 4< $(srcdir)/devfd.in1 5< $(srcdir)/devfd.in2 >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
@@ -698,7 +710,7 @@ localenl::
mbprintf1::
@echo $@
- @echo Expect mbprintf1 to fail with DJGPP.
+ @echo Expect mbprintf1 to fail with DJGPP and MinGW.
@GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
$(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
@@ -717,7 +729,7 @@ mbprintf3::
mbfw1::
@echo $@
- @echo Expect mbfw1 to fail with DJGPP.
+ @echo Expect mbfw1 to fail with DJGPP and MinGW.
@GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
$(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
@@ -740,13 +752,13 @@ printfbad2: printfbad2.ok
beginfile1::
@echo $@
- @echo Expect beginfile1 to fail with DJGPP
+ @echo Expect beginfile1 to fail with DJGPP and MinGW
@AWKPATH=$(srcdir) $(AWK) -f $@.awk $(srcdir)/$@.awk . ./no/such/file Makefile >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
beginfile2:
@echo $@
- @-( cd $(srcdir) && AWK="$(abs_builddir)/$(AWKPROG)" $(srcdir)/$@.sh $(srcdir)/$@.in ) > _$@ 2>&1
+ @-( cd $(srcdir) && LC_ALL=C AWK="$(abs_builddir)/$(AWKPROG)" $(srcdir)/$@.sh $(srcdir)/$@.in ) > _$@ 2>&1
# @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
@-$(TESTOUTCMP) $(srcdir)/$@.ok _$@ && rm -f _$@
@@ -783,12 +795,49 @@ posix2008sub:
next:
@echo $@
@-AWK="$(AWKPROG)" $(srcdir)/$@.sh > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-LC_ALL=C $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
exit:
@echo $@
+ @echo Expect exit to fail with MinGW
@-AWK="$(AWKPROG)" $(srcdir)/$@.sh > _$@ 2>&1
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+mpfrieee:
+ @echo mpfrieee
+ @$(AWK) -M -vPREC=double -f $(srcdir)/$@.awk > _$@ 2>&1
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+mpfrexprange:
+ @echo mpfrexprange
+ @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+mpfrrnd:
+ @echo mpfrrnd
+ @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+mpfrnr:
+ @echo mpfrnr
+ @$(AWK) -M -vPREC=113 -f $(srcdir)/$@.awk $(srcdir)/$@.in > _$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+mpfrsort:
+ @echo mpfrsort
+ @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+mpfrbigint:
+ @echo mpfrbigint
+ @$(AWK) -M -f $(srcdir)/$@.awk > _$@ 2>&1
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rri1::
+ @echo $@
+ @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
+ AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
Gt-dummy:
# file Maketests, generated from Makefile.am by the Gentests program
addcomma:
@@ -998,6 +1047,7 @@ eofsplit:
exitval2:
@echo exitval2
+ @echo Expect exitval2 to fail with MinGW
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
@@ -1163,6 +1213,7 @@ hex:
hsprint:
@echo hsprint
+ @echo Expect hsprint to fail with MinGW due to 3 digits in %e output
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
@@ -1499,11 +1550,13 @@ rstest3:
rstest4:
@echo rstest4
+ @echo Expect rstest4 to fail with MinGW
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
rstest5:
@echo rstest5
+ @echo Expect rstest5 to fail with MinGW
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
@@ -1772,7 +1825,7 @@ gensub2:
getlndir:
@echo getlndir
- @echo Expect getlndir to fail with DJGPP.
+ @echo Expect getlndir to fail with DJGPP and MinGW.
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
@@ -1868,6 +1921,7 @@ patsplit:
posix:
@echo posix
+ @echo Expect posix to fail with MinGW due to 3 digits in e+NNN exponent
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
@@ -1876,6 +1930,11 @@ printfbad1:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+printfbad3:
+ @echo printfbad3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
procinfs:
@echo procinfs
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -1883,7 +1942,7 @@ procinfs:
pty1:
@echo pty1
- @echo Expect pty1 to fail with DJGPP.
+ @echo Expect pty1 to fail with DJGPP and MinGW.
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
@@ -1939,6 +1998,7 @@ double1:
double2:
@echo double2
+ @echo Expect double2 to fail with MinGW due to 3 digits in e+NNN exponents
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
@@ -1959,6 +2019,7 @@ asorti:
fmttest:
@echo fmttest
+ @echo Expect fmttest to fail with MinGW due to 3 digits in e+NNN exponents
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
diff --git a/pc/config.h b/pc/config.h
index a9dac512..8b39a640 100644
--- a/pc/config.h
+++ b/pc/config.h
@@ -74,7 +74,7 @@
/* Define if you have the iconv() function and it works. */
#undef HAVE_ICONV
-/* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */
+/* Define to 1 if the system has the type `intmax_t'. */
#ifdef __MINGW32__
#define HAVE_INTMAX_T 1
#endif
@@ -84,12 +84,6 @@
#define HAVE_INTTYPES_H 1
#endif
-/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and
- declares uintmax_t. */
-#ifdef __MINGW32__
-#define HAVE_INTTYPES_H_WITH_UINTMAX 1
-#endif
-
/* Define to 1 if you have the `isascii' function. */
#ifdef __MINGW32__
#define HAVE_ISASCII 1
@@ -123,7 +117,7 @@
#define HAVE_LIBM 1
/* Define to 1 if you have a fully functional readline library. */
-#undef HAVE_LIBREADLINE
+/* #undef HAVE_LIBREADLINE */
/* Define if you have the libsigsegv library. */
#undef HAVE_LIBSIGSEGV
@@ -136,11 +130,6 @@
#define HAVE_LOCALE_H 1
#endif
-/* Define if you have the 'long long' type. */
-#ifdef __MINGW32__
-#define HAVE_LONG_LONG 1
-#endif
-
/* Define to 1 if the system has the type `long long int'. */
#undef HAVE_LONG_LONG_INT
@@ -188,6 +177,9 @@
/* we have the mktime function */
#define HAVE_MKTIME 1
+/* Define to 1 if you have fully functional mpfr and gmp libraries. */
+#undef HAVE_MPFR
+
/* Define to 1 if you have the <netdb.h> header file. */
#undef HAVE_NETDB_H
@@ -231,10 +223,6 @@
#define HAVE_STDINT_H 1
#endif
-/* Define if <stdint.h> exists, doesn't clash with <sys/types.h>, and declares
- uintmax_t. */
-#undef HAVE_STDINT_H_WITH_UINTMAX
-
/* Define to 1 if you have the <stdlib.h> header file. */
#ifdef __MINGW32__
#define HAVE_STDLIB_H 1
@@ -350,7 +338,7 @@
/* Define to 1 if you have the `tzset' function. */
#define HAVE_TZSET 1
-/* Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>. */
+/* Define to 1 if the system has the type `uintmax_t'. */
#if defined(DJGPP) || defined(__MINGW32__)
#define HAVE_UINTMAX_T 1
#ifdef DJGPP
@@ -363,9 +351,6 @@
#define HAVE_UNISTD_H 1
#endif
-/* Define if you have the 'unsigned long long' type. */
-#define HAVE_UNSIGNED_LONG_LONG 1
-
/* Define to 1 if the system has the type `unsigned long long int'. */
#undef HAVE_UNSIGNED_LONG_LONG_INT
@@ -425,7 +410,7 @@
#define PACKAGE_NAME "GNU Awk"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "GNU Awk 4.0.0f"
+#define PACKAGE_STRING "GNU Awk 4.0.70"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "gawk"
@@ -434,7 +419,7 @@
#define PACKAGE_URL "http://www.gnu.org/software/gawk/"
/* Define to the version of this package. */
-#define PACKAGE_VERSION "4.0.0f"
+#define PACKAGE_VERSION "4.0.70"
/* Define to 1 if *printf supports %F format */
#undef PRINTF_HAS_F_FORMAT
@@ -496,7 +481,12 @@
/* Version number of package */
-#define VERSION "4.0.0f"
+#define VERSION "4.0.70"
+
+/* Enable large inode numbers on Mac OS X 10.5. */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
/* Number of bits in a file offset, on hosts where this is settable. */
#undef _FILE_OFFSET_BITS
@@ -507,6 +497,19 @@
/* Define to 1 if on MINIX. */
#undef _MINIX
+/* The _Noreturn keyword of C11. */
+#ifndef _Noreturn
+# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \
+ || 0x5110 <= __SUNPRO_C)
+# define _Noreturn __attribute__ ((__noreturn__))
+# elif defined _MSC_VER && 1200 <= _MSC_VER
+# define _Noreturn __declspec (noreturn)
+# else
+# define _Noreturn
+# endif
+#endif
+
+
/* Define to 2 if the system does not provide POSIX.1 features except with
this defined. */
#undef _POSIX_1_SOURCE
@@ -533,7 +536,8 @@
#endif
#endif
-/* Define to long or long long if <inttypes.h> and <stdint.h> don't define. */
+/* Define to the widest signed integer type if <stdint.h> and <inttypes.h> do
+ not define. */
#ifdef DJGPP
#define intmax_t long long
#endif
@@ -569,8 +573,8 @@
/* Define to `int' if <sys/types.h> doesn't define. */
#undef uid_t
-/* Define to unsigned long or unsigned long long if <stdint.h> and
- <inttypes.h> don't define. */
+/* Define to the widest unsigned integer type if <stdint.h> and <inttypes.h>
+ do not define. */
#ifdef DJGPP
#define uintmax_t unsigned long long
#endif
diff --git a/pc/config.sed b/pc/config.sed
index 7fe0f922..5e57e82b 100644
--- a/pc/config.sed
+++ b/pc/config.sed
@@ -29,7 +29,7 @@
s/^#undef GETPGRP_VOID *$/#define GETPGRP_VOID 1/
s/^#undef GETGROUPS_T *$/#define GETGROUPS_T gid_t/
/^#undef GETPGRP_VOID$/c\
-#ifdef DJGPP\
+#ifdef __DJGPP__\
#define GETPGRP_VOID 1\
#endif
s/^#undef HAVE_ALARM *$/#define HAVE_ALARM 1/
@@ -73,6 +73,8 @@ s/^#undef HAVE_FMOD *$/#define HAVE_FMOD 1/
#define HAVE_ISWUPPER 1\
#endif
s/^#undef HAVE_LIBM *$/#define HAVE_LIBM 1/
+/^#undef HAVE_LIBREADLINE *$/c\
+/* #undef HAVE_LIBREADLINE */
s/^#undef HAVE_LIMITS_H *$/#define HAVE_LIMITS_H 1/
/^#undef HAVE_LOCALE_H *$/c\
#ifdef __MINGW32__\
@@ -98,7 +100,7 @@ s/^#undef HAVE_MEMCPY *$/#define HAVE_MEMCPY 1/
#endif
s/^#undef HAVE_MEMSET *$/#define HAVE_MEMSET 1/
/^#undef HAVE_MKSTEMP *$/c\
-#ifdef DJGPP\
+#ifdef __DJGPP__\
#define HAVE_MKSTEMP 1\
#endif
s/^#undef HAVE_MKTIME *$/#define HAVE_MKTIME 1/
@@ -158,7 +160,7 @@ s/^#undef HAVE_SYSTEM *$/#define HAVE_SYSTEM 1/
#define HAVE_SYS_STAT_H 1\
#endif
/^#undef HAVE_SYS_TIME_H *$/c\
-#if defined(DJGPP) || defined(__MINGW32__)\
+#if defined(__DJGPP__) || defined(__MINGW32__)\
#define HAVE_SYS_TIME_H 1\
#endif
s/^#undef HAVE_SYS_TYPES_H *$/#define HAVE_SYS_TYPES_H 1/
@@ -173,19 +175,19 @@ s/^#undef HAVE_SYS_TYPES_H *$/#define HAVE_SYS_TYPES_H 1/
s/^#undef HAVE_TZNAME *$/#define HAVE_TZNAME 1/
s/^#undef HAVE_TZSET *$/#define HAVE_TZSET 1/
/^#undef HAVE_UINTMAX_T *$/c\
-#if defined(DJGPP) || defined(__MINGW32__)\
+#if defined(__DJGPP__) || defined(__MINGW32__)\
#define HAVE_UINTMAX_T 1\
-#ifdef DJGPP\
+#ifdef __DJGPP__\
#define uintmax_t unsigned long long\
#endif\
#endif
/^#undef HAVE_UNISTD_H *$/c\
-#if defined(DJGPP) || defined(__MINGW32__)\
+#if defined(__DJGPP__) || defined(__MINGW32__)\
#define HAVE_UNISTD_H 1\
#endif
s/^#undef HAVE_UNSIGNED_LONG_LONG *$/#define HAVE_UNSIGNED_LONG_LONG 1/
/^#undef HAVE_USLEEP *$/c\
-#if defined(DJGPP) || defined(__MINGW32__)\
+#if defined(__DJGPP__) || defined(__MINGW32__)\
#define HAVE_USLEEP 1\
#endif
s/^#undef HAVE_VPRINTF *$/#define HAVE_VPRINTF 1/
@@ -221,7 +223,7 @@ s/^#undef PROTOTYPES *$/#define PROTOTYPES 1/
s/^#undef RETSIGTYPE *$/#define RETSIGTYPE void/
/^#.*RETSIGTYPE /a\
\
-#if defined(DJGPP) || defined(__MINGW32__)\
+#if defined(__DJGPP__) || defined(__MINGW32__)\
#include <limits.h>\
#endif
/^#undef SIZEOF_UNSIGNED_INT *$/c\
@@ -241,15 +243,15 @@ s/^#undef TIME_WITH_SYS_TIME *$/#define TIME_WITH_SYS_TIME 1/
#define inline __inline__\
#endif
/^#undef intmax_t *$/c\
-#ifdef DJGPP\
+#ifdef __DJGPP__\
#define intmax_t long long\
#endif
/^#undef restrict *$/c\
-#ifdef DJGPP\
+#ifdef __DJGPP__\
#define restrict\
#endif
/^#undef uintmax_t *$/c\
-#ifdef DJGPP\
+#ifdef __DJGPP__\
#define uintmax_t unsigned long long\
#endif
@@ -263,7 +265,7 @@ $a\
# define DEFPATH ".;c:/lib/awk;c:/gnu/lib/awk"\
#endif\
\
-#ifndef DJGPP\
+#ifndef __DJGPP__\
#define HAVE_POPEN_H 1\
#endif\
\
diff --git a/pc/gawkmisc.pc b/pc/gawkmisc.pc
index cb1e209a..b368e81f 100644
--- a/pc/gawkmisc.pc
+++ b/pc/gawkmisc.pc
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1986, 1988, 1989, 1991 - 2003 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991 - 2003, 2012 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Progamming Language.
@@ -571,6 +571,19 @@ wctob (wint_t wc)
return EOF;
}
+/*
+ * On MS-Windows with MinGW, execvp causes the shell and the re-exec'ed
+ * dgawk to compete for the keyboard input.
+ *
+ * This will need work if we ever need a real version of execvp.
+ */
+int execvp(const char *file, const char *const *argv)
+{
+ if (_spawnvp(_P_WAIT, file, (const char * const *)argv) != -1)
+ exit(EXIT_SUCCESS);
+
+ return -1;
+}
#endif /* __MINGW32__ */
#ifdef __DJGPP__
@@ -584,4 +597,12 @@ unsetenv (const char *name)
return putenv (name);
}
+/* This is needed to defeat too-clever GCC warnings in dfa.c about
+ comparison being always false due to limited range of data type. */
+wint_t
+btowc (int c)
+{
+ return c;
+}
+
#endif /* __DJGPP__ */
diff --git a/pc/testoutcmp.awk b/pc/testoutcmp.awk
index ff190155..33dcaa3f 100644
--- a/pc/testoutcmp.awk
+++ b/pc/testoutcmp.awk
@@ -1,5 +1,24 @@
# cmp replacement program for PC where the error messages aren't
# exactly the same. should run even on old awk
+#
+# Copyright (C) 2011 the Free Software Foundation, Inc.
+#
+# This file is part of GAWK, the GNU implementation of the
+# AWK Programming Language.
+#
+# GAWK is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# GAWK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
{
if (FNR == NR)
diff --git a/po/ChangeLog b/po/ChangeLog
index ff5d3695..d17674da 100644
--- a/po/ChangeLog
+++ b/po/ChangeLog
@@ -1,3 +1,7 @@
+2012-03-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.0.1: Release tar ball made.
+
2011-07-17 Arnold D. Robbins <arnold@skeeve.com>
* Makefile.in.in (dist2): Remove README from list of files checked for
diff --git a/po/LINGUAS b/po/LINGUAS
index 1e55e059..1e67e7b9 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -8,3 +8,4 @@ ja
nl
pl
sv
+vi
diff --git a/po/da.gmo b/po/da.gmo
index 0270b5ce..7bd32a99 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index bb9d3b9d..b52fdbcb 100644
--- a/po/da.po
+++ b/po/da.po
@@ -1,529 +1,486 @@
# Danish translation of gawk
# Copyright (C) 2001 Free Software Foundation, Inc.
# This file is distributed under the same license as the gawk package.
-# Martin Sj繹gren <md9ms@mdstud.chalmers.se>, 2001-2002.
+# Martin Sj鐷ren <md9ms@mdstud.chalmers.se>, 2001-2002.
# Christer Andersson <klamm@comhem.se>, 2007.
-# Keld Simonsen <keld@keldix.com>, 2002,2011.
-# Review by Torben Gr繪n Helligs繪 <torben-dansk@thel.dk>, 2011.
+# Keld Simonsen <keld@keldix.com>, 2002,2011,2012.
+# Review by Torben Gr鷢 Helligs <torben-dansk@thel.dk>, 2011.
# Review by Ask Hjorth Larsen <asklarsen@gmail.com>, 2011.
msgid ""
msgstr ""
-"Project-Id-Version: gawk 3.1.83\n"
+"Project-Id-Version: gawk 4.0.0h\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2011-11-14 21:46+0200\n"
-"PO-Revision-Date: 2011-05-22 10:37+0200\n"
+"POT-Creation-Date: 2012-04-27 10:06+0300\n"
+"PO-Revision-Date: 2012-02-06 10:37+0100\n"
"Last-Translator: Keld Simonsen <keld@keldix.com>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
"Language: da\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 1.0\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: array.c:140
+#: array.c:266
#, c-format
msgid "from %s"
msgstr "fra %s"
-#: array.c:248
+#: array.c:366
msgid "attempt to use a scalar value as array"
-msgstr "fors繪g p疇 at bruge en skalar som array"
+msgstr "fors鷤 p at bruge en skalar som array"
-#: array.c:251
-#, c-format
-msgid "attempt to use function `%s' as an array"
-msgstr "fors繪g p疇 at bruge funktionen '%s' som et array"
-
-#: array.c:254
+#: array.c:368
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
-msgstr "fors繪g p疇 at bruge skalarparameteren '%s' som et array"
+msgstr "fors鷤 p at bruge skalarparameteren '%s' som et array"
-#: array.c:257
+#: array.c:371
#, c-format
msgid "attempt to use scalar `%s' as an array"
-msgstr "fors繪g p疇 at bruge skalar '%s' som et array"
+msgstr "fors鷤 p at bruge skalar '%s' som et array"
-#: array.c:302 array.c:707 builtin.c:84 builtin.c:1384 builtin.c:1426
-#: builtin.c:1439 builtin.c:1858 builtin.c:1870 eval.c:1135 eval.c:1139
-#: eval.c:1495 eval.c:1812
+#: array.c:418 array.c:584 builtin.c:85 builtin.c:1560 builtin.c:1602
+#: builtin.c:1615 builtin.c:2041 builtin.c:2053 eval.c:1109 eval.c:1113
+#: eval.c:1508
#, c-format
msgid "attempt to use array `%s' in a scalar context"
-msgstr "fors繪g p疇 at bruge array '%s' i skalarsammenh疆ng"
+msgstr "fors鷤 p at bruge array '%s' i skalarsammenh熡g"
-#: array.c:513
-#, c-format
-msgid "reference to uninitialized element `%s[\"%.*s\"]'"
-msgstr "reference til ikke-initieret element '%s[\"%.*s\"]'"
-
-#: array.c:519
-#, c-format
-msgid "subscript of array `%s' is null string"
-msgstr "indeks i array '%s' er en tom streng"
-
-#: array.c:723
+#: array.c:591
#, c-format
msgid "delete: index `%s' not in array `%s'"
msgstr "delete: indeks '%s' findes ikke i array '%s'"
-#: array.c:734 eval.c:1865
+#: array.c:605
#, c-format
msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
-msgstr "fors繪g p疇 at bruge skalaren '%s[\"%.*s\"]' som array"
-
-#: array.c:910
-#, c-format
-msgid "%s: empty (null)\n"
-msgstr "%s: tom (null)\n"
-
-#: array.c:915
-#, c-format
-msgid "%s: empty (zero)\n"
-msgstr "%s: tom (nul)\n"
-
-#: array.c:919
-#, c-format
-msgid "%s: table_size = %d, array_size = %d\n"
-msgstr "%s: tabelst繪rrelse = %d, arrayst繪rrelse = %d\n"
-
-#: array.c:954
-#, c-format
-msgid "%s: is parameter\n"
-msgstr "%s: er parameter\n"
+msgstr "fors鷤 p at bruge skalaren '%s[\"%.*s\"]' som array"
-#: array.c:958
-#, c-format
-msgid "%s: array_ref to %s\n"
-msgstr "%s: arrayreference til %s\n"
-
-#: array.c:963
-msgid "adump: argument not an array"
+#: array.c:784
+#, fuzzy
+msgid "adump: first argument not an array"
msgstr "adump: argument er ikke et array"
-#: array.c:1086
+#: array.c:823
msgid "asort: second argument not an array"
msgstr "asort: andet argument er ikke et array"
-#: array.c:1087
+#: array.c:824
msgid "asorti: second argument not an array"
msgstr "asorti: andet argument er ikke et array"
-#: array.c:1094
+#: array.c:831
msgid "asort: first argument not an array"
-msgstr "asort: f繪rste argument er ikke et array"
+msgstr "asort: f鷨ste argument er ikke et array"
-#: array.c:1095
+#: array.c:832
msgid "asorti: first argument not an array"
-msgstr "asorti: f繪rste argument er ikke et array"
+msgstr "asorti: f鷨ste argument er ikke et array"
-#: array.c:1102
+#: array.c:839
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr ""
-"asort: kan ikke bruge et underarray af f繪rste argument for andet argument"
+"asort: kan ikke bruge et underarray af f鷨ste argument for andet argument"
-#: array.c:1103
+#: array.c:840
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr ""
-"asorti: kan ikke bruge et underarray af f繪rste argument for andet argument"
+"asorti: kan ikke bruge et underarray af f鷨ste argument for andet argument"
-#: array.c:1108
+#: array.c:845
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr ""
-"asort: kan ikke bruge et underarray af andet argument for f繪rste argument"
+"asort: kan ikke bruge et underarray af andet argument for f鷨ste argument"
-#: array.c:1109
+#: array.c:846
msgid "asorti: cannot use a subarray of second arg for first arg"
msgstr ""
-"asorti: kan ikke bruge et underarray af andet argument for f繪rste argument"
+"asorti: kan ikke bruge et underarray af andet argument for f鷨ste argument"
-#: array.c:1659
+#: array.c:1314
#, c-format
msgid "`%s' is invalid as a function name"
msgstr "'%s' er ugyldigt som funktionsnavn"
-#: array.c:1663
+#: array.c:1318
#, c-format
msgid "sort comparison function `%s' is not defined"
msgstr "funktionen for sorteringssammenligning '%s' er ikke defineret"
-#: awkgram.y:249
+#: awkgram.y:223
#, c-format
msgid "%s blocks must have an action part"
msgstr "%s-blokke skal have en handlingsdel"
-#: awkgram.y:252
+#: awkgram.y:226
msgid "each rule must have a pattern or an action part"
-msgstr "hver regel skal have et m繪nster eller en handlingsdel"
+msgstr "hver regel skal have et m鷢ster eller en handlingsdel"
-#: awkgram.y:323 awkgram.y:334
+#: awkgram.y:295 awkgram.y:306
msgid "old awk does not support multiple `BEGIN' or `END' rules"
msgstr ""
-"gamle versioner af awk underst繪tter ikke flere 'BEGIN'- eller 'END'-regler"
+"gamle versioner af awk underst黂ter ikke flere 'BEGIN'- eller 'END'-regler"
-#: awkgram.y:371
+#: awkgram.y:343
#, 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:432
+#: awkgram.y:389
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:436
+#: awkgram.y:393
#, 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:528
+#: awkgram.y:485
#, c-format
msgid "duplicate case values in switch body: %s"
-msgstr "dublet case-v疆rdier i switch-krop %s"
+msgstr "dublet case-v熳dier i switch-krop %s"
-#: awkgram.y:549
+#: awkgram.y:506
msgid "duplicate `default' detected in switch body"
msgstr "dublet 'default' opdaget i switch-krop"
-#: awkgram.y:809
+#: awkgram.y:766
msgid "`break' is not allowed outside a loop or switch"
-msgstr "'break' uden for en l繪kke eller switch er ikke tilladt"
+msgstr "'break' uden for en l鷦ke eller switch er ikke tilladt"
-#: awkgram.y:818
+#: awkgram.y:775
msgid "`continue' is not allowed outside a loop"
-msgstr "'continue' uden for en l繪kke er ikke tilladt"
+msgstr "'continue' uden for en l鷦ke er ikke tilladt"
-#: awkgram.y:828
+#: awkgram.y:785
#, c-format
msgid "`next' used in %s action"
msgstr "'next' brugt i %s-handling"
-#: awkgram.y:836
+#: awkgram.y:793
msgid "`nextfile' is a gawk extension"
msgstr "'nextfile' er en gawk-udvidelse"
-#: awkgram.y:841
+#: awkgram.y:798
#, c-format
msgid "`nextfile' used in %s action"
msgstr "'nextfile' brugt i %s-handling"
-#: awkgram.y:865
+#: awkgram.y:822
msgid "`return' used outside function context"
msgstr "'return' brugt uden for funktion"
-#: awkgram.y:925
+#: awkgram.y:896
msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
msgstr ""
-"alenest疇ende 'print' i BEGIN eller END-regel skulle muligvis v疆re 'print "
+"alenest嶒nde 'print' i BEGIN eller END-regel skulle muligvis v熳e 'print "
"\"\"'"
-#: awkgram.y:995 awkgram.y:999 awkgram.y:1023
+#: awkgram.y:966 awkgram.y:970 awkgram.y:994
msgid "`delete array' is a gawk extension"
msgstr "'delete array' er en gawk-udvidelse"
-#: awkgram.y:1019
+#: awkgram.y:990
msgid "`delete(array)' is a non-portable tawk extension"
msgstr "'delete array' er en ikke-portabel udvidelse fra tawk"
-#: awkgram.y:1135
+#: awkgram.y:1108
msgid "multistage two-way pipelines don't work"
msgstr "flertrins dobbeltrettede datakanaler fungerer ikke"
-#: awkgram.y:1238
+#: awkgram.y:1211
msgid "regular expression on right of assignment"
-msgstr "regul疆rt udtryk i h繪jreleddet af en tildeling"
+msgstr "regul熳t udtryk i h鷮releddet af en tildeling"
-#: awkgram.y:1249
+#: awkgram.y:1222
msgid "regular expression on left of `~' or `!~' operator"
-msgstr "regul疆rt udtryk p疇 venstre side af en '~'- eller '!~'-operator"
+msgstr "regul熳t udtryk p venstre side af en '~'- eller '!~'-operator"
-#: awkgram.y:1265 awkgram.y:1419
+#: awkgram.y:1238 awkgram.y:1389
msgid "old awk does not support the keyword `in' except after `for'"
msgstr ""
-"gamle versioner af awk underst繪tter ikke n繪gleordet 'in' undtagen efter 'for'"
+"gamle versioner af awk underst黂ter ikke n鷤leordet 'in' undtagen efter 'for'"
-#: awkgram.y:1275
+#: awkgram.y:1248
msgid "regular expression on right of comparison"
-msgstr "regul疆rt udtryk i h繪jreleddet af en sammenligning"
+msgstr "regul熳t udtryk i h鷮releddet af en sammenligning"
-#: awkgram.y:1394
+#: awkgram.y:1364
#, c-format
msgid "`getline var' invalid inside `%s' rule"
msgstr "'getline var' ugyldig inden i '%s' regel"
-#: awkgram.y:1397 eval.c:2504
+#: awkgram.y:1367
#, c-format
msgid "`getline' invalid inside `%s' rule"
msgstr "'getline' ugyldig inden i '%s' regel"
-#: awkgram.y:1402
+#: awkgram.y:1372
msgid "non-redirected `getline' undefined inside END action"
msgstr "ikke-omdirigeret 'getline' udefineret inden i END-handling"
-#: awkgram.y:1421
+#: awkgram.y:1391
msgid "old awk does not support multidimensional arrays"
-msgstr "gamle versioner af awk underst繪tter ikke flerdimensionale array"
+msgstr "gamle versioner af awk underst黂ter ikke flerdimensionale array"
-#: awkgram.y:1517
+#: awkgram.y:1488
msgid "call of `length' without parentheses is not portable"
msgstr "kald af 'length' uden parenteser er ikke portabelt"
-#: awkgram.y:1580
+#: awkgram.y:1554
msgid "indirect function calls are a gawk extension"
msgstr "indirekte funktionskald er en gawk-udvidelse"
-#: awkgram.y:1593
+#: awkgram.y:1567
#, c-format
msgid "can not use special variable `%s' for indirect function call"
msgstr "kan ikke bruge specialvariabel '%s' til indirekte funktionskald"
-#: awkgram.y:1671
+#: awkgram.y:1645
msgid "invalid subscript expression"
msgstr "ugyldigt indeksudtryk"
-#: awkgram.y:1711
-msgid "use of non-array as array"
-msgstr "brug af ikke-array som array"
-
-#: awkgram.y:1975 awkgram.y:1995 msg.c:98
+#: awkgram.y:1966 awkgram.y:1986 msg.c:112
msgid "warning: "
msgstr "advarsel: "
-#: awkgram.y:1993 msg.c:130
+#: awkgram.y:1984 msg.c:144
msgid "fatal: "
msgstr "fatal: "
-#: awkgram.y:2043
+#: awkgram.y:2034
msgid "unexpected newline or end of string"
msgstr "uventet nylinjetegn eller strengafslutning"
-#: awkgram.y:2300 awkgram.y:2358 awkgram.y:2542
+#: awkgram.y:2299 awkgram.y:2357 awkgram.y:2545
#, c-format
msgid "can't open source file `%s' for reading (%s)"
-msgstr "kan ikke 疇bne kildefilen '%s' for l疆sning (%s)"
+msgstr "kan ikke 嶙ne kildefilen '%s' for l犘ning (%s)"
-#: awkgram.y:2301 awkgram.y:2359 builtin.c:122
+#: awkgram.y:2300 awkgram.y:2358 builtin.c:124
msgid "reason unknown"
-msgstr "ukendt 疇rsag"
+msgstr "ukendt 緳sag"
-#: awkgram.y:2317
+#: awkgram.y:2316
#, c-format
msgid "already included source file `%s'"
msgstr "allerede inkluderet kildefil '%s'"
-#: awkgram.y:2343
+#: awkgram.y:2342
msgid "@include is a gawk extension"
msgstr "@include er en gawk-udvidelse"
-#: awkgram.y:2349
+#: awkgram.y:2348
msgid "empty filename after @include"
msgstr "tomt filnavn efter @include"
-#: awkgram.y:2494
+#: awkgram.y:2497
msgid "empty program text on command line"
-msgstr "tom programtekst p疇 kommandolinjen"
+msgstr "tom programtekst p kommandolinjen"
-#: awkgram.y:2609
+#: awkgram.y:2612
#, c-format
msgid "can't read sourcefile `%s' (%s)"
-msgstr "kan ikke l疆se kildefilen '%s' (%s)"
+msgstr "kan ikke l犘e kildefilen '%s' (%s)"
-#: awkgram.y:2620
+#: awkgram.y:2623
#, c-format
msgid "source file `%s' is empty"
msgstr "kildefilen '%s' er tom"
-#: awkgram.y:2805
+#: awkgram.y:2800
msgid "source file does not end in newline"
msgstr "kildefilen slutter ikke med en ny linje"
-#: awkgram.y:2882
+#: awkgram.y:2905
msgid "unterminated regexp ends with `\\' at end of file"
-msgstr "uafsluttet regul疆rt udtryk slutter med '\\' i slutningen af filen"
+msgstr "uafsluttet regul熳t udtryk slutter med '\\' i slutningen af filen"
-#: awkgram.y:2906
+#: awkgram.y:2929
#, 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"
+msgstr "%s: %d: regex-熡dringstegn '/.../%c' fra tawk virker ikke i gawk"
-#: awkgram.y:2910
+#: awkgram.y:2933
#, c-format
msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
-msgstr "regex-疆ndringstegn '/.../%c' fra tawk virker ikke i gawk"
+msgstr "regex-熡dringstegn '/.../%c' fra tawk virker ikke i gawk"
-#: awkgram.y:2917
+#: awkgram.y:2940
msgid "unterminated regexp"
-msgstr "uafsluttet regul疆rt udtryk"
+msgstr "uafsluttet regul熳t udtryk"
-#: awkgram.y:2921
+#: awkgram.y:2944
msgid "unterminated regexp at end of file"
-msgstr "uafsluttet regul疆rt udtryk i slutningen af filen"
+msgstr "uafsluttet regul熳t udtryk i slutningen af filen"
-#: awkgram.y:2980
+#: awkgram.y:3003
msgid "use of `\\ #...' line continuation is not portable"
-msgstr "brug af '\\ #...' for linjeforts疆ttelse er ikke portabelt"
+msgstr "brug af '\\ #...' for linjeforts犚telse er ikke portabelt"
-#: awkgram.y:2996
+#: awkgram.y:3019
msgid "backslash not last character on line"
-msgstr "sidste tegn p疇 linjen er ikke en omvendt skr疇streg"
+msgstr "sidste tegn p linjen er ikke en omvendt skr廛treg"
-#: awkgram.y:3057
+#: awkgram.y:3080
msgid "POSIX does not allow operator `**='"
msgstr "POSIX tillader ikke operatoren '**='"
-#: awkgram.y:3059
+#: awkgram.y:3082
msgid "old awk does not support operator `**='"
-msgstr "gamle versioner af awk underst繪tter ikke operatoren '**='"
+msgstr "gamle versioner af awk underst黂ter ikke operatoren '**='"
-#: awkgram.y:3068
+#: awkgram.y:3091
msgid "POSIX does not allow operator `**'"
msgstr "POSIX tillader ikke operatoren '**'"
-#: awkgram.y:3070
+#: awkgram.y:3093
msgid "old awk does not support operator `**'"
-msgstr "gamle versioner af awk underst繪tter ikke operatoren '**'"
+msgstr "gamle versioner af awk underst黂ter ikke operatoren '**'"
-#: awkgram.y:3105
+#: awkgram.y:3128
msgid "operator `^=' is not supported in old awk"
-msgstr "operatoren '^=' underst繪ttes ikke i gamle versioner af awk"
+msgstr "operatoren '^=' underst黂tes ikke i gamle versioner af awk"
-#: awkgram.y:3113
+#: awkgram.y:3136
msgid "operator `^' is not supported in old awk"
-msgstr "operatoren '^' underst繪ttes ikke i gamle versioner af awk"
+msgstr "operatoren '^' underst黂tes ikke i gamle versioner af awk"
-#: awkgram.y:3206 awkgram.y:3222
+#: awkgram.y:3229 awkgram.y:3245
msgid "unterminated string"
msgstr "uafsluttet streng"
-#: awkgram.y:3418
+#: awkgram.y:3466
#, c-format
msgid "invalid char '%c' in expression"
msgstr "ugyldigt tegn '%c' i udtryk"
-#: awkgram.y:3465
+#: awkgram.y:3513
#, c-format
msgid "`%s' is a gawk extension"
msgstr "'%s' er en gawk-udvidelse"
-#: awkgram.y:3470
+#: awkgram.y:3518
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr "'%s' er en Bell Labs-udvidelse"
-#: awkgram.y:3475
+#: awkgram.y:3523
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX tillader ikke '%s'"
-#: awkgram.y:3483
+#: awkgram.y:3531
#, c-format
msgid "`%s' is not supported in old awk"
-msgstr "'%s' underst繪ttes ikke i gamle versioner af awk"
+msgstr "'%s' underst黂tes ikke i gamle versioner af awk"
-#: awkgram.y:3550
+#: awkgram.y:3598
msgid "`goto' considered harmful!\n"
msgstr "'goto' anses for skadelig!\n"
-#: awkgram.y:3601
+#: awkgram.y:3632
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d er et ugyldigt antal argumenter for %s"
-#: awkgram.y:3636
+#: awkgram.y:3667
#, 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:3641
+#: awkgram.y:3672
#, c-format
msgid "%s third parameter is not a changeable object"
-msgstr "%s: tredje argument er ikke et 疆ndringsbart objekt"
+msgstr "%s: tredje argument er ikke et 熡dringsbart objekt"
-#: awkgram.y:3714 awkgram.y:3717
+#: awkgram.y:3751 awkgram.y:3754
msgid "match: third argument is a gawk extension"
msgstr "match: tredje argument er en gawk-udvidelse"
-#: awkgram.y:3771 awkgram.y:3774
+#: awkgram.y:3808 awkgram.y:3811
msgid "close: second argument is a gawk extension"
msgstr "close: andet argument er en gawk-udvidelse"
-#: awkgram.y:3786
+#: awkgram.y:3823
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"brug af dcgettext(_\"...\") er forkert: fjern det indledende "
"understregningstegn"
-#: awkgram.y:3801
+#: awkgram.y:3838
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"brug af dcgettext(_\"...\") er forkert: fjern det indledende "
"understregningstegn"
-#: awkgram.y:3893
-#, c-format
-msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
-msgstr "funktionen '%s': parameter %d, '%s', er samme som parameter %d"
-
-#: awkgram.y:3935
+#: awkgram.y:3904
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "funktionen '%s': parameteren '%s' overskygger en global variabel"
-#: awkgram.y:4093
+#: awkgram.y:3961
#, c-format
msgid "could not open `%s' for writing (%s)"
-msgstr "kunne ikke 疇bne '%s' for skrivning (%s)"
+msgstr "kunne ikke 嶙ne '%s' for skrivning (%s)"
-#: awkgram.y:4094
+#: awkgram.y:3962
msgid "sending variable list to standard error"
msgstr "sender variabelliste til standard fejl"
-#: awkgram.y:4100
+#: awkgram.y:3970
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: lukning mislykkedes (%s)"
-#: awkgram.y:4152
+#: awkgram.y:3995
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() kaldt to gange!"
-#: awkgram.y:4158
+#: awkgram.y:4003
msgid "there were shadowed variables."
msgstr "der var skyggede variable."
-#: awkgram.y:4188
+#: awkgram.y:4074
+#, c-format
+msgid "function name `%s' previously defined"
+msgstr "funktionsnavnet '%s' er allerede defineret"
+
+#: awkgram.y:4120
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "funktionen '%s': kan ikke bruge funktionsnavn som parameternavn"
-#: awkgram.y:4192
+#: awkgram.y:4123
#, 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:4208
+#: awkgram.y:4131
#, c-format
-msgid "function name `%s' previously defined"
-msgstr "funktionsnavnet '%s' er allerede defineret"
+msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
+msgstr "funktionen '%s': parameter %d, '%s', er samme som parameter %d"
-#: awkgram.y:4376 awkgram.y:4382
+#: awkgram.y:4210 awkgram.y:4216
#, c-format
msgid "function `%s' called but never defined"
msgstr "funktionen '%s' kaldt, men aldrig defineret"
-#: awkgram.y:4385
+#: awkgram.y:4219
#, c-format
msgid "function `%s' defined but never called directly"
msgstr "funktionen '%s' defineret, men aldrig kaldt direkte"
-#: awkgram.y:4417
+#: awkgram.y:4251
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
-msgstr "konstant regul疆rt udtryk for parameter %d giver en boolesk v疆rdi"
+msgstr "konstant regul熳t udtryk for parameter %d giver en boolesk v熳di"
-#: awkgram.y:4526
+#: awkgram.y:4297
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -532,457 +489,452 @@ msgstr ""
"funktionen '%s' kaldt med blanktegn mellem navnet og '(',\n"
"eller brugt som en variabel eller et array"
-#: awkgram.y:4773 eval.c:2056
+#: awkgram.y:4505
msgid "division by zero attempted"
-msgstr "fors繪gte at dividere med nul"
+msgstr "fors鷤te at dividere med nul"
-#: awkgram.y:4782 eval.c:2072
+#: awkgram.y:4514
#, c-format
msgid "division by zero attempted in `%%'"
-msgstr "fors繪gte at dividere med nul i '%%'"
+msgstr "fors鷤te at dividere med nul i '%%'"
-#: builtin.c:120
+#: builtin.c:122
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s til '%s' mislykkedes (%s)"
-#: builtin.c:121
+#: builtin.c:123
msgid "standard output"
msgstr "standard ud"
-#: builtin.c:135
+#: builtin.c:137
msgid "exp: received non-numeric argument"
msgstr "exp: fik et ikke-numerisk argument"
-#: builtin.c:141
+#: builtin.c:143
#, c-format
msgid "exp: argument %g is out of range"
-msgstr "exp: argumentet %g er uden for det tilladte omr疇de"
+msgstr "exp: argumentet %g er uden for det tilladte omr嶟e"
-#: builtin.c:200
+#: builtin.c:202
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
-"fflush: kan ikke rense: datakanalen '%s' 疇bnet for l疆sning, ikke skrivning"
+"fflush: kan ikke rense: datakanalen '%s' 嶙net for l犘ning, ikke skrivning"
-#: builtin.c:203
+#: builtin.c:205
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
-msgstr "fflush: kan ikke rense: filen '%s' 疇bnet for l疆sning, ikke skrivning"
+msgstr "fflush: kan ikke rense: filen '%s' 嶙net for l犘ning, ikke skrivning"
-#: builtin.c:215
+#: builtin.c:217
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
-msgstr "fflush: '%s' er ikke en 疇ben fil, datakanal eller ko-proces"
+msgstr "fflush: '%s' er ikke en 嶙en fil, datakanal eller ko-proces"
-#: builtin.c:333
+#: builtin.c:335
msgid "index: received non-string first argument"
-msgstr "indeks: f繪rste argument er ikke en streng"
+msgstr "indeks: f鷨ste argument er ikke en streng"
-#: builtin.c:335
+#: builtin.c:337
msgid "index: received non-string second argument"
msgstr "indeks: andet argument er ikke en streng"
-#: builtin.c:457
+#: builtin.c:461
msgid "int: received non-numeric argument"
msgstr "int: fik et ikke-numerisk argument"
-#: builtin.c:493
+#: builtin.c:497
msgid "length: received array argument"
msgstr "length: fik et array-argument"
-#: builtin.c:496
+#: builtin.c:500
msgid "`length(array)' is a gawk extension"
msgstr "'length(array)' er en gawk-udvidelse"
-#: builtin.c:504
+#: builtin.c:508
msgid "length: received non-string argument"
msgstr "length: fik et argument som ikke er en streng"
-#: builtin.c:535
+#: builtin.c:539
msgid "log: received non-numeric argument"
msgstr "log: fik et ikke-numerisk argument"
-#: builtin.c:538
+#: builtin.c:542
#, c-format
msgid "log: received negative argument %g"
msgstr "log: fik et negativt argument %g"
-#: builtin.c:694 builtin.c:699
+#: builtin.c:740 builtin.c:745
msgid "fatal: must use `count$' on all formats or none"
-msgstr "fatal: skal bruge 'count$' p疇 alle formater eller ikke nogen"
+msgstr "fatal: skal bruge 'count$' p alle formater eller ikke nogen"
-#: builtin.c:761
+#: builtin.c:815
#, c-format
msgid "field width is ignored for `%%' specifier"
msgstr "feltbredde ignoreret for '%%'-angivelse"
-#: builtin.c:763
+#: builtin.c:817
#, c-format
msgid "precision is ignored for `%%' specifier"
-msgstr "pr疆cision ignoreret for '%%'-angivelse"
+msgstr "pr熯ision ignoreret for '%%'-angivelse"
-#: builtin.c:765
+#: builtin.c:819
#, c-format
msgid "field width and precision are ignored for `%%' specifier"
-msgstr "feltbredde og pr疆cision ignoreret for '%%'-angivelse"
+msgstr "feltbredde og pr熯ision ignoreret for '%%'-angivelse"
-#: builtin.c:816
+#: builtin.c:870
msgid "fatal: `$' is not permitted in awk formats"
msgstr "fatal: '$' tillades ikke i awk-formater"
-#: builtin.c:825
+#: builtin.c:879
msgid "fatal: arg count with `$' must be > 0"
-msgstr "fatal: argumentantallet med '$' skal v疆re > 0"
+msgstr "fatal: argumentantallet med '$' skal v熳e > 0"
-#: builtin.c:829
+#: builtin.c:883
#, c-format
msgid "fatal: arg count %ld greater than total number of supplied arguments"
-msgstr "fatal: argumentantallet %ld er st繪rre end antal givne argumenter"
+msgstr "fatal: argumentantallet %ld er st鷨re end antal givne argumenter"
-#: builtin.c:833
+#: builtin.c:887
msgid "fatal: `$' not permitted after period in format"
msgstr "fatal: '$' tillades ikke efter et punktum i formatet"
-#: builtin.c:849
+#: builtin.c:903
msgid "fatal: no `$' supplied for positional field width or precision"
msgstr ""
-"fatal: intet '$' angivet for bredde eller pr疆cision af positionsangivet felt"
+"fatal: intet '$' angivet for bredde eller pr熯ision af positionsangivet felt"
-#: builtin.c:920
+#: builtin.c:975
msgid "`l' is meaningless in awk formats; ignored"
-msgstr "'l' er meningsl繪st i awk-formater, ignoreret"
+msgstr "'l' er meningsl鷭t i awk-formater, ignoreret"
-#: builtin.c:924
+#: builtin.c:979
msgid "fatal: `l' is not permitted in POSIX awk formats"
msgstr "fatal: 'l' tillades ikke i POSIX awk-formater"
-#: builtin.c:937
+#: builtin.c:992
msgid "`L' is meaningless in awk formats; ignored"
-msgstr "'L' er meningsl繪st i awk-formater, ignoreret"
+msgstr "'L' er meningsl鷭t i awk-formater, ignoreret"
-#: builtin.c:941
+#: builtin.c:996
msgid "fatal: `L' is not permitted in POSIX awk formats"
msgstr "fatal: 'L' tillades ikke i POSIX awk-formater"
-#: builtin.c:954
+#: builtin.c:1009
msgid "`h' is meaningless in awk formats; ignored"
-msgstr "'h' er meningsl繪st i awk-formater, ignoreret"
+msgstr "'h' er meningsl鷭t i awk-formater, ignoreret"
-#: builtin.c:958
+#: builtin.c:1013
msgid "fatal: `h' is not permitted in POSIX awk formats"
msgstr "fatal: 'h' tillades ikke i POSIX awk-formater"
-#: builtin.c:1271
+#: builtin.c:1408
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
-msgstr "[s]printf: v疆rdi %g er uden for omr疇de for '%%%c'-format"
+msgstr "[s]printf: v熳di %g er uden for omr嶟e for '%%%c'-format"
-#: builtin.c:1331
+#: builtin.c:1506
#, c-format
msgid "ignoring unknown format specifier character `%c': no argument converted"
msgstr ""
"ignorerer ukendt formatspecificeringstegn '%c': intet argument konverteret"
-#: builtin.c:1336
+#: builtin.c:1511
msgid "fatal: not enough arguments to satisfy format string"
-msgstr "fatal: for f疇 argumenter til formatstrengen"
+msgstr "fatal: for f argumenter til formatstrengen"
-#: builtin.c:1338
+#: builtin.c:1513
msgid "^ ran out for this one"
msgstr "^ sluttede her"
-#: builtin.c:1345
+#: builtin.c:1520
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: formatspecifikation har intet kommandobogstav"
-#: builtin.c:1348
+#: builtin.c:1523
msgid "too many arguments supplied for format string"
msgstr "for mange argumenter til formatstrengen"
-#: builtin.c:1422 builtin.c:1433
+#: builtin.c:1598 builtin.c:1609
msgid "printf: no arguments"
msgstr "printf: ingen argumenter"
-#: builtin.c:1474
+#: builtin.c:1650
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: fik ikke-numerisk argument"
-#: builtin.c:1478
+#: builtin.c:1654
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: kaldt med negativt argument %g"
-#: builtin.c:1502
+#: builtin.c:1685
#, c-format
msgid "substr: length %g is not >= 1"
-msgstr "substr: l疆ngden %g er ikke >= 1"
+msgstr "substr: l熡gden %g er ikke >= 1"
-#: builtin.c:1504
+#: builtin.c:1687
#, c-format
msgid "substr: length %g is not >= 0"
-msgstr "substr: l疆ngden %g er ikke >= 0"
+msgstr "substr: l熡gden %g er ikke >= 0"
-#: builtin.c:1511
+#: builtin.c:1694
#, c-format
msgid "substr: non-integer length %g will be truncated"
-msgstr "substr: l疆ngden %g som ikke er et heltal vil blive trunkeret"
+msgstr "substr: l熡gden %g som ikke er et heltal vil blive trunkeret"
-#: builtin.c:1516
+#: builtin.c:1699
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
-msgstr "substr: l疆ngden %g for stor til strengindeksering, trunkerer til %g"
+msgstr "substr: l熡gden %g for stor til strengindeksering, trunkerer til %g"
-#: builtin.c:1528
+#: builtin.c:1711
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: startindeks %g er ugyldigt, bruger 1"
-#: builtin.c:1533
+#: builtin.c:1716
#, 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:1558
+#: builtin.c:1741
msgid "substr: source string is zero length"
msgstr "substr: kildestrengen er tom"
-#: builtin.c:1574
+#: builtin.c:1757
#, c-format
msgid "substr: start index %g is past end of string"
-msgstr "substr: startindeks %g er forbi slutningen p疇 strengen"
+msgstr "substr: startindeks %g er forbi slutningen p strengen"
-#: builtin.c:1582
+#: builtin.c:1765
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
msgstr ""
-"substr: l疆ngden %g ved startindeks %g overskrider l疆ngden af f繪rste argument "
+"substr: l熡gden %g ved startindeks %g overskrider l熡gden af f鷨ste argument "
"(%lu)"
-#: builtin.c:1656
+#: builtin.c:1839
msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
-msgstr "strftime: formatv疆rdi i PROCINFO[\"strftime\"] har numerisk type"
+msgstr "strftime: formatv熳di i PROCINFO[\"strftime\"] har numerisk type"
-#: builtin.c:1679
+#: builtin.c:1862
msgid "strftime: received non-numeric second argument"
msgstr "strftime: fik et ikke-numerisk andet argument"
-#: builtin.c:1682
+#: builtin.c:1866
msgid "strftime: second argument less than 0 or too big for time_t"
-msgstr ""
+msgstr "strftime: andet argument mindre end 0 eller for stort til time_t"
-#: builtin.c:1689
+#: builtin.c:1873
msgid "strftime: received non-string first argument"
-msgstr "strftime: fik et f繪rste argument som ikke er en streng"
+msgstr "strftime: fik et f鷨ste argument som ikke er en streng"
-#: builtin.c:1695
+#: builtin.c:1880
msgid "strftime: received empty format string"
msgstr "strftime: fik en tom formatstreng"
-#: builtin.c:1761
+#: builtin.c:1946
msgid "mktime: received non-string argument"
msgstr "mktime: fik et argument som ikke er en streng"
-#: builtin.c:1778
+#: builtin.c:1963
msgid "mktime: at least one of the values is out of the default range"
-msgstr "mktime: mindst 矇n af v疆rdierne er udenfor standardomr疇det"
+msgstr "mktime: mindst 幯 af v熳dierne er udenfor standardomr嶟et"
-#: builtin.c:1813
+#: builtin.c:1998
msgid "'system' function not allowed in sandbox mode"
msgstr "'system'-funktion ikke tilladt i sandkasse-tilstand"
-#: builtin.c:1818
+#: builtin.c:2003
msgid "system: received non-string argument"
msgstr "system: fik et argument som ikke er en streng"
-#: builtin.c:1873 eval.c:1159 eval.c:1790 eval.c:1803
-#, c-format
-msgid "reference to uninitialized variable `%s'"
-msgstr "reference til ikke-initieret variabel '%s'"
-
-#: builtin.c:1940
+#: builtin.c:2121
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "reference til ikke-initieret felt '$%d'"
-#: builtin.c:2027
+#: builtin.c:2208
msgid "tolower: received non-string argument"
msgstr "tolower: fik et argument som ikke er en streng"
-#: builtin.c:2061
+#: builtin.c:2242
msgid "toupper: received non-string argument"
msgstr "toupper: fik et argument som ikke er en streng"
-#: builtin.c:2097
+#: builtin.c:2278
msgid "atan2: received non-numeric first argument"
-msgstr "atan2: fik et ikke-numerisk f繪rste argument"
+msgstr "atan2: fik et ikke-numerisk f鷨ste argument"
-#: builtin.c:2099
+#: builtin.c:2280
msgid "atan2: received non-numeric second argument"
msgstr "atan2: fik et ikke-numerisk andet argument"
-#: builtin.c:2118
+#: builtin.c:2299
msgid "sin: received non-numeric argument"
msgstr "sin: fik et ikke-numerisk argument"
-#: builtin.c:2134
+#: builtin.c:2315
msgid "cos: received non-numeric argument"
msgstr "cos: fik et ikke-numerisk argument"
-#: builtin.c:2187
+#: builtin.c:2368
msgid "srand: received non-numeric argument"
msgstr "srand: fik et ikke-numerisk argument"
-#: builtin.c:2218
+#: builtin.c:2399
msgid "match: third argument is not an array"
msgstr "match: tredje argument er ikke et array"
-#: builtin.c:2482
+#: builtin.c:2664
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: 0 i tredje argument behandlet som 1"
-#: builtin.c:2775
+#: builtin.c:2957
msgid "lshift: received non-numeric first argument"
-msgstr "lshift: fik et ikke-numerisk f繪rste argument"
+msgstr "lshift: fik et ikke-numerisk f鷨ste argument"
-#: builtin.c:2777
+#: builtin.c:2959
msgid "lshift: received non-numeric second argument"
msgstr "lshift: fik et ikke-numerisk andet argument"
-#: builtin.c:2783
+#: builtin.c:2965
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
-msgstr "lshift(%lf, %lf): negative v疆rdier vil give m疆rkelige resultater"
+msgstr "lshift(%lf, %lf): negative v熳dier vil give m熳kelige resultater"
-#: builtin.c:2785
+#: builtin.c:2967
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
-msgstr "lshift(%lf, %lf): kommatalsv疆rdier vil blive trunkeret"
+msgstr "lshift(%lf, %lf): kommatalsv熳dier vil blive trunkeret"
-#: builtin.c:2787
+#: builtin.c:2969
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
-"lshift(%lf, %lf): for store skiftev疆rdier vil give m疆rkelige resultater"
+"lshift(%lf, %lf): for store skiftev熳dier vil give m熳kelige resultater"
-#: builtin.c:2812
+#: builtin.c:2994
msgid "rshift: received non-numeric first argument"
-msgstr "rshift: fik et ikke-numerisk f繪rste argument"
+msgstr "rshift: fik et ikke-numerisk f鷨ste argument"
-#: builtin.c:2814
+#: builtin.c:2996
msgid "rshift: received non-numeric second argument"
msgstr "rshift: fik et ikke-numerisk andet argument"
-#: builtin.c:2820
+#: builtin.c:3002
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
-msgstr "rshift(%lf, %lf): negative v疆rdier vil give m疆rkelige resultater"
+msgstr "rshift(%lf, %lf): negative v熳dier vil give m熳kelige resultater"
-#: builtin.c:2822
+#: builtin.c:3004
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
-msgstr "rshift(%lf, %lf): kommatalsv疆rdier vil blive trunkeret"
+msgstr "rshift(%lf, %lf): kommatalsv熳dier vil blive trunkeret"
-#: builtin.c:2824
+#: builtin.c:3006
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
-"rshift(%lf, %lf): for store skiftev疆rdier vil give m疆rkelige resultater"
+"rshift(%lf, %lf): for store skiftev熳dier vil give m熳kelige resultater"
-#: builtin.c:2849
+#: builtin.c:3031
msgid "and: received non-numeric first argument"
-msgstr "and: fik et ikke-numerisk f繪rste argument"
+msgstr "and: fik et ikke-numerisk f鷨ste argument"
-#: builtin.c:2851
+#: builtin.c:3033
msgid "and: received non-numeric second argument"
msgstr "and: fik et ikke-numerisk andet argument"
-#: builtin.c:2857
+#: builtin.c:3039
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
-msgstr "and(%lf, %lf): negative v疆rdier vil give m疆rkelige resultater"
+msgstr "and(%lf, %lf): negative v熳dier vil give m熳kelige resultater"
-#: builtin.c:2859
+#: builtin.c:3041
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
-msgstr "and(%lf, %lf): kommatalsv疆rdier vil blive trunkeret"
+msgstr "and(%lf, %lf): kommatalsv熳dier vil blive trunkeret"
-#: builtin.c:2884
+#: builtin.c:3066
msgid "or: received non-numeric first argument"
-msgstr "or: fik et ikke-numerisk f繪rste argument"
+msgstr "or: fik et ikke-numerisk f鷨ste argument"
-#: builtin.c:2886
+#: builtin.c:3068
msgid "or: received non-numeric second argument"
msgstr "or: fik et ikke-numerisk andet argument"
-#: builtin.c:2892
+#: builtin.c:3074
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
-msgstr "or(%lf, %lf): negative v疆rdier vil give m疆rkelige resultater"
+msgstr "or(%lf, %lf): negative v熳dier vil give m熳kelige resultater"
-#: builtin.c:2894
+#: builtin.c:3076
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
-msgstr "or(%lf, %lf): kommatalsv疆rdier vil blive trunkeret"
+msgstr "or(%lf, %lf): kommatalsv熳dier vil blive trunkeret"
-#: builtin.c:2922
+#: builtin.c:3102
msgid "xor: received non-numeric first argument"
-msgstr "xor: fik et ikke-numerisk f繪rste argument"
+msgstr "xor: fik et ikke-numerisk f鷨ste argument"
-#: builtin.c:2924
+#: builtin.c:3104
msgid "xor: received non-numeric second argument"
msgstr "xor: fik et ikke-numerisk andet argument"
-#: builtin.c:2930
+#: builtin.c:3110
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
-msgstr "xor(%lf, %lf): negative v疆rdier vil give m疆rkelige resultater"
+msgstr "xor(%lf, %lf): negative v熳dier vil give m熳kelige resultater"
-#: builtin.c:2932
+#: builtin.c:3112
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
-msgstr "xor(%lf, %lf): kommatalsv疆rdier vil blive trunkeret"
+msgstr "xor(%lf, %lf): kommatalsv熳dier vil blive trunkeret"
-#: builtin.c:2956 builtin.c:2962
+#: builtin.c:3136
msgid "compl: received non-numeric argument"
msgstr "compl: fik et ikke-numerisk argument"
-#: builtin.c:2964
+#: builtin.c:3142
#, c-format
msgid "compl(%lf): negative value will give strange results"
-msgstr "compl(%lf): negative v疆rdier vil give m疆rkelige resultater"
+msgstr "compl(%lf): negative v熳dier vil give m熳kelige resultater"
-#: builtin.c:2966
+#: builtin.c:3144
#, c-format
msgid "compl(%lf): fractional value will be truncated"
-msgstr "compl(%lf): kommatalsv疆rdier vil blive trunkeret"
+msgstr "compl(%lf): kommatalsv熳dier vil blive trunkeret"
-#: builtin.c:3135
+#: builtin.c:3313
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: '%s' er ikke en gyldig lokalitetskategori"
-#: eval.c:412
+#: eval.c:395
#, c-format
msgid "unknown nodetype %d"
msgstr "ukendt nodetype %d"
-#: eval.c:423 eval.c:437
+#: eval.c:406 eval.c:420
#, c-format
msgid "unknown opcode %d"
msgstr "ukendt opkode %d"
-#: eval.c:434
+#: eval.c:417
#, c-format
msgid "opcode %s not an operator or keyword"
-msgstr "opkode %s er ikke en operator eller et n繪gleord"
+msgstr "opkode %s er ikke en operator eller et n鷤leord"
-#: eval.c:488
+#: eval.c:472
msgid "buffer overflow in genflags2str"
-msgstr "bufferoverl繪b i genflags2str"
+msgstr "bufferoverl鷷 i genflags2str"
-#: eval.c:698
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -993,807 +945,770 @@ msgstr ""
"\t# Funktionskaldsstak:\n"
"\n"
-#: eval.c:725
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
msgstr "'IGNORECASE' er en gawk-udvidelse"
-#: eval.c:754
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr "'BINMODE' er en gawk-udvidelse"
-#: eval.c:812
+#: eval.c:793
#, c-format
msgid "BINMODE value `%s' is invalid, treated as 3"
-msgstr "BINMODE v疆rdi '%s' er ugyldig, behandles som 3"
+msgstr "BINMODE v熳di '%s' er ugyldig, behandles som 3"
-#: eval.c:902
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "forkert '%sFMT'-specifikation '%s'"
-#: eval.c:980
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
-msgstr "deaktiverer '--lint' p疇 grund af en tildeling til 'LINT'"
-
-#: eval.c:1127 eval.c:1777
-#, c-format
-msgid "can't use function name `%s' as variable or array"
-msgstr "kan ikke bruge funktionsnavnet '%s' som variabel eller array"
+msgstr "deaktiverer '--lint' p grund af en tildeling til 'LINT'"
-#: eval.c:1158 eval.c:1789 eval.c:1802
+#: eval.c:1132
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "reference til ikke-initieret argument '%s'"
-#: eval.c:1177
+#: eval.c:1133
+#, c-format
+msgid "reference to uninitialized variable `%s'"
+msgstr "reference til ikke-initieret variabel '%s'"
+
+#: eval.c:1151
msgid "attempt to field reference from non-numeric value"
-msgstr "fors繪g p疇 at referere til et felt fra ikke-numerisk v疆rdi"
+msgstr "fors鷤 p at referere til et felt fra ikke-numerisk v熳di"
-#: eval.c:1179
+#: eval.c:1153
msgid "attempt to field reference from null string"
-msgstr "fors繪g p疇 at referere til et felt fra tom streng"
+msgstr "fors鷤 p at referere til et felt fra tom streng"
-#: eval.c:1185
+#: eval.c:1161
#, c-format
msgid "attempt to access field %ld"
-msgstr "fors繪g p疇 at f疇 adgang til felt %ld"
+msgstr "fors鷤 p at f adgang til felt %ld"
-#: eval.c:1194
+#: eval.c:1170
#, c-format
msgid "reference to uninitialized field `$%ld'"
msgstr "reference til ikke-initieret felt '$%ld'"
-#: eval.c:1256
+#: eval.c:1257
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "funktionen '%s' kaldt med flere argumenter end deklareret"
-#: eval.c:1437
+#: eval.c:1452
#, c-format
msgid "unwind_stack: unexpected type `%s'"
msgstr "unwind_stack: uventet type `%s'"
-#: eval.c:1532
+#: eval.c:1546
msgid "division by zero attempted in `/='"
-msgstr "fors繪gte at dividere med nul i '/='"
+msgstr "fors鷤te at dividere med nul i '/='"
-#: eval.c:1539
+#: eval.c:1553
#, c-format
msgid "division by zero attempted in `%%='"
-msgstr "fors繪gte at dividere med nul i '%%='"
-
-#: eval.c:1876 eval.c:2122
-#, c-format
-msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context"
-msgstr "fors繪g p疇 at bruge array '%s[\"%.*s\"]' i skalarsammenh疆ng"
-
-#: eval.c:1907
-msgid "assignment used in conditional context"
-msgstr "tildeling brugt i sammenligningsammenh疆ng"
-
-#: eval.c:1911
-msgid "statement has no effect"
-msgstr "kommandoen har ingen effekt"
-
-#: eval.c:2343
-#, c-format
-msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
-msgstr ""
-"for-l繪kke: array '%s' 疆ndrede st繪rrelse fra %ld til %ld under udf繪relse af "
-"l繪kken"
-
-#: eval.c:2458
-#, c-format
-msgid "function called indirectly through `%s' does not exist"
-msgstr "funktion kaldt indirekte via '%s' eksisterer ikke"
-
-#: eval.c:2470
-#, c-format
-msgid "function `%s' not defined"
-msgstr "funktionen '%s' er ikke defineret"
-
-#: eval.c:2511
-#, c-format
-msgid "non-redirected `getline' invalid inside `%s' rule"
-msgstr "ikke-omdirigeret 'getline' ugyldig inden i '%s'-regel"
-
-#: eval.c:2600
-#, c-format
-msgid "error reading input file `%s': %s"
-msgstr "fejl ved l疆sning af inddatafilen '%s': %s"
-
-#: eval.c:2614
-#, c-format
-msgid "`nextfile' cannot be called from a `%s' rule"
-msgstr "'nextfile' kan ikke kaldes fra en '%s'-regel"
+msgstr "fors鷤te at dividere med nul i '%%='"
-#: eval.c:2694
-#, c-format
-msgid "`next' cannot be called from a `%s' rule"
-msgstr "'next' kan ikke kaldes fra en '%s'-regel"
-
-#: eval.c:2760
-#, c-format
-msgid "Sorry, don't know how to interpret `%s'"
-msgstr "V矇d desv疆rre ikke hvordan '%s' skal fortolkes"
-
-#: ext.c:64
+#: ext.c:70
msgid "extensions are not allowed in sandbox mode"
msgstr "udvidelser er ikke tilladt i sandkasse-tilstand"
-#: ext.c:70 ext.c:75
+#: ext.c:73
msgid "`extension' is a gawk extension"
msgstr "'extension' er en gawk-udvidelse"
-#: ext.c:85
-#, c-format
-msgid "fatal: extension: cannot open `%s' (%s)\n"
-msgstr "atalt: extension: kan ikke 疇bne '%s' (%s)\n"
+#: ext.c:80
+#, fuzzy, c-format
+msgid "extension: cannot open library `%s' (%s)\n"
+msgstr "atalt: extension: kan ikke 嶙ne '%s' (%s)\n"
-#: ext.c:94
-#, c-format
+#: ext.c:86
+#, fuzzy, c-format
msgid ""
-"fatal: extension: library `%s': does not define "
-"`plugin_is_GPL_compatible' (%s)\n"
+"extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n"
msgstr ""
"fatalt: extension: bibliotek '%s': definer ikke "
"'plugin_is_GPL_compatible' (%s)\n"
-#: ext.c:103
-#, c-format
-msgid "fatal: extension: library `%s': cannot call function `%s' (%s)\n"
+#: ext.c:90
+#, fuzzy, c-format
+msgid "extension: library `%s': cannot call function `%s' (%s)\n"
msgstr ""
"fatalt: extension: bibliotek '%s': kan ikke kalde funktionen '%s' (%s)\n"
-#: ext.c:137
+#: ext.c:118
msgid "extension: missing function name"
msgstr "extension: mangler funktionsnavn"
-#: ext.c:142
+#: ext.c:123
#, c-format
msgid "extension: illegal character `%c' in function name `%s'"
msgstr "extension: ugyldigt tegn '%c' i funktionsnavn '%s'"
-#: ext.c:151
+#: ext.c:131
#, c-format
msgid "extension: can't redefine function `%s'"
msgstr "extension: kan ikke omdefinere funktion '%s'"
-#: ext.c:155
+#: ext.c:135
#, c-format
msgid "extension: function `%s' already defined"
msgstr "extension: funktionen '%s' er allerede defineret"
-#: ext.c:160
+#: ext.c:139
#, c-format
msgid "extension: function name `%s' previously defined"
msgstr "extension: funktionsnavnet '%s' er defineret tidligere"
-#: ext.c:162
+#: ext.c:141
#, 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:166
+#: ext.c:144
#, c-format
msgid "make_builtin: negative argument count for function `%s'"
msgstr "make_builtin: negativt argumentantal for funktion '%s'"
-#: ext.c:269
+#: ext.c:206
#, 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:272
+#: ext.c:209
#, c-format
msgid "function `%s': missing argument #%d"
msgstr "funktion '%s': mangler argument nummer %d"
-#: ext.c:289
+#: ext.c:226
#, c-format
msgid "function `%s': argument #%d: attempt to use scalar as an array"
msgstr ""
-"funktion '%s': argument nummer %d: fors繪g p疇 at bruge skalar som et array"
+"funktion '%s': argument nummer %d: fors鷤 p at bruge skalar som et array"
-#: ext.c:293
+#: ext.c:230
#, c-format
msgid "function `%s': argument #%d: attempt to use array as a scalar"
msgstr ""
-"funktion '%s': argument nummer %d: fors繪g p疇 at bruge array som en skalar"
+"funktion '%s': argument nummer %d: fors鷤 p at bruge array som en skalar"
-#: ext.c:306
+#: ext.c:244
msgid "Operation Not Supported"
-msgstr "Operationen underst繪ttes ikke"
+msgstr "Operationen underst黂tes ikke"
-#: field.c:328
+#: ext.c:256
+msgid "dynamic loading of library not supported"
+msgstr ""
+
+#: field.c:339
msgid "NF set to negative value"
-msgstr "NF sat til en negativ v疆rdi"
+msgstr "NF sat til en negativ v熳di"
-#: field.c:951 field.c:958 field.c:962
+#: field.c:962 field.c:969 field.c:973
msgid "split: fourth argument is a gawk extension"
msgstr "split: fjerde argument er en gawk-udvidelse"
-#: field.c:955
+#: field.c:966
msgid "split: fourth argument is not an array"
msgstr "split: fjerde argument er ikke et array"
-#: field.c:969
+#: field.c:980
msgid "split: second argument is not an array"
msgstr "split: andet argument er ikke et array"
-#: field.c:973
+#: field.c:984
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:978
+#: field.c:989
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:981
+#: field.c:992
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:1010
+#: field.c:1021
msgid "split: null string for third arg is a gawk extension"
msgstr "split: tom streng som tredje argument er en gawk-udvidelse"
-#: field.c:1050
+#: field.c:1061
msgid "patsplit: fourth argument is not an array"
msgstr "patsplit: fjerde argument er ikke et array"
-#: field.c:1055
+#: field.c:1066
msgid "patsplit: second argument is not an array"
msgstr "patsplit: andet argument er ikke et array"
-#: field.c:1061
+#: field.c:1072
msgid "patsplit: third argument must be non-null"
msgstr "patmatch: tredje argument er ikke et array"
-#: field.c:1065
+#: field.c:1076
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:1070
+#: field.c:1081
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:1073
+#: field.c:1084
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:1110
+#: field.c:1122
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "'FIELDWIDTHS' er en gawk-udvidelse"
-#: field.c:1173
+#: field.c:1186
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
-msgstr "ugyldig FIELDWIDTHS v疆rdi, n疆r '%s"
+msgstr "ugyldig FIELDWIDTHS v熳di, n熳 '%s"
-#: field.c:1246
+#: field.c:1259
msgid "null string for `FS' is a gawk extension"
msgstr "tom streng som 'FS' er en gawk-udvidelse"
-#: field.c:1250
+#: field.c:1263
msgid "old awk does not support regexps as value of `FS'"
-msgstr "gamle versioner af awk underst繪tter ikke regexp'er som v疆rdi for 'FS'"
+msgstr "gamle versioner af awk underst黂ter ikke regexp'er som v熳di for 'FS'"
-#: field.c:1369
+#: field.c:1382
msgid "`FPAT' is a gawk extension"
msgstr "'FPAT' er en gawk-udvidelse"
-#: getopt.c:574 getopt.c:590
-#, c-format
-msgid "%s: option '%s' is ambiguous\n"
+#: getopt.c:604 getopt.c:633
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
msgstr "%s: flaget '%s' er flertydigt\n"
-#: getopt.c:623 getopt.c:627
+#: getopt.c:679 getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: flaget '--%s' tillader ikke noget argument\n"
-#: getopt.c:636 getopt.c:641
+#: getopt.c:692 getopt.c:697
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: flaget '%c%s' tillader ikke noget argument\n"
-#: getopt.c:684 getopt.c:703
+#: getopt.c:740 getopt.c:759
#, c-format
msgid "%s: option '--%s' requires an argument\n"
-msgstr "%s: flaget '--%s' kr疆ver et argument\n"
+msgstr "%s: flaget '--%s' kr獒er et argument\n"
-#: getopt.c:741 getopt.c:744
+#: getopt.c:797 getopt.c:800
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: ukendt flag '--%s'\n"
-#: getopt.c:752 getopt.c:755
+#: getopt.c:808 getopt.c:811
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: ukendt flag '%c%s'\n"
-#: getopt.c:804 getopt.c:807
+#: getopt.c:860 getopt.c:863
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: ugyldigt flag - '%c'\n"
-#: getopt.c:857 getopt.c:874 getopt.c:1082 getopt.c:1100
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
-msgstr "%s: flaget kr疆ver et argument - '%c'\n"
+msgstr "%s: flaget kr獒er et argument - '%c'\n"
-#: getopt.c:930 getopt.c:946
+#: getopt.c:989 getopt.c:1005
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: flaget '-W %s' er flertydigt\n"
-#: getopt.c:970 getopt.c:988
+#: getopt.c:1029 getopt.c:1047
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: flaget '-W %s' tillader ikke noget argument\n"
-#: getopt.c:1009 getopt.c:1027
+#: getopt.c:1068 getopt.c:1086
#, c-format
msgid "%s: option '-W %s' requires an argument\n"
-msgstr "%s: flaget '-W %s' kr疆ver et argument\n"
+msgstr "%s: flaget '-W %s' kr獒er et argument\n"
-#: io.c:280
+#: io.c:326
#, c-format
msgid "command line argument `%s' is a directory: skipped"
msgstr "kommandolinjeargument '%s' er et katalog, oversprunget"
-#: io.c:283 io.c:385
+#: io.c:329 io.c:438
#, c-format
msgid "cannot open file `%s' for reading (%s)"
-msgstr "kan ikke 疇bne filen '%s' for l疆sning (%s)"
+msgstr "kan ikke 嶙ne filen '%s' for l犘ning (%s)"
-#: io.c:501
+#: io.c:568
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "lukning af fd %d ('%s') mislykkedes (%s)"
-#: io.c:578
+#: io.c:645
msgid "redirection not allowed in sandbox mode"
msgstr "omdirigering ikke tilladt i sandkasse-tilstand"
-#: io.c:612
+#: io.c:679
#, c-format
msgid "expression in `%s' redirection only has numeric value"
-msgstr "udtrykket i '%s'-omdirigering har kun numerisk v疆rdi"
+msgstr "udtrykket i '%s'-omdirigering har kun numerisk v熳di"
-#: io.c:618
+#: io.c:685
#, c-format
msgid "expression for `%s' redirection has null string value"
-msgstr "udtrykket for '%s'-omdirigering har en tom streng som v疆rdi"
+msgstr "udtrykket for '%s'-omdirigering har en tom streng som v熳di"
-#: io.c:624
+#: io.c:690
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
-"filnavnet '%s' for '%s'-omdirigering kan v疆re resultatet af et logisk udtryk"
+"filnavnet '%s' for '%s'-omdirigering kan v熳e resultatet af et logisk udtryk"
-#: io.c:667
+#: io.c:733
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
-msgstr "un繪dig blanding af '>' og '>>' for filen '%.*s'"
+msgstr "un鷣ig blanding af '>' og '>>' for filen '%.*s'"
-#: io.c:720
+#: io.c:786
#, c-format
msgid "can't open pipe `%s' for output (%s)"
-msgstr "kan ikke 疇bne datakanalen '%s' for udskrivning (%s)"
+msgstr "kan ikke 嶙ne datakanalen '%s' for udskrivning (%s)"
-#: io.c:730
+#: io.c:796
#, c-format
msgid "can't open pipe `%s' for input (%s)"
-msgstr "kan ikke 疇bne datakanalen '%s' for indtastning (%s)"
+msgstr "kan ikke 嶙ne datakanalen '%s' for indtastning (%s)"
-#: io.c:753
+#: io.c:819
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
-msgstr "kan ikke 疇bne tovejsdatakanalen '%s' for ind-/uddata (%s)"
+msgstr "kan ikke 嶙ne tovejsdatakanalen '%s' for ind-/uddata (%s)"
-#: io.c:835
+#: io.c:900
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "kan ikke omdirigere fra '%s' (%s)"
-#: io.c:838
+#: io.c:903
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "kan ikke omdirigere til '%s' (%s)"
-#: io.c:889
+#: io.c:954
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
-"n疇ede systembegr疆nsningen for 疇bne filer: begynder at multiplekse "
+"n嶒de systembegr熡sningen for 嶙ne filer: begynder at multiplekse "
"fildeskriptorer"
-#: io.c:905
+#: io.c:970
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "lukning af '%s' mislykkedes (%s)."
-#: io.c:913
+#: io.c:978
msgid "too many pipes or input files open"
-msgstr "for mange datakanaler eller inddatafiler 疇bne"
+msgstr "for mange datakanaler eller inddatafiler 嶙ne"
-#: io.c:935
+#: io.c:1000
msgid "close: second argument must be `to' or `from'"
-msgstr "close: andet argument skal v疆re 'to' eller 'from'"
+msgstr "close: andet argument skal v熳e 'to' eller 'from'"
-#: io.c:952
+#: io.c:1017
#, 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"
+msgstr "close: '%.*s' er ikke en 嶙en fil, datakanal eller ko-proces"
-#: io.c:957
+#: io.c:1022
msgid "close of redirection that was never opened"
-msgstr "lukning af omdirigering som aldrig blev 疇bnet"
+msgstr "lukning af omdirigering som aldrig blev 嶙net"
-#: io.c:1054
+#: io.c:1120
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
-"close: omdirigeringen '%s' blev ikke 疇bnet med '|&', andet argument ignoreret"
+"close: omdirigeringen '%s' blev ikke 嶙net med '|&', andet argument ignoreret"
-#: io.c:1070
+#: io.c:1137
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "fejlstatus (%d) fra lukning af datakanalen '%s' (%s)"
-#: io.c:1073
+#: io.c:1140
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "fejlstatus (%d) fra fillukning af '%s' (%s)"
-#: io.c:1093
+#: io.c:1160
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "ingen eksplicit lukning af soklen '%s' angivet"
-#: io.c:1096
+#: io.c:1163
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "ingen eksplicit lukning af ko-processen '%s' angivet"
-#: io.c:1099
+#: io.c:1166
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "ingen eksplicit lukning af datakanalen '%s' angivet"
-#: io.c:1102
+#: io.c:1169
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "ingen eksplicit lukning af filen '%s' angivet"
-#: io.c:1130 io.c:1185 main.c:793 main.c:830
+#: io.c:1197 io.c:1252 main.c:825 main.c:862
#, c-format
msgid "error writing standard output (%s)"
msgstr "fejl ved skrivning til standard ud (%s)"
-#: io.c:1134 io.c:1190
+#: io.c:1201 io.c:1257
#, c-format
msgid "error writing standard error (%s)"
msgstr "fejl ved skrivning til standard fejl (%s)"
-#: io.c:1142
+#: io.c:1209
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "datakanalsrensning af '%s' mislykkedes (%s)."
-#: io.c:1145
+#: io.c:1212
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "ko-procesrensning af datakanalen til '%s' mislykkedes (%s)."
-#: io.c:1148
+#: io.c:1215
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "filrensning af '%s' mislykkedes (%s)."
-#: io.c:1263
+#: io.c:1329
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr "lokal port %s ugyldig i '/inet'"
-#: io.c:1280
+#: io.c:1347
#, c-format
msgid "remote host and port information (%s, %s) invalid"
-msgstr "fjernv疆rt og portinformation (%s, %s) ugyldige"
+msgstr "fjernv熳t og portinformation (%s, %s) ugyldige"
-#: io.c:1432
+#: io.c:1499
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr "ingen (kendt) protokol opgivet i special-filnavn '%s'"
-#: io.c:1446
+#: io.c:1513
#, c-format
msgid "special file name `%s' is incomplete"
-msgstr "special-filnavn '%s' er ufuldst疆ndigt"
+msgstr "special-filnavn '%s' er ufuldst熡digt"
-#: io.c:1463
+#: io.c:1530
msgid "must supply a remote hostname to `/inet'"
msgstr "fjernmaskinenavn til '/inet' skal angives"
-#: io.c:1481
+#: io.c:1548
msgid "must supply a remote port to `/inet'"
msgstr "fjernport til '/inet' skal angives"
-#: io.c:1527
+#: io.c:1594
msgid "TCP/IP communications are not supported"
-msgstr "TCP/IP-kommunikation underst繪ttes ikke"
+msgstr "TCP/IP-kommunikation underst黂tes ikke"
-#: io.c:1694
+#: io.c:1764
#, c-format
msgid "could not open `%s', mode `%s'"
-msgstr "kunne ikke 疇bne '%s', tilstand '%s'"
+msgstr "kunne ikke 嶙ne '%s', tilstand '%s'"
-#: io.c:1748
+#: io.c:1814
#, c-format
msgid "close of master pty failed (%s)"
msgstr "lukning af master-pty mislykkedes (%s)"
-#: io.c:1750 io.c:1918 io.c:2075
+#: io.c:1816 io.c:1984 io.c:2145
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "lukning af standard ud i underproces mislykkedes (%s)"
-#: io.c:1753
+#: io.c:1819
#, 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:1755 io.c:1923
+#: io.c:1821 io.c:1989
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "lukning af standard ind i underproces mislykkedes (%s)"
-#: io.c:1758
+#: io.c:1824
#, 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:1760 io.c:1781
+#: io.c:1826 io.c:1847
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "lukning af slave-pty mislykkedes (%s)"
-#: io.c:1859 io.c:1921 io.c:2053 io.c:2078
+#: io.c:1925 io.c:1987 io.c:2122 io.c:2148
#, 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:1866 io.c:1926
+#: io.c:1932 io.c:1992
#, 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:1886 io.c:2068
+#: io.c:1952 io.c:2138
msgid "restoring stdout in parent process failed\n"
-msgstr "genskabelse af standard ud i for疆lderprocessen mislykkedes\n"
+msgstr "genskabelse af standard ud i for熞derprocessen mislykkedes\n"
-#: io.c:1894
+#: io.c:1960
msgid "restoring stdin in parent process failed\n"
-msgstr "genskabelse af standard ind i for疆lderprocessen mislykkedes\n"
+msgstr "genskabelse af standard ind i for熞derprocessen mislykkedes\n"
-#: io.c:1929 io.c:2080 io.c:2094
+#: io.c:1995 io.c:2150 io.c:2164
#, c-format
msgid "close of pipe failed (%s)"
msgstr "lukning af datakanalen mislykkedes (%s)"
-#: io.c:1974
+#: io.c:2040
msgid "`|&' not supported"
-msgstr "'|&' underst繪ttes ikke"
+msgstr "'|&' underst黂tes ikke"
-#: io.c:2040
+#: io.c:2107
#, c-format
msgid "cannot open pipe `%s' (%s)"
-msgstr "kan ikke 疇bne datakanalen '%s' (%s)"
+msgstr "kan ikke 嶙ne datakanalen '%s' (%s)"
-#: io.c:2088
+#: io.c:2158
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "kan ikke oprette barneproces for '%s' (fork: %s)"
-#: io.c:2521
+#: io.c:2637
#, c-format
msgid "data file `%s' is empty"
msgstr "datafilen '%s' er tom"
-#: io.c:2562 io.c:2570
+#: io.c:2678 io.c:2686
msgid "could not allocate more input memory"
msgstr "kunne ikke allokere mere hukommelse til inddata"
-#: io.c:3128
+#: io.c:3236
msgid "multicharacter value of `RS' is a gawk extension"
-msgstr "'RS' som flertegnsv疆rdi er en gawk-udvidelse"
+msgstr "'RS' som flertegnsv熳di er en gawk-udvidelse"
-#: io.c:3233
+#: io.c:3326
msgid "IPv6 communication is not supported"
-msgstr "IPv6-kommunikation underst繪ttes ikke"
+msgstr "IPv6-kommunikation underst黂tes ikke"
-#: main.c:364
+#: main.c:355
msgid "`-m[fr]' option irrelevant in gawk"
msgstr "'-m[fr]'-flaget er irrelevant i gawk"
-#: main.c:366
+#: main.c:357
msgid "-m option usage: `-m[fr] nnn'"
msgstr "brug af flaget -m: '-m[fr] nnn'"
-#: main.c:389
+#: main.c:386
msgid "empty argument to `-e/--source' ignored"
msgstr "tomt argument til '-e/--source' ignoreret"
-#: main.c:460
+#: main.c:472
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: flaget '-W %s' ukendt, ignoreret\n"
-#: main.c:513
+#: main.c:518
#, c-format
msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: flaget kr疆ver et argument -- %c\n"
+msgstr "%s: flaget kr獒er et argument -- %c\n"
-#: main.c:534
+#: main.c:539
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
-msgstr "milj繪variablen 'POSIXLY_CORRECT' sat: aktiverer '--posix'"
+msgstr "milj黲ariablen 'POSIXLY_CORRECT' sat: aktiverer '--posix'"
-#: main.c:540
+#: main.c:545
msgid "`--posix' overrides `--traditional'"
-msgstr "'--posix' tilsides疆tter '--traditional'"
+msgstr "'--posix' tilsides犚ter '--traditional'"
-#: main.c:551
+#: main.c:556
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
-msgstr "'--posix'/'--traditional' tilsides疆tter '--non-decimal-data'"
+msgstr "'--posix'/'--traditional' tilsides犚ter '--non-decimal-data'"
-#: main.c:555
+#: main.c:560
#, c-format
msgid "running %s setuid root may be a security problem"
-msgstr "at k繪re %s setuid root kan v疆re et sikkerhedsproblem"
+msgstr "at k鷨e %s setuid root kan v熳e et sikkerhedsproblem"
-#: main.c:560
+#: main.c:565
msgid "`--posix' overrides `--binary'"
-msgstr "'--posix' tilsides疆tter '--binary'"
+msgstr "'--posix' tilsides犚ter '--binary'"
-#: main.c:611
+#: main.c:623
#, c-format
msgid "can't set binary mode on stdin (%s)"
-msgstr "kan ikke s疆tte bin疆r tilstand p疇 standard ind (%s)"
+msgstr "kan ikke s犚te bin熳 tilstand p standard ind (%s)"
-#: main.c:614
+#: main.c:626
#, c-format
msgid "can't set binary mode on stdout (%s)"
-msgstr "kan ikke s疆tte bin疆r tilstand p疇 standard ud (%s)"
+msgstr "kan ikke s犚te bin熳 tilstand p standard ud (%s)"
-#: main.c:616
+#: main.c:628
#, c-format
msgid "can't set binary mode on stderr (%s)"
-msgstr "kan ikke s疆tte bin疆r tilstand p疇 standard fejl (%s)"
+msgstr "kan ikke s犚te bin熳 tilstand p standard fejl (%s)"
-#: main.c:655
+#: main.c:679
msgid "no program text at all!"
msgstr "ingen programtekst overhovedet!"
-#: main.c:733
+#: main.c:763
#, 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:735
+#: main.c:765
#, 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:740
+#: main.c:770
msgid "POSIX options:\t\tGNU long options: (standard)\n"
msgstr "POSIX-flag:\t\tlange GNU-flag: (standard)\n"
-#: main.c:741
+#: main.c:771
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f progfil\t\t--file=progfil\n"
-#: main.c:742
+#: main.c:772
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F fs\t\t\t--field-separator=fs\n"
-#: main.c:743
+#: main.c:773
msgid "\t-v var=val\t\t--assign=var=val\n"
-msgstr "\t-v var=v疆rdi\t\t--assign=var=v疆rdi\n"
+msgstr "\t-v var=v熳di\t\t--assign=var=v熳di\n"
-#: main.c:744
+#: main.c:774
msgid "Short options:\t\tGNU long options: (extensions)\n"
msgstr "POSIX-flag:\t\tlange GNU-flag: (udvidelser)\n"
-#: main.c:745
+#: main.c:775
msgid "\t-b\t\t\t--characters-as-bytes\n"
msgstr "\t-b\t\t\t--characters-as-bytes\n"
-#: main.c:746
+#: main.c:776
msgid "\t-c\t\t\t--traditional\n"
msgstr "\t-c\t\t\t--traditional\n"
-#: main.c:747
+#: main.c:777
msgid "\t-C\t\t\t--copyright\n"
msgstr "\t-C\t\t\t--copyright\n"
-#: main.c:748
+#: main.c:778
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
msgstr "\t-d[fil]\t\t--dump-variables[=fil]\n"
-#: main.c:749
+#: main.c:779
+#, fuzzy
+msgid "\t-D[file]\t\t--debug[=file]\n"
+msgstr "\t-p[fil]\t\t--profile[=fil]\n"
+
+#: main.c:780
msgid "\t-e 'program-text'\t--source='program-text'\n"
msgstr "\t-e 'programtekst'\t--source='programtekst'\n"
-#: main.c:750
+#: main.c:781
msgid "\t-E file\t\t\t--exec=file\n"
msgstr "\t-E fil\t\t\t--exec=fil\n"
-#: main.c:751
+#: main.c:782
msgid "\t-g\t\t\t--gen-pot\n"
msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:752
+#: main.c:783
msgid "\t-h\t\t\t--help\n"
msgstr "\t-h\t\t\t--help\n"
-#: main.c:753
+#: main.c:784
+msgid "\t-l library\t\t--load=library\n"
+msgstr ""
+
+#: main.c:785
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
msgstr "\t-L [fatal]\t\t--lint[=fatal]\n"
-#: main.c:754
+#: main.c:786
msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr "\t-n\t\t\t--non-decimal-data\n"
-#: main.c:755
+#: main.c:787
+#, fuzzy
+msgid "\t-M\t\t\t--bignum\n"
+msgstr "\t-g\t\t\t--gen-pot\n"
+
+#: main.c:788
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr "\t-N\t\t\t--use-lc-numeric\n"
-#: main.c:756
+#: main.c:789
+#, fuzzy
+msgid "\t-o[file]\t\t--pretty-print[=file]\n"
+msgstr "\t-p[fil]\t\t--profile[=fil]\n"
+
+#: main.c:790
msgid "\t-O\t\t\t--optimize\n"
msgstr "\t-O\t\t\t--optimize\n"
-#: main.c:757
+#: main.c:791
msgid "\t-p[file]\t\t--profile[=file]\n"
msgstr "\t-p[fil]\t\t--profile[=fil]\n"
-#: main.c:758
+#: main.c:792
msgid "\t-P\t\t\t--posix\n"
msgstr "\t-P\t\t\t--posix\n"
-#: main.c:759
+#: main.c:793
msgid "\t-r\t\t\t--re-interval\n"
msgstr "\t-r\t\t\t--re-interval\n"
-#: main.c:761
-msgid "\t-R file\t\t\t--command=file\n"
-msgstr "\t-R file\t\t\t--command=fil\n"
-
-#: main.c:762
+#: main.c:794
msgid "\t-S\t\t\t--sandbox\n"
msgstr "\t-S\t\t\t--sandbox\n"
-#: main.c:763
+#: main.c:795
msgid "\t-t\t\t\t--lint-old\n"
msgstr "\t-t\t\t\t--lint-old\n"
-#: main.c:764
+#: main.c:796
msgid "\t-V\t\t\t--version\n"
msgstr "\t-V\t\t\t--version\n"
-#: main.c:766
+#: main.c:798
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:769
+#: main.c:801
msgid "\t-Y\t\t--parsedebug\n"
msgstr "\t-Y\t\t--parsedebug\n"
@@ -1802,7 +1717,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:778
+#: main.c:810
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -1813,19 +1728,19 @@ msgstr ""
"For at rapportere fejl kan du se punktet 'Bugs' i 'gawk.info', som er\n"
"sektionen 'Reporting Problems and Bugs' i den trykte version.\n"
"\n"
-"Rapport矇r kommentarer til overs疆ttelsen til <dansk@dansk-gruppen.dk>.\n"
+"Rapport廨 kommentarer til overs犚telsen til <dansk@dansk-gruppen.dk>.\n"
-#: main.c:782
+#: main.c:814
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
"\n"
msgstr ""
-"gawk er et sprog til m繪nster-genkendelse og -behandling.\n"
-"Almindeligvis l疆ser gawk fra standard ind og skriver til standard ud.\n"
+"gawk er et sprog til m鷢ster-genkendelse og -behandling.\n"
+"Almindeligvis l犘er gawk fra standard ind og skriver til standard ud.\n"
"\n"
-#: main.c:786
+#: main.c:818
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -1835,7 +1750,7 @@ msgstr ""
"\tgawk '{ sum += $1 }; END { print sum }' fil\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:806
+#: main.c:838
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1846,16 +1761,16 @@ msgid ""
"(at your option) any later version.\n"
"\n"
msgstr ""
-"Copyright 穢 1989, 1991-%d Free Software Foundation.\n"
+"Copyright 1989, 1991-%d Free Software Foundation.\n"
"\n"
"Dette program er frit programmel. Du kan distribuere det og/eller\n"
-"疆ndre det under betingelserne i GNU General Public License, offentliggjort\n"
+"熡dre det under betingelserne i GNU General Public License, offentliggjort\n"
"af Free Software Foundation, enten version 3 af licensen, eller (hvis du "
"vil)\n"
"enhver senere version.\n"
"\n"
-#: main.c:814
+#: main.c:846
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"
@@ -1863,157 +1778,152 @@ msgid ""
"GNU General Public License for more details.\n"
"\n"
msgstr ""
-"Dette program distribueres i h疇b om at det vil v疆re nyttigt,\n"
-"men UDEN NOGEN SOM HELST GARANTI, ogs疇 uden underforst疇et garanti\n"
-"om SALGBARHED eller EGNETHED FOR NOGET SPECIELT FORML. Se GNU\n"
+"Dette program distribueres i h嶙 om at det vil v熳e nyttigt,\n"
+"men UDEN NOGEN SOM HELST GARANTI, ogs uden underforst嶒t garanti\n"
+"om SALGBARHED eller EGNETHED FOR NOGET SPECIELT FORM鐺. Se GNU\n"
"General Public License for yderligere information.\n"
"\n"
-#: main.c:820
+#: main.c:852
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 ""
-"Du b繪r have f疇et en kopi af GNU General Public License sammen\n"
-"med dette program. Hvis ikke, s疇 se http://www.gnu.org/licenses/.\n"
+"Du b鷨 have f嶒t en kopi af GNU General Public License sammen\n"
+"med dette program. Hvis ikke, s se http://www.gnu.org/licenses/.\n"
-#: main.c:855
+#: main.c:887
msgid "-Ft does not set FS to tab in POSIX awk"
-msgstr "-Ft s疆tter ikke FS til tab i POSIX-awk"
+msgstr "-Ft s犚ter ikke FS til tab i POSIX-awk"
-#: main.c:1089
+#: main.c:1133
#, c-format
msgid "unknown value for field spec: %d\n"
-msgstr "ukendt v疆rdi for felt-spec: %d\n"
+msgstr "ukendt v熳di for felt-spec: %d\n"
-#: main.c:1170
+#: main.c:1214
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
"\n"
msgstr ""
-"%s: '%s' argument til '-v' ikke p疇 formen 'var=v疆rdi'\n"
+"%s: '%s' argument til '-v' ikke p formen 'var=v熳di'\n"
"\n"
-#: main.c:1196
+#: main.c:1240
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "'%s' er ikke et gyldigt variabelnavn"
-#: main.c:1199
+#: main.c:1243
#, 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:1203
-#, fuzzy, c-format
+#: main.c:1247
+#, c-format
msgid "cannot use gawk builtin `%s' as variable name"
-msgstr "extension: kan ikke bruge gawk's indbyggede '%s' som funktionsnavn"
+msgstr "kan ikke bruge gawk's indbyggede '%s' som variabelnavn"
-#: main.c:1208
-#, fuzzy, c-format
+#: main.c:1252
+#, c-format
msgid "cannot use function `%s' as variable name"
-msgstr "kan ikke bruge funktionsnavnet '%s' som variabel eller array"
+msgstr "kan ikke bruge funktion '%s' som variabelnavn"
-#: main.c:1261
+#: main.c:1305
msgid "floating point exception"
msgstr "flydendetalsundtagelse"
-#: main.c:1268
+#: main.c:1312
msgid "fatal error: internal error"
msgstr "fatal fejl: intern fejl"
-#: main.c:1283
+#: main.c:1327
msgid "fatal error: internal error: segfault"
msgstr "fatal fejl: intern fejl: segmentfejl"
-#: main.c:1295
+#: main.c:1339
msgid "fatal error: internal error: stack overflow"
-msgstr "fatal fejl: intern fejl: stakoverl繪b"
+msgstr "fatal fejl: intern fejl: stakoverl鷷"
-#: main.c:1345
+#: main.c:1393
#, c-format
msgid "no pre-opened fd %d"
-msgstr "ingen fd %d 疇bnet i forvejen"
+msgstr "ingen fd %d 嶙net i forvejen"
-#: main.c:1352
+#: main.c:1400
#, c-format
msgid "could not pre-open /dev/null for fd %d"
-msgstr "kunne ikke i forvejen 疇bne /dev/null for fd %d"
+msgstr "kunne ikke i forvejen 嶙ne /dev/null for fd %d"
-#: main.c:1375 main.c:1384
-#, c-format
-msgid "could not find groups: %s"
-msgstr "kunne ikke finde grupper: %s"
-
-#: msg.c:63
+#: msg.c:61
#, c-format
msgid "cmd. line:"
msgstr "kommandolinje:"
-#: msg.c:107
+#: msg.c:121
msgid "error: "
msgstr "fejl: "
-#: node.c:406
+#: node.c:436
msgid "backslash at end of string"
-msgstr "omvendt skr疇streg i slutningen af strengen"
+msgstr "omvendt skr廛treg i slutningen af strengen"
-#: node.c:517
+#: node.c:520
#, c-format
msgid "old awk does not support the `\\%c' escape sequence"
-msgstr "gamle versioner af awk underst繪tter ikke '\\%c' undvigesekvens"
+msgstr "gamle versioner af awk underst黂ter ikke '\\%c' undvigesekvens"
-#: node.c:568
+#: node.c:571
msgid "POSIX does not allow `\\x' escapes"
msgstr "POSIX tillader ikke '\\x'-kontrolsekvenser"
-#: node.c:574
+#: node.c:577
msgid "no hex digits in `\\x' escape sequence"
msgstr "ingen heksadecimale cifre i '\\x'-kontrolsekvenser"
-#: node.c:596
+#: node.c:599
#, c-format
msgid ""
"hex escape \\x%.*s of %d characters probably not interpreted the way you "
"expect"
msgstr ""
-"den heksadecimale sekvens \\x%.*s p疇 %d tegn nok ikke forst疇et som du "
+"den heksadecimale sekvens \\x%.*s p %d tegn nok ikke forst嶒t som du "
"forventer det"
-#: node.c:611
+#: node.c:614
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr "kontrolsekvensen '\\%c' behandlet som kun '%c'"
-#: node.c:750
+#: node.c:759
msgid ""
"Invalid multibyte data detected. There may be a mismatch between your data "
"and your locale."
msgstr ""
-"Ugyldigt multibyte data fundet. M疇ske er der uoverensstemmelse mellem dine "
+"Ugyldigt multibyte data fundet. M廛ke er der uoverensstemmelse mellem dine "
"data og dit locale."
#: posix/gawkmisc.c:176
#, c-format
msgid "%s %s `%s': could not get fd flags: (fcntl F_GETFD: %s)"
-msgstr "%s %s '%s': kunne ikke f疇 fat p疇 fd flag: (fcntl F_GETFD: %s)"
+msgstr "%s %s '%s': kunne ikke f fat p fd flag: (fcntl F_GETFD: %s)"
#: posix/gawkmisc.c:188
#, c-format
msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
-msgstr "%s %s '%s': kunne ikke s疆tte luk-ved-exec (fcntl F_SETFD: %s)"
+msgstr "%s %s '%s': kunne ikke s犚te luk-ved-exec (fcntl F_SETFD: %s)"
-#: profile.c:83
+#: profile.c:69
#, c-format
msgid "could not open `%s' for writing: %s"
-msgstr "kunne ikke 疇bne '%s' for skrivning: %s"
+msgstr "kunne ikke 嶙ne '%s' for skrivning: %s"
-#: profile.c:85
+#: profile.c:71
msgid "sending profile to standard error"
msgstr "sender profilen til standard fejl"
-#: profile.c:203
+#: profile.c:187
#, c-format
msgid ""
"\t# %s block(s)\n"
@@ -2022,7 +1932,7 @@ msgstr ""
"\t# %s blokke\n"
"\n"
-#: profile.c:208
+#: profile.c:192
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -2031,17 +1941,22 @@ msgstr ""
"\t# Regler\n"
"\n"
-#: profile.c:279
+#: profile.c:266
#, c-format
msgid "internal error: %s with null vname"
msgstr "intern fejl: %s med null vname"
-#: profile.c:952
+#: profile.c:528
+#, fuzzy
+msgid "internal error: builtin with null fname"
+msgstr "intern fejl: %s med null vname"
+
+#: profile.c:943
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# profil til gawk oprettet %s\n"
-#: profile.c:1331
+#: profile.c:1328
#, c-format
msgid ""
"\n"
@@ -2050,116 +1965,191 @@ msgstr ""
"\n"
"\t# Funktioner, listede alfabetisk\n"
-#: profile.c:1370
+#: profile.c:1366
#, c-format
msgid "redir2str: unknown redirection type %d"
msgstr "redir2str: uykendt omdirigeringstype %d"
-#: re.c:572
-#, fuzzy, c-format
+#: re.c:571
+#, c-format
msgid "range of the form `[%c-%c]' is locale dependent"
-msgstr "omr疇de p疇 formen `[%c-%c]' er locale-afh疆ngig"
+msgstr "omr嶟e p formen `[%c-%c]' er locale-afh熡gig"
-#: re.c:599
+#: re.c:598
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
-msgstr "regexp-komponent `%.*s' skulle nok v疆re `[%.*s]'"
+msgstr "regexp-komponent `%.*s' skulle nok v熳e `[%.*s]'"
-#: regcomp.c:132
+#: regcomp.c:131
msgid "Success"
msgstr "Lykkedes"
-#: regcomp.c:135
+#: regcomp.c:134
msgid "No match"
msgstr "Mislykkedes"
-#: regcomp.c:138
+#: regcomp.c:137
msgid "Invalid regular expression"
-msgstr "Ugyldigt regul疆rt udtryk"
+msgstr "Ugyldigt regul熳t udtryk"
-#: regcomp.c:141
+#: regcomp.c:140
msgid "Invalid collation character"
msgstr "Ugyldigt sorteringstegn"
-#: regcomp.c:144
+#: regcomp.c:143
msgid "Invalid character class name"
msgstr "Ugyldigt tegnklassenavn"
-#: regcomp.c:147
+#: regcomp.c:146
msgid "Trailing backslash"
-msgstr "Efterf繪lgende omvendt skr疇streg"
+msgstr "Efterf鷲gende omvendt skr廛treg"
-#: regcomp.c:150
+#: regcomp.c:149
msgid "Invalid back reference"
msgstr "Ugyldig bagudreference"
-#: regcomp.c:153
+#: regcomp.c:152
msgid "Unmatched [ or [^"
msgstr "Ubalanceret [ eller [^"
-#: regcomp.c:156
+#: regcomp.c:155
msgid "Unmatched ( or \\("
msgstr "Ubalanceret ( eller \\("
-#: regcomp.c:159
+#: regcomp.c:158
msgid "Unmatched \\{"
msgstr "Ubalanceret \\{"
-#: regcomp.c:162
+#: regcomp.c:161
msgid "Invalid content of \\{\\}"
msgstr "Ugyldigt indhold i \\{\\}"
-#: regcomp.c:165
+#: regcomp.c:164
msgid "Invalid range end"
msgstr "Ugyldig intervalslutning"
-#: regcomp.c:168
+#: regcomp.c:167
msgid "Memory exhausted"
msgstr "Hukommelsen opbrugt"
-#: regcomp.c:171
+#: regcomp.c:170
msgid "Invalid preceding regular expression"
-msgstr "Ugyldigt foreg疇ende regul疆rt udtryk"
+msgstr "Ugyldigt foreg嶒nde regul熳t udtryk"
-#: regcomp.c:174
+#: regcomp.c:173
msgid "Premature end of regular expression"
-msgstr "For tidligt slut p疇 regul疆rt udtryk"
+msgstr "For tidligt slut p regul熳t udtryk"
-#: regcomp.c:177
+#: regcomp.c:176
msgid "Regular expression too big"
-msgstr "Regul疆rt udtryk for stort"
+msgstr "Regul熳t udtryk for stort"
-#: regcomp.c:180
+#: regcomp.c:179
msgid "Unmatched ) or \\)"
msgstr "Ubalanceret ) eller \\)"
-#: regcomp.c:701
+#: regcomp.c:700
msgid "No previous regular expression"
-msgstr "Intet foreg疇ende regul疆rt udtryk"
+msgstr "Intet foreg嶒nde regul熳t udtryk"
+
+#~ msgid "attempt to use function `%s' as an array"
+#~ msgstr "fors鷤 p at bruge funktionen '%s' som et array"
+
+#~ msgid "reference to uninitialized element `%s[\"%.*s\"]'"
+#~ msgstr "reference til ikke-initieret element '%s[\"%.*s\"]'"
+
+#~ msgid "subscript of array `%s' is null string"
+#~ msgstr "indeks i array '%s' er en tom streng"
+
+#~ msgid "%s: empty (null)\n"
+#~ msgstr "%s: tom (null)\n"
+
+#~ msgid "%s: empty (zero)\n"
+#~ msgstr "%s: tom (nul)\n"
+
+#~ msgid "%s: table_size = %d, array_size = %d\n"
+#~ msgstr "%s: tabelst鷨relse = %d, arrayst鷨relse = %d\n"
+
+#~ msgid "%s: is parameter\n"
+#~ msgstr "%s: er parameter\n"
+
+#~ msgid "%s: array_ref to %s\n"
+#~ msgstr "%s: arrayreference til %s\n"
+
+#~ msgid "use of non-array as array"
+#~ msgstr "brug af ikke-array som array"
+
+#~ msgid "can't use function name `%s' as variable or array"
+#~ msgstr "kan ikke bruge funktionsnavnet '%s' som variabel eller array"
+
+#~ msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context"
+#~ msgstr "fors鷤 p at bruge array '%s[\"%.*s\"]' i skalarsammenh熡g"
+
+#~ msgid "assignment used in conditional context"
+#~ msgstr "tildeling brugt i sammenligningsammenh熡g"
+
+#~ msgid "statement has no effect"
+#~ msgstr "kommandoen har ingen effekt"
+
+#~ msgid ""
+#~ "for loop: array `%s' changed size from %ld to %ld during loop execution"
+#~ msgstr ""
+#~ "for-l鷦ke: array '%s' 熡drede st鷨relse fra %ld til %ld under udf鷨else "
+#~ "af l鷦ken"
+
+#~ msgid "function called indirectly through `%s' does not exist"
+#~ msgstr "funktion kaldt indirekte via '%s' eksisterer ikke"
+
+#~ 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 "error reading input file `%s': %s"
+#~ msgstr "fejl ved l犘ning af inddatafilen '%s': %s"
+
+#~ msgid "`nextfile' cannot be called from a `%s' rule"
+#~ msgstr "'nextfile' kan ikke kaldes fra en '%s'-regel"
+
+#~ msgid "`exit' cannot be called in the current context"
+#~ msgstr "'exit' kan ikke kaldes i den aktuelle kontekst"
+
+#~ msgid "`next' cannot be called from a `%s' rule"
+#~ msgstr "'next' kan ikke kaldes fra en '%s'-regel"
+
+#~ msgid "Sorry, don't know how to interpret `%s'"
+#~ msgstr "V嶮 desv熳re ikke hvordan '%s' skal fortolkes"
+
+#~ msgid "\t-R file\t\t\t--command=file\n"
+#~ msgstr "\t-R file\t\t\t--command=fil\n"
+
+#~ msgid "could not find groups: %s"
+#~ msgstr "kunne ikke finde grupper: %s"
#~ msgid "assignment is not allowed to result of builtin function"
#~ msgstr "tildeling er ikke tilladt til resultatet fra en indbygget funktion"
#~ msgid "attempt to use array in a scalar context"
-#~ msgstr "fors繪g p疇 at bruge array i skalarsammenh疆ng"
+#~ msgstr "fors鷤 p at bruge array i skalarsammenh熡g"
#~ msgid "statement may have no effect"
-#~ msgstr "kommandoen har m疇ske ikke nogen effekt"
+#~ msgstr "kommandoen har m廛ke ikke nogen effekt"
#~ msgid "out of memory"
-#~ msgstr "slut p疇 hukommelsen"
+#~ msgstr "slut p hukommelsen"
#~ msgid "attempt to use scalar `%s' as array"
-#~ msgstr "fors繪g p疇 at bruge skalaren '%s' som array"
+#~ msgstr "fors鷤 p at bruge skalaren '%s' som array"
#~ msgid "attempt to use array `%s' in scalar context"
-#~ msgstr "fors繪g p疇 at bruge array '%s' i skalarsammenh疆ng"
+#~ msgstr "fors鷤 p at bruge array '%s' i skalarsammenh熡g"
#~ msgid "call of `length' without parentheses is deprecated by POSIX"
-#~ msgstr "kald af 'length' uden parenteser er for疆ldet if繪lge POSIX"
+#~ msgstr "kald af 'length' uden parenteser er for熞det if鷲ge POSIX"
#~ msgid "division by zero attempted in `/'"
-#~ msgstr "fors繪gte at dividere med nul i '/'"
+#~ msgstr "fors鷤te at dividere med nul i '/'"
#~ msgid "length: untyped parameter argument will be forced to scalar"
#~ msgstr "length: parameter uden type vil blive brugt som skalar"
@@ -2168,10 +2158,10 @@ msgstr "Intet foreg疇ende regul疆rt udtryk"
#~ msgstr "length: argument uden type vil blive brugt som skalar"
#~ msgid "`break' outside a loop is not portable"
-#~ msgstr "'break' uden for en l繪kke er ikke portabelt"
+#~ msgstr "'break' uden for en l鷦ke er ikke portabelt"
#~ msgid "`continue' outside a loop is not portable"
-#~ msgstr "'continue' uden for en l繪kke er ikke portabelt"
+#~ msgstr "'continue' uden for en l鷦ke er ikke portabelt"
#~ msgid "`next' cannot be called from a BEGIN rule"
#~ msgstr "'next' kan ikke kaldes fra en BEGIN-regel"
@@ -2183,7 +2173,7 @@ msgstr "Intet foreg疇ende regul疆rt udtryk"
#~ "concatenation: side effects in one expression have changed the length of "
#~ "another!"
#~ msgstr ""
-#~ "konkatenering: sideeffekter i et udtryk har 疆ndret l疆ngden af et andet!"
+#~ "konkatenering: sideeffekter i et udtryk har 熡dret l熡gden af et andet!"
#~ msgid "illegal type (%s) in tree_eval"
#~ msgstr "ugyldig type (%s) i tree_eval"
@@ -2192,16 +2182,16 @@ msgstr "Intet foreg疇ende regul疆rt udtryk"
#~ msgstr "\t# -- main --\n"
#~ msgid "invalid tree type %s in redirect()"
-#~ msgstr "ugyldig tr疆type %s i redirect()"
+#~ msgstr "ugyldig tr犚ype %s i redirect()"
#~ msgid "/inet/raw client not ready yet, sorry"
-#~ msgstr "/inet/raw-klient er desv疆rre ikke klar endnu"
+#~ msgstr "/inet/raw-klient er desv熳re ikke klar endnu"
#~ msgid "only root may use `/inet/raw'."
#~ msgstr "kun root kan bruge '/inet/raw'."
#~ msgid "/inet/raw server not ready yet, sorry"
-#~ msgstr "/inet/raw-server er desv疆rre ikke klar endnu"
+#~ msgstr "/inet/raw-server er desv熳re ikke klar endnu"
#~ msgid "file `%s' is a directory"
#~ msgstr "filen '%s' er et katalog"
@@ -2213,7 +2203,7 @@ msgstr "Intet foreg疇ende regul疆rt udtryk"
#~ msgstr "brug 'PROCINFO[...]' i stedet for '/dev/user'"
#~ msgid "\t-m[fr] val\n"
-#~ msgstr "\t-m[fr] v疆rdi\n"
+#~ msgstr "\t-m[fr] v熳di\n"
#~ msgid "\t-W compat\t\t--compat\n"
#~ msgstr "\t-W compat\t\t--compat\n"
@@ -2231,7 +2221,7 @@ msgstr "Intet foreg疇ende regul疆rt udtryk"
#~ msgstr "# behandlet internt som 'delete'"
#~ msgid "# this is a dynamically loaded extension function"
-#~ msgstr "# dette er en dynamisk indl疆st udvidelsesfunktion"
+#~ msgstr "# dette er en dynamisk indl犘t udvidelsesfunktion"
#~ msgid ""
#~ "\t# BEGIN block(s)\n"
diff --git a/po/de.gmo b/po/de.gmo
index f0682785..a473dc50 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index 2c1c6265..ea1bcfe5 100644
--- a/po/de.po
+++ b/po/de.po
@@ -2,14 +2,14 @@
# Copyright (C) 2000 Free Software Foundation, Inc.
# This file is distributed under the same license as the gawk package.
#
-# Philipp Thomas <pth@suse.de>, 2011
+# Philipp Thomas <pth@suse.de>, 2011 2012
#
msgid ""
msgstr ""
-"Project-Id-Version: gawk 4.0.0\n"
+"Project-Id-Version: gawk 4.0.0h\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2011-11-14 21:46+0200\n"
-"PO-Revision-Date: 2011-09-27 16:38+0200\n"
+"POT-Creation-Date: 2012-04-27 10:06+0300\n"
+"PO-Revision-Date: 2012-01-30 16:21+0100\n"
"Last-Translator: Philipp Thomas <pth@suse.de>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
"Language: de\n"
@@ -17,525 +17,482 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: array.c:140
+#: array.c:266
#, c-format
msgid "from %s"
msgstr "von %s"
-#: array.c:248
+#: array.c:366
msgid "attempt to use a scalar value as array"
msgstr "Es wird versucht, einen Skalar als Feld zu verwenden"
-#: array.c:251
-#, c-format
-msgid "attempt to use function `%s' as an array"
-msgstr "Es wird versucht, die Funktion 罈%s竄 als Feld zu verwenden"
-
-#: array.c:254
+#: array.c:368
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
msgstr "Es wird versucht, den skalaren Parameter 罈%s竄 als Feld zu verwenden"
-#: array.c:257
+#: array.c:371
#, c-format
msgid "attempt to use scalar `%s' as an array"
msgstr "Es wird versucht, den Skalar 罈%s竄 als Array zu verwenden"
-#: array.c:302 array.c:707 builtin.c:84 builtin.c:1384 builtin.c:1426
-#: builtin.c:1439 builtin.c:1858 builtin.c:1870 eval.c:1135 eval.c:1139
-#: eval.c:1495 eval.c:1812
+#: array.c:418 array.c:584 builtin.c:85 builtin.c:1560 builtin.c:1602
+#: builtin.c:1615 builtin.c:2041 builtin.c:2053 eval.c:1109 eval.c:1113
+#: eval.c:1508
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "Es wird versucht, das Feld 罈%s竄 in einem Skalarkontext zu verwenden"
-#: array.c:513
-#, c-format
-msgid "reference to uninitialized element `%s[\"%.*s\"]'"
-msgstr "Bezug auf ein nicht initialisiertes Element 罈%s[\"%.*s\"]竄"
-
-#: array.c:519
-#, c-format
-msgid "subscript of array `%s' is null string"
-msgstr "Der Index von Feld 罈%s竄 ist ein Nullstring"
-
-#: array.c:723
+#: array.c:591
#, c-format
msgid "delete: index `%s' not in array `%s'"
msgstr "delete: Index 罈%s竄 ist in Feld 罈%s竄 nicht vorhanden"
-#: array.c:734 eval.c:1865
+#: array.c:605
#, c-format
msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
msgstr "Es wird versucht, den Skalar 罈%s[\"%.*s\"]竄 als Feld zu verwenden"
-#: array.c:910
-#, c-format
-msgid "%s: empty (null)\n"
-msgstr "%s: leer (Null)\n"
-
-#: array.c:915
-#, c-format
-msgid "%s: empty (zero)\n"
-msgstr "%s: leer (0)\n"
-
-#: array.c:919
-#, c-format
-msgid "%s: table_size = %d, array_size = %d\n"
-msgstr "%s: Tabellengr繹e = %d, Feldgr繹e = %d\n"
-
-#: array.c:954
-#, c-format
-msgid "%s: is parameter\n"
-msgstr "%s: ist ein Parameter\n"
-
-#: array.c:958
-#, c-format
-msgid "%s: array_ref to %s\n"
-msgstr "%s: Feld-Referenz auf %s\n"
-
-#: array.c:963
-msgid "adump: argument not an array"
+#: array.c:784
+#, fuzzy
+msgid "adump: first argument not an array"
msgstr "adump: Das Argument ist kein Feld"
-#: array.c:1086
+#: array.c:823
msgid "asort: second argument not an array"
msgstr "asort: Das zweite Argument ist kein Feld"
-#: array.c:1087
+#: array.c:824
msgid "asorti: second argument not an array"
msgstr "asorti: Das zweite Argument ist kein Feld"
-#: array.c:1094
+#: array.c:831
msgid "asort: first argument not an array"
msgstr "asort: Das erste Argument ist kein Feld"
-#: array.c:1095
+#: array.c:832
msgid "asorti: first argument not an array"
msgstr "asorti: Das erste Argument ist kein Feld"
-#: array.c:1102
+#: array.c:839
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr ""
"asort: ein untergeordnetes Feld des ersten Arguments kann nicht als zweites "
"Argument verwendet werden"
-#: array.c:1103
+#: array.c:840
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr ""
"asorti: ein untergeordnetes Feld des ersten Arguments kann nicht als zweites "
"Argument verwendet werden"
-#: array.c:1108
+#: array.c:845
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr ""
"asort: ein untergeordnetes Feld des zweiten Arguments kann nicht als erstes "
"Argument verwendet werden"
-#: array.c:1109
+#: array.c:846
msgid "asorti: cannot use a subarray of second arg for first arg"
msgstr ""
"asorti: ein untergeordnetes Feld des zweiten Arguments kann nicht als erstes "
"Argument verwendet werden"
-#: array.c:1659
+#: array.c:1314
#, c-format
msgid "`%s' is invalid as a function name"
msgstr "罈%s竄 ist ein unzul瓣ssiger Funktionsname"
-#: array.c:1663
+#: array.c:1318
#, c-format
msgid "sort comparison function `%s' is not defined"
msgstr "Die Vergleichsfunktion 罈%s竄 f羹r das Sortieren ist nicht definiert"
-#: awkgram.y:249
+#: awkgram.y:223
#, c-format
msgid "%s blocks must have an action part"
msgstr "%s-Bl繹cke m羹ssen einen Aktionsteil haben"
-#: awkgram.y:252
+#: awkgram.y:226
msgid "each rule must have a pattern or an action part"
msgstr "Jede Regel muss entweder ein Muster oder einen Aktionsteil haben"
-#: awkgram.y:323 awkgram.y:334
+#: awkgram.y:295 awkgram.y:306
msgid "old awk does not support multiple `BEGIN' or `END' rules"
msgstr "Das alte awk erlaubt keine mehrfachen 罈BEGIN竄- oder 罈END竄-Regeln"
-#: awkgram.y:371
+#: awkgram.y:343
#, 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:432
+#: awkgram.y:389
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"
-#: awkgram.y:436
+#: awkgram.y:393
#, 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"
-#: awkgram.y:528
+#: awkgram.y:485
#, c-format
msgid "duplicate case values in switch body: %s"
msgstr "doppelte Case-Werte im Switch-Block: %s"
-#: awkgram.y:549
+#: awkgram.y:506
msgid "duplicate `default' detected in switch body"
msgstr "doppeltes 罈default竄 im Switch-Block gefunden"
-#: awkgram.y:809
+#: awkgram.y:766
msgid "`break' is not allowed outside a loop or switch"
msgstr ""
"罈break竄 ist auerhalb einer Schleife oder eines Switch-Blocks nicht zul瓣ssig"
-#: awkgram.y:818
+#: awkgram.y:775
msgid "`continue' is not allowed outside a loop"
msgstr "罈continue竄 ist auerhalb einer Schleife nicht zul瓣ssig"
-#: awkgram.y:828
+#: awkgram.y:785
#, c-format
msgid "`next' used in %s action"
msgstr "罈next竄 wird in %s-Aktion verwendet"
-#: awkgram.y:836
+#: awkgram.y:793
msgid "`nextfile' is a gawk extension"
msgstr "罈nextfile竄 ist eine gawk-Erweiterung"
-#: awkgram.y:841
+#: awkgram.y:798
#, c-format
msgid "`nextfile' used in %s action"
msgstr "罈nextfile竄 wird in %s-Aktion verwendet"
-#: awkgram.y:865
+#: awkgram.y:822
msgid "`return' used outside function context"
msgstr "罈return竄 wird auerhalb einer Funktion verwendet"
-#: awkgram.y:925
+#: awkgram.y:896
msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
msgstr ""
"Einfaches 罈print竄 in BEGIN- oder END-Regel soll vermutlich 罈print \"\"竄 sein"
-#: awkgram.y:995 awkgram.y:999 awkgram.y:1023
+#: awkgram.y:966 awkgram.y:970 awkgram.y:994
msgid "`delete array' is a gawk extension"
msgstr "罈delete array竄 ist eine gawk-Erweiterung"
-#: awkgram.y:1019
+#: awkgram.y:990
msgid "`delete(array)' is a non-portable tawk extension"
msgstr "罈delete(array)竄 ist eine gawk-Erweiterung"
-#: awkgram.y:1135
+#: awkgram.y:1108
msgid "multistage two-way pipelines don't work"
msgstr "mehrstufige Zweiwege-Pipes funktionieren nicht"
-#: awkgram.y:1238
+#: awkgram.y:1211
msgid "regular expression on right of assignment"
msgstr "Regul瓣rer Ausdruck auf der rechten Seite einer Zuweisung"
-#: awkgram.y:1249
+#: awkgram.y:1222
msgid "regular expression on left of `~' or `!~' operator"
msgstr "Regul瓣rer Ausdruck links vom 罈~竄- oder 罈!~竄-Operator"
-#: awkgram.y:1265 awkgram.y:1419
+#: awkgram.y:1238 awkgram.y:1389
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:1275
+#: awkgram.y:1248
msgid "regular expression on right of comparison"
msgstr "Regul瓣rer Ausdruck rechts von einem Vergleich"
-#: awkgram.y:1394
+#: awkgram.y:1364
#, c-format
msgid "`getline var' invalid inside `%s' rule"
msgstr "罈getline var竄 ist ung羹ltig innerhalb der 罈%s竄-Regel"
-#: awkgram.y:1397 eval.c:2504
+#: awkgram.y:1367
#, c-format
msgid "`getline' invalid inside `%s' rule"
msgstr "罈getline竄 ist ung羹ltig innerhalb der 罈%s竄-Regel"
-#: awkgram.y:1402
+#: awkgram.y:1372
msgid "non-redirected `getline' undefined inside END action"
msgstr ""
"Nicht-umgelenktes 罈getline竄 ist innerhalb der END-Aktion nicht definiert"
-#: awkgram.y:1421
+#: awkgram.y:1391
msgid "old awk does not support multidimensional arrays"
msgstr "Das alte awk unterst羹tzt keine mehrdimensionalen Felder"
-#: awkgram.y:1517
+#: awkgram.y:1488
msgid "call of `length' without parentheses is not portable"
msgstr "Aufruf von 罈length竄 ohne Klammern ist nicht portabel"
-#: awkgram.y:1580
+#: awkgram.y:1554
msgid "indirect function calls are a gawk extension"
msgstr "indirekte Funktionsaufrufe sind eine gawk-Erweiterung"
-#: awkgram.y:1593
+#: awkgram.y:1567
#, 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"
-#: awkgram.y:1671
+#: awkgram.y:1645
msgid "invalid subscript expression"
msgstr "Ung羹ltiger Index-Ausdruck"
-#: awkgram.y:1711
-msgid "use of non-array as array"
-msgstr "Verwendung eines Nicht-Feldes als Feld"
-
-#: awkgram.y:1975 awkgram.y:1995 msg.c:98
+#: awkgram.y:1966 awkgram.y:1986 msg.c:112
msgid "warning: "
msgstr "Warnung: "
-#: awkgram.y:1993 msg.c:130
+#: awkgram.y:1984 msg.c:144
msgid "fatal: "
msgstr "Fatal: "
-#: awkgram.y:2043
+#: awkgram.y:2034
msgid "unexpected newline or end of string"
msgstr "Unerwarteter Zeilenumbruch oder Ende der Zeichenkette"
-#: awkgram.y:2300 awkgram.y:2358 awkgram.y:2542
+#: awkgram.y:2299 awkgram.y:2357 awkgram.y:2545
#, 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:2301 awkgram.y:2359 builtin.c:122
+#: awkgram.y:2300 awkgram.y:2358 builtin.c:124
msgid "reason unknown"
msgstr "Unbekannte Ursache"
-#: awkgram.y:2317
+#: awkgram.y:2316
#, c-format
msgid "already included source file `%s'"
msgstr "Quelldatei 罈%s竄 wurde bereits eingebunden"
-#: awkgram.y:2343
+#: awkgram.y:2342
msgid "@include is a gawk extension"
msgstr "罈@include竄 ist eine gawk-Erweiterung"
-#: awkgram.y:2349
+#: awkgram.y:2348
msgid "empty filename after @include"
msgstr "leerer Dateiname nach @include"
-#: awkgram.y:2494
+#: awkgram.y:2497
msgid "empty program text on command line"
msgstr "Kein Programmtext auf der Kommandozeile"
-#: awkgram.y:2609
+#: awkgram.y:2612
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "Die Quelldatei 罈%s竄 kann nicht gelesen werden (%s)"
-#: awkgram.y:2620
+#: awkgram.y:2623
#, c-format
msgid "source file `%s' is empty"
msgstr "Die Quelldatei 罈%s竄 ist leer"
-#: awkgram.y:2805
+#: awkgram.y:2800
msgid "source file does not end in newline"
msgstr "Die Quelldatei h繹rt nicht mit einem Zeilenende auf"
-#: awkgram.y:2882
+#: awkgram.y:2905
msgid "unterminated regexp ends with `\\' at end of file"
msgstr ""
"Nicht beendeter regul瓣rer Ausdruck (h繹rt mit '\\' auf) am Ende der Datei"
-#: awkgram.y:2906
+#: awkgram.y:2929
#, c-format
msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
"%s: %d: der tawk-Modifizierer f羹r regul瓣re Ausdr羹cke 罈/.../%c竄 funktioniert "
"nicht in gawk"
-#: awkgram.y:2910
+#: awkgram.y:2933
#, c-format
msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
"Der tawk-Modifizierer f羹r regul瓣re Ausdr羹cke 罈/.../%c竄 funktioniert nicht in "
"gawk"
-#: awkgram.y:2917
+#: awkgram.y:2940
msgid "unterminated regexp"
msgstr "Nicht beendeter regul瓣rer Ausdruck"
-#: awkgram.y:2921
+#: awkgram.y:2944
msgid "unterminated regexp at end of file"
msgstr "Nicht beendeter regul瓣rer Ausdruck am Dateiende"
-#: awkgram.y:2980
+#: awkgram.y:3003
msgid "use of `\\ #...' line continuation is not portable"
msgstr ""
"Die Verwendung von 罈\\#...竄 zur Fortsetzung von Zeilen ist nicht portabel"
-#: awkgram.y:2996
+#: awkgram.y:3019
msgid "backslash not last character on line"
msgstr "das letzte Zeichen auf der Zeile ist kein Backslash (罈\\竄)"
-#: awkgram.y:3057
+#: awkgram.y:3080
msgid "POSIX does not allow operator `**='"
msgstr "POSIX erlaubt den Operator 罈**=竄 nicht"
-#: awkgram.y:3059
+#: awkgram.y:3082
msgid "old awk does not support operator `**='"
msgstr "Das alte awk unterst羹tzt den Operator 罈**=竄 nicht"
-#: awkgram.y:3068
+#: awkgram.y:3091
msgid "POSIX does not allow operator `**'"
msgstr "POSIX erlaubt den Operator 罈**竄 nicht"
-#: awkgram.y:3070
+#: awkgram.y:3093
msgid "old awk does not support operator `**'"
msgstr "Das alte awk unterst羹tzt den Operator 罈**竄 nicht"
-#: awkgram.y:3105
+#: awkgram.y:3128
msgid "operator `^=' is not supported in old awk"
msgstr "Das alte awk unterst羹tzt den Operator 罈^=竄 nicht"
-#: awkgram.y:3113
+#: awkgram.y:3136
msgid "operator `^' is not supported in old awk"
msgstr "Das alte awk unterst羹tzt den Operator 罈^竄 nicht"
-#: awkgram.y:3206 awkgram.y:3222
+#: awkgram.y:3229 awkgram.y:3245
msgid "unterminated string"
msgstr "Nicht beendete Zeichenkette"
-#: awkgram.y:3418
+#: awkgram.y:3466
#, c-format
msgid "invalid char '%c' in expression"
msgstr "Ung羹ltiges Zeichen 罈%c竄 in einem Ausdruck"
-#: awkgram.y:3465
+#: awkgram.y:3513
#, c-format
msgid "`%s' is a gawk extension"
msgstr "罈%s竄 ist eine gawk-Erweiterung"
-#: awkgram.y:3470
+#: awkgram.y:3518
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr "罈%s竄 ist eine Erweiterung der Bell Labs"
-#: awkgram.y:3475
+#: awkgram.y:3523
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX erlaubt 罈%s竄 nicht"
-#: awkgram.y:3483
+#: awkgram.y:3531
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "罈%s竄 wird im alten awk nicht unterst羹tzt"
-#: awkgram.y:3550
+#: awkgram.y:3598
msgid "`goto' considered harmful!\n"
msgstr "罈goto竄 gilt als schlechter Stil!\n"
-#: awkgram.y:3601
+#: awkgram.y:3632
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "Unzul瓣ssige Argumentzahl %d f羹r %s"
-#: awkgram.y:3636
+#: awkgram.y:3667
#, 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:3641
+#: awkgram.y:3672
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "Der dritte Parameter von %s ist ein unver瓣nderliches Objekt"
-#: awkgram.y:3714 awkgram.y:3717
+#: awkgram.y:3751 awkgram.y:3754
msgid "match: third argument is a gawk extension"
msgstr "match: Das dritte Argument ist eine gawk-Erweiterung"
-#: awkgram.y:3771 awkgram.y:3774
+#: awkgram.y:3808 awkgram.y:3811
msgid "close: second argument is a gawk extension"
msgstr "close: Das zweite Argument ist eine gawk-Erweiterung"
-#: awkgram.y:3786
+#: awkgram.y:3823
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"Fehlerhafte Verwendung von dcgettext(_\"...\"): \n"
"Entfernen Sie den f羹hrenden Unterstrich"
-#: awkgram.y:3801
+#: awkgram.y:3838
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"Fehlerhafte Verwendung von dcngettext(_\"...\"): \n"
"Entfernen Sie den f羹hrenden Unterstrich"
-#: awkgram.y:3893
-#, c-format
-msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
-msgstr "Funktion 罈%s竄: Parameter #%d, 罈%s竄 wiederholt Parameter #%d"
-
-#: awkgram.y:3935
+#: awkgram.y:3904
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "Funktion 罈%s竄: Parameter 罈%s竄 verdeckt eine globale Variable"
-#: awkgram.y:4093
+#: awkgram.y:3961
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "罈%s竄 kann nicht zum Schreiben ge繹ffne werden(%s)"
-#: awkgram.y:4094
+#: awkgram.y:3962
msgid "sending variable list to standard error"
msgstr "Die Liste der Variablen wird auf der Standardfehlerausgabe ausgegeben"
-#: awkgram.y:4100
+#: awkgram.y:3970
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: close ist gescheitert (%s)"
-#: awkgram.y:4152
+#: awkgram.y:3995
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() zweimal aufgerufen!"
-#: awkgram.y:4158
+#: awkgram.y:4003
msgid "there were shadowed variables."
msgstr "es sind verdeckte Variablen vorhanden"
-#: awkgram.y:4188
+#: awkgram.y:4074
+#, c-format
+msgid "function name `%s' previously defined"
+msgstr "Funktion 罈%s竄 wurde bereits definiert"
+
+#: awkgram.y:4120
#, 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:4192
+#: awkgram.y:4123
#, c-format
msgid "function `%s': can't use special variable `%s' as a function parameter"
msgstr ""
"Funktion 罈%s竄: die spezielle Variable 罈%s竄 kann nicht als Parameter "
"verwendet werden"
-#: awkgram.y:4208
+#: awkgram.y:4131
#, c-format
-msgid "function name `%s' previously defined"
-msgstr "Funktion 罈%s竄 wurde bereits definiert"
+msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
+msgstr "Funktion 罈%s竄: Parameter #%d, 罈%s竄 wiederholt Parameter #%d"
-#: awkgram.y:4376 awkgram.y:4382
+#: awkgram.y:4210 awkgram.y:4216
#, c-format
msgid "function `%s' called but never defined"
msgstr "Aufgerufene Funktion 罈%s竄 ist nirgends definiert"
-#: awkgram.y:4385
+#: awkgram.y:4219
#, c-format
msgid "function `%s' defined but never called directly"
msgstr "Funktion 罈%s竄 wurde definiert aber nirgends aufgerufen"
-#: awkgram.y:4417
+#: awkgram.y:4251
#, 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:4526
+#: awkgram.y:4297
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -544,233 +501,233 @@ msgstr ""
"Funktion 罈%s竄 wird mit Leerzeichen zwischen Name und 罈(竄 aufgerufen, \n"
"oder als Variable oder Feld verwendet"
-#: awkgram.y:4773 eval.c:2056
+#: awkgram.y:4505
msgid "division by zero attempted"
msgstr "Division durch Null wurde versucht"
-#: awkgram.y:4782 eval.c:2072
+#: awkgram.y:4514
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "Division durch Null versucht in 罈%%竄"
-#: builtin.c:120
+#: builtin.c:122
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s to \"%s\" fehlgeschlagen (%s)"
-#: builtin.c:121
+#: builtin.c:123
msgid "standard output"
msgstr "Standardausgabe"
-#: builtin.c:135
+#: builtin.c:137
msgid "exp: received non-numeric argument"
msgstr "exp: das Argument ist keine Zahl"
-#: builtin.c:141
+#: builtin.c:143
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: das Argument %g liegt auerhalb des g羹ltigen Bereichs"
-#: builtin.c:200
+#: builtin.c:202
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: Leeren der Puffer nicht m繹glich, Pipe 罈%s竄 ist nur zum Lesen ge繹ffnet"
-#: builtin.c:203
+#: builtin.c:205
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: Leeren der Puffer nicht m繹glich, Datei 罈%s竄 ist nur zum Lesen "
"ge繹ffnet"
-#: builtin.c:215
+#: builtin.c:217
#, 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:333
+#: builtin.c:335
msgid "index: received non-string first argument"
msgstr "index: Erstes Argument ist kein String"
-#: builtin.c:335
+#: builtin.c:337
msgid "index: received non-string second argument"
msgstr "index: Zweites Argument ist kein string"
-#: builtin.c:457
+#: builtin.c:461
msgid "int: received non-numeric argument"
msgstr "Argument ist keine Zahl"
-#: builtin.c:493
+#: builtin.c:497
msgid "length: received array argument"
msgstr "length: Argument ist ein Feld"
-#: builtin.c:496
+#: builtin.c:500
msgid "`length(array)' is a gawk extension"
msgstr "罈length(array)竄 ist eine gawk-Erweiterung"
-#: builtin.c:504
+#: builtin.c:508
msgid "length: received non-string argument"
msgstr "length: Argument ist kein String"
-#: builtin.c:535
+#: builtin.c:539
msgid "log: received non-numeric argument"
msgstr "log: Argument ist keine Zahl"
-#: builtin.c:538
+#: builtin.c:542
#, c-format
msgid "log: received negative argument %g"
msgstr "log: Negatives Argument %g"
-#: builtin.c:694 builtin.c:699
+#: builtin.c:740 builtin.c:745
msgid "fatal: must use `count$' on all formats or none"
msgstr "Fatal: 罈count$竄 muss auf alle Formate angewandt werden oder auf keines"
-#: builtin.c:761
+#: builtin.c:815
#, c-format
msgid "field width is ignored for `%%' specifier"
msgstr "Feldbreite wird f羹r die 罈%%竄-Angabe ignoriert"
-#: builtin.c:763
+#: builtin.c:817
#, c-format
msgid "precision is ignored for `%%' specifier"
msgstr "Genauigkeit wird f羹r die 罈%%竄-Angabe ignoriert"
-#: builtin.c:765
+#: builtin.c:819
#, c-format
msgid "field width and precision are ignored for `%%' specifier"
msgstr "Feldbreite und Genauigkeit werden f羹r die 罈%%竄-Angabe ignoriert"
-#: builtin.c:816
+#: builtin.c:870
msgid "fatal: `$' is not permitted in awk formats"
msgstr "Fatal: 罈$竄 ist in awk-Formaten nicht zul瓣ssig"
-#: builtin.c:825
+#: builtin.c:879
msgid "fatal: arg count with `$' must be > 0"
msgstr "Fatal: die Anzahl der Argumen bei 罈$竄 muss > 0 sein"
-#: builtin.c:829
+#: builtin.c:883
#, c-format
msgid "fatal: arg count %ld greater than total number of supplied arguments"
msgstr ""
"Fatal: Argumentenanzahl %ld ist gr繹er als die Gesamtzahl angegebener "
"Argumente"
-#: builtin.c:833
+#: builtin.c:887
msgid "fatal: `$' not permitted after period in format"
msgstr "Fatal: 罈$竄 nach Punkt in Formatangabe nicht zul瓣ssig"
-#: builtin.c:849
+#: builtin.c:903
msgid "fatal: no `$' supplied for positional field width or precision"
msgstr "Fatal: 罈$竄 fehlt in positionsabh瓣ngiger Feldbreite oder Genauigkeit"
#
-#: builtin.c:920
+#: builtin.c:975
msgid "`l' is meaningless in awk formats; ignored"
msgstr "罈l竄 ist in awk-Formaten bedeutungslos, ignoriert"
-#: builtin.c:924
+#: builtin.c:979
msgid "fatal: `l' is not permitted in POSIX awk formats"
msgstr "Fatal: 罈l竄 ist in POSIX-awk-Formaten nicht zul瓣ssig"
-#: builtin.c:937
+#: builtin.c:992
msgid "`L' is meaningless in awk formats; ignored"
msgstr "罈L竄 ist in awk-Formaten bedeutungslos, ignoriert"
-#: builtin.c:941
+#: builtin.c:996
msgid "fatal: `L' is not permitted in POSIX awk formats"
msgstr "Fatal: 罈L竄 ist in POSIX-awk-Formaten nicht zul瓣ssig"
-#: builtin.c:954
+#: builtin.c:1009
msgid "`h' is meaningless in awk formats; ignored"
msgstr "罈h竄 ist in awk-Formaten bedeutungslos, ignoriert"
-#: builtin.c:958
+#: builtin.c:1013
msgid "fatal: `h' is not permitted in POSIX awk formats"
msgstr "Fatal: 罈h竄 ist in POSIX-awk-Formaten nicht zul瓣ssig"
-#: builtin.c:1271
+#: builtin.c:1408
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr "[s]printf: Wert %g ist auerhalb des Bereichs f羹r Format 罈%%%c竄"
-#: builtin.c:1331
+#: builtin.c:1506
#, c-format
msgid "ignoring unknown format specifier character `%c': no argument converted"
msgstr ""
"das unbekannte Zeichen 罈%c竄 in der Formatspezifikation wird ignoriert: keine "
"Argumente umgewandelt"
-#: builtin.c:1336
+#: builtin.c:1511
msgid "fatal: not enough arguments to satisfy format string"
msgstr "Fatal: Nicht gen羹gend Argumente f羹r die Formatangabe"
-#: builtin.c:1338
+#: builtin.c:1513
msgid "^ ran out for this one"
msgstr "^ hierf羹r fehlte es"
-#: builtin.c:1345
+#: builtin.c:1520
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: Format-Spezifikation hat keinen Controlcode"
-#: builtin.c:1348
+#: builtin.c:1523
msgid "too many arguments supplied for format string"
msgstr "Zu viele Argumente f羹r den Formatstring"
-#: builtin.c:1422 builtin.c:1433
+#: builtin.c:1598 builtin.c:1609
msgid "printf: no arguments"
msgstr "printf: Keine Argumente"
-#: builtin.c:1474
+#: builtin.c:1650
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: das Argument ist keine Zahl"
-#: builtin.c:1478
+#: builtin.c:1654
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: das Argument %g ist negativ"
-#: builtin.c:1502
+#: builtin.c:1685
#, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: L瓣nge %g ist nicht >= 1"
-#: builtin.c:1504
+#: builtin.c:1687
#, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: L瓣nge %g ist nicht >= 0"
-#: builtin.c:1511
+#: builtin.c:1694
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: Nicht ganzzahlige L瓣nge %g wird abgeschnitten"
-#: builtin.c:1516
+#: builtin.c:1699
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr ""
"substr: L瓣nge %g ist zu gro f羹r Stringindizierung, wird auf %g gek羹rzt"
-#: builtin.c:1528
+#: builtin.c:1711
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: Start-Index %g ist ung羹ltig, 1 wird verwendet"
-#: builtin.c:1533
+#: builtin.c:1716
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: Nicht ganzzahliger Start-Wert %g wird abgeschnitten"
-#: builtin.c:1558
+#: builtin.c:1741
msgid "substr: source string is zero length"
msgstr "substr: Quellstring ist leer"
-#: builtin.c:1574
+#: builtin.c:1757
#, 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:1582
+#: builtin.c:1765
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -778,234 +735,230 @@ msgstr ""
"substr: L瓣nge %g am Start-Wert %g 羹berschreitet die L瓣nge des ersten "
"Arguments (%lu)"
-#: builtin.c:1656
+#: builtin.c:1839
msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
msgstr "strftime: Formatwert in PROCINFO[\"strftime\"] ist numerischen Typs"
-#: builtin.c:1679
+#: builtin.c:1862
msgid "strftime: received non-numeric second argument"
msgstr "strftime: Das zweite Argument ist keine Zahl"
-#: builtin.c:1682
+#: builtin.c:1866
msgid "strftime: second argument less than 0 or too big for time_t"
msgstr ""
+"strftime: das zweite Argument ist kleiner als 0 oder zu gro f羹r time_t"
-#: builtin.c:1689
+#: builtin.c:1873
msgid "strftime: received non-string first argument"
msgstr "strftime: Das erste Argument ist kein String"
-#: builtin.c:1695
+#: builtin.c:1880
msgid "strftime: received empty format string"
msgstr "strftime: Der Format-String ist leer"
-#: builtin.c:1761
+#: builtin.c:1946
msgid "mktime: received non-string argument"
msgstr "mktime: Das Argument ist kein String"
-#: builtin.c:1778
+#: builtin.c:1963
msgid "mktime: at least one of the values is out of the default range"
msgstr "mktime: mindestens einer der Werte ist auerhalb des normalen Bereichs"
-#: builtin.c:1813
+#: builtin.c:1998
msgid "'system' function not allowed in sandbox mode"
msgstr "Die Funktion 罈system竄 ist im Sandbox-Modus nicht erlaubt"
-#: builtin.c:1818
+#: builtin.c:2003
msgid "system: received non-string argument"
msgstr "system: Das Argument ist kein String"
-#: builtin.c:1873 eval.c:1159 eval.c:1790 eval.c:1803
-#, c-format
-msgid "reference to uninitialized variable `%s'"
-msgstr "Referenz auf die nicht initialisierte Variable 罈%s竄"
-
-#: builtin.c:1940
+#: builtin.c:2121
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "Referenz auf das nicht initialisierte Feld 罈$%d竄"
-#: builtin.c:2027
+#: builtin.c:2208
msgid "tolower: received non-string argument"
msgstr "tolower: das Argument ist kein String"
-#: builtin.c:2061
+#: builtin.c:2242
msgid "toupper: received non-string argument"
msgstr "toupper: das Argument ist kein String"
-#: builtin.c:2097
+#: builtin.c:2278
msgid "atan2: received non-numeric first argument"
msgstr "atan2: das erste Argument ist keine Zahl"
-#: builtin.c:2099
+#: builtin.c:2280
msgid "atan2: received non-numeric second argument"
msgstr "atan2: das zweite Argument ist keine Zahl"
-#: builtin.c:2118
+#: builtin.c:2299
msgid "sin: received non-numeric argument"
msgstr "sin: das Argument ist keine Zahl"
-#: builtin.c:2134
+#: builtin.c:2315
msgid "cos: received non-numeric argument"
msgstr "cos: das Argument ist keine Zahl"
-#: builtin.c:2187
+#: builtin.c:2368
msgid "srand: received non-numeric argument"
msgstr "srand: das Argument ist keine Zahl"
-#: builtin.c:2218
+#: builtin.c:2399
msgid "match: third argument is not an array"
msgstr "match: das dritte Argument ist kein Array"
-#: builtin.c:2482
+#: builtin.c:2664
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: 0 als drittes Argument wird als 1 interpretiert"
-#: builtin.c:2775
+#: builtin.c:2957
msgid "lshift: received non-numeric first argument"
msgstr "lshift: das erste Argument ist keine Zahl"
-#: builtin.c:2777
+#: builtin.c:2959
msgid "lshift: received non-numeric second argument"
msgstr "lshift: das zweite Argument ist keine Zahl"
-#: builtin.c:2783
+#: builtin.c:2965
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr ""
"lshift(%lf, %lf): Negative Werte werden zu merkw羹rdigen Ergebnissen f羹hren"
-#: builtin.c:2785
+#: builtin.c:2967
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr "lshift(%lf, %lf): Dezimalteil wird abgeschnitten"
-#: builtin.c:2787
+#: builtin.c:2969
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
"lshift(%lf, %lf): Zu groe Shift-Werte werden zu merkw羹rdigen Ergebnissen "
"f羹hren"
-#: builtin.c:2812
+#: builtin.c:2994
msgid "rshift: received non-numeric first argument"
msgstr "rshift: das erste Argument ist keine Zahl"
-#: builtin.c:2814
+#: builtin.c:2996
msgid "rshift: received non-numeric second argument"
msgstr "rshift: das zweite Argument ist keine Zahl"
-#: builtin.c:2820
+#: builtin.c:3002
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr ""
"rshift (%lf, %lf): Negative Werte werden zu merkw羹rdigen Ergebnissen f羹hren"
-#: builtin.c:2822
+#: builtin.c:3004
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr "rshift(%lf, %lf): Dezimalteil wird abgeschnitten"
-#: builtin.c:2824
+#: builtin.c:3006
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
"rshift(%lf, %lf): Zu groe Shift-Werte werden zu merkw羹rdigen Ergebnissen "
"f羹hren"
-#: builtin.c:2849
+#: builtin.c:3031
msgid "and: received non-numeric first argument"
msgstr "and: das erste Argument ist keine Zahl"
-#: builtin.c:2851
+#: builtin.c:3033
msgid "and: received non-numeric second argument"
msgstr "and: das zweite Argument ist keine Zahl"
-#: builtin.c:2857
+#: builtin.c:3039
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr ""
"and(%lf, %lf): Negative Werte werden zu merkw羹rdigen Ergebnissen f羹hren"
-#: builtin.c:2859
+#: builtin.c:3041
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr "and(%lf, %lf): Dezimalteil wird abgeschnitten"
-#: builtin.c:2884
+#: builtin.c:3066
msgid "or: received non-numeric first argument"
msgstr "or: das erste Argument ist keine Zahl"
-#: builtin.c:2886
+#: builtin.c:3068
msgid "or: received non-numeric second argument"
msgstr "or: das zweite Argument ist keine Zahl"
-#: builtin.c:2892
+#: builtin.c:3074
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr "or(%lf, %lf): Negative Werte werden zu merkw羹rdigen Ergebnissen f羹hren"
-#: builtin.c:2894
+#: builtin.c:3076
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr "or(%lf, %lf): Dezimalteil wird abgeschnitten"
-#: builtin.c:2922
+#: builtin.c:3102
msgid "xor: received non-numeric first argument"
msgstr "xor: das erste Argument ist keine Zahl"
-#: builtin.c:2924
+#: builtin.c:3104
msgid "xor: received non-numeric second argument"
msgstr "xor: das zweite Argument ist keine Zahl"
-#: builtin.c:2930
+#: builtin.c:3110
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr "xor(%lf, %lf: Negative Werte werden zu merkw羹rdigen Ergebnissen f羹hren"
-#: builtin.c:2932
+#: builtin.c:3112
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr "xor(%lf, %lf): Dezimalteil wird abgeschnitten"
-#: builtin.c:2956 builtin.c:2962
+#: builtin.c:3136
msgid "compl: received non-numeric argument"
msgstr "compl: das erste Argument ist keine Zahl"
-#: builtin.c:2964
+#: builtin.c:3142
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr "compl(%lf): Negativer Wert wird zu merkw羹rdigen Ergebnissen f羹hren"
-#: builtin.c:2966
+#: builtin.c:3144
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr "compl(%lf): Dezimalteil wird abgeschnitten"
-#: builtin.c:3135
+#: builtin.c:3313
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: 罈%s竄 ist keine g羹ltige Locale-Kategorie"
-#: eval.c:412
+#: eval.c:395
#, c-format
msgid "unknown nodetype %d"
msgstr "Unbekannter Knotentyp %d"
-#: eval.c:423 eval.c:437
+#: eval.c:406 eval.c:420
#, c-format
msgid "unknown opcode %d"
msgstr "Unbekannter Opcode %d"
-#: eval.c:434
+#: eval.c:417
#, c-format
msgid "opcode %s not an operator or keyword"
msgstr "Opcode %s ist weder ein Operator noch ein Schl羹sselwort"
-#: eval.c:488
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr "Puffer羹berlauf in genflags2str"
-#: eval.c:698
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -1016,843 +969,805 @@ msgstr ""
"\t# Funktions-Aufruf-Stack\n"
"\n"
-#: eval.c:725
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
msgstr "罈IGNORECASE竄 ist eine gawk-Erweiterung"
-#: eval.c:754
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr "罈BINMODE竄 ist eine gawk-Erweiterung"
-#: eval.c:812
+#: eval.c:793
#, 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:902
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "Falsche 罈%sFMT竄-Angabe 罈%s竄"
-#: eval.c:980
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "罈--lint竄 wird abgeschaltet, da an 罈LINT竄 zugewiesen wird"
-#: eval.c:1127 eval.c:1777
-#, c-format
-msgid "can't use function name `%s' as variable or array"
-msgstr "Funktion 罈%s竄 kann nicht als Variable oder Feld verwendet werden"
-
-#: eval.c:1158 eval.c:1789 eval.c:1802
+#: eval.c:1132
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "Referenz auf nicht initialisiertes Argument 罈%s竄"
-#: eval.c:1177
+#: eval.c:1133
+#, c-format
+msgid "reference to uninitialized variable `%s'"
+msgstr "Referenz auf die nicht initialisierte Variable 罈%s竄"
+
+#: eval.c:1151
msgid "attempt to field reference from non-numeric value"
msgstr "Nicht numerischer Wert f羹r Feldreferenz verwendet"
-#: eval.c:1179
+#: eval.c:1153
msgid "attempt to field reference from null string"
msgstr "Referenz auf ein Feld von einem Null-String"
-#: eval.c:1185
+#: eval.c:1161
#, c-format
msgid "attempt to access field %ld"
msgstr "Versuch des Zugriffs auf Feld %ld"
-#: eval.c:1194
+#: eval.c:1170
#, c-format
msgid "reference to uninitialized field `$%ld'"
msgstr "Referenz auf das nicht initialisierte Feld 罈$%ld竄"
-#: eval.c:1256
+#: eval.c:1257
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "Funktion 罈%s竄 mit zu vielen Argumenten aufgerufen"
-#: eval.c:1437
+#: eval.c:1452
#, c-format
msgid "unwind_stack: unexpected type `%s'"
msgstr "unwind_stack: unerwarteter Typ 罈%s竄"
-#: eval.c:1532
+#: eval.c:1546
msgid "division by zero attempted in `/='"
msgstr "Division durch Null versucht in 罈/=竄"
-#: eval.c:1539
+#: eval.c:1553
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "Division durch Null versucht in 罈%%=竄"
-#: eval.c:1876 eval.c:2122
-#, 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"
-
-#: eval.c:1907
-msgid "assignment used in conditional context"
-msgstr "Zuweisung in einer Bedingung"
-
-#: eval.c:1911
-msgid "statement has no effect"
-msgstr "Anweisung hat keinen Effekt"
-
-#: eval.c:2343
-#, c-format
-msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
-msgstr ""
-"for-Schleife: Feld 罈%s竄 瓣ndert seine Gr繹e von %ld innerhalb der Schleife zu "
-"%ld"
-
-#: eval.c:2458
-#, c-format
-msgid "function called indirectly through `%s' does not exist"
-msgstr "die durch 罈%s竄 indirekt aufgerufene Funktion existiert nicht"
-
-#: eval.c:2470
-#, c-format
-msgid "function `%s' not defined"
-msgstr "Funktion 罈%s竄 ist nicht definiert"
-
-#: eval.c:2511
-#, c-format
-msgid "non-redirected `getline' invalid inside `%s' rule"
-msgstr "Nicht umgelenktes 罈getline竄 ist innerhalb der 罈%s竄-Aktion unzu瓣ssig"
-
-#: eval.c:2600
-#, c-format
-msgid "error reading input file `%s': %s"
-msgstr "Fehler beim Lesen der Eingabedatei 罈%s竄: %s"
-
-#: eval.c:2614
-#, c-format
-msgid "`nextfile' cannot be called from a `%s' rule"
-msgstr "罈nextfile竄 kann nicht aus einer 罈竄%s-Regel aufgerufen werden"
-
-#: eval.c:2694
-#, c-format
-msgid "`next' cannot be called from a `%s' rule"
-msgstr "罈next竄 kann nicht in einer 罈%s竄-Regel verwendet werden"
-
-#: eval.c:2760
-#, c-format
-msgid "Sorry, don't know how to interpret `%s'"
-msgstr "Entschuldigung, aber es ist unbekannt, wie 罈%s竄 zu interpretieren ist"
-
-#: ext.c:64
+#: ext.c:70
msgid "extensions are not allowed in sandbox mode"
msgstr "Erweiterungen sind im Sandbox-Modus nicht erlaubt"
-#: ext.c:70 ext.c:75
+#: ext.c:73
msgid "`extension' is a gawk extension"
msgstr "罈extension竄 ist eine gawk-Erweiterung"
-#: ext.c:85
-#, c-format
-msgid "fatal: extension: cannot open `%s' (%s)\n"
+#: ext.c:80
+#, fuzzy, c-format
+msgid "extension: cannot open library `%s' (%s)\n"
msgstr "Fatal: extension: 罈%s竄 kann nicht ge繹ffnet werden (%s)\n"
-#: ext.c:94
-#, c-format
+#: ext.c:86
+#, fuzzy, c-format
msgid ""
-"fatal: extension: library `%s': does not define "
-"`plugin_is_GPL_compatible' (%s)\n"
+"extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n"
msgstr ""
"Fatal: Erweiterung: Bibliothek 罈%s竄: definiert 罈plugin_is_GPL_compatible竄 "
"nicht (%s)\n"
-#: ext.c:103
-#, c-format
-msgid "fatal: extension: library `%s': cannot call function `%s' (%s)\n"
+#: ext.c:90
+#, fuzzy, c-format
+msgid "extension: library `%s': cannot call function `%s' (%s)\n"
msgstr ""
"Fatal: Erweiterung: Bibliothek 罈%s竄: Funktion 罈%s竄 kann nicht aufgerufen "
"werden (%s)\n"
-#: ext.c:137
+#: ext.c:118
msgid "extension: missing function name"
msgstr "Erweiterung: Funktionsname fehlt"
-#: ext.c:142
+#: ext.c:123
#, c-format
msgid "extension: illegal character `%c' in function name `%s'"
msgstr "Erweiterung: unzul瓣ssiges Zeichen 罈%c竄 in Funktionsname 罈%s竄"
-#: ext.c:151
+#: ext.c:131
#, c-format
msgid "extension: can't redefine function `%s'"
msgstr "Erweiterung: Funktion 罈%s竄 kann nicht neu definiert werden"
-#: ext.c:155
+#: ext.c:135
#, c-format
msgid "extension: function `%s' already defined"
msgstr "Erweiterung: Funktion 罈%s竄 wurde bereits definiert"
-#: ext.c:160
+#: ext.c:139
#, c-format
msgid "extension: function name `%s' previously defined"
msgstr "Erweiterung: Funktion 罈%s竄 wurde bereits vorher definiert"
-#: ext.c:162
+#: ext.c:141
#, c-format
msgid "extension: can't use gawk built-in `%s' as function name"
msgstr ""
"Erweiterung: die eingebaute Funktion 罈%s竄 kann nicht als Funktionsname "
"verwendet werden"
-#: ext.c:166
+#: ext.c:144
#, c-format
msgid "make_builtin: negative argument count for function `%s'"
msgstr "make_builtin: negative Anzahl von Argumenten f羹r Funktion 罈%s竄"
-#: ext.c:269
+#: ext.c:206
#, c-format
msgid "function `%s' defined to take no more than %d argument(s)"
msgstr ""
"Funktion 罈%s竄 wird als Funktion definiert, die nie mehr als %d Argument(e) "
"akzeptiert"
-#: ext.c:272
+#: ext.c:209
#, c-format
msgid "function `%s': missing argument #%d"
msgstr "Funktion 罈%s竄: fehlendes Argument #%d"
-#: ext.c:289
+#: ext.c:226
#, c-format
msgid "function `%s': argument #%d: attempt to use scalar as an array"
msgstr ""
"Funktion 罈%s竄: Argument #%d: Es wird versucht, einen Skalar als Feld zu "
"verwenden"
-#: ext.c:293
+#: ext.c:230
#, c-format
msgid "function `%s': argument #%d: attempt to use array as a scalar"
msgstr ""
"Funktion 罈%s竄: Argument #%d: Es wird versucht, ein Feld als Skalar zu "
"verwenden"
-#: ext.c:306
+#: ext.c:244
msgid "Operation Not Supported"
msgstr "Die Operation wird nicht unterst羹tzt"
-#: field.c:328
+#: ext.c:256
+msgid "dynamic loading of library not supported"
+msgstr ""
+
+#: field.c:339
msgid "NF set to negative value"
msgstr "NF wird ein negativer Wert zugewiesen"
-#: field.c:951 field.c:958 field.c:962
+#: field.c:962 field.c:969 field.c:973
msgid "split: fourth argument is a gawk extension"
msgstr "split: das vierte Argument ist eine gawk-Erweiterung"
-#: field.c:955
+#: field.c:966
msgid "split: fourth argument is not an array"
msgstr "split: das vierte Argument ist kein Feld"
-#: field.c:969
+#: field.c:980
msgid "split: second argument is not an array"
msgstr "split: das zweite Argument ist kein Feld"
-#: field.c:973
+#: field.c:984
msgid "split: cannot use the same array for second and fourth args"
msgstr ""
"split: als zweites und viertes Argument kann nicht das gleiche Feld "
"verwendet werden"
-#: field.c:978
+#: field.c:989
msgid "split: cannot use a subarray of second arg for fourth arg"
msgstr ""
"split: Ein untergeordnetes Feld des zweiten Arguments kann nicht als viertes "
"Argument verwendet werden"
-#: field.c:981
+#: field.c:992
msgid "split: cannot use a subarray of fourth arg for second arg"
msgstr ""
"split: Ein untergeordnetes Feld des vierten Arguments kann nicht als zweites "
"Argument verwendet werden"
-#: field.c:1010
+#: field.c:1021
msgid "split: null string for third arg is a gawk extension"
msgstr "split: Null-String als drittes Argument ist eine gawk-Erweiterung"
-#: field.c:1050
+#: field.c:1061
msgid "patsplit: fourth argument is not an array"
msgstr "patsplit: Das vierte Argument ist kein Feld"
-#: field.c:1055
+#: field.c:1066
msgid "patsplit: second argument is not an array"
msgstr "patsplit: Das zweite Argument ist kein Feld"
-#: field.c:1061
+#: field.c:1072
msgid "patsplit: third argument must be non-null"
msgstr "patsplit: Das dritte Argument darf nicht Null sein"
-#: field.c:1065
+#: field.c:1076
msgid "patsplit: cannot use the same array for second and fourth args"
msgstr ""
"patsplit: als zweites und viertes Argument kann nicht das gleiche Feld "
"verwendet werden"
-#: field.c:1070
+#: field.c:1081
msgid "patsplit: cannot use a subarray of second arg for fourth arg"
msgstr ""
"patsplit: Ein untergeordnetes Feld des zweiten Arguments kann nicht als "
"viertes Argument verwendet werden"
-#: field.c:1073
+#: field.c:1084
msgid "patsplit: cannot use a subarray of fourth arg for second arg"
msgstr ""
"patsplit: Ein untergeordnetes Feld des vierten Arguments kann nicht als "
"zweites Argument verwendet werden"
-#: field.c:1110
+#: field.c:1122
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "罈FIELDWIDTHS竄 ist eine gawk-Erweiterung"
-#: field.c:1173
+#: field.c:1186
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr "ung羹ltiger FIELDWIDTHS-Wert nah bei 罈%s竄"
-#: field.c:1246
+#: field.c:1259
msgid "null string for `FS' is a gawk extension"
msgstr "Null-String f羹r 罈FS竄 ist eine gawk-Erweiterung"
-#: field.c:1250
+#: field.c:1263
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:1369
+#: field.c:1382
msgid "`FPAT' is a gawk extension"
msgstr "罈FPAT竄 ist eine gawk-Erweiterung"
-#: getopt.c:574 getopt.c:590
-#, c-format
-msgid "%s: option '%s' is ambiguous\n"
+#: getopt.c:604 getopt.c:633
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
msgstr "%s: Option 罈%s竄 ist mehrdeutig\n"
-#: getopt.c:623 getopt.c:627
+#: getopt.c:679 getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: Die Option 罈--%s竄 hat keine Argumente\n"
-#: getopt.c:636 getopt.c:641
+#: getopt.c:692 getopt.c:697
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: Die Option 罈%c%s竄 hat keine Argument\n"
-#: getopt.c:684 getopt.c:703
+#: getopt.c:740 getopt.c:759
#, c-format
msgid "%s: option '--%s' requires an argument\n"
msgstr "%s: Die Option 罈%s竄 erfordert ein Argument\n"
-#: getopt.c:741 getopt.c:744
+#: getopt.c:797 getopt.c:800
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: Die Option 罈--%s竄 ist unbekannt\n"
-#: getopt.c:752 getopt.c:755
+#: getopt.c:808 getopt.c:811
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: Die Option 罈%c%s竄 ist unbekannt\n"
-#: getopt.c:804 getopt.c:807
+#: getopt.c:860 getopt.c:863
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: Ung羹ltige Option -- 罈%c竄\n"
-#: getopt.c:857 getopt.c:874 getopt.c:1082 getopt.c:1100
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s Die Option 罈%c竄 erfordert ein Argument\n"
-#: getopt.c:930 getopt.c:946
+#: getopt.c:989 getopt.c:1005
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: Die Option 罈-W %s竄 ist mehrdeutig\n"
-#: getopt.c:970 getopt.c:988
+#: getopt.c:1029 getopt.c:1047
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: Die Option 罈-W %s竄 hat keine Argumente\n"
-#: getopt.c:1009 getopt.c:1027
+#: getopt.c:1068 getopt.c:1086
#, c-format
msgid "%s: option '-W %s' requires an argument\n"
msgstr "%s: Die Option 罈-W %s竄 erfordert ein Argument\n"
-#: io.c:280
+#: io.c:326
#, c-format
msgid "command line argument `%s' is a directory: skipped"
msgstr ""
"das Kommandozeilen-Argument 罈%s竄 ist ein Verzeichnis: wird 羹bersprungen"
-#: io.c:283 io.c:385
+#: io.c:329 io.c:438
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "Die Datei 罈%s竄 kann nicht zum Lesen ge繹ffnet werden (%s)"
-#: io.c:501
+#: io.c:568
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "Das Schlieen des Dateideskriptors %d (罈%s竄) ist gescheitert (%s)"
-#: io.c:578
+#: io.c:645
msgid "redirection not allowed in sandbox mode"
msgstr "Umlenkungen sind im Sandbox-Modus nicht erlaubt"
-#: io.c:612
+#: io.c:679
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr ""
"Der Ausdruck in einer Umlenkung mittels 罈%s竄 hat nur einen numerischen Wert"
-#: io.c:618
+#: io.c:685
#, 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:624
+#: io.c:690
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"Der Dateiname 罈%s竄 f羹r eine Umlenkung mittels 罈%s竄 kann das Ergebnis eines "
"logischen Ausdrucks sein"
-#: io.c:667
+#: io.c:733
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "Unn繹tige Kombination von 罈>竄 und 罈>>竄 f羹r Datei 罈%.*s竄"
-#: io.c:720
+#: io.c:786
#, 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:730
+#: io.c:796
#, 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:753
+#: io.c:819
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr ""
"Die bidirektionale Pipe 罈%s竄 kann nicht f羹r die Ein-/Ausgabe ge繹ffnet werden "
"(%s)"
-#: io.c:835
+#: io.c:900
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "Von 罈%s竄 kann nicht umgelenkt werden (%s)"
-#: io.c:838
+#: io.c:903
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "Zu 罈%s竄 kann nicht umgelenkt werden (%s)"
-#: io.c:889
+#: io.c:954
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:905
+#: io.c:970
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "Das Schlieen von 罈%s竄 ist gescheitert (%s)."
-#: io.c:913
+#: io.c:978
msgid "too many pipes or input files open"
msgstr "Zu viele Pipes oder Eingabedateien offen"
-#: io.c:935
+#: io.c:1000
msgid "close: second argument must be `to' or `from'"
msgstr "close: Das zweite Argument muss 罈to竄 oder 罈from竄 sein"
-#: io.c:952
+#: io.c:1017
#, 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:957
+#: io.c:1022
msgid "close of redirection that was never opened"
msgstr "罈close竄 f羹r eine Umlenkung, die nie ge繹ffnet wurde"
-#: io.c:1054
+#: io.c:1120
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: Umlenkung 罈%s竄 wurde nicht mit 罈[&竄 ge繹ffnet, das zweite Argument "
"wird ignoriert"
-#: io.c:1070
+#: io.c:1137
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "Fehlerstatus (%d) beim Schlieen der Pipe 罈%s竄 (%s)"
-#: io.c:1073
+#: io.c:1140
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "Fehlerstatus (%d) beim Schlieen der Datei 罈%s竄 (%s)"
-#: io.c:1093
+#: io.c:1160
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "Das explizite Schlieen des Sockets 罈%s竄 fehlt"
-#: io.c:1096
+#: io.c:1163
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "Das explizite Schlieen des Ko-Prozesses 罈%s竄 fehlt"
-#: io.c:1099
+#: io.c:1166
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "Das explizite Schlieen der Pipe 罈%s竄 fehlt"
-#: io.c:1102
+#: io.c:1169
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "Das explizite Schlieen der Datei 罈%s竄 fehlt"
-#: io.c:1130 io.c:1185 main.c:793 main.c:830
+#: io.c:1197 io.c:1252 main.c:825 main.c:862
#, c-format
msgid "error writing standard output (%s)"
msgstr "Fehler beim Schreiben auf die Standardausgabe (%s)"
-#: io.c:1134 io.c:1190
+#: io.c:1201 io.c:1257
#, c-format
msgid "error writing standard error (%s)"
msgstr "Fehler beim Schreiben auf die Standardfehlerausgabe (%s)"
-#: io.c:1142
+#: io.c:1209
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "Das Leeren der Pipe 罈%s竄 ist gescheitert (%s)"
-#: io.c:1145
+#: io.c:1212
#, 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:1148
+#: io.c:1215
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "Das Leeren der Datei 罈%s竄 ist gescheitert (%s)"
-#: io.c:1263
+#: io.c:1329
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr "Der lokale Port 罈%s竄 ist ung羹ltig in 罈/inet竄"
-#: io.c:1280
+#: io.c:1347
#, 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:1432
+#: io.c:1499
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr "Es wurde kein (bekanntes) Protokoll im Dateinamen 罈%s竄 angegeben"
-#: io.c:1446
+#: io.c:1513
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "Der Dateiname 罈%s竄 ist unvollst瓣ndig"
-#: io.c:1463
+#: io.c:1530
msgid "must supply a remote hostname to `/inet'"
msgstr "Sie m羹ssen in /inet einen Rechnernamen angeben"
-#: io.c:1481
+#: io.c:1548
msgid "must supply a remote port to `/inet'"
msgstr "Sie m羹ssen in 罈/inet竄 einen Port angeben"
-#: io.c:1527
+#: io.c:1594
msgid "TCP/IP communications are not supported"
msgstr "TCP/IP-Verbindungen werden nicht unterst羹tzt"
-#: io.c:1694
+#: io.c:1764
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "罈%s竄 konnte nicht ge繹ffnet werden, Modus 罈%s竄"
-#: io.c:1748
+#: io.c:1814
#, c-format
msgid "close of master pty failed (%s)"
msgstr ""
"Das Schlieen der 羹bergeordneten Terminal-Ger瓣tedatei ist gescheitert (%s)"
-#: io.c:1750 io.c:1918 io.c:2075
+#: io.c:1816 io.c:1984 io.c:2145
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "Das Schlieen der Standardausgabe im Kindprozess ist gescheitert (%s)"
-#: io.c:1753
+#: io.c:1819
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr ""
"Das Verschieben der untergeordneten Terminal-Ger瓣tedatei zur Standardausgabe "
"im Kindprozess ist gescheitert (dup: %s)"
-#: io.c:1755 io.c:1923
+#: io.c:1821 io.c:1989
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "Schlieen von stdin im Kindprozess gescheitert (%s)"
-#: io.c:1758
+#: io.c:1824
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr ""
"Das Verschieben der untergeordneten Terminal-Ger瓣tedatei zur Standardeingabe "
"im Kindprozess ist gescheitert (dup: %s)"
-#: io.c:1760 io.c:1781
+#: io.c:1826 io.c:1847
#, c-format
msgid "close of slave pty failed (%s)"
msgstr ""
"Das Schlieen der untergeordneten Terminal-Ger瓣tedatei ist gescheitert (%s)"
-#: io.c:1859 io.c:1921 io.c:2053 io.c:2078
+#: io.c:1925 io.c:1987 io.c:2122 io.c:2148
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr ""
"Das Verschieben der Pipe zur Standardausgabe im Kindprozess ist gescheitert "
"(dup: %s)"
-#: io.c:1866 io.c:1926
+#: io.c:1932 io.c:1992
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr ""
"Das Verschieben der Pipe zur Standardeingabe im Kindprozess ist gescheitert "
"(dup: %s)"
-#: io.c:1886 io.c:2068
+#: io.c:1952 io.c:2138
msgid "restoring stdout in parent process failed\n"
msgstr ""
"Das Wiederherstellen der Standardausgabe im Elternprozess ist gescheitert\n"
-#: io.c:1894
+#: io.c:1960
msgid "restoring stdin in parent process failed\n"
msgstr ""
"Das Wiederherstellen der Standardeingabe im Elternprozess ist gescheitert\n"
-#: io.c:1929 io.c:2080 io.c:2094
+#: io.c:1995 io.c:2150 io.c:2164
#, c-format
msgid "close of pipe failed (%s)"
msgstr "Das Schlieen der Pipe ist gescheitert (%s)"
-#: io.c:1974
+#: io.c:2040
msgid "`|&' not supported"
msgstr "罈|&竄 wird nicht unterst羹tzt"
-#: io.c:2040
+#: io.c:2107
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "Pipe 罈%s竄 kann nicht ge繹ffnet werden (%s)"
-#: io.c:2088
+#: io.c:2158
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "Kindprozess f羹r 罈%s竄 kann nicht erzeugt werden (fork: %s)"
-#: io.c:2521
+#: io.c:2637
#, c-format
msgid "data file `%s' is empty"
msgstr "Die Datei 罈%s竄 ist leer"
-#: io.c:2562 io.c:2570
+#: io.c:2678 io.c:2686
msgid "could not allocate more input memory"
msgstr "Es konnte kein weiterer Speicher f羹r die Eingabe beschafft werden"
-#: io.c:3128
+#: io.c:3236
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "Multicharacter-Wert von 罈RS竄 ist eine gawk-Erweiterung"
-#: io.c:3233
+#: io.c:3326
msgid "IPv6 communication is not supported"
msgstr "IPv6-Verbindungen werden nicht unterst羹tzt"
-#: main.c:364
+#: main.c:355
msgid "`-m[fr]' option irrelevant in gawk"
msgstr "Die Option 罈-m[fr]竄 ist in gawk bedeutungslos"
-#: main.c:366
+#: main.c:357
msgid "-m option usage: `-m[fr] nnn'"
msgstr "Anwendung der Option -m: 罈-m[fr] nnn竄"
-#: main.c:389
+#: main.c:386
msgid "empty argument to `-e/--source' ignored"
msgstr "Das leere Argument f羹r 罈--source竄 wird ignoriert"
-#: main.c:460
+#: main.c:472
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: Die Option 罈-W %s竄 ist unbekannt und wird ignoriert\n"
-#: main.c:513
+#: main.c:518
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: Die Option %c erfordert ein Argument\n"
-#: main.c:534
+#: main.c:539
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
"Die Umgebungsvariable 罈POSIXLY_CORRECT竄 ist gesetzt: 罈--posix竄 wird "
"eingeschaltet"
-#: main.c:540
+#: main.c:545
msgid "`--posix' overrides `--traditional'"
msgstr "罈--posix竄 hat Vorrang vor 罈--traditional竄"
-#: main.c:551
+#: main.c:556
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr "罈--posix竄 /罈--traditional竄 hat Vorrang vor 罈--non-decimal-data竄"
-#: main.c:555
+#: main.c:560
#, 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:560
+#: main.c:565
msgid "`--posix' overrides `--binary'"
msgstr "罈--posix竄 hat Vorrang vor 罈--binary竄"
-#: main.c:611
+#: main.c:623
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr ""
"Das Setzen des Bin瓣rermodus f羹r die Standardeingabe ist nicht m繹glich (%s)"
-#: main.c:614
+#: main.c:626
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr ""
"Das Setzen des Bin瓣rermodus f羹r die Standardausgabe ist nicht m繹glich (%s)"
-#: main.c:616
+#: main.c:628
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr ""
"Das Setzen des Bin瓣rermodus f羹r die Standardfehlerausgabe ist nicht m繹glich "
"(%s)"
-#: main.c:655
+#: main.c:679
msgid "no program text at all!"
msgstr "Es wurde 羹berhaupt kein Programmtext angegeben!"
-#: main.c:733
+#: main.c:763
#, 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:735
+#: main.c:765
#, 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:740
+#: main.c:770
msgid "POSIX options:\t\tGNU long options: (standard)\n"
msgstr "POSIX-Optionen\t\tlange GNU-Optionen: (standard)\n"
-#: main.c:741
+#: main.c:771
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f PROGRAMM\t\t--file=PROGRAMM\n"
-#: main.c:742
+#: main.c:772
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F Feldtrenner\t\t\t--field-separator=Feldtrenner\n"
-#: main.c:743
+#: main.c:773
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v var=Wert\t\t--assign=var=Wert\n"
-#: main.c:744
+#: main.c:774
msgid "Short options:\t\tGNU long options: (extensions)\n"
msgstr "POSIX-Optionen\t\tGNU-Optionen (lang): (Erweiterungen)\n"
-#: main.c:745
+#: main.c:775
msgid "\t-b\t\t\t--characters-as-bytes\n"
msgstr "\t-b\t\t\t--characters-as-bytes\n"
-#: main.c:746
+#: main.c:776
msgid "\t-c\t\t\t--traditional\n"
msgstr "\t-c\t\t\t--traditional\n"
-#: main.c:747
+#: main.c:777
msgid "\t-C\t\t\t--copyright\n"
msgstr "\t-C\t\t\t--copyright\n"
-#: main.c:748
+#: main.c:778
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
msgstr "\t-d [Datei]\t\t--dump-variables[=Datei]\n"
-#: main.c:749
+#: main.c:779
+#, fuzzy
+msgid "\t-D[file]\t\t--debug[=file]\n"
+msgstr "\t-p [Datei]\t\t--profile[=Datei]\n"
+
+#: main.c:780
msgid "\t-e 'program-text'\t--source='program-text'\n"
msgstr "\t-e 'Programmtext'\t--source=Programmtext\n"
-#: main.c:750
+#: main.c:781
msgid "\t-E file\t\t\t--exec=file\n"
msgstr "\t-E Datei\t\t\t--exec=Datei\n"
-#: main.c:751
+#: main.c:782
msgid "\t-g\t\t\t--gen-pot\n"
msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:752
+#: main.c:783
msgid "\t-h\t\t\t--help\n"
msgstr "\t-h\t\t\t--help\n"
-#: main.c:753
+#: main.c:784
+msgid "\t-l library\t\t--load=library\n"
+msgstr ""
+
+#: main.c:785
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
msgstr "\t-L [fatal]\t\t--lint[=fatal]\n"
-#: main.c:754
+#: main.c:786
msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr "\t-n\t\t\t--non-decimal-data\n"
-#: main.c:755
+#: main.c:787
+#, fuzzy
+msgid "\t-M\t\t\t--bignum\n"
+msgstr "\t-g\t\t\t--gen-pot\n"
+
+#: main.c:788
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr "\t-N\t\t\t--use-lc-numeric\n"
-#: main.c:756
+#: main.c:789
+#, fuzzy
+msgid "\t-o[file]\t\t--pretty-print[=file]\n"
+msgstr "\t-p [Datei]\t\t--profile[=Datei]\n"
+
+#: main.c:790
msgid "\t-O\t\t\t--optimize\n"
msgstr "\t-O\t\t\t--optimize\n"
-#: main.c:757
+#: main.c:791
msgid "\t-p[file]\t\t--profile[=file]\n"
msgstr "\t-p [Datei]\t\t--profile[=Datei]\n"
-#: main.c:758
+#: main.c:792
msgid "\t-P\t\t\t--posix\n"
msgstr "\t-P\t\t\t--posix\n"
-#: main.c:759
+#: main.c:793
msgid "\t-r\t\t\t--re-interval\n"
msgstr "\t-r\t\t\t--re-interval\n"
-#: main.c:761
-msgid "\t-R file\t\t\t--command=file\n"
-msgstr "\t-R Datei\t\t\t--command=Datei\n"
-
-#: main.c:762
+#: main.c:794
msgid "\t-S\t\t\t--sandbox\n"
msgstr "\t-S\t\t\t--sandbox\n"
-#: main.c:763
+#: main.c:795
msgid "\t-t\t\t\t--lint-old\n"
msgstr "\t-t\t\t\t--lint-old\n"
-#: main.c:764
+#: main.c:796
msgid "\t-V\t\t\t--version\n"
msgstr "\t-V\t\t\t--version\n"
-#: main.c:766
+#: main.c:798
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:769
+#: main.c:801
msgid "\t-Y\t\t--parsedebug\n"
msgstr "\t-Y\t\t--parsedebug\n"
@@ -1861,7 +1776,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:778
+#: main.c:810
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -1877,7 +1792,7 @@ msgstr ""
"an translation-team-de@lists.sourceforge.net\n"
"\n"
-#: main.c:782
+#: main.c:814
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -1888,7 +1803,7 @@ msgstr ""
"auf der Standardausgabe aus.\n"
"\n"
-#: main.c:786
+#: main.c:818
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -1898,7 +1813,7 @@ msgstr ""
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:806
+#: main.c:838
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1918,7 +1833,7 @@ msgstr ""
"sp瓣tere Version.\n"
"\n"
-#: main.c:814
+#: main.c:846
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"
@@ -1931,7 +1846,7 @@ msgstr ""
"leistung einer HANDELBARKEIT oder der EIGNUNG FR EINEN BESTIMMTEN ZWECK.\n"
"Sehen Sie bitte die GNU General Public License f羹r weitere Details.\n"
-#: main.c:820
+#: main.c:852
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"
@@ -1940,16 +1855,16 @@ msgstr ""
"diesem Programm erhalten haben. Wenn nicht, lesen Sie bitte\n"
"http://www.gnu.org/licenses/.\n"
-#: main.c:855
+#: main.c:887
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft setzt FS im POSIX-awk nicht auf Tab"
-#: main.c:1089
+#: main.c:1133
#, c-format
msgid "unknown value for field spec: %d\n"
msgstr "unbekannter Wert f羹r eine Feldangabe: %d\n"
-#: main.c:1170
+#: main.c:1214
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
@@ -1958,86 +1873,81 @@ msgstr ""
"%s: Argument 罈%s竄 von 罈-v竄 ist nicht in der Form 罈Variable=Wert竄\n"
"\n"
-#: main.c:1196
+#: main.c:1240
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "罈%s竄 ist kein g羹ltiger Variablenname"
-#: main.c:1199
+#: main.c:1243
#, 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:1203
+#: main.c:1247
#, c-format
msgid "cannot use gawk builtin `%s' as variable name"
msgstr ""
"die eingebaute Funktion 罈%s竄 kann nicht als Variablenname verwendet werden"
# c-format
-#: main.c:1208
+#: main.c:1252
#, c-format
msgid "cannot use function `%s' as variable name"
msgstr "Funktion 罈%s竄 kann nicht als Name einer Variablen verwendet werden"
-#: main.c:1261
+#: main.c:1305
msgid "floating point exception"
msgstr "Fliekomma-Ausnahme"
-#: main.c:1268
+#: main.c:1312
msgid "fatal error: internal error"
msgstr "Fataler Fehler: interner Fehler"
-#: main.c:1283
+#: main.c:1327
msgid "fatal error: internal error: segfault"
msgstr "Fataler Fehler: interner Fehler: Speicherbegrenzungsfehler"
-#: main.c:1295
+#: main.c:1339
msgid "fatal error: internal error: stack overflow"
msgstr "Fataler Fehler: interner Fehler: Stapel羹berlauf"
-#: main.c:1345
+#: main.c:1393
#, c-format
msgid "no pre-opened fd %d"
msgstr "Kein bereits ge繹ffneter Dateideskriptor %d"
-#: main.c:1352
+#: main.c:1400
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "/dev/null konnte nicht f羹r Dateideskriptor %d ge繹ffnet werden"
-#: main.c:1375 main.c:1384
-#, c-format
-msgid "could not find groups: %s"
-msgstr "Die Gruppen konnten nicht gefunden werden: %s"
-
-#: msg.c:63
+#: msg.c:61
#, c-format
msgid "cmd. line:"
msgstr "Kommandozeile:"
-#: msg.c:107
+#: msg.c:121
msgid "error: "
msgstr "Fehler: "
-#: node.c:406
+#: node.c:436
msgid "backslash at end of string"
msgstr "Backslash am Ende der Zeichenkette"
-#: node.c:517
+#: node.c:520
#, c-format
msgid "old awk does not support the `\\%c' escape sequence"
msgstr "Das alte awk unterst羹tzt die Fluchsequenz 罈\\%c竄 nicht"
-#: node.c:568
+#: node.c:571
msgid "POSIX does not allow `\\x' escapes"
msgstr "POSIX erlaubt keine 罈\\x竄-Escapes"
-#: node.c:574
+#: node.c:577
msgid "no hex digits in `\\x' escape sequence"
msgstr "In der 罈\\x竄-Fluchtsequenz sind keine hexadezimalen Zahlen"
-#: node.c:596
+#: node.c:599
#, c-format
msgid ""
"hex escape \\x%.*s of %d characters probably not interpreted the way you "
@@ -2046,12 +1956,12 @@ msgstr ""
"Die Hex-Sequenz \\x%.*s aus %d Zeichen wird wahrscheinlich nicht wie "
"gew羹nscht interpretiert"
-#: node.c:611
+#: node.c:614
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr "Fluchtsequenz 罈\\%c竄 wird wie ein normales 罈%c竄 behandelt"
-#: node.c:750
+#: node.c:759
msgid ""
"Invalid multibyte data detected. There may be a mismatch between your data "
"and your locale."
@@ -2072,16 +1982,16 @@ msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
msgstr ""
"%s %s 罈%s竄: close-on-exec konnte nicht gesetzt werden: (fcntl F_SETFD: %s)"
-#: profile.c:83
+#: profile.c:69
#, c-format
msgid "could not open `%s' for writing: %s"
msgstr "罈%s竄 konnte nicht zum Schreiben ge繹ffnet werden: %s"
-#: profile.c:85
+#: profile.c:71
msgid "sending profile to standard error"
msgstr "Das Profil wird auf der Standardfehlerausgabe ausgegeben"
-#: profile.c:203
+#: profile.c:187
#, c-format
msgid ""
"\t# %s block(s)\n"
@@ -2090,7 +2000,7 @@ msgstr ""
"\t# %s Bl繹cke\n"
"\n"
-#: profile.c:208
+#: profile.c:192
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -2099,17 +2009,22 @@ msgstr ""
"\t# Regeln(s)\n"
"\n"
-#: profile.c:279
+#: profile.c:266
#, c-format
msgid "internal error: %s with null vname"
msgstr "Interner Fehler: %s mit null vname"
-#: profile.c:952
+#: profile.c:528
+#, fuzzy
+msgid "internal error: builtin with null fname"
+msgstr "Interner Fehler: %s mit null vname"
+
+#: profile.c:943
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# gawk-Profil, erzeugt %s\n"
-#: profile.c:1331
+#: profile.c:1328
#, c-format
msgid ""
"\n"
@@ -2118,95 +2033,173 @@ msgstr ""
"\n"
"\t# Funktionen in alphabetischer Reihenfolge\n"
-#: profile.c:1370
+#: profile.c:1366
#, c-format
msgid "redir2str: unknown redirection type %d"
msgstr "redir2str: unbekannter Umlenkungstyp %d"
-#: re.c:572
-#, fuzzy, c-format
+#: re.c:571
+#, c-format
msgid "range of the form `[%c-%c]' is locale dependent"
msgstr ""
"Ein Bereich in der Form 罈[%c-%c]竄 ist abh瓣ngig von der gesetzten Locale"
-#: re.c:599
+#: re.c:598
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
msgstr ""
"Regul瓣rer-Ausdruck-Komponente 罈%.*s竄 sollte wahrscheinlich 罈[%.*s]竄 sein"
-#: regcomp.c:132
+#: regcomp.c:131
msgid "Success"
msgstr "Erfolg"
-#: regcomp.c:135
+#: regcomp.c:134
msgid "No match"
msgstr "Kein Treffer"
-#: regcomp.c:138
+#: regcomp.c:137
msgid "Invalid regular expression"
msgstr "Ung羹ltiger Regul瓣rer Ausdruck"
-#: regcomp.c:141
+#: regcomp.c:140
msgid "Invalid collation character"
msgstr "Ung羹ltiges Zeichen"
-#: regcomp.c:144
+#: regcomp.c:143
msgid "Invalid character class name"
msgstr "Ung羹ltiger Name f羹r eine Zeichenklasse"
-#: regcomp.c:147
+#: regcomp.c:146
msgid "Trailing backslash"
msgstr "Angeh瓣ngter Backslash"
-#: regcomp.c:150
+#: regcomp.c:149
msgid "Invalid back reference"
msgstr "Ung羹ltige R羹ck-Referenz"
-#: regcomp.c:153
+#: regcomp.c:152
msgid "Unmatched [ or [^"
msgstr "[ oder [^ werden nicht geschlossen"
-#: regcomp.c:156
+#: regcomp.c:155
msgid "Unmatched ( or \\("
msgstr "( oder \\( werden nicht geschlossen"
-#: regcomp.c:159
+#: regcomp.c:158
msgid "Unmatched \\{"
msgstr "\\{ wird nicht geschlossen"
-#: regcomp.c:162
+#: regcomp.c:161
msgid "Invalid content of \\{\\}"
msgstr "Ung羹ltiger Inhalt von \\{\\}"
-#: regcomp.c:165
+#: regcomp.c:164
msgid "Invalid range end"
msgstr "Ung羹ltiges Bereichsende"
-#: regcomp.c:168
+#: regcomp.c:167
msgid "Memory exhausted"
msgstr "Kein freier Speicher mehr vorhanden"
-#: regcomp.c:171
+#: regcomp.c:170
msgid "Invalid preceding regular expression"
msgstr "Vorangehender regul瓣rer Ausdruck ist ung羹ltig"
-#: regcomp.c:174
+#: regcomp.c:173
msgid "Premature end of regular expression"
msgstr "Vorzeitiges Ende des regul瓣ren Ausdrucks"
-#: regcomp.c:177
+#: regcomp.c:176
msgid "Regular expression too big"
msgstr "Regul瓣rer Ausdruck ist zu gro"
-#: regcomp.c:180
+#: regcomp.c:179
msgid "Unmatched ) or \\)"
msgstr ") oder \\) werden nicht ge繹ffnet"
-#: regcomp.c:701
+#: regcomp.c:700
msgid "No previous regular expression"
msgstr "Kein vorangehender regul瓣rer Ausdruck"
+#~ msgid "attempt to use function `%s' as an array"
+#~ msgstr "Es wird versucht, die Funktion 罈%s竄 als Feld zu verwenden"
+
+#~ msgid "reference to uninitialized element `%s[\"%.*s\"]'"
+#~ msgstr "Bezug auf ein nicht initialisiertes Element 罈%s[\"%.*s\"]竄"
+
+#~ msgid "subscript of array `%s' is null string"
+#~ msgstr "Der Index von Feld 罈%s竄 ist ein Nullstring"
+
+#~ msgid "%s: empty (null)\n"
+#~ msgstr "%s: leer (Null)\n"
+
+#~ msgid "%s: empty (zero)\n"
+#~ msgstr "%s: leer (0)\n"
+
+#~ msgid "%s: table_size = %d, array_size = %d\n"
+#~ msgstr "%s: Tabellengr繹e = %d, Feldgr繹e = %d\n"
+
+#~ msgid "%s: is parameter\n"
+#~ msgstr "%s: ist ein Parameter\n"
+
+#~ msgid "%s: array_ref to %s\n"
+#~ msgstr "%s: Feld-Referenz auf %s\n"
+
+#~ msgid "use of non-array as array"
+#~ msgstr "Verwendung eines Nicht-Feldes als Feld"
+
+#~ msgid "can't use function name `%s' as variable or array"
+#~ msgstr "Funktion 罈%s竄 kann nicht als Variable oder Feld verwendet werden"
+
+#~ msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context"
+#~ msgstr ""
+#~ "Es wird versucht, das Feld 罈%s[\"%.*s\"]竄 in einem Skalarkontext zu "
+#~ "verwenden"
+
+#~ msgid "assignment used in conditional context"
+#~ msgstr "Zuweisung in einer Bedingung"
+
+#~ msgid "statement has no effect"
+#~ msgstr "Anweisung hat keinen Effekt"
+
+#~ msgid ""
+#~ "for loop: array `%s' changed size from %ld to %ld during loop execution"
+#~ msgstr ""
+#~ "for-Schleife: Feld 罈%s竄 瓣ndert seine Gr繹e von %ld innerhalb der Schleife "
+#~ "zu %ld"
+
+#~ msgid "function called indirectly through `%s' does not exist"
+#~ msgstr "die durch 罈%s竄 indirekt aufgerufene Funktion existiert nicht"
+
+#~ msgid "function `%s' not defined"
+#~ msgstr "Funktion 罈%s竄 ist nicht definiert"
+
+#~ msgid "non-redirected `getline' invalid inside `%s' rule"
+#~ msgstr "Nicht umgelenktes 罈getline竄 ist innerhalb der 罈%s竄-Aktion unzu瓣ssig"
+
+#~ msgid "error reading input file `%s': %s"
+#~ msgstr "Fehler beim Lesen der Eingabedatei 罈%s竄: %s"
+
+#~ msgid "`nextfile' cannot be called from a `%s' rule"
+#~ msgstr "罈nextfile竄 kann nicht aus einer 罈竄%s-Regel aufgerufen werden"
+
+#~ msgid "`exit' cannot be called in the current context"
+#~ msgstr "罈exit竄 kann im aktuellen Kontext nicht aufgerufen werden"
+
+#~ msgid "`next' cannot be called from a `%s' rule"
+#~ msgstr "罈next竄 kann nicht in einer 罈%s竄-Regel verwendet werden"
+
+#~ msgid "Sorry, don't know how to interpret `%s'"
+#~ msgstr ""
+#~ "Entschuldigung, aber es ist unbekannt, wie 罈%s竄 zu interpretieren ist"
+
+#~ msgid "\t-R file\t\t\t--command=file\n"
+#~ msgstr "\t-R Datei\t\t\t--command=Datei\n"
+
+#~ msgid "could not find groups: %s"
+#~ msgstr "Die Gruppen konnten nicht gefunden werden: %s"
+
#~ msgid "assignment is not allowed to result of builtin function"
#~ msgstr ""
#~ "Zuweisungen an das Ergebnis einer eingebauten Funktion sind nicht erlaubt"
diff --git a/po/es.gmo b/po/es.gmo
index 7df5fab8..ff97b5ad 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index fd28a8a8..1998136e 100644
--- a/po/es.po
+++ b/po/es.po
@@ -1,14 +1,14 @@
-# Mensajes en espa簽ol para gawk-4.0.0.
-# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+# Mensajes en espa簽ol para gawk-4.0.0h.
+# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
# This file is distributed under the same license as the gawk package.
-# Cristian Oth籀n Mart穩nez Vera <cfuga@cfuga.mx>, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011.
+# Cristian Oth籀n Mart穩nez Vera <cfuga@cfuga.mx>, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012.
#
msgid ""
msgstr ""
-"Project-Id-Version: gawk 4.0.0\n"
+"Project-Id-Version: gawk 4.0.0h\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2011-11-14 21:46+0200\n"
-"PO-Revision-Date: 2011-08-14 12:02-0500\n"
+"POT-Creation-Date: 2012-04-27 10:06+0300\n"
+"PO-Revision-Date: 2012-01-30 07:42-0600\n"
"Last-Translator: Cristian Oth籀n Mart穩nez Vera <cfuga@cfuga.mx>\n"
"Language-Team: Spanish <es@li.org>\n"
"Language: es\n"
@@ -16,519 +16,476 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: array.c:140
+#: array.c:266
#, c-format
msgid "from %s"
msgstr "desde %s"
-#: array.c:248
+#: array.c:366
msgid "attempt to use a scalar value as array"
msgstr "se intent籀 usar un valor escalar como una matriz"
-#: array.c:251
-#, c-format
-msgid "attempt to use function `%s' as an array"
-msgstr "se intent籀 usar la funci籀n `%s' como una matriz"
-
-#: array.c:254
+#: array.c:368
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
msgstr "se intent籀 usar el par獺metro escalar `%s como una matriz'"
-#: array.c:257
+#: array.c:371
#, c-format
msgid "attempt to use scalar `%s' as an array"
msgstr "se intent籀 usar el escalar `%s' como una matriz"
-#: array.c:302 array.c:707 builtin.c:84 builtin.c:1384 builtin.c:1426
-#: builtin.c:1439 builtin.c:1858 builtin.c:1870 eval.c:1135 eval.c:1139
-#: eval.c:1495 eval.c:1812
+#: array.c:418 array.c:584 builtin.c:85 builtin.c:1560 builtin.c:1602
+#: builtin.c:1615 builtin.c:2041 builtin.c:2053 eval.c:1109 eval.c:1113
+#: eval.c:1508
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "se intent籀 usar la matriz `%s' en un contexto escalar"
-#: array.c:513
-#, c-format
-msgid "reference to uninitialized element `%s[\"%.*s\"]'"
-msgstr "referencia al elemento sin inicializar `%s[\"%.*s\"]'"
-
-#: array.c:519
-#, c-format
-msgid "subscript of array `%s' is null string"
-msgstr "el sub穩ndice de la matriz `%s' es la cadena nula"
-
-#: array.c:723
+#: array.c:591
#, c-format
msgid "delete: index `%s' not in array `%s'"
msgstr "delete: el 穩ndice `%s' no est獺 en la matriz `%s'"
-#: array.c:734 eval.c:1865
+#: array.c:605
#, c-format
msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
msgstr "se intent籀 usar el dato escalar `%s[\"%.*s\"]' como una matriz"
-#: array.c:910
-#, c-format
-msgid "%s: empty (null)\n"
-msgstr "%s: vac穩o (nulo)\n"
-
-#: array.c:915
-#, c-format
-msgid "%s: empty (zero)\n"
-msgstr "%s: vac穩o (cero)\n"
-
-#: array.c:919
-#, c-format
-msgid "%s: table_size = %d, array_size = %d\n"
-msgstr "%s: tama簽o_tabla = %d, tama簽o_matriz = %d\n"
-
-#: array.c:954
-#, c-format
-msgid "%s: is parameter\n"
-msgstr "%s: es un par獺metro\n"
-
-#: array.c:958
-#, c-format
-msgid "%s: array_ref to %s\n"
-msgstr "%s: array_ref a %s\n"
-
-#: array.c:963
-msgid "adump: argument not an array"
+#: array.c:784
+#, fuzzy
+msgid "adump: first argument not an array"
msgstr "adump: el argumento no es una matriz"
-#: array.c:1086
+#: array.c:823
msgid "asort: second argument not an array"
msgstr "asort: el segundo argumento no es una matriz"
-#: array.c:1087
+#: array.c:824
msgid "asorti: second argument not an array"
msgstr "asorti: el segundo argumento no es una matriz"
-#: array.c:1094
+#: array.c:831
msgid "asort: first argument not an array"
msgstr "asort: el primer argumento no es una matriz"
-#: array.c:1095
+#: array.c:832
msgid "asorti: first argument not an array"
msgstr "asorti: el primer argumento no es una matriz"
-#: array.c:1102
+#: array.c:839
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr ""
"asort: no se puede usar una submatriz del primer argumento para el segundo "
"argumento"
-#: array.c:1103
+#: array.c:840
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr ""
"asorti: no se puede usar una submatriz del primer argumento para el segundo "
"argumento"
-#: array.c:1108
+#: array.c:845
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr ""
"asort: no se puede usar una submatriz del segundo argumento para el primer "
"argumento"
-#: array.c:1109
+#: array.c:846
msgid "asorti: cannot use a subarray of second arg for first arg"
msgstr ""
"asorti: no se puede usar una submatriz del segundo argumento para el primer "
"argumento"
-#: array.c:1659
+#: array.c:1314
#, c-format
msgid "`%s' is invalid as a function name"
msgstr "`%s' es inv獺lido como un nombre de funci籀n"
-#: array.c:1663
+#: array.c:1318
#, c-format
msgid "sort comparison function `%s' is not defined"
msgstr "la funci籀n de comparaci籀n de ordenamiento `%s' no est獺 definida"
-#: awkgram.y:249
+#: awkgram.y:223
#, c-format
msgid "%s blocks must have an action part"
msgstr "los bloques %s deben tener una parte de acci籀n"
-#: awkgram.y:252
+#: awkgram.y:226
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:323 awkgram.y:334
+#: awkgram.y:295 awkgram.y:306
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:371
+#: awkgram.y:343
#, 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:432
+#: awkgram.y:389
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:436
+#: awkgram.y:393
#, 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:528
+#: awkgram.y:485
#, c-format
msgid "duplicate case values in switch body: %s"
msgstr "valores case duplicados en el cuerpo de un switch: %s"
-#: awkgram.y:549
+#: awkgram.y:506
msgid "duplicate `default' detected in switch body"
msgstr "se detect籀 un `default' duplicado en el cuerpo de un switch"
-#: awkgram.y:809
+#: awkgram.y:766
msgid "`break' is not allowed outside a loop or switch"
msgstr "no se permite `break' fuera de un bucle o switch"
-#: awkgram.y:818
+#: awkgram.y:775
msgid "`continue' is not allowed outside a loop"
msgstr "no se permite `continue' fuera de un bucle"
-#: awkgram.y:828
+#: awkgram.y:785
#, c-format
msgid "`next' used in %s action"
msgstr "se us籀 `next' en la acci籀n %s"
-#: awkgram.y:836
+#: awkgram.y:793
msgid "`nextfile' is a gawk extension"
msgstr "`nextfile' es una extensi籀n de gawk"
-#: awkgram.y:841
+#: awkgram.y:798
#, c-format
msgid "`nextfile' used in %s action"
msgstr "se us籀 `nextfile' en la acci籀n %s"
-#: awkgram.y:865
+#: awkgram.y:822
msgid "`return' used outside function context"
msgstr "se us籀 `return' fuera del contexto de la funci籀n"
-#: awkgram.y:925
+#: awkgram.y:896
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:995 awkgram.y:999 awkgram.y:1023
+#: awkgram.y:966 awkgram.y:970 awkgram.y:994
msgid "`delete array' is a gawk extension"
msgstr "`delete array' es una extensi籀n de gawk"
-#: awkgram.y:1019
+#: awkgram.y:990
msgid "`delete(array)' is a non-portable tawk extension"
msgstr "`delete(array)' es una extensi籀n de tawk que no es transportable"
-#: awkgram.y:1135
+#: awkgram.y:1108
msgid "multistage two-way pipelines don't work"
msgstr "las l穩neas de trabajo de dos v穩as multiestado no funcionan"
-#: awkgram.y:1238
+#: awkgram.y:1211
msgid "regular expression on right of assignment"
msgstr "expresi籀n regular del lado derecho de una asignaci籀n"
-#: awkgram.y:1249
+#: awkgram.y:1222
msgid "regular expression on left of `~' or `!~' operator"
msgstr "expresi籀n regular a la izquierda del operador `~' o `!~'"
-#: awkgram.y:1265 awkgram.y:1419
+#: awkgram.y:1238 awkgram.y:1389
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:1275
+#: awkgram.y:1248
msgid "regular expression on right of comparison"
msgstr "expresi籀n regular a la derecha de una comparaci籀n"
-#: awkgram.y:1394
+#: awkgram.y:1364
#, c-format
msgid "`getline var' invalid inside `%s' rule"
msgstr "`getline var' inv獺lido dentro de la regla `%s'"
-#: awkgram.y:1397 eval.c:2504
+#: awkgram.y:1367
#, c-format
msgid "`getline' invalid inside `%s' rule"
msgstr "`getline' inv獺lido dentro de la regla `%s'"
-#: awkgram.y:1402
+#: awkgram.y:1372
msgid "non-redirected `getline' undefined inside END action"
msgstr "`getline' no redirigido indefinido dentro de la acci籀n de END"
-#: awkgram.y:1421
+#: awkgram.y:1391
msgid "old awk does not support multidimensional arrays"
msgstr "el awk antiguo no admite matrices multidimensionales"
-#: awkgram.y:1517
+#: awkgram.y:1488
msgid "call of `length' without parentheses is not portable"
msgstr "la llamada de `length' sin par矇ntesis no es transportable"
-#: awkgram.y:1580
+#: awkgram.y:1554
msgid "indirect function calls are a gawk extension"
msgstr "las llamadas indirectas a funci籀n son una extensi籀n de gawk"
-#: awkgram.y:1593
+#: awkgram.y:1567
#, 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:1671
+#: awkgram.y:1645
msgid "invalid subscript expression"
msgstr "expresi籀n de sub穩ndice inv獺lida"
-#: awkgram.y:1711
-msgid "use of non-array as array"
-msgstr "uso de una matriz que no es matriz"
-
-#: awkgram.y:1975 awkgram.y:1995 msg.c:98
+#: awkgram.y:1966 awkgram.y:1986 msg.c:112
msgid "warning: "
msgstr "aviso: "
-#: awkgram.y:1993 msg.c:130
+#: awkgram.y:1984 msg.c:144
msgid "fatal: "
msgstr "fatal: "
-#: awkgram.y:2043
+#: awkgram.y:2034
msgid "unexpected newline or end of string"
msgstr "nueva l穩nea o fin de la cadena inesperados"
-#: awkgram.y:2300 awkgram.y:2358 awkgram.y:2542
+#: awkgram.y:2299 awkgram.y:2357 awkgram.y:2545
#, 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:2301 awkgram.y:2359 builtin.c:122
+#: awkgram.y:2300 awkgram.y:2358 builtin.c:124
msgid "reason unknown"
msgstr "raz籀n desconocida"
-#: awkgram.y:2317
+#: awkgram.y:2316
#, c-format
msgid "already included source file `%s'"
msgstr "ya se incluy籀 el fichero fuente `%s'"
-#: awkgram.y:2343
+#: awkgram.y:2342
msgid "@include is a gawk extension"
msgstr "@include es una extensi籀n de gawk"
-#: awkgram.y:2349
+#: awkgram.y:2348
msgid "empty filename after @include"
msgstr "nombre de fichero vac穩o despu矇s de @include"
-#: awkgram.y:2494
+#: awkgram.y:2497
msgid "empty program text on command line"
msgstr "texto de programa vac穩o en la linea de 籀rdenes"
-#: awkgram.y:2609
+#: awkgram.y:2612
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "no se puede leer el fichero fuente `%s' (%s)"
-#: awkgram.y:2620
+#: awkgram.y:2623
#, c-format
msgid "source file `%s' is empty"
msgstr "el fichero fuente `%s' est獺 vac穩o"
-#: awkgram.y:2805
+#: awkgram.y:2800
msgid "source file does not end in newline"
msgstr "el fichero fuente no termina con l穩nea nueva"
-#: awkgram.y:2882
+#: awkgram.y:2905
msgid "unterminated regexp ends with `\\' at end of file"
msgstr "expresi籀n regular sin terminar termina con `\\` al final del fichero"
-#: awkgram.y:2906
+#: awkgram.y:2929
#, 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:2910
+#: awkgram.y:2933
#, 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:2917
+#: awkgram.y:2940
msgid "unterminated regexp"
msgstr "expresi籀n regular sin terminar"
-#: awkgram.y:2921
+#: awkgram.y:2944
msgid "unterminated regexp at end of file"
msgstr "expresi籀n regular sin terminar al final del fichero"
-#: awkgram.y:2980
+#: awkgram.y:3003
msgid "use of `\\ #...' line continuation is not portable"
msgstr "el uso de la continuaci籀n de l穩nea `\\ #...' no es transportable"
-#: awkgram.y:2996
+#: awkgram.y:3019
msgid "backslash not last character on line"
msgstr "la barra invertida no es el 繳ltimo caracter en la l穩nea"
-#: awkgram.y:3057
+#: awkgram.y:3080
msgid "POSIX does not allow operator `**='"
msgstr "POSIX no permite el operador `**='"
-#: awkgram.y:3059
+#: awkgram.y:3082
msgid "old awk does not support operator `**='"
msgstr "el awk antiguo no admite el operador `**='"
-#: awkgram.y:3068
+#: awkgram.y:3091
msgid "POSIX does not allow operator `**'"
msgstr "POSIX no permite el operador `**'"
-#: awkgram.y:3070
+#: awkgram.y:3093
msgid "old awk does not support operator `**'"
msgstr "el awk antiguo no admite el operador `**='"
-#: awkgram.y:3105
+#: awkgram.y:3128
msgid "operator `^=' is not supported in old awk"
msgstr "el operador `^=' no se admite en el awk antiguo"
-#: awkgram.y:3113
+#: awkgram.y:3136
msgid "operator `^' is not supported in old awk"
msgstr "el operador `^' no se admite en el awk antiguo"
-#: awkgram.y:3206 awkgram.y:3222
+#: awkgram.y:3229 awkgram.y:3245
msgid "unterminated string"
msgstr "cadena sin terminar"
-#: awkgram.y:3418
+#: awkgram.y:3466
#, c-format
msgid "invalid char '%c' in expression"
msgstr "caracter '%c' inv獺lido en la expresi籀n"
-#: awkgram.y:3465
+#: awkgram.y:3513
#, c-format
msgid "`%s' is a gawk extension"
msgstr "`%s' es una extensi籀n de gawk"
-#: awkgram.y:3470
+#: awkgram.y:3518
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr "`%s' es una extensi籀n de Bell Labs"
-#: awkgram.y:3475
+#: awkgram.y:3523
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX no permite `%s'"
-#: awkgram.y:3483
+#: awkgram.y:3531
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "`%s' no se admite en el awk antiguo"
-#: awkgram.y:3550
+#: awkgram.y:3598
msgid "`goto' considered harmful!\n"
msgstr "癒`goto' se considera da簽ino!\n"
-#: awkgram.y:3601
+#: awkgram.y:3632
#, 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:3636
+#: awkgram.y:3667
#, 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:3641
+#: awkgram.y:3672
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "el tercer argumento de %s no es un objecto modificable"
-#: awkgram.y:3714 awkgram.y:3717
+#: awkgram.y:3751 awkgram.y:3754
msgid "match: third argument is a gawk extension"
msgstr "match: el tercer argumento es una extensi籀n de gawk"
-#: awkgram.y:3771 awkgram.y:3774
+#: awkgram.y:3808 awkgram.y:3811
msgid "close: second argument is a gawk extension"
msgstr "close: el segundo argumento es una extensi籀n de gawk"
-#: awkgram.y:3786
+#: awkgram.y:3823
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"el uso de dcgettext(_\"...\") es incorrecto: quite el subrayado inicial"
-#: awkgram.y:3801
+#: awkgram.y:3838
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"el uso de dcngettext(_\"...\") es incorrecto: quite el subrayado inicial"
-#: awkgram.y:3893
-#, 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:3935
+#: awkgram.y:3904
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "funci籀n `%s': par獺metro `%s' oscurece la variable global"
-#: awkgram.y:4093
+#: awkgram.y:3961
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "no se puede abrir `%s' para escritura (%s)"
-#: awkgram.y:4094
+#: awkgram.y:3962
msgid "sending variable list to standard error"
msgstr "se env穩a la lista de variables a la salida est獺ndar de error"
-#: awkgram.y:4100
+#: awkgram.y:3970
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: fall籀 close (%s)"
-#: awkgram.y:4152
+#: awkgram.y:3995
msgid "shadow_funcs() called twice!"
msgstr "癒se llam籀 shadow_funcs() dos veces!"
-#: awkgram.y:4158
+#: awkgram.y:4003
msgid "there were shadowed variables."
msgstr "hay variables opacadas."
-#: awkgram.y:4188
+#: awkgram.y:4074
+#, c-format
+msgid "function name `%s' previously defined"
+msgstr "el nombre de funci籀n `%s' se defini籀 previamente"
+
+#: awkgram.y:4120
#, 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:4192
+#: awkgram.y:4123
#, 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:4208
+#: awkgram.y:4131
#, c-format
-msgid "function name `%s' previously defined"
-msgstr "el nombre de funci籀n `%s' se defini籀 previamente"
+msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
+msgstr "funci籀n `%s': par獺metro #%d, `%s', duplica el par獺metro #%d"
-#: awkgram.y:4376 awkgram.y:4382
+#: awkgram.y:4210 awkgram.y:4216
#, c-format
msgid "function `%s' called but never defined"
msgstr "se llam籀 a la funci籀n `%s' pero nunca se defini籀"
-#: awkgram.y:4385
+#: awkgram.y:4219
#, c-format
msgid "function `%s' defined but never called directly"
msgstr "se defini籀 la funci籀n `%s' pero nunca se llam籀 directamente"
-#: awkgram.y:4417
+#: awkgram.y:4251
#, 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:4526
+#: awkgram.y:4297
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -537,238 +494,238 @@ 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:4773 eval.c:2056
+#: awkgram.y:4505
msgid "division by zero attempted"
msgstr "se intent籀 una divisi籀n por cero"
-#: awkgram.y:4782 eval.c:2072
+#: awkgram.y:4514
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "se intent籀 una divisi籀n por cero en `%%'"
-#: builtin.c:120
+#: builtin.c:122
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "fall籀 %s a \"%s\" (%s)"
-#: builtin.c:121
+#: builtin.c:123
msgid "standard output"
msgstr "salida est獺ndar"
-#: builtin.c:135
+#: builtin.c:137
msgid "exp: received non-numeric argument"
msgstr "exp: se recibi籀 un argumento que no es n繳merico"
-#: builtin.c:141
+#: builtin.c:143
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: el argumento %g est獺 fuera de rango"
-#: builtin.c:200
+#: builtin.c:202
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: no se puede limpiar: se abri籀 la tuber穩a `%s' para lectura, no para "
"escritura"
-#: builtin.c:203
+#: builtin.c:205
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: no se puede limpiar: se abri籀 el fichero `%s' para lectura, no para "
"escritura"
-#: builtin.c:215
+#: builtin.c:217
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr "fflush: `%s' no es un fichero abierto, tuber穩a o co-proceso"
-#: builtin.c:333
+#: builtin.c:335
msgid "index: received non-string first argument"
msgstr "index: el primer argumento recibido no es una cadena"
-#: builtin.c:335
+#: builtin.c:337
msgid "index: received non-string second argument"
msgstr "index: el segundo argumento recibido no es una cadena"
-#: builtin.c:457
+#: builtin.c:461
msgid "int: received non-numeric argument"
msgstr "int: se recibi籀 un argumento que no es n繳merico"
-#: builtin.c:493
+#: builtin.c:497
msgid "length: received array argument"
msgstr "length: se recibi籀 un argumento de matriz"
-#: builtin.c:496
+#: builtin.c:500
msgid "`length(array)' is a gawk extension"
msgstr "`length(array)' es una extensi籀n de gawk"
-#: builtin.c:504
+#: builtin.c:508
msgid "length: received non-string argument"
msgstr "length: se recibi籀 un argumento que no es una cadena"
-#: builtin.c:535
+#: builtin.c:539
msgid "log: received non-numeric argument"
msgstr "log: se recibi籀 un argumento que no es n繳merico"
-#: builtin.c:538
+#: builtin.c:542
#, c-format
msgid "log: received negative argument %g"
msgstr "log: se recibi籀 el argumento negativo %g"
-#: builtin.c:694 builtin.c:699
+#: builtin.c:740 builtin.c:745
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:761
+#: builtin.c:815
#, c-format
msgid "field width is ignored for `%%' specifier"
msgstr "se descarta la anchura del campo para el especificador `%%'"
-#: builtin.c:763
+#: builtin.c:817
#, c-format
msgid "precision is ignored for `%%' specifier"
msgstr "se descarta la precisi籀n para el especificador `%%'"
-#: builtin.c:765
+#: builtin.c:819
#, 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:816
+#: builtin.c:870
msgid "fatal: `$' is not permitted in awk formats"
msgstr "fatal: no se permite `$' en los formatos de awk"
-#: builtin.c:825
+#: builtin.c:879
msgid "fatal: arg count with `$' must be > 0"
msgstr "fatal: la cuenta de argumentos con `$' debe ser > 0"
-#: builtin.c:829
+#: builtin.c:883
#, 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:833
+#: builtin.c:887
msgid "fatal: `$' not permitted after period in format"
msgstr "fatal: no se permite `$' despu矇s de un punto en el formato"
-#: builtin.c:849
+#: builtin.c:903
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:920
+#: builtin.c:975
msgid "`l' is meaningless in awk formats; ignored"
msgstr "`l' no tiene significado en los formatos de awk; se descarta"
-#: builtin.c:924
+#: builtin.c:979
msgid "fatal: `l' is not permitted in POSIX awk formats"
msgstr "fatal: no se permite `l' en los formatos POSIX de awk"
-#: builtin.c:937
+#: builtin.c:992
msgid "`L' is meaningless in awk formats; ignored"
msgstr "`L' no tiene significado en los formatos de awk; se descarta"
-#: builtin.c:941
+#: builtin.c:996
msgid "fatal: `L' is not permitted in POSIX awk formats"
msgstr "fatal: no se permite `L' en los formatos POSIX de awk"
-#: builtin.c:954
+#: builtin.c:1009
msgid "`h' is meaningless in awk formats; ignored"
msgstr "`h' no tiene significado en los formatos de awk; se descarta"
-#: builtin.c:958
+#: builtin.c:1013
msgid "fatal: `h' is not permitted in POSIX awk formats"
msgstr "fatal: no se permite `h' en los formatos POSIX de awk"
-#: builtin.c:1271
+#: builtin.c:1408
#, 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:1331
+#: builtin.c:1506
#, 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:1336
+#: builtin.c:1511
msgid "fatal: not enough arguments to satisfy format string"
msgstr ""
"fatal: no hay suficientes argumentos para satisfacer a la cadena de formato"
-#: builtin.c:1338
+#: builtin.c:1513
msgid "^ ran out for this one"
msgstr "se acab籀 ^ para 矇ste"
-#: builtin.c:1345
+#: builtin.c:1520
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: el especificador de formato no tiene letras de control"
-#: builtin.c:1348
+#: builtin.c:1523
msgid "too many arguments supplied for format string"
msgstr "se proporcionaron demasiados argumentos para la cadena de formato"
-#: builtin.c:1422 builtin.c:1433
+#: builtin.c:1598 builtin.c:1609
msgid "printf: no arguments"
msgstr "printf: sin argumentos"
-#: builtin.c:1474
+#: builtin.c:1650
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: se recibi籀 un argumento que no es un n繳merico"
-#: builtin.c:1478
+#: builtin.c:1654
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: se llam籀 con el argumento negativo %g"
-#: builtin.c:1502
+#: builtin.c:1685
#, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: la longitud %g no es >= 1"
-#: builtin.c:1504
+#: builtin.c:1687
#, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: la longitud %g no es >= 0"
-#: builtin.c:1511
+#: builtin.c:1694
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: se truncar獺 la longitud no entera %g"
-#: builtin.c:1516
+#: builtin.c:1699
#, 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:1528
+#: builtin.c:1711
#, 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:1533
+#: builtin.c:1716
#, 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:1558
+#: builtin.c:1741
msgid "substr: source string is zero length"
msgstr "substr: la cadena de origen es de longitud cero"
-#: builtin.c:1574
+#: builtin.c:1757
#, 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:1582
+#: builtin.c:1765
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -776,233 +733,229 @@ msgstr ""
"substr: la cadena %g en el 穩ndice de inicio %g excede la longitud del primer "
"argumento (%lu)"
-#: builtin.c:1656
+#: builtin.c:1839
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:1679
+#: builtin.c:1862
msgid "strftime: received non-numeric second argument"
msgstr "strftime: el segundo argumento recibido no es n繳merico"
-#: builtin.c:1682
+#: builtin.c:1866
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:1689
+#: builtin.c:1873
msgid "strftime: received non-string first argument"
msgstr "strftime: el primer argumento recibido no es una cadena"
-#: builtin.c:1695
+#: builtin.c:1880
msgid "strftime: received empty format string"
msgstr "strftime: se recibi籀 una cadena de formato vac穩a"
-#: builtin.c:1761
+#: builtin.c:1946
msgid "mktime: received non-string argument"
msgstr "mktime: se recibi籀 un argumento que no es una cadena"
-#: builtin.c:1778
+#: builtin.c:1963
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:1813
+#: builtin.c:1998
msgid "'system' function not allowed in sandbox mode"
msgstr "no se permite la funci籀n 'system' en modo sandbox"
-#: builtin.c:1818
+#: builtin.c:2003
msgid "system: received non-string argument"
msgstr "system: se recibi籀 un argumento que no es una cadena"
-#: builtin.c:1873 eval.c:1159 eval.c:1790 eval.c:1803
-#, c-format
-msgid "reference to uninitialized variable `%s'"
-msgstr "referencia a la variable sin inicializar `%s'"
-
-#: builtin.c:1940
+#: builtin.c:2121
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "referencia al campo sin inicializar `$%d'"
-#: builtin.c:2027
+#: builtin.c:2208
msgid "tolower: received non-string argument"
msgstr "tolower: se recibi籀 un argumento que no es una cadena"
-#: builtin.c:2061
+#: builtin.c:2242
msgid "toupper: received non-string argument"
msgstr "toupper: se recibi籀 un argumento que no es una cadena"
-#: builtin.c:2097
+#: builtin.c:2278
msgid "atan2: received non-numeric first argument"
msgstr "atan2: el primer argumento recibido no es n繳merico"
-#: builtin.c:2099
+#: builtin.c:2280
msgid "atan2: received non-numeric second argument"
msgstr "atan2: el segundo argumento recibido no es n繳merico"
-#: builtin.c:2118
+#: builtin.c:2299
msgid "sin: received non-numeric argument"
msgstr "sin: se recibi籀 un argumento que no es n繳merico"
-#: builtin.c:2134
+#: builtin.c:2315
msgid "cos: received non-numeric argument"
msgstr "cos: se recibi籀 un argumento que no es n繳merico"
-#: builtin.c:2187
+#: builtin.c:2368
msgid "srand: received non-numeric argument"
msgstr "srand: se recibi籀 un argumento que no es n繳merico"
-#: builtin.c:2218
+#: builtin.c:2399
msgid "match: third argument is not an array"
msgstr "match: el tercer argumento no es una matriz"
-#: builtin.c:2482
+#: builtin.c:2664
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: el tercer argumento de 0 se trata como 1"
-#: builtin.c:2775
+#: builtin.c:2957
msgid "lshift: received non-numeric first argument"
msgstr "lshift: el primer argumento recibido no es n繳merico"
-#: builtin.c:2777
+#: builtin.c:2959
msgid "lshift: received non-numeric second argument"
msgstr "lshift: el segundo argumento recibido no es n繳merico"
-#: builtin.c:2783
+#: builtin.c:2965
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr "lshift(%lf, %lf): los valores negativos dar獺n resultados extra簽os"
-#: builtin.c:2785
+#: builtin.c:2967
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr "lshift(%lf, %lf): los valores fraccionarios se truncar獺n"
-#: builtin.c:2787
+#: builtin.c:2969
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
"lshift(%lf, %lf): un valor de desplazamiento muy grande dar獺 resultados "
"extra簽os"
-#: builtin.c:2812
+#: builtin.c:2994
msgid "rshift: received non-numeric first argument"
msgstr "rshift: el primer argumento recibido no es n繳merico"
-#: builtin.c:2814
+#: builtin.c:2996
msgid "rshift: received non-numeric second argument"
msgstr "rshift: el segundo argumento recibido no es n繳merico"
-#: builtin.c:2820
+#: builtin.c:3002
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr "rshift(%lf, %lf): los valores negativos dar獺n resultados extra簽os"
-#: builtin.c:2822
+#: builtin.c:3004
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr "rshift(%lf, %lf): los valores fraccionarios ser獺n truncados"
-#: builtin.c:2824
+#: builtin.c:3006
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
"rshift(%lf, %lf): un valor de desplazamiento muy grande dar獺 resultados "
"extra簽os"
-#: builtin.c:2849
+#: builtin.c:3031
msgid "and: received non-numeric first argument"
msgstr "and: el primer argumento recibido no es n繳merico"
-#: builtin.c:2851
+#: builtin.c:3033
msgid "and: received non-numeric second argument"
msgstr "and: el segundo argumento recibido no es n繳merico"
-#: builtin.c:2857
+#: builtin.c:3039
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr "and(%lf, %lf): los valores negativos dar獺n resultados extra簽os"
-#: builtin.c:2859
+#: builtin.c:3041
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr "and(%lf, %lf): los valores fraccionarios ser獺n truncados"
-#: builtin.c:2884
+#: builtin.c:3066
msgid "or: received non-numeric first argument"
msgstr "or: el primer argumento recibido no es n繳merico"
-#: builtin.c:2886
+#: builtin.c:3068
msgid "or: received non-numeric second argument"
msgstr "or: el segundo argumento recibido no es n繳merico"
-#: builtin.c:2892
+#: builtin.c:3074
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr "or(%lf, %lf): los valores negativos dar獺n resultados extra簽os"
-#: builtin.c:2894
+#: builtin.c:3076
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr "or(%lf, %lf): los valores fraccionarios ser獺n truncados"
-#: builtin.c:2922
+#: builtin.c:3102
msgid "xor: received non-numeric first argument"
msgstr "xor: el primer argumento recibido no es n繳merico"
-#: builtin.c:2924
+#: builtin.c:3104
msgid "xor: received non-numeric second argument"
msgstr "xor: el segundo argumento recibido no es n繳merico"
-#: builtin.c:2930
+#: builtin.c:3110
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr "xor(%lf, %lf): los valores negativos dar獺n resultados extra簽os"
-#: builtin.c:2932
+#: builtin.c:3112
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr "xor(%lf, %lf): los valores fraccionarios se truncar獺n"
-#: builtin.c:2956 builtin.c:2962
+#: builtin.c:3136
msgid "compl: received non-numeric argument"
msgstr "compl: se recibi籀 un argumento que no es n繳merico"
-#: builtin.c:2964
+#: builtin.c:3142
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr "compl(%lf): el valor negativo dar獺 resultados extra簽os"
-#: builtin.c:2966
+#: builtin.c:3144
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr "compl(%lf): el valor fraccionario se truncar獺"
-#: builtin.c:3135
+#: builtin.c:3313
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: `%s' no es una categor穩a local v獺lida"
-#: eval.c:412
+#: eval.c:395
#, c-format
msgid "unknown nodetype %d"
msgstr "tipo de nodo %d desconocido"
-#: eval.c:423 eval.c:437
+#: eval.c:406 eval.c:420
#, c-format
msgid "unknown opcode %d"
msgstr "c籀digo de operaci籀n %d desconocido"
-#: eval.c:434
+#: eval.c:417
#, 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:488
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr "desbordamiento de almacenamiento temporal en genflags2str"
-#: eval.c:698
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -1013,830 +966,793 @@ msgstr ""
"\t# Pila de Llamadas de Funciones:\n"
"\n"
-#: eval.c:725
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
msgstr "`IGNORECASE' es una extensi籀n de gawk"
-#: eval.c:754
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr "`BINMODE' es una extensi籀n de gawk"
-#: eval.c:812
+#: eval.c:793
#, 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:902
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "especificaci籀n `%sFMT' `%s' err籀nea"
-#: eval.c:980
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "se desactiva `--lint' debido a una asignaci籀n a `LINT'"
-#: eval.c:1127 eval.c:1777
-#, c-format
-msgid "can't use function name `%s' as variable or array"
-msgstr "no se puede usar el nombre de la funci籀n `%s' como variable o matriz"
-
-#: eval.c:1158 eval.c:1789 eval.c:1802
+#: eval.c:1132
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "referencia al argumento sin inicializar `%s'"
-#: eval.c:1177
+#: eval.c:1133
+#, c-format
+msgid "reference to uninitialized variable `%s'"
+msgstr "referencia a la variable sin inicializar `%s'"
+
+#: eval.c:1151
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:1179
+#: eval.c:1153
msgid "attempt to field reference from null string"
msgstr "se intent籀 una referencia de campo desde una cadena nula"
-#: eval.c:1185
+#: eval.c:1161
#, c-format
msgid "attempt to access field %ld"
msgstr "se intent籀 acceder al campo %ld"
-#: eval.c:1194
+#: eval.c:1170
#, c-format
msgid "reference to uninitialized field `$%ld'"
msgstr "referencia al campo sin inicializar `$%ld'"
-#: eval.c:1256
+#: eval.c:1257
#, 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:1437
+#: eval.c:1452
#, c-format
msgid "unwind_stack: unexpected type `%s'"
msgstr "unwind_stack: tipo `%s' inesperado"
-#: eval.c:1532
+#: eval.c:1546
msgid "division by zero attempted in `/='"
msgstr "se intent籀 una divisi籀n por cero en `/='"
-#: eval.c:1539
+#: eval.c:1553
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "se intent籀 una divisi籀n por cero en `%%='"
-#: eval.c:1876 eval.c:2122
-#, c-format
-msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context"
-msgstr "se intent籀 usar la matriz `%s[\"%.*s\"]' en un contexto escalar"
-
-#: eval.c:1907
-msgid "assignment used in conditional context"
-msgstr "se us籀 una asignaci籀n en un contexto condicional"
-
-#: eval.c:1911
-msgid "statement has no effect"
-msgstr "la declaraci籀n no tiene efecto"
-
-#: eval.c:2343
-#, c-format
-msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
-msgstr ""
-"bucle for: la matriz `%s' cambi籀 de tama簽o de %ld a %ld durante la ejecuci籀n "
-"del bucle"
-
-#: eval.c:2458
-#, c-format
-msgid "function called indirectly through `%s' does not exist"
-msgstr "no existe la funci籀n llamada indirectamente a trav矇s de `%s'"
-
-#: eval.c:2470
-#, c-format
-msgid "function `%s' not defined"
-msgstr "la funci籀n `%s' no est獺 definida"
-
-#: eval.c:2511
-#, c-format
-msgid "non-redirected `getline' invalid inside `%s' rule"
-msgstr "`getline' no redirigido es inv獺lido dentro de la regla `%s'"
-
-#: eval.c:2600
-#, c-format
-msgid "error reading input file `%s': %s"
-msgstr "error al leer el fichero de entrada `%s': %s"
-
-#: eval.c:2614
-#, c-format
-msgid "`nextfile' cannot be called from a `%s' rule"
-msgstr "`nextfile' no se puede llamar desde una regla `%s'"
-
-#: eval.c:2694
-#, c-format
-msgid "`next' cannot be called from a `%s' rule"
-msgstr "`next' no se puede llamar desde una regla `%s'"
-
-#: eval.c:2760
-#, c-format
-msgid "Sorry, don't know how to interpret `%s'"
-msgstr "Perd籀n, no se c籀mo interpretar `%s'"
-
-#: ext.c:64
+#: ext.c:70
msgid "extensions are not allowed in sandbox mode"
msgstr "no se permiten las extensiones en modo sandbox"
-#: ext.c:70 ext.c:75
+#: ext.c:73
msgid "`extension' is a gawk extension"
msgstr "`extension' es una extensi籀n de gawk"
-#: ext.c:85
-#, c-format
-msgid "fatal: extension: cannot open `%s' (%s)\n"
+#: ext.c:80
+#, fuzzy, c-format
+msgid "extension: cannot open library `%s' (%s)\n"
msgstr "fatal: extension: no se puede abrir `%s' (%s)\n"
-#: ext.c:94
-#, c-format
+#: ext.c:86
+#, fuzzy, c-format
msgid ""
-"fatal: extension: library `%s': does not define "
-"`plugin_is_GPL_compatible' (%s)\n"
+"extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n"
msgstr ""
"fatal: extension: la biblioteca `%s': no define "
"`plugin_is_GPL_compatible' (%s)\n"
-#: ext.c:103
-#, c-format
-msgid "fatal: extension: library `%s': cannot call function `%s' (%s)\n"
+#: ext.c:90
+#, fuzzy, c-format
+msgid "extension: 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:137
+#: ext.c:118
msgid "extension: missing function name"
msgstr "extension: falta el nombre de la funci籀n"
-#: ext.c:142
+#: ext.c:123
#, 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:151
+#: ext.c:131
#, c-format
msgid "extension: can't redefine function `%s'"
msgstr "extension: no se puede redefinir la funci籀n `%s'"
-#: ext.c:155
+#: ext.c:135
#, c-format
msgid "extension: function `%s' already defined"
msgstr "extension: la funci籀n `%s' ya est獺 definida"
-#: ext.c:160
+#: ext.c:139
#, c-format
msgid "extension: function name `%s' previously defined"
msgstr "extension: el nombre de funci籀n `%s' se defini籀 previamente"
-#: ext.c:162
+#: ext.c:141
#, 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:166
+#: ext.c:144
#, 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:269
+#: ext.c:206
#, 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:272
+#: ext.c:209
#, c-format
msgid "function `%s': missing argument #%d"
msgstr "funci籀n `%s': falta el argumento #%d"
-#: ext.c:289
+#: ext.c:226
#, 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:293
+#: ext.c:230
#, 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:306
+#: ext.c:244
msgid "Operation Not Supported"
msgstr "No Se Admite La Operaci籀n"
-#: field.c:328
+#: ext.c:256
+msgid "dynamic loading of library not supported"
+msgstr ""
+
+#: field.c:339
msgid "NF set to negative value"
msgstr "se defini籀 NF con un valor negativo"
-#: field.c:951 field.c:958 field.c:962
+#: field.c:962 field.c:969 field.c:973
msgid "split: fourth argument is a gawk extension"
msgstr "split: el cuarto argumento es una extensi籀n de gawk"
-#: field.c:955
+#: field.c:966
msgid "split: fourth argument is not an array"
msgstr "split: el cuarto argumento no es una matriz"
-#: field.c:969
+#: field.c:980
msgid "split: second argument is not an array"
msgstr "split: el segundo argumento no es una matriz"
-#: field.c:973
+#: field.c:984
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:978
+#: field.c:989
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:981
+#: field.c:992
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:1010
+#: field.c:1021
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:1050
+#: field.c:1061
msgid "patsplit: fourth argument is not an array"
msgstr "patsplit: el cuarto argumento no es una matriz"
-#: field.c:1055
+#: field.c:1066
msgid "patsplit: second argument is not an array"
msgstr "patsplit: el segundo argumento no es una matriz"
-#: field.c:1061
+#: field.c:1072
msgid "patsplit: third argument must be non-null"
msgstr "patsplit: el tercer argumento no debe ser nulo"
-#: field.c:1065
+#: field.c:1076
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:1070
+#: field.c:1081
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:1073
+#: field.c:1084
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:1110
+#: field.c:1122
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "`FIELDWIDTHS' es una extensi籀n gawk"
-#: field.c:1173
+#: field.c:1186
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr "valor de FIELDWIDTHS inv獺lido, cerca de `%s'"
-#: field.c:1246
+#: field.c:1259
msgid "null string for `FS' is a gawk extension"
msgstr "la cadena nula para `FS' es una extensi籀n de gawk"
-#: field.c:1250
+#: field.c:1263
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:1369
+#: field.c:1382
msgid "`FPAT' is a gawk extension"
msgstr "`FPAT' es una extensi籀n de gawk"
-#: getopt.c:574 getopt.c:590
-#, c-format
-msgid "%s: option '%s' is ambiguous\n"
+#: getopt.c:604 getopt.c:633
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
msgstr "%s: la opci籀n '%s' es ambigua\n"
-#: getopt.c:623 getopt.c:627
+#: getopt.c:679 getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: la opci籀n '--%s' no admite ning繳n argumento\n"
-#: getopt.c:636 getopt.c:641
+#: getopt.c:692 getopt.c:697
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: la opci籀n '%c%s' no admite ning繳n argumento\n"
-#: getopt.c:684 getopt.c:703
+#: getopt.c:740 getopt.c:759
#, c-format
msgid "%s: option '--%s' requires an argument\n"
msgstr "%s: la opci籀n '--%s' requiere un argumento\n"
-#: getopt.c:741 getopt.c:744
+#: getopt.c:797 getopt.c:800
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: no se reconoce la opci籀n '--%s'\n"
-#: getopt.c:752 getopt.c:755
+#: getopt.c:808 getopt.c:811
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: no se reconoce la opci籀n '%c%s'\n"
-#: getopt.c:804 getopt.c:807
+#: getopt.c:860 getopt.c:863
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: opci籀n inv獺lida -- '%c'\n"
-#: getopt.c:857 getopt.c:874 getopt.c:1082 getopt.c:1100
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s: la opci籀n requiere un argumento -- '%c'\n"
-#: getopt.c:930 getopt.c:946
+#: getopt.c:989 getopt.c:1005
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: la opci籀n '-W %s' es ambigua\n"
-#: getopt.c:970 getopt.c:988
+#: getopt.c:1029 getopt.c:1047
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: la opci籀n '-W %s' no admite ning繳n argumento\n"
-#: getopt.c:1009 getopt.c:1027
+#: getopt.c:1068 getopt.c:1086
#, c-format
msgid "%s: option '-W %s' requires an argument\n"
msgstr "%s: la opci籀n '-W %s' requiere un argumento\n"
-#: io.c:280
+#: io.c:326
#, 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:283 io.c:385
+#: io.c:329 io.c:438
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "no se puede abrir el fichero `%s' para lectura (%s)"
-#: io.c:501
+#: io.c:568
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "fall籀 al cerrar el df %d (`%s') (%s)"
-#: io.c:578
+#: io.c:645
msgid "redirection not allowed in sandbox mode"
msgstr "no se permite la redirecci籀n en modo sandbox"
-#: io.c:612
+#: io.c:679
#, 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:618
+#: io.c:685
#, 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:624
+#: io.c:690
#, 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:667
+#: io.c:733
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "mezcla innecesaria de `>' y `>>' para el fichero `%.*s'"
-#: io.c:720
+#: io.c:786
#, 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:730
+#: io.c:796
#, 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:753
+#: io.c:819
#, 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:835
+#: io.c:900
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "no se puede redirigir desde `%s' (%s)"
-#: io.c:838
+#: io.c:903
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "no se puede redirigir a `%s' (%s)"
-#: io.c:889
+#: io.c:954
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:905
+#: io.c:970
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "fall籀 al cerrar `%s' (%s)."
-#: io.c:913
+#: io.c:978
msgid "too many pipes or input files open"
msgstr "demasiadas tuber穩as o ficheros de entrada abiertos"
-#: io.c:935
+#: io.c:1000
msgid "close: second argument must be `to' or `from'"
msgstr "close: el segundo argumento debe ser `to' o `from'"
-#: io.c:952
+#: io.c:1017
#, 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:957
+#: io.c:1022
msgid "close of redirection that was never opened"
msgstr "se cerr籀 una redirecci籀n que nunca se abri籀"
-#: io.c:1054
+#: io.c:1120
#, 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:1070
+#: io.c:1137
#, 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:1073
+#: io.c:1140
#, 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:1093
+#: io.c:1160
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "no se provee el cerrado expl穩cito del `socket' `%s'"
-#: io.c:1096
+#: io.c:1163
#, 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:1099
+#: io.c:1166
#, 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:1102
+#: io.c:1169
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "no se provee el cerrado expl穩cito del fichero `%s'"
-#: io.c:1130 io.c:1185 main.c:793 main.c:830
+#: io.c:1197 io.c:1252 main.c:825 main.c:862
#, c-format
msgid "error writing standard output (%s)"
msgstr "error al escribir en la salida est獺ndar (%s)"
-#: io.c:1134 io.c:1190
+#: io.c:1201 io.c:1257
#, c-format
msgid "error writing standard error (%s)"
msgstr "error al escribir en la salida est獺ndar de error (%s)"
-#: io.c:1142
+#: io.c:1209
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "fall籀 la limpieza de la tuber穩a de `%s' (%s)."
-#: io.c:1145
+#: io.c:1212
#, 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:1148
+#: io.c:1215
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "fall籀 la limpieza del fichero de `%s' (%s)."
-#: io.c:1263
+#: io.c:1329
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr "puerto local %s inv獺lido en `/inet'"
-#: io.c:1280
+#: io.c:1347
#, 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:1432
+#: io.c:1499
#, 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:1446
+#: io.c:1513
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "el nombre de fichero especial `%s' est獺 incompleto"
-#: io.c:1463
+#: io.c:1530
msgid "must supply a remote hostname to `/inet'"
msgstr "se debe proporcionar a `/inet' un nombre de anfitri籀n remoto"
-#: io.c:1481
+#: io.c:1548
msgid "must supply a remote port to `/inet'"
msgstr "se debe proporcionar a `/inet' un puerto remoto"
-#: io.c:1527
+#: io.c:1594
msgid "TCP/IP communications are not supported"
msgstr "no se admiten las comunicaciones TCP/IP"
-#: io.c:1694
+#: io.c:1764
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "no se puede abrir `%s', modo `%s'"
-#: io.c:1748
+#: io.c:1814
#, c-format
msgid "close of master pty failed (%s)"
msgstr "fall籀 al cerrar el pty maestro (%s)"
-#: io.c:1750 io.c:1918 io.c:2075
+#: io.c:1816 io.c:1984 io.c:2145
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "fall籀 al cerrar la salida est獺ndar en el hijo (%s)"
-#: io.c:1753
+#: io.c:1819
#, 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:1755 io.c:1923
+#: io.c:1821 io.c:1989
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "fall籀 al cerrar la entrada est獺ndar en el hijo (%s)"
-#: io.c:1758
+#: io.c:1824
#, 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:1760 io.c:1781
+#: io.c:1826 io.c:1847
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "fall籀 al cerrar el pty esclavo (%s)"
-#: io.c:1859 io.c:1921 io.c:2053 io.c:2078
+#: io.c:1925 io.c:1987 io.c:2122 io.c:2148
#, 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:1866 io.c:1926
+#: io.c:1932 io.c:1992
#, 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:1886 io.c:2068
+#: io.c:1952 io.c:2138
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:1894
+#: io.c:1960
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:1929 io.c:2080 io.c:2094
+#: io.c:1995 io.c:2150 io.c:2164
#, c-format
msgid "close of pipe failed (%s)"
msgstr "fall籀 al cerrar la tuber穩a (%s)"
-#: io.c:1974
+#: io.c:2040
msgid "`|&' not supported"
msgstr "no se admite `|&'"
-#: io.c:2040
+#: io.c:2107
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "no se puede abrir la tuber穩a `%s' (%s)"
-#: io.c:2088
+#: io.c:2158
#, 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:2521
+#: io.c:2637
#, c-format
msgid "data file `%s' is empty"
msgstr "el fichero de datos `%s' est獺 vac穩o"
-#: io.c:2562 io.c:2570
+#: io.c:2678 io.c:2686
msgid "could not allocate more input memory"
msgstr "no se puede reservar m獺s memoria de entrada"
-#: io.c:3128
+#: io.c:3236
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "el valor multicaracter de `RS' es una extensi籀n de gawk"
-#: io.c:3233
+#: io.c:3326
msgid "IPv6 communication is not supported"
msgstr "no se admite la comunicaci籀n IPv6"
-#: main.c:364
+#: main.c:355
msgid "`-m[fr]' option irrelevant in gawk"
msgstr "la opci籀n -m[fr] es irrelevante en gawk"
-#: main.c:366
+#: main.c:357
msgid "-m option usage: `-m[fr] nnn'"
msgstr "uso de la opci籀n -m: `-m[fr]' nnn"
-#: main.c:389
+#: main.c:386
msgid "empty argument to `-e/--source' ignored"
msgstr "se descarta el argumento vac穩o para `-e/--source'"
-#: main.c:460
+#: main.c:472
#, 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:513
+#: main.c:518
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: la opci籀n requiere un argumento -- %c\n"
-#: main.c:534
+#: main.c:539
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
"la variable de ambiente `POSIXLY_CORRECT' est獺 definida: se activa `--posix'"
-#: main.c:540
+#: main.c:545
msgid "`--posix' overrides `--traditional'"
msgstr "`--posix' se impone a `--traditional'"
-#: main.c:551
+#: main.c:556
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr "`--posix'/`--traditional' se imponen a `--non-decimal-data'"
-#: main.c:555
+#: main.c:560
#, 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:560
+#: main.c:565
msgid "`--posix' overrides `--binary'"
msgstr "`--posix' se impone a `--binary'"
-#: main.c:611
+#: main.c:623
#, 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:614
+#: main.c:626
#, 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:616
+#: main.c:628
#, 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:655
+#: main.c:679
msgid "no program text at all!"
msgstr "癒No hay ning繳n programa de texto!"
-#: main.c:733
+#: main.c:763
#, 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:735
+#: main.c:765
#, 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:740
+#: main.c:770
msgid "POSIX options:\t\tGNU long options: (standard)\n"
msgstr "Opciones POSIX:\t\tOpciones largas GNU: (est獺ndar)\n"
-#: main.c:741
+#: main.c:771
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f fichprog\t\t--file=fichprog\n"
-#: main.c:742
+#: main.c:772
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F sc\t\t\t--field-separator=sc\n"
-#: main.c:743
+#: main.c:773
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v var=valor\t\t--assign=var=valor\n"
-#: main.c:744
+#: main.c:774
msgid "Short options:\t\tGNU long options: (extensions)\n"
msgstr "Opciones cortas:\t\tOpciones largas GNU: (extensiones)\n"
-#: main.c:745
+#: main.c:775
msgid "\t-b\t\t\t--characters-as-bytes\n"
msgstr "\t-b\t\t\t--characters-as-bytes\n"
-#: main.c:746
+#: main.c:776
msgid "\t-c\t\t\t--traditional\n"
msgstr "\t-c\t\t\t--traditional\n"
-#: main.c:747
+#: main.c:777
msgid "\t-C\t\t\t--copyright\n"
msgstr "\t-C\t\t\t--copyright\n"
-#: main.c:748
+#: main.c:778
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
msgstr "\t-d[fichero]\t\t--dump-variables[=fichero]\n"
+#: main.c:779
+#, 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:749
+#: main.c:780
msgid "\t-e 'program-text'\t--source='program-text'\n"
msgstr "\t-e 'texto-prog'\t--source='texto-prog'\n"
-#: main.c:750
+#: main.c:781
msgid "\t-E file\t\t\t--exec=file\n"
msgstr "\t-E fichero\t\t--exec=fichero\n"
-#: main.c:751
+#: main.c:782
msgid "\t-g\t\t\t--gen-pot\n"
msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:752
+#: main.c:783
msgid "\t-h\t\t\t--help\n"
msgstr "\t-h\t\t\t--help\n"
-#: main.c:753
+#: main.c:784
+msgid "\t-l library\t\t--load=library\n"
+msgstr ""
+
+#: main.c:785
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
msgstr "\t-L [fatal]\t\t--lint[=fatal]\n"
-#: main.c:754
+#: main.c:786
msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr "\t-n\t\t\t--non-decimal-data\n"
-#: main.c:755
+#: main.c:787
+#, fuzzy
+msgid "\t-M\t\t\t--bignum\n"
+msgstr "\t-g\t\t\t--gen-pot\n"
+
+#: main.c:788
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr "\t-N\t\t\t--use-lc-numeric\n"
-#: main.c:756
+#: main.c:789
+#, fuzzy
+msgid "\t-o[file]\t\t--pretty-print[=file]\n"
+msgstr "\t-p[fichero]\t\t--profile[=fichero]\n"
+
+#: main.c:790
msgid "\t-O\t\t\t--optimize\n"
msgstr "\t-O\t\t\t--optimize\n"
-#: main.c:757
+#: main.c:791
msgid "\t-p[file]\t\t--profile[=file]\n"
msgstr "\t-p[fichero]\t\t--profile[=fichero]\n"
-#: main.c:758
+#: main.c:792
msgid "\t-P\t\t\t--posix\n"
msgstr "\t-P\t\t\t--posix\n"
-#: main.c:759
+#: main.c:793
msgid "\t-r\t\t\t--re-interval\n"
msgstr "\t-r\t\t\t--re-interval\n"
-#: main.c:761
-msgid "\t-R file\t\t\t--command=file\n"
-msgstr "\t-R fichero\t\t\t--command=fichero\n"
-
-#: main.c:762
+#: main.c:794
msgid "\t-S\t\t\t--sandbox\n"
msgstr "\t-S\t\t\t--sandbox\n"
-#: main.c:763
+#: main.c:795
msgid "\t-t\t\t\t--lint-old\n"
msgstr "\t-t\t\t\t--lint-old\n"
-#: main.c:764
+#: main.c:796
msgid "\t-V\t\t\t--version\n"
msgstr "\t-V\t\t\t--version\n"
-#: main.c:766
+#: main.c:798
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:769
+#: main.c:801
msgid "\t-Y\t\t--parsedebug\n"
msgstr "\t-Y\t\t--parsedebug\n"
@@ -1845,7 +1761,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:778
+#: main.c:810
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -1859,7 +1775,7 @@ msgstr ""
"Reporte los errores de los mensajes en espa簽ol a <es@li.org>.\n"
"\n"
-#: main.c:782
+#: main.c:814
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -1869,7 +1785,7 @@ msgstr ""
"Por defecto lee la entrada est獺ndar y escribe en la salida est獺ndar.\n"
"\n"
-#: main.c:786
+#: main.c:818
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -1879,7 +1795,7 @@ msgstr ""
"\tgawk '{ sum += $1 }; END { print sum }' fichero\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:806
+#: main.c:838
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1899,7 +1815,7 @@ msgstr ""
"(a su elecci籀n) cualquier versi籀n posterior.\n"
"\n"
-#: main.c:814
+#: main.c:846
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"
@@ -1913,7 +1829,7 @@ msgstr ""
"Licencia P繳blica General de GNU para m獺s detalles.\n"
"\n"
-#: main.c:820
+#: main.c:852
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"
@@ -1922,16 +1838,16 @@ msgstr ""
"junto con este programa. Si no es as穩, consulte\n"
"http://www.gnu.org/licenses/.\n"
-#: main.c:855
+#: main.c:887
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:1089
+#: main.c:1133
#, c-format
msgid "unknown value for field spec: %d\n"
msgstr "valor desconocido para la especificaci籀n de campo: %d\n"
-#: main.c:1170
+#: main.c:1214
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
@@ -1940,85 +1856,80 @@ msgstr ""
"%s: el argumento `%s' para `-v' no es de la forma `var=valor'\n"
"\n"
-#: main.c:1196
+#: main.c:1240
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "`%s' no es un nombre de variable legal"
-#: main.c:1199
+#: main.c:1243
#, 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:1203
+#: main.c:1247
#, 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:1208
+#: main.c:1252
#, 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:1261
+#: main.c:1305
msgid "floating point exception"
msgstr "excepci籀n de coma flotante"
-#: main.c:1268
+#: main.c:1312
msgid "fatal error: internal error"
msgstr "error fatal: error interno"
-#: main.c:1283
+#: main.c:1327
msgid "fatal error: internal error: segfault"
msgstr "error fatal: error interno: falla de segmentaci籀n"
-#: main.c:1295
+#: main.c:1339
msgid "fatal error: internal error: stack overflow"
msgstr "error fatal: error interno: desbordamiento de pila"
-#: main.c:1345
+#: main.c:1393
#, c-format
msgid "no pre-opened fd %d"
msgstr "no existe el df %d abierto previamente"
-#: main.c:1352
+#: main.c:1400
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "no se puede abrir previamente /dev/null para el df %d"
-#: main.c:1375 main.c:1384
-#, c-format
-msgid "could not find groups: %s"
-msgstr "no se pueden encontrar los grupos: %s"
-
-#: msg.c:63
+#: msg.c:61
#, c-format
msgid "cmd. line:"
msgstr "l穩nea ord.:"
-#: msg.c:107
+#: msg.c:121
msgid "error: "
msgstr "error: "
-#: node.c:406
+#: node.c:436
msgid "backslash at end of string"
msgstr "barra invertida al final de la cadena"
-#: node.c:517
+#: node.c:520
#, 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:568
+#: node.c:571
msgid "POSIX does not allow `\\x' escapes"
msgstr "POSIX no permite escapes `\\x'"
-#: node.c:574
+#: node.c:577
msgid "no hex digits in `\\x' escape sequence"
msgstr "no hay d穩gitos hexadecimales en la secuencia de escape `\\x'"
-#: node.c:596
+#: node.c:599
#, c-format
msgid ""
"hex escape \\x%.*s of %d characters probably not interpreted the way you "
@@ -2027,12 +1938,12 @@ msgstr ""
"el escape hexadecimal \\x%.*s de %d caracteres tal vez no se interprete de "
"la forma esperada"
-#: node.c:611
+#: node.c:614
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr "la secuencia de escape `\\%c' se trata como una simple `%c'"
-#: node.c:750
+#: node.c:759
msgid ""
"Invalid multibyte data detected. There may be a mismatch between your data "
"and your locale."
@@ -2051,16 +1962,16 @@ msgstr ""
msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
msgstr "%s %s `%s': no se puede establecer close-on-exec: (fcntl F_SETFD: %s)"
-#: profile.c:83
+#: profile.c:69
#, c-format
msgid "could not open `%s' for writing: %s"
msgstr "no se puede abrir `%s' para escritura: %s"
-#: profile.c:85
+#: profile.c:71
msgid "sending profile to standard error"
msgstr "se env穩a el perfil a la salida est獺ndar de error"
-#: profile.c:203
+#: profile.c:187
#, c-format
msgid ""
"\t# %s block(s)\n"
@@ -2069,7 +1980,7 @@ msgstr ""
"\t# bloque(s) %s\n"
"\n"
-#: profile.c:208
+#: profile.c:192
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -2078,17 +1989,22 @@ msgstr ""
"\t# Regla(s)\n"
"\n"
-#: profile.c:279
+#: profile.c:266
#, c-format
msgid "internal error: %s with null vname"
msgstr "error interno: %s con vname nulo"
-#: profile.c:952
+#: profile.c:528
+#, fuzzy
+msgid "internal error: builtin with null fname"
+msgstr "error interno: %s con vname nulo"
+
+#: profile.c:943
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# perfil de gawk, creado %s\n"
-#: profile.c:1331
+#: profile.c:1328
#, c-format
msgid ""
"\n"
@@ -2097,94 +2013,170 @@ msgstr ""
"\n"
"\t# Funciones, enumeradas alfab矇ticamente\n"
-#: profile.c:1370
+#: profile.c:1366
#, c-format
msgid "redir2str: unknown redirection type %d"
msgstr "redir2str: tipo de redirecci籀n %d desconocida"
-#: re.c:572
-#, fuzzy, c-format
+#: re.c:571
+#, c-format
msgid "range of the form `[%c-%c]' is locale dependent"
-msgstr "el rango de la forma [%c-%c] depende del local"
+msgstr "el rango de la forma `[%c-%c]' depende del local"
-#: re.c:599
+#: re.c:598
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
msgstr ""
"el componente de expresi籀n regular `%.*s' probablemente debe ser `[%.*s]'"
-#: regcomp.c:132
+#: regcomp.c:131
msgid "Success"
msgstr "xito"
-#: regcomp.c:135
+#: regcomp.c:134
msgid "No match"
msgstr "No hay coincidencia"
-#: regcomp.c:138
+#: regcomp.c:137
msgid "Invalid regular expression"
msgstr "Expresi籀n regular inv獺lida"
-#: regcomp.c:141
+#: regcomp.c:140
msgid "Invalid collation character"
msgstr "Caracter de ordenaci籀n inv獺lido"
-#: regcomp.c:144
+#: regcomp.c:143
msgid "Invalid character class name"
msgstr "Nombre de clase de caracter inv獺lido"
-#: regcomp.c:147
+#: regcomp.c:146
msgid "Trailing backslash"
msgstr "Barra invertida extra al final"
-#: regcomp.c:150
+#: regcomp.c:149
msgid "Invalid back reference"
msgstr "Referencia hacia atr獺s inv獺lida"
-#: regcomp.c:153
+#: regcomp.c:152
msgid "Unmatched [ or [^"
msgstr "[ o [^ desemparejados"
-#: regcomp.c:156
+#: regcomp.c:155
msgid "Unmatched ( or \\("
msgstr "( o \\( desemparejados"
-#: regcomp.c:159
+#: regcomp.c:158
msgid "Unmatched \\{"
msgstr "\\{ desemparejado"
-#: regcomp.c:162
+#: regcomp.c:161
msgid "Invalid content of \\{\\}"
msgstr "Contenido inv獺lido de \\{\\}"
-#: regcomp.c:165
+#: regcomp.c:164
msgid "Invalid range end"
msgstr "Final de rango inv獺lido"
-#: regcomp.c:168
+#: regcomp.c:167
msgid "Memory exhausted"
msgstr "Memoria agotada"
-#: regcomp.c:171
+#: regcomp.c:170
msgid "Invalid preceding regular expression"
msgstr "Expresi籀n regular precedente inv獺lida"
-#: regcomp.c:174
+#: regcomp.c:173
msgid "Premature end of regular expression"
msgstr "Fin prematuro de la expresi籀n regular"
-#: regcomp.c:177
+#: regcomp.c:176
msgid "Regular expression too big"
msgstr "La expresi籀n regular es demasiado grande"
-#: regcomp.c:180
+#: regcomp.c:179
msgid "Unmatched ) or \\)"
msgstr ") o \\) desemparejados"
-#: regcomp.c:701
+#: regcomp.c:700
msgid "No previous regular expression"
msgstr "No hay una expresi籀n regular previa"
+#~ 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\"]'"
+
+#~ msgid "subscript of array `%s' is null string"
+#~ msgstr "el sub穩ndice de la matriz `%s' es la cadena nula"
+
+#~ msgid "%s: empty (null)\n"
+#~ msgstr "%s: vac穩o (nulo)\n"
+
+#~ msgid "%s: empty (zero)\n"
+#~ msgstr "%s: vac穩o (cero)\n"
+
+#~ msgid "%s: table_size = %d, array_size = %d\n"
+#~ msgstr "%s: tama簽o_tabla = %d, tama簽o_matriz = %d\n"
+
+#~ msgid "%s: is parameter\n"
+#~ msgstr "%s: es un par獺metro\n"
+
+#~ msgid "%s: array_ref to %s\n"
+#~ msgstr "%s: array_ref a %s\n"
+
+#~ msgid "use of non-array as array"
+#~ msgstr "uso de una matriz que no es matriz"
+
+#~ msgid "can't use function name `%s' as variable or array"
+#~ msgstr ""
+#~ "no se puede usar el nombre de la funci籀n `%s' como variable o matriz"
+
+#~ msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context"
+#~ msgstr "se intent籀 usar la matriz `%s[\"%.*s\"]' en un contexto escalar"
+
+#~ msgid "assignment used in conditional context"
+#~ msgstr "se us籀 una asignaci籀n en un contexto condicional"
+
+#~ msgid "statement has no effect"
+#~ msgstr "la declaraci籀n no tiene efecto"
+
+#~ msgid ""
+#~ "for loop: array `%s' changed size from %ld to %ld during loop execution"
+#~ msgstr ""
+#~ "bucle for: la matriz `%s' cambi籀 de tama簽o de %ld a %ld durante la "
+#~ "ejecuci籀n del bucle"
+
+#~ msgid "function called indirectly through `%s' does not exist"
+#~ msgstr "no existe la funci籀n llamada indirectamente a trav矇s de `%s'"
+
+#~ 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"
+
+#~ msgid "`nextfile' cannot be called from a `%s' rule"
+#~ msgstr "`nextfile' no se puede llamar desde una regla `%s'"
+
+#~ msgid "`exit' cannot be called in the current context"
+#~ msgstr "`exit' no se puede llamar en el contexto actual"
+
+#~ msgid "`next' cannot be called from a `%s' rule"
+#~ msgstr "`next' no se puede llamar desde una regla `%s'"
+
+#~ msgid "Sorry, don't know how to interpret `%s'"
+#~ msgstr "Perd籀n, no se c籀mo interpretar `%s'"
+
+#~ msgid "\t-R file\t\t\t--command=file\n"
+#~ msgstr "\t-R fichero\t\t\t--command=fichero\n"
+
+#~ msgid "could not find groups: %s"
+#~ msgstr "no se pueden encontrar los grupos: %s"
+
#~ msgid "assignment is not allowed to result of builtin function"
#~ msgstr "no se permite la asignaci籀n como resultado de una funci籀n interna"
diff --git a/po/fi.gmo b/po/fi.gmo
index abe20e1a..49a9c274 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index c698f564..67dbc058 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -1,14 +1,14 @@
# Finnish messages for gawk.
-# Copyright 穢 2010, 2011 Free Software Foundation, Inc.
+# Copyright 穢 2010, 2011, 2012 Free Software Foundation, Inc.
# This file is distributed under the same license as the gawk package.
-# Jorma Karvonen <karvonen.jorma@gmail.com>, 2010-2011.
+# Jorma Karvonen <karvonen.jorma@gmail.com>, 2010-2012.
#
msgid ""
msgstr ""
-"Project-Id-Version: gawk 4.0.0\n"
+"Project-Id-Version: gawk 4.0.0h\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2011-11-14 21:46+0200\n"
-"PO-Revision-Date: 2011-09-12 12:14+0200\n"
+"POT-Creation-Date: 2012-04-27 10:06+0300\n"
+"PO-Revision-Date: 2012-03-13 18:00+0200\n"
"Last-Translator: Jorma Karvonen <karvonen.jorma@gmail.com>\n"
"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
"Language: fi\n"
@@ -17,508 +17,465 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: array.c:140
+#: array.c:266
#, c-format
msgid "from %s"
msgstr "taulukosta %s"
-#: array.c:248
+#: array.c:366
msgid "attempt to use a scalar value as array"
msgstr "yritettiin k瓣ytt瓣瓣 skalaariarvoa taulukkona"
-#: array.c:251
-#, c-format
-msgid "attempt to use function `%s' as an array"
-msgstr "yritettiin k瓣ytt瓣瓣 funktiota %s taulukkona"
-
-#: array.c:254
+#: array.c:368
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
msgstr "yritettiin k瓣ytt瓣瓣 skalaariparametria %s taulukkona"
-#: array.c:257
+#: array.c:371
#, c-format
msgid "attempt to use scalar `%s' as an array"
msgstr "yritettiin k瓣ytt瓣瓣 skalaaria %s taulukkona"
-#: array.c:302 array.c:707 builtin.c:84 builtin.c:1384 builtin.c:1426
-#: builtin.c:1439 builtin.c:1858 builtin.c:1870 eval.c:1135 eval.c:1139
-#: eval.c:1495 eval.c:1812
+#: array.c:418 array.c:584 builtin.c:85 builtin.c:1560 builtin.c:1602
+#: builtin.c:1615 builtin.c:2041 builtin.c:2053 eval.c:1109 eval.c:1113
+#: eval.c:1508
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "yritettiin k瓣ytt瓣瓣 taulukkoa %s skalaarikontekstissa"
-#: array.c:513
-#, c-format
-msgid "reference to uninitialized element `%s[\"%.*s\"]'"
-msgstr "viite alustamattomaan elementtiin %s[\"%.*s\"]"
-
-#: array.c:519
-#, c-format
-msgid "subscript of array `%s' is null string"
-msgstr "taulukon alaindeksi %s on null-merkkijono"
-
-#: array.c:723
+#: array.c:591
#, c-format
msgid "delete: index `%s' not in array `%s'"
msgstr "delete: indeksi %s ei ole taulukossa %s"
-#: array.c:734 eval.c:1865
+#: array.c:605
#, c-format
msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
msgstr "yritettiin k瓣ytt瓣瓣 skalaaria %s[\"%.*s\"] taulukkona"
-#: array.c:910
-#, c-format
-msgid "%s: empty (null)\n"
-msgstr "%s: tyhj瓣 (null)\n"
-
-#: array.c:915
-#, c-format
-msgid "%s: empty (zero)\n"
-msgstr "%s: tyhj瓣 (nolla)\n"
-
-#: array.c:919
-#, c-format
-msgid "%s: table_size = %d, array_size = %d\n"
-msgstr "%s: table_size = %d, array_size = %d\n"
-
-#: array.c:954
-#, c-format
-msgid "%s: is parameter\n"
-msgstr "%s: on parametri\n"
-
-#: array.c:958
-#, c-format
-msgid "%s: array_ref to %s\n"
-msgstr "%s: array_ref-viite taulukkoon %s\n"
-
-#: array.c:963
-msgid "adump: argument not an array"
+#: array.c:784
+#, fuzzy
+msgid "adump: first argument not an array"
msgstr "adump: argumentti ei ole taulukko"
-#: array.c:1086
+#: array.c:823
msgid "asort: second argument not an array"
msgstr "asort: toinen argumentti ei ole taulukko"
-#: array.c:1087
+#: array.c:824
msgid "asorti: second argument not an array"
msgstr "asorti: toinen argumentti ei ole taulukko"
-#: array.c:1094
+#: array.c:831
msgid "asort: first argument not an array"
msgstr "asort: ensimm瓣inen argumentti ei ole taulukko"
-#: array.c:1095
+#: array.c:832
msgid "asorti: first argument not an array"
msgstr "asorti: ensimm瓣inen argumentti ei ole taulukko"
-#: array.c:1102
+#: array.c:839
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr ""
"asort: ei voida k瓣ytt瓣瓣 ensimm瓣isen argumentin alitaulukkoa toiselle "
"argumentille"
-#: array.c:1103
+#: array.c:840
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr ""
"asorti: ei voida k瓣ytt瓣瓣 ensimm瓣isen argumentin alitaulukkoa toiselle "
"argumentille"
-#: array.c:1108
+#: array.c:845
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr ""
"asort: ei voida k瓣ytt瓣瓣 toisen argumentin alitaulukkoa ensimm瓣iselle "
"argumentille"
-#: array.c:1109
+#: array.c:846
msgid "asorti: cannot use a subarray of second arg for first arg"
msgstr ""
"asorti: ei voida k瓣ytt瓣瓣 toisen argumentin alitaulukkoa ensimm瓣iselle "
"argumentille"
-#: array.c:1659
+#: array.c:1314
#, c-format
msgid "`%s' is invalid as a function name"
msgstr "%s on virheellinen funktionimen瓣"
-#: array.c:1663
+#: array.c:1318
#, c-format
msgid "sort comparison function `%s' is not defined"
msgstr "lajitteluvertailufunktiota %s ei ole m瓣瓣ritelty"
-#: awkgram.y:249
+#: awkgram.y:223
#, c-format
msgid "%s blocks must have an action part"
msgstr "%s lohkoilla on oltava toiminto-osa"
-#: awkgram.y:252
+#: awkgram.y:226
msgid "each rule must have a pattern or an action part"
msgstr "jokaisella s瓣瓣nn繹ll瓣 on oltava malli tai toiminto-osa"
-#: awkgram.y:323 awkgram.y:334
+#: awkgram.y:295 awkgram.y:306
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:371
+#: awkgram.y:343
#, 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:432
+#: awkgram.y:389
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:436
+#: awkgram.y:393
#, 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:528
+#: awkgram.y:485
#, c-format
msgid "duplicate case values in switch body: %s"
msgstr "kaksi samanlaista case-arvoa switch-rakenteen rungossa: %s"
-#: awkgram.y:549
+#: awkgram.y:506
msgid "duplicate `default' detected in switch body"
msgstr "kaksoiskappale default havaittu switch-rungossa"
-#: awkgram.y:809
+#: awkgram.y:766
msgid "`break' is not allowed outside a loop or switch"
msgstr "break ei ole sallittu silmukan tai switch-lauseen ulkopuolella"
-#: awkgram.y:818
+#: awkgram.y:775
msgid "`continue' is not allowed outside a loop"
msgstr "continue ei ole sallittu silmukan ulkopuolella"
-#: awkgram.y:828
+#: awkgram.y:785
#, c-format
msgid "`next' used in %s action"
msgstr "next k瓣ytetty %s-toiminnossa"
-#: awkgram.y:836
+#: awkgram.y:793
msgid "`nextfile' is a gawk extension"
msgstr "nextfile on gawk-laajennus"
-#: awkgram.y:841
+#: awkgram.y:798
#, c-format
msgid "`nextfile' used in %s action"
msgstr "nextfile k瓣ytetty %s-toiminnossa"
-#: awkgram.y:865
+#: awkgram.y:822
msgid "`return' used outside function context"
msgstr "return k瓣ytetty funktiokontekstin ulkopuolella"
-#: awkgram.y:925
+#: awkgram.y:896
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:995 awkgram.y:999 awkgram.y:1023
+#: awkgram.y:966 awkgram.y:970 awkgram.y:994
msgid "`delete array' is a gawk extension"
msgstr "delete array on gawk-laajennus"
-#: awkgram.y:1019
+#: awkgram.y:990
msgid "`delete(array)' is a non-portable tawk extension"
msgstr "delete(array) ei ole siirrett瓣v瓣 tawk-laajennus"
-#: awkgram.y:1135
+#: awkgram.y:1108
msgid "multistage two-way pipelines don't work"
msgstr "monivaiheiset kaksisuuntaiset putket eiv瓣t toimi"
-#: awkgram.y:1238
+#: awkgram.y:1211
msgid "regular expression on right of assignment"
msgstr "s瓣瓣nn繹llinen lauseke sijoituksen oikealla puolella"
-#: awkgram.y:1249
+#: awkgram.y:1222
msgid "regular expression on left of `~' or `!~' operator"
msgstr "s瓣瓣nn繹llinen lauseke ~- tai !~-operaattorin vasemmalla puolella"
-#: awkgram.y:1265 awkgram.y:1419
+#: awkgram.y:1238 awkgram.y:1389
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:1275
+#: awkgram.y:1248
msgid "regular expression on right of comparison"
msgstr "s瓣瓣nn繹llinen lauseke vertailun oikealla puolella"
-#: awkgram.y:1394
+#: awkgram.y:1364
#, c-format
msgid "`getline var' invalid inside `%s' rule"
msgstr "getline var virheellinen s瓣瓣nn繹n %s sis瓣ll瓣"
-#: awkgram.y:1397 eval.c:2504
+#: awkgram.y:1367
#, c-format
msgid "`getline' invalid inside `%s' rule"
msgstr "getline virheellinen s瓣瓣nn繹n %s sis瓣ll瓣"
-#: awkgram.y:1402
+#: awkgram.y:1372
msgid "non-redirected `getline' undefined inside END action"
msgstr "edelleenohjaamaton getline m瓣瓣rittelem瓣t繹n END-toiminnon sis瓣ll瓣"
-#: awkgram.y:1421
+#: awkgram.y:1391
msgid "old awk does not support multidimensional arrays"
msgstr "vanha awk ei tue moniulotteisia taulukkoja"
-#: awkgram.y:1517
+#: awkgram.y:1488
msgid "call of `length' without parentheses is not portable"
msgstr "length-kutsu ilman sulkumerkkej瓣 ei ole siirrett瓣v瓣"
-#: awkgram.y:1580
+#: awkgram.y:1554
msgid "indirect function calls are a gawk extension"
msgstr "ep瓣suorat funktiokutsut ovat gawk-laajennus"
-#: awkgram.y:1593
+#: awkgram.y:1567
#, c-format
msgid "can not use special variable `%s' for indirect function call"
msgstr "ei voi k瓣ytt瓣瓣 erikoismuuttujaa %s ep瓣suoralle funktiokutsulle"
-#: awkgram.y:1671
+#: awkgram.y:1645
msgid "invalid subscript expression"
msgstr "virheellinen indeksointilauseke"
-#: awkgram.y:1711
-msgid "use of non-array as array"
-msgstr "ei-taulukon k瓣ytt繹 taulukkona"
-
-#: awkgram.y:1975 awkgram.y:1995 msg.c:98
+#: awkgram.y:1966 awkgram.y:1986 msg.c:112
msgid "warning: "
msgstr "varoitus:"
-#: awkgram.y:1993 msg.c:130
+#: awkgram.y:1984 msg.c:144
msgid "fatal: "
msgstr "tuhoisa:"
-#: awkgram.y:2043
+#: awkgram.y:2034
msgid "unexpected newline or end of string"
msgstr "odottamaton rivinvaihto tai merkkijonon loppu"
-#: awkgram.y:2300 awkgram.y:2358 awkgram.y:2542
+#: awkgram.y:2299 awkgram.y:2357 awkgram.y:2545
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "ei voi avata l瓣hdetiedostoa %s lukemista varten (%s)"
-#: awkgram.y:2301 awkgram.y:2359 builtin.c:122
+#: awkgram.y:2300 awkgram.y:2358 builtin.c:124
msgid "reason unknown"
msgstr "syy tuntematon"
-#: awkgram.y:2317
+#: awkgram.y:2316
#, c-format
msgid "already included source file `%s'"
msgstr "on jo sis瓣llytetty l瓣hdetiedostoon %s"
-#: awkgram.y:2343
+#: awkgram.y:2342
msgid "@include is a gawk extension"
msgstr "@include on gawk-laajennus"
-#: awkgram.y:2349
+#: awkgram.y:2348
msgid "empty filename after @include"
msgstr "tyhj瓣 tiedostonimi @include:n j瓣lkeen"
-#: awkgram.y:2494
+#: awkgram.y:2497
msgid "empty program text on command line"
msgstr "tyhj瓣 ohjelmateksti komentorivill瓣"
-#: awkgram.y:2609
+#: awkgram.y:2612
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "ei voi lukea l瓣hdetiedostoa %s (%s)"
-#: awkgram.y:2620
+#: awkgram.y:2623
#, c-format
msgid "source file `%s' is empty"
msgstr "l瓣hdetiedosto %s on tyhj瓣"
-#: awkgram.y:2805
+#: awkgram.y:2800
msgid "source file does not end in newline"
msgstr "l瓣hdetiedoston lopussa ei ole rivinvaihtoa"
-#: awkgram.y:2882
+#: awkgram.y:2905
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:2906
+#: awkgram.y:2929
#, 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:2910
+#: awkgram.y:2933
#, c-format
msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr "tawkin regex-m瓣瓣re /.../%c ei toimi gawkissa"
-#: awkgram.y:2917
+#: awkgram.y:2940
msgid "unterminated regexp"
msgstr "p瓣瓣tt瓣m瓣t繹n s瓣瓣nn繹llinen lauseke"
-#: awkgram.y:2921
+#: awkgram.y:2944
msgid "unterminated regexp at end of file"
msgstr "p瓣瓣tt瓣m瓣t繹n s瓣瓣nn繹llinen lauseke tiedoston lopussa"
-#: awkgram.y:2980
+#: awkgram.y:3003
msgid "use of `\\ #...' line continuation is not portable"
msgstr "\\ #...-rivijatkamisen k瓣ytt繹 ei ole siirrett瓣v瓣"
-#: awkgram.y:2996
+#: awkgram.y:3019
msgid "backslash not last character on line"
msgstr "kenoviiva ei ole rivin viimeinen merkki"
-#: awkgram.y:3057
+#: awkgram.y:3080
msgid "POSIX does not allow operator `**='"
msgstr "POSIX ei salli operaattoria **="
-#: awkgram.y:3059
+#: awkgram.y:3082
msgid "old awk does not support operator `**='"
msgstr "vanha awk ei tue operaattoria **="
-#: awkgram.y:3068
+#: awkgram.y:3091
msgid "POSIX does not allow operator `**'"
msgstr "POSIX ei salli operaattoria **"
-#: awkgram.y:3070
+#: awkgram.y:3093
msgid "old awk does not support operator `**'"
msgstr "vanha awk ei tue operaattoria **"
-#: awkgram.y:3105
+#: awkgram.y:3128
msgid "operator `^=' is not supported in old awk"
msgstr "operaattoria ^= ei tueta vanhassa awk:ssa"
-#: awkgram.y:3113
+#: awkgram.y:3136
msgid "operator `^' is not supported in old awk"
msgstr "operaattoria ^ ei tueta vanhassa awk:ssa"
-#: awkgram.y:3206 awkgram.y:3222
+#: awkgram.y:3229 awkgram.y:3245
msgid "unterminated string"
msgstr "p瓣瓣tt瓣m瓣t繹n merkkijono"
-#: awkgram.y:3418
+#: awkgram.y:3466
#, c-format
msgid "invalid char '%c' in expression"
msgstr "virheellinen merkki %c lausekkeessa"
-#: awkgram.y:3465
+#: awkgram.y:3513
#, c-format
msgid "`%s' is a gawk extension"
msgstr "%s on gawk-laajennus"
-#: awkgram.y:3470
+#: awkgram.y:3518
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr "%s on Bell Labs -laajennus"
-#: awkgram.y:3475
+#: awkgram.y:3523
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX ei salli operaattori %s"
-#: awkgram.y:3483
+#: awkgram.y:3531
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "%s ei ole tuettu vanhassa awk-ohjelmassa"
-#: awkgram.y:3550
+#: awkgram.y:3598
msgid "`goto' considered harmful!\n"
msgstr "goto-k瓣sky瓣 pidet瓣瓣n haitallisena!\n"
-#: awkgram.y:3601
+#: awkgram.y:3632
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d on virheellinen argumenttilukum瓣瓣r瓣 operaattorille %s"
-#: awkgram.y:3636
+#: awkgram.y:3667
#, 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:3641
+#: awkgram.y:3672
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "%s kolmas parametri ei ole vaihdettava objekti"
-#: awkgram.y:3714 awkgram.y:3717
+#: awkgram.y:3751 awkgram.y:3754
msgid "match: third argument is a gawk extension"
msgstr "match: kolmas argumentti on gawk-laajennus"
-#: awkgram.y:3771 awkgram.y:3774
+#: awkgram.y:3808 awkgram.y:3811
msgid "close: second argument is a gawk extension"
msgstr "close: toinen argumentti on gawk-laajennus"
-#: awkgram.y:3786
+#: awkgram.y:3823
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr "dcgettext(_\"...\")-k瓣ytt繹 on virheellinen: poista alaviiva alusta"
-#: awkgram.y:3801
+#: awkgram.y:3838
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr "dcngettext(_\"...\")-k瓣ytt繹 on virheellinen: poista alaviiva alusta"
-#: awkgram.y:3893
-#, c-format
-msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
-msgstr "funktio %s: parametri #%d, %s, samanlainen parametri #%d"
-
-#: awkgram.y:3935
+#: awkgram.y:3904
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "funktio %s: parametri %s varjostaa yleismuuttujaa"
-#: awkgram.y:4093
+#: awkgram.y:3961
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "ei voitu avata tiedostoa %s kirjoittamista varten (%s)"
-#: awkgram.y:4094
+#: awkgram.y:3962
msgid "sending variable list to standard error"
msgstr "l瓣hetet瓣瓣n muuttujaluettelo vakiovirheeseen"
-#: awkgram.y:4100
+#: awkgram.y:3970
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: sulkeminen ep瓣onnistui (%s)"
-#: awkgram.y:4152
+#: awkgram.y:3995
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() kutsuttu kahdesti!"
-#: awkgram.y:4158
+#: awkgram.y:4003
msgid "there were shadowed variables."
msgstr "siell瓣 oli varjostettuja muuttujia."
-#: awkgram.y:4188
+#: awkgram.y:4074
+#, c-format
+msgid "function name `%s' previously defined"
+msgstr "funktionimi %s on jo aikaisemmin m瓣瓣ritelty"
+
+#: awkgram.y:4120
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "funktio %s: ei voi k瓣ytt瓣瓣 funktionime瓣 parametrinimen瓣"
-#: awkgram.y:4192
+#: awkgram.y:4123
#, c-format
msgid "function `%s': can't use special variable `%s' as a function parameter"
msgstr "funktio %s: ei voi k瓣ytt瓣瓣 erikoismuuttujaa %s funktioparametrina"
-#: awkgram.y:4208
+#: awkgram.y:4131
#, c-format
-msgid "function name `%s' previously defined"
-msgstr "funktionimi %s on jo aikaisemmin m瓣瓣ritelty"
+msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
+msgstr "funktio %s: parametri #%d, %s, samanlainen parametri #%d"
-#: awkgram.y:4376 awkgram.y:4382
+#: awkgram.y:4210 awkgram.y:4216
#, c-format
msgid "function `%s' called but never defined"
msgstr "funktiota %s kutsuttiin, mutta sit瓣 ei ole koskaan m瓣瓣ritelty"
-#: awkgram.y:4385
+#: awkgram.y:4219
#, c-format
msgid "function `%s' defined but never called directly"
msgstr "funktio %s m瓣瓣riteltiin, mutta sit瓣 ei ole koskaan kutsuttu suoraan"
-#: awkgram.y:4417
+#: awkgram.y:4251
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr "s瓣瓣nn繹llisen lausekkeen vakio parametrille #%d antaa boolean-arvon"
-#: awkgram.y:4526
+#: awkgram.y:4297
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -527,235 +484,235 @@ msgstr ""
"funktio %s kutsuttu v瓣lily繹nnill瓣 nimen ja (-merkin\n"
"v瓣lill瓣, tai k瓣ytetty muuttujana tai taulukkona"
-#: awkgram.y:4773 eval.c:2056
+#: awkgram.y:4505
msgid "division by zero attempted"
msgstr "nollalla jakoa yritettiin"
-#: awkgram.y:4782 eval.c:2072
+#: awkgram.y:4514
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "jakoa nollalla yritettiin operaattorissa %%"
# kohteena voi olla vakiotuloste tai joku muu
-#: builtin.c:120
+#: builtin.c:122
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s kohteeseen %s ep瓣onnistui (%s)"
-#: builtin.c:121
+#: builtin.c:123
msgid "standard output"
msgstr "vakiotuloste"
-#: builtin.c:135
+#: builtin.c:137
msgid "exp: received non-numeric argument"
msgstr "exp: vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:141
+#: builtin.c:143
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: argumentti %g on lukualueen ulkopuolella"
-#: builtin.c:200
+#: builtin.c:202
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: ei voi tyhjent瓣瓣: putki %s avattu lukemista varten, ei "
"kirjoittamiseen"
-#: builtin.c:203
+#: builtin.c:205
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: ei voi tyhjent瓣瓣: tiedosto %s avattu lukemista varten, ei "
"kirjoittamiseen"
-#: builtin.c:215
+#: builtin.c:217
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr "fflush: %s ei ole avoin tiedosto, putki tai apuprosessi"
-#: builtin.c:333
+#: builtin.c:335
msgid "index: received non-string first argument"
msgstr "index: ensimm瓣inen vastaanotettu argumentti ei ole merkkijono"
-#: builtin.c:335
+#: builtin.c:337
msgid "index: received non-string second argument"
msgstr "index: toinen vastaanotettu argumentti ei ole merkkijono"
-#: builtin.c:457
+#: builtin.c:461
msgid "int: received non-numeric argument"
msgstr "int: vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:493
+#: builtin.c:497
msgid "length: received array argument"
msgstr "length: vastaanotettu taulukkoargumentti"
-#: builtin.c:496
+#: builtin.c:500
msgid "`length(array)' is a gawk extension"
msgstr "length(array) on gawk-laajennus"
-#: builtin.c:504
+#: builtin.c:508
msgid "length: received non-string argument"
msgstr "length: vastaanotettu argumentti ei ole merkkijono"
-#: builtin.c:535
+#: builtin.c:539
msgid "log: received non-numeric argument"
msgstr "log: vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:538
+#: builtin.c:542
#, c-format
msgid "log: received negative argument %g"
msgstr "log: vastaanotettu negatiivinen argumentti %g"
-#: builtin.c:694 builtin.c:699
+#: builtin.c:740 builtin.c:745
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:761
+#: builtin.c:815
#, c-format
msgid "field width is ignored for `%%' specifier"
msgstr "kentt瓣leveys ohitetaan %%%%-m瓣瓣ritteelle"
-#: builtin.c:763
+#: builtin.c:817
#, c-format
msgid "precision is ignored for `%%' specifier"
msgstr "tarkkuus ohitetaan %%%%-m瓣瓣ritteelle"
-#: builtin.c:765
+#: builtin.c:819
#, c-format
msgid "field width and precision are ignored for `%%' specifier"
msgstr "kentt瓣leveys ja tarkkuus ohitetaan %%%%-m瓣瓣ritteelle"
-#: builtin.c:816
+#: builtin.c:870
msgid "fatal: `$' is not permitted in awk formats"
msgstr "kohtalokas: $-argumentti ei ole sallittu awk-muodoissa"
-#: builtin.c:825
+#: builtin.c:879
msgid "fatal: arg count with `$' must be > 0"
msgstr "kohtalokas: argumenttilukum瓣瓣r瓣n argumentilla $ on oltava > 0"
-#: builtin.c:829
+#: builtin.c:883
#, 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:833
+#: builtin.c:887
msgid "fatal: `$' not permitted after period in format"
msgstr "kohtalokas: $-argumentti ei ole sallittu pisteen j瓣lkeen muodossa"
-#: builtin.c:849
+#: builtin.c:903
msgid "fatal: no `$' supplied for positional field width or precision"
msgstr ""
"kohtalokas: ei $-argumenttia tarjottu sijantikentt瓣leveydelle tai "
"tarkkuudelle"
-#: builtin.c:920
+#: builtin.c:975
msgid "`l' is meaningless in awk formats; ignored"
msgstr "l on merkitykset繹n awk-muodoissa; ohitetaan"
-#: builtin.c:924
+#: builtin.c:979
msgid "fatal: `l' is not permitted in POSIX awk formats"
msgstr "kohtalokas: l ei ole sallittu POSIX awk -muodoissa"
-#: builtin.c:937
+#: builtin.c:992
msgid "`L' is meaningless in awk formats; ignored"
msgstr "L on merkitykset繹n awk-muodoissa; ohitetaan"
-#: builtin.c:941
+#: builtin.c:996
msgid "fatal: `L' is not permitted in POSIX awk formats"
msgstr "kohtalokas: L ei ole sallittu POSIX awk -muodoissa"
-#: builtin.c:954
+#: builtin.c:1009
msgid "`h' is meaningless in awk formats; ignored"
msgstr "h on merkitykset繹n awk-muodoissa; ohitetaan"
-#: builtin.c:958
+#: builtin.c:1013
msgid "fatal: `h' is not permitted in POSIX awk formats"
msgstr "kohtalokas: h ei ole sallittu POSIX awk -muodoissa"
-#: builtin.c:1271
+#: builtin.c:1408
#, 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:1331
+#: builtin.c:1506
#, c-format
msgid "ignoring unknown format specifier character `%c': no argument converted"
msgstr ""
"ohitetaan tuntematon muotoargumenttimerkki %c: ei muunnettu argumenttia"
-#: builtin.c:1336
+#: builtin.c:1511
msgid "fatal: not enough arguments to satisfy format string"
msgstr "kohtalokas: ei kylliksi argumentteja muotomerkkijonon tyydytt瓣miseksi"
-#: builtin.c:1338
+#: builtin.c:1513
msgid "^ ran out for this one"
msgstr "^ t瓣llainen loppui kesken"
-#: builtin.c:1345
+#: builtin.c:1520
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: muotoargumentilla ei ole ohjauskirjainta"
-#: builtin.c:1348
+#: builtin.c:1523
msgid "too many arguments supplied for format string"
msgstr "muotomerkkijonoon toimitettu liian monta argumenttia"
-#: builtin.c:1422 builtin.c:1433
+#: builtin.c:1598 builtin.c:1609
msgid "printf: no arguments"
msgstr "printf: ei argumentteja"
-#: builtin.c:1474
+#: builtin.c:1650
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:1478
+#: builtin.c:1654
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: kutsuttu negatiivisella argumentilla %g"
-#: builtin.c:1502
+#: builtin.c:1685
#, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: pituus %g ei ole >= 1"
-#: builtin.c:1504
+#: builtin.c:1687
#, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: pituus %g ei ole >= 0"
-#: builtin.c:1511
+#: builtin.c:1694
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: typistet瓣瓣n pituus %g, joka ei ole kokonaisluku"
-#: builtin.c:1516
+#: builtin.c:1699
#, 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:1528
+#: builtin.c:1711
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: aloitusindeksi %g on virheellinen, k瓣ytet瓣瓣n 1:t瓣"
-#: builtin.c:1533
+#: builtin.c:1716
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: typistet瓣瓣n aloitusindeksi %g, joka ei ole kokonaisluku"
-#: builtin.c:1558
+#: builtin.c:1741
msgid "substr: source string is zero length"
msgstr "substr: l瓣hdemerkkijono on nollapituinen"
-#: builtin.c:1574
+#: builtin.c:1757
#, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: aloitusindeksi %g on merkkijonon lopun j瓣lkeen"
-#: builtin.c:1582
+#: builtin.c:1765
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -763,228 +720,225 @@ msgstr ""
"substr: pituus %g alkuindeksiss瓣 %g ylitt瓣瓣 ensimm瓣isen argumentin pituuden "
"(%lu)"
-#: builtin.c:1656
+#: builtin.c:1839
msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
msgstr ""
"strftime: muotoarvolla kohteessa PROCINFO[\"strftime\"] on numerotyyppi"
-#: builtin.c:1679
+#: builtin.c:1862
msgid "strftime: received non-numeric second argument"
msgstr "strftime: toinen vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:1682
+#: builtin.c:1866
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:1689
+#: builtin.c:1873
msgid "strftime: received non-string first argument"
msgstr "strftime: ensimm瓣inen vastaanotettu argumentti ei ole merkkijono"
-#: builtin.c:1695
+#: builtin.c:1880
msgid "strftime: received empty format string"
msgstr "strftime: vastaanotettu tyhj瓣 muotomerkkijono"
-#: builtin.c:1761
+#: builtin.c:1946
msgid "mktime: received non-string argument"
msgstr "mktime: vastaanotettu argumentti ei ole merkkijono"
-#: builtin.c:1778
+#: builtin.c:1963
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:1813
+#: builtin.c:1998
msgid "'system' function not allowed in sandbox mode"
msgstr "system-funktio ei ole sallittu hiekkalaatikkotilassa"
-#: builtin.c:1818
+#: builtin.c:2003
msgid "system: received non-string argument"
msgstr "system: vastaanotettu argumentti ei ole merkkijono"
-#: builtin.c:1873 eval.c:1159 eval.c:1790 eval.c:1803
-#, c-format
-msgid "reference to uninitialized variable `%s'"
-msgstr "viite alustamattomaan muuttujaan %s"
-
-#: builtin.c:1940
+#: builtin.c:2121
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "viite alustamattomaan kentt瓣瓣n $%d"
-#: builtin.c:2027
+#: builtin.c:2208
msgid "tolower: received non-string argument"
msgstr "tolower: vastaanotettu argumentti ei ole merkkijono"
-#: builtin.c:2061
+#: builtin.c:2242
msgid "toupper: received non-string argument"
msgstr "toupper: vastaanotettu argumentti ei ole merkkijono"
-#: builtin.c:2097
+#: builtin.c:2278
msgid "atan2: received non-numeric first argument"
msgstr "atan2: ensimm瓣inen vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:2099
+#: builtin.c:2280
msgid "atan2: received non-numeric second argument"
msgstr "atan2: toinen vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:2118
+#: builtin.c:2299
msgid "sin: received non-numeric argument"
msgstr "sin: vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:2134
+#: builtin.c:2315
msgid "cos: received non-numeric argument"
msgstr "cos: vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:2187
+#: builtin.c:2368
msgid "srand: received non-numeric argument"
msgstr "srand: vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:2218
+#: builtin.c:2399
msgid "match: third argument is not an array"
msgstr "match: kolmas argumentti ei ole taulukko"
-#: builtin.c:2482
+#: builtin.c:2664
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: 0-arvoinen kolmas argumentti k瓣sitell瓣瓣n kuin 1"
-#: builtin.c:2775
+#: builtin.c:2957
msgid "lshift: received non-numeric first argument"
msgstr "lshift: ensimm瓣inen vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:2777
+#: builtin.c:2959
msgid "lshift: received non-numeric second argument"
msgstr "lshift: toinen vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:2783
+#: builtin.c:2965
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr "lshift(%lf, %lf): negatiiviset arvot antavat outoja tuloksia"
-#: builtin.c:2785
+#: builtin.c:2967
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr "lshift(%lf, %lf): jaosarvot typistet瓣瓣n"
-#: builtin.c:2787
+#: builtin.c:2969
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr "lshift(%lf, %lf): liian suuri siirrosarvo antaa outoja tuloksia"
-#: builtin.c:2812
+#: builtin.c:2994
msgid "rshift: received non-numeric first argument"
msgstr "rshift: ensimm瓣inen vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:2814
+#: builtin.c:2996
msgid "rshift: received non-numeric second argument"
msgstr "rshift: toinen vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:2820
+#: builtin.c:3002
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr "rshift(%lf, %lf): negatiiviset arvot antavat outoja tuloksia"
-#: builtin.c:2822
+#: builtin.c:3004
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr "rshift(%lf, %lf): jaosarvot typistet瓣瓣n"
-#: builtin.c:2824
+#: builtin.c:3006
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr "rshift(%lf, %lf): liian suuri siirrosarvo antaa outoja tuloksia"
-#: builtin.c:2849
+#: builtin.c:3031
msgid "and: received non-numeric first argument"
msgstr "and: ensimm瓣inen vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:2851
+#: builtin.c:3033
msgid "and: received non-numeric second argument"
msgstr "and: toinen vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:2857
+#: builtin.c:3039
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr "and(%lf, %lf): negatiiviset arvot antavat outoja tuloksia"
-#: builtin.c:2859
+#: builtin.c:3041
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr "and(%lf, %lf): jaosarvot typistet瓣瓣n"
-#: builtin.c:2884
+#: builtin.c:3066
msgid "or: received non-numeric first argument"
msgstr "or: ensimm瓣inen vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:2886
+#: builtin.c:3068
msgid "or: received non-numeric second argument"
msgstr "or: toinen vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:2892
+#: builtin.c:3074
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr "or(%lf, %lf): negatiiviset arvot antavat outoja tuloksia"
-#: builtin.c:2894
+#: builtin.c:3076
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr "or(%lf, %lf): jaosarvot typistet瓣瓣n"
-#: builtin.c:2922
+#: builtin.c:3102
msgid "xor: received non-numeric first argument"
msgstr "xor: ensimm瓣inen vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:2924
+#: builtin.c:3104
msgid "xor: received non-numeric second argument"
msgstr "xor: toinen vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:2930
+#: builtin.c:3110
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr "xor(%lf, %lf): negatiiviset arvot antavat outoja tuloksia"
-#: builtin.c:2932
+#: builtin.c:3112
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr "xor(%lf, %lf): jaosarvot typistet瓣瓣n"
-#: builtin.c:2956 builtin.c:2962
+#: builtin.c:3136
msgid "compl: received non-numeric argument"
msgstr "compl: vastaanotettu argumentti ei ole numeerinen"
-#: builtin.c:2964
+#: builtin.c:3142
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr "compl(%lf): negatiiviset arvot antavat outoja tuloksia"
-#: builtin.c:2966
+#: builtin.c:3144
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr "compl(%lf): jaosarvo typistet瓣瓣n"
-#: builtin.c:3135
+#: builtin.c:3313
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: %s ei ole kelvollinen paikallinen kategoria"
-#: eval.c:412
+#: eval.c:395
#, c-format
msgid "unknown nodetype %d"
msgstr "tuntematon solmutyyppi %d"
-#: eval.c:423 eval.c:437
+#: eval.c:406 eval.c:420
#, c-format
msgid "unknown opcode %d"
msgstr "tuntematon k瓣skykoodi %d"
-#: eval.c:434
+#: eval.c:417
#, c-format
msgid "opcode %s not an operator or keyword"
msgstr "k瓣skykoodi %s ei ole operaattori tai avainsana"
-#: eval.c:488
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr "puskurin ylivuoto funktiossa genflags2str"
-#: eval.c:698
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -995,824 +949,787 @@ msgstr ""
"\t# Funktiokutsupino:\n"
"\n"
-#: eval.c:725
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
msgstr "IGNORECASE on gawk-laajennus"
-#: eval.c:754
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr "BINMODE on gawk-laajennus"
-#: eval.c:812
+#: eval.c:793
#, c-format
msgid "BINMODE value `%s' is invalid, treated as 3"
msgstr "BINMODE-arvo %s on virheellinen, k瓣siteltiin arvona 3"
-#: eval.c:902
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "v瓣瓣r瓣 %sFMT-m瓣瓣ritys %s"
-#: eval.c:980
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "k瓣瓣nnet瓣瓣n pois --lint-valitsin LINT-sijoituksen vuoksi"
-#: eval.c:1127 eval.c:1777
-#, c-format
-msgid "can't use function name `%s' as variable or array"
-msgstr "funktionime瓣 %s ei voi k瓣ytt瓣瓣 muuttujana tai taulukkona"
-
-#: eval.c:1158 eval.c:1789 eval.c:1802
+#: eval.c:1132
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "viite alustamattomaan argumenttiin %s"
-#: eval.c:1177
+#: eval.c:1133
+#, c-format
+msgid "reference to uninitialized variable `%s'"
+msgstr "viite alustamattomaan muuttujaan %s"
+
+#: eval.c:1151
msgid "attempt to field reference from non-numeric value"
msgstr "yritettiin kentt瓣viitett瓣 arvosta, joka ei ole numeerinen"
-#: eval.c:1179
+#: eval.c:1153
msgid "attempt to field reference from null string"
msgstr "yritettiin kentt瓣viitett瓣 null-merkkijonosta"
-#: eval.c:1185
+#: eval.c:1161
#, c-format
msgid "attempt to access field %ld"
msgstr "yritettiin saantia kentt瓣瓣n %ld"
-#: eval.c:1194
+#: eval.c:1170
#, c-format
msgid "reference to uninitialized field `$%ld'"
msgstr "viite alustamattomaan kentt瓣瓣n $%ld"
-#: eval.c:1256
+#: eval.c:1257
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "funktio %s kutsuttiin useammalla argumentilla kuin esiteltiin"
-#: eval.c:1437
+#: eval.c:1452
#, c-format
msgid "unwind_stack: unexpected type `%s'"
msgstr "unwind_stack: odottamaton tyyppi %s"
-#: eval.c:1532
+#: eval.c:1546
msgid "division by zero attempted in `/='"
msgstr "jakoa nollalla yritettiin operaatiossa /="
-#: eval.c:1539
+#: eval.c:1553
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "jakoa nollalla yritettiin operaatiossa %%="
-#: eval.c:1876 eval.c:2122
-#, c-format
-msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context"
-msgstr "yritettiin k瓣ytt瓣瓣 taulukkoa %s[\"%.*s\"] skalaarikontekstissa"
-
-#: eval.c:1907
-msgid "assignment used in conditional context"
-msgstr "sijoitusta k瓣ytetty ehdollisessa kontekstissa"
-
-#: eval.c:1911
-msgid "statement has no effect"
-msgstr "k瓣skyll瓣 ei ole vaikutusta"
-
-#: eval.c:2343
-#, c-format
-msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
-msgstr ""
-"for-silmukka: taulukon %s koko muuttui arvosta %ld arvoon %ld silmukan "
-"suorituksen aikana"
-
-#: eval.c:2458
-#, c-format
-msgid "function called indirectly through `%s' does not exist"
-msgstr "kohteen %s kautta ep瓣suorasti kutsuttu funktio ei ole olemassa"
-
-#: eval.c:2470
-#, c-format
-msgid "function `%s' not defined"
-msgstr "funktio %s ei ole m瓣瓣ritelty"
-
-#: eval.c:2511
-#, c-format
-msgid "non-redirected `getline' invalid inside `%s' rule"
-msgstr "edelleenohjaamaton getline virheellinen %s-s瓣瓣nn繹n sis瓣ll瓣"
-
-#: eval.c:2600
-#, c-format
-msgid "error reading input file `%s': %s"
-msgstr "virhe luettaessa sy繹tetiedostoa %s: %s"
-
-#: eval.c:2614
-#, c-format
-msgid "`nextfile' cannot be called from a `%s' rule"
-msgstr "nextfile ei voida kutsua %s-s瓣瓣nn繹st瓣"
-
-#: eval.c:2694
-#, c-format
-msgid "`next' cannot be called from a `%s' rule"
-msgstr "next ei voida kutsua %s-s瓣瓣nn繹st瓣"
-
-#: eval.c:2760
-#, c-format
-msgid "Sorry, don't know how to interpret `%s'"
-msgstr "Ei osata tulkita kohdetta %s"
-
-#: ext.c:64
+#: ext.c:70
msgid "extensions are not allowed in sandbox mode"
msgstr "laajennuksia ei sallita hiekkalaatikkotilassa"
-#: ext.c:70 ext.c:75
+#: ext.c:73
msgid "`extension' is a gawk extension"
msgstr "extension on gawk-laajennus"
-#: ext.c:85
-#, c-format
-msgid "fatal: extension: cannot open `%s' (%s)\n"
+#: ext.c:80
+#, fuzzy, c-format
+msgid "extension: cannot open library `%s' (%s)\n"
msgstr "tuhoisa: extension: ei voi avata solmua %s (%s)\n"
-#: ext.c:94
-#, c-format
+#: ext.c:86
+#, fuzzy, c-format
msgid ""
-"fatal: extension: library `%s': does not define "
-"`plugin_is_GPL_compatible' (%s)\n"
+"extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n"
msgstr ""
"tuhoisa: extension: kirjasto %s: ei m瓣瓣rittele "
"plugin_is_GPL_compatible (%s)\n"
-#: ext.c:103
-#, c-format
-msgid "fatal: extension: library `%s': cannot call function `%s' (%s)\n"
+#: ext.c:90
+#, fuzzy, c-format
+msgid "extension: library `%s': cannot call function `%s' (%s)\n"
msgstr "tuhoisa: extension: kirjasto %s: ei voi kutsua funktiota %s (%s)\n"
-#: ext.c:137
+#: ext.c:118
msgid "extension: missing function name"
msgstr "extension: puuttuva funktionimi"
-#: ext.c:142
+#: ext.c:123
#, c-format
msgid "extension: illegal character `%c' in function name `%s'"
msgstr "extension: virheellinen merkki %c funktionimess瓣 %s"
-#: ext.c:151
+#: ext.c:131
#, c-format
msgid "extension: can't redefine function `%s'"
msgstr "extension: ei voi m瓣瓣ritell瓣 uudelleen funktiota %s"
-#: ext.c:155
+#: ext.c:135
#, c-format
msgid "extension: function `%s' already defined"
msgstr "extension: funktio %s on jo m瓣瓣ritelty"
-#: ext.c:160
+#: ext.c:139
#, c-format
msgid "extension: function name `%s' previously defined"
msgstr "extension: funktionimi %s on m瓣瓣ritelty jo aiemmin"
-#: ext.c:162
+#: ext.c:141
#, c-format
msgid "extension: can't use gawk built-in `%s' as function name"
msgstr ""
"extension: ei voi k瓣ytt瓣瓣 gawk-ohjelman sis瓣ist瓣 muuttujanime瓣 %s "
"funktionimen瓣"
-#: ext.c:166
+#: ext.c:144
#, c-format
msgid "make_builtin: negative argument count for function `%s'"
msgstr "make_builtin: negatiivinen argumenttilukum瓣瓣r瓣 funktiolle %s"
-#: ext.c:269
+#: ext.c:206
#, 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:272
+#: ext.c:209
#, c-format
msgid "function `%s': missing argument #%d"
msgstr "function %s: puuttuva argumentti #%d"
-#: ext.c:289
+#: ext.c:226
#, 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:293
+#: ext.c:230
#, 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:306
+#: ext.c:244
msgid "Operation Not Supported"
msgstr "Toimintoa ei tueta"
-#: field.c:328
+#: ext.c:256
+msgid "dynamic loading of library not supported"
+msgstr ""
+
+#: field.c:339
msgid "NF set to negative value"
msgstr "NF asetettu negatiiviseen arvoon"
-#: field.c:951 field.c:958 field.c:962
+#: field.c:962 field.c:969 field.c:973
msgid "split: fourth argument is a gawk extension"
msgstr "split: nelj瓣s argumentti on gawk-laajennus"
-#: field.c:955
+#: field.c:966
msgid "split: fourth argument is not an array"
msgstr "split: nelj瓣s argumentti ei ole taulukko"
-#: field.c:969
+#: field.c:980
msgid "split: second argument is not an array"
msgstr "split: toinen argumentti ei ole taulukko"
-#: field.c:973
+#: field.c:984
msgid "split: cannot use the same array for second and fourth args"
msgstr ""
"split: ei voida k瓣ytt瓣瓣 samaa taulukkoa toiselle ja nelj瓣nnelle argumentille"
-#: field.c:978
+#: field.c:989
msgid "split: cannot use a subarray of second arg for fourth arg"
msgstr ""
"split: ei voida k瓣ytt瓣瓣 toisen argumentin alitaulukkoa nelj瓣nnelle "
"argumentille"
-#: field.c:981
+#: field.c:992
msgid "split: cannot use a subarray of fourth arg for second arg"
msgstr ""
"split: ei voida k瓣ytt瓣瓣 nelj瓣nnen argumentin alitaulukkoa toiselle "
"argumentille"
-#: field.c:1010
+#: field.c:1021
msgid "split: null string for third arg is a gawk extension"
msgstr "split: null-merkkijono kolmantena argumenttina on gawk-laajennus"
-#: field.c:1050
+#: field.c:1061
msgid "patsplit: fourth argument is not an array"
msgstr "patsplit: nelj瓣s argumentti ei ole taulukko"
-#: field.c:1055
+#: field.c:1066
msgid "patsplit: second argument is not an array"
msgstr "patsplit: toinen argumentti ei ole taulukko"
-#: field.c:1061
+#: field.c:1072
msgid "patsplit: third argument must be non-null"
msgstr "patsplit: kolmas argumentti ei ole taulukko"
-#: field.c:1065
+#: field.c:1076
msgid "patsplit: cannot use the same array for second and fourth args"
msgstr ""
"patsplit: ei voida k瓣ytt瓣瓣 samaa taulukkoa toiselle ja nelj瓣nnelle "
"argumentille"
-#: field.c:1070
+#: field.c:1081
msgid "patsplit: cannot use a subarray of second arg for fourth arg"
msgstr ""
"patsplit: ei voida k瓣ytt瓣瓣 toisen argumentin alitaulukkkoa nelj瓣nnelle "
"argumentille"
-#: field.c:1073
+#: field.c:1084
msgid "patsplit: cannot use a subarray of fourth arg for second arg"
msgstr ""
"patsplit: ei voida k瓣ytt瓣瓣 nelj瓣nnen argumentin alitaulukkoa toiselle "
"argumentille"
-#: field.c:1110
+#: field.c:1122
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "FIELDWIDTHS on gawk-laajennus"
-#: field.c:1173
+#: field.c:1186
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr "virheellinen FIELDWIDTHS-arvo, l瓣hell瓣 %s"
-#: field.c:1246
+#: field.c:1259
msgid "null string for `FS' is a gawk extension"
msgstr "null-merkkijono FS-kentt瓣erotinmuuttujalle on gawk-laajennus"
-#: field.c:1250
+#: field.c:1263
msgid "old awk does not support regexps as value of `FS'"
msgstr "vanha awk ei tue regexp-arvoja FS-kentt瓣erotinmuuttujana"
-#: field.c:1369
+#: field.c:1382
msgid "`FPAT' is a gawk extension"
msgstr "FPAT on gawk-laajennus"
-#: getopt.c:574 getopt.c:590
-#, c-format
-msgid "%s: option '%s' is ambiguous\n"
+#: getopt.c:604 getopt.c:633
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
msgstr "%s: valitsin %s ei ole yksiselitteinen\n"
-#: getopt.c:623 getopt.c:627
+#: getopt.c:679 getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: valitsin --%s ei salli argumenttia\n"
-#: getopt.c:636 getopt.c:641
+#: getopt.c:692 getopt.c:697
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: valitsin %c%s ei salli argumenttia\n"
-#: getopt.c:684 getopt.c:703
+#: getopt.c:740 getopt.c:759
#, c-format
msgid "%s: option '--%s' requires an argument\n"
msgstr "%s: valitsin --%s vaatii argumentin\n"
-#: getopt.c:741 getopt.c:744
+#: getopt.c:797 getopt.c:800
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: tunnistamaton valitsin --%s\n"
-#: getopt.c:752 getopt.c:755
+#: getopt.c:808 getopt.c:811
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: tunnistamaton valitsin %c%s\n"
-#: getopt.c:804 getopt.c:807
+#: getopt.c:860 getopt.c:863
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: virheellinen valitsin -- %c\n"
-#: getopt.c:857 getopt.c:874 getopt.c:1082 getopt.c:1100
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s: valitsin vaatii argumentin -- %c\n"
-#: getopt.c:930 getopt.c:946
+#: getopt.c:989 getopt.c:1005
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: valitsin -W %s ei ole yksiselitteinen\n"
-#: getopt.c:970 getopt.c:988
+#: getopt.c:1029 getopt.c:1047
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: valitsin -W %s ei salli argumenttia\n"
-#: getopt.c:1009 getopt.c:1027
+#: getopt.c:1068 getopt.c:1086
#, c-format
msgid "%s: option '-W %s' requires an argument\n"
msgstr "%s: valitsin -W %s vaatii argumentin\n"
-#: io.c:280
+#: io.c:326
#, c-format
msgid "command line argument `%s' is a directory: skipped"
msgstr "komentoriviargumentti %s on hakemisto: ohitettiin"
-#: io.c:283 io.c:385
+#: io.c:329 io.c:438
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "ei voi avata tiedostoa %s lukemista varten (%s)"
-#: io.c:501
+#: io.c:568
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "tiedostom瓣瓣rittelij瓣n %d (%s) sulkeminen ep瓣onnistui (%s)"
-#: io.c:578
+#: io.c:645
msgid "redirection not allowed in sandbox mode"
msgstr "edelleenohjaus ei ole sallittua hiekkalaatikkotilassa"
-#: io.c:612
+#: io.c:679
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "lausekkeella %s-uudellenohjauksessa on vain numeerinen arvo"
-#: io.c:618
+#: io.c:685
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "lausekkeella %s-uudelleenohjauksessa on null-merkkijonoarvo"
-#: io.c:624
+#: io.c:690
#, 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:667
+#: io.c:733
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "turha merkkien > ja >> sekoittaminen tiedostolle %.*s"
-#: io.c:720
+#: io.c:786
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "ei voi avata putkea %s tulosteelle (%s)"
-#: io.c:730
+#: io.c:796
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "ei voi avata putkea %s sy繹tteelle (%s)"
-#: io.c:753
+#: io.c:819
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr "ei voi avata kaksisuuntaista putkea %s sy繹tteelle/tulosteelle (%s)"
-#: io.c:835
+#: io.c:900
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "ei voi uudelleenohjata putkesta %s (%s)"
-#: io.c:838
+#: io.c:903
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "ei voi uudelleenohjata putkeen %s (%s)"
-#: io.c:889
+#: io.c:954
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:905
+#: io.c:970
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "uudelleenohjauksen %s sulkeminen ep瓣onnistui (%s)."
-#: io.c:913
+#: io.c:978
msgid "too many pipes or input files open"
msgstr "avoinna liian monta putkea tai sy繹tetiedostoa"
-#: io.c:935
+#: io.c:1000
msgid "close: second argument must be `to' or `from'"
msgstr "close: toisen argumentin on oltava to tai from"
-#: io.c:952
+#: io.c:1017
#, 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:957
+#: io.c:1022
msgid "close of redirection that was never opened"
msgstr "suljettiin uudelleenohjaus, jota ei avattu koskaan"
-#: io.c:1054
+#: io.c:1120
#, 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:1070
+#: io.c:1137
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "virhetila (%d) putken %s sulkemisessa (%s)"
-#: io.c:1073
+#: io.c:1140
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "virhetila (%d) tiedoston %s sulkemisessa (%s)"
-#: io.c:1093
+#: io.c:1160
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "pistokkeen %s eksplisiittist瓣 sulkemista ei tarjota"
-#: io.c:1096
+#: io.c:1163
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "apuprosessin %s eksplisiittist瓣 sulkemista ei tarjota"
-#: io.c:1099
+#: io.c:1166
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "putken %s eksplisiittist瓣 sulkemista ei tarjota"
-#: io.c:1102
+#: io.c:1169
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "tiedoston %s eksplisiittist瓣 sulkemista ei tarjota"
-#: io.c:1130 io.c:1185 main.c:793 main.c:830
+#: io.c:1197 io.c:1252 main.c:825 main.c:862
#, c-format
msgid "error writing standard output (%s)"
msgstr "virhe kirjoitettaessa vakiotulosteeseen (%s)"
-#: io.c:1134 io.c:1190
+#: io.c:1201 io.c:1257
#, c-format
msgid "error writing standard error (%s)"
msgstr "virhe kirjoitettaessa vakiovirheeseen (%s)"
-#: io.c:1142
+#: io.c:1209
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "uudelleenohjauksen %s putken tyhjennys ep瓣onnistui (%s)."
-#: io.c:1145
+#: io.c:1212
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "putken apuprosessityhjennys uudelleenohjaukseen %s ep瓣onnistui (%s)."
-#: io.c:1148
+#: io.c:1215
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "uudelleenohjauksen %s tiedostontyhjennys ep瓣onnistui (%s)."
-#: io.c:1263
+#: io.c:1329
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr "paikallinen portti %s virheellinen pistokkeessa /inet"
-#: io.c:1280
+#: io.c:1347
#, c-format
msgid "remote host and port information (%s, %s) invalid"
msgstr "et瓣kone- ja porttitiedot (%s, %s) ovat virheellisi瓣"
-#: io.c:1432
+#: io.c:1499
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr "ei (tunnettua) yhteysk瓣yt瓣nt繹瓣 tarjottu erikoistiedostonimess瓣 %s"
-#: io.c:1446
+#: io.c:1513
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "erikoistiedostonimi %s on vaillinainen"
-#: io.c:1463
+#: io.c:1530
msgid "must supply a remote hostname to `/inet'"
msgstr "on tarjottava et瓣koneen nimi pistokkeeseen /inet"
-#: io.c:1481
+#: io.c:1548
msgid "must supply a remote port to `/inet'"
msgstr "on tarjottava et瓣portti pistokkeeseen /inet"
-#: io.c:1527
+#: io.c:1594
msgid "TCP/IP communications are not supported"
msgstr "TCP/IP-viestint瓣瓣 ei tueta"
-#: io.c:1694
+#: io.c:1764
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "ei voitu avata laitetta %s, tila %s"
-#: io.c:1748
+#: io.c:1814
#, c-format
msgid "close of master pty failed (%s)"
msgstr "master pty-sulkeminen ep瓣onnistui (%s)"
-#: io.c:1750 io.c:1918 io.c:2075
+#: io.c:1816 io.c:1984 io.c:2145
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "vakiotulosteen sulkeminen lapsiprosessissa ep瓣onnistui (%s)"
-#: io.c:1753
+#: io.c:1819
#, 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:1755 io.c:1923
+#: io.c:1821 io.c:1989
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "vakiosy繹tteen sulkeminen lapsiprosessissa ep瓣onnistui (%s)"
-#: io.c:1758
+#: io.c:1824
#, 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:1760 io.c:1781
+#: io.c:1826 io.c:1847
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "slave pty:n sulkeminen ep瓣onnistui (%s)"
-#: io.c:1859 io.c:1921 io.c:2053 io.c:2078
+#: io.c:1925 io.c:1987 io.c:2122 io.c:2148
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr ""
"putken siirt瓣minen vakiotulosteeseen lapsiprosessissa ep瓣onnistui (dup: %s)"
-#: io.c:1866 io.c:1926
+#: io.c:1932 io.c:1992
#, 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:1886 io.c:2068
+#: io.c:1952 io.c:2138
msgid "restoring stdout in parent process failed\n"
msgstr "vakiotulosteen palauttaminen 瓣itiprosessissa ep瓣onnistui\n"
-#: io.c:1894
+#: io.c:1960
msgid "restoring stdin in parent process failed\n"
msgstr "vakiosy繹t繹n palauttaminen 瓣itiprosessissa ep瓣onnistui\n"
-#: io.c:1929 io.c:2080 io.c:2094
+#: io.c:1995 io.c:2150 io.c:2164
#, c-format
msgid "close of pipe failed (%s)"
msgstr "putken sulkeminen ep瓣onnistui (%s)"
-#: io.c:1974
+#: io.c:2040
msgid "`|&' not supported"
msgstr "|& ei tueta"
-#: io.c:2040
+#: io.c:2107
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "ei voi avata putkea %s (%s)"
-#: io.c:2088
+#: io.c:2158
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "ei voida luoda lapsiprosessia komennolle %s (fork: %s)"
-#: io.c:2521
+#: io.c:2637
#, c-format
msgid "data file `%s' is empty"
msgstr "data-tiedosto %s on tyhj瓣"
-#: io.c:2562 io.c:2570
+#: io.c:2678 io.c:2686
msgid "could not allocate more input memory"
msgstr "ei voitu varata lis瓣瓣 sy繹temuistia"
-#: io.c:3128
+#: io.c:3236
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "RS-monimerkkiarvo on gawk-laajennus"
-#: io.c:3233
+#: io.c:3326
msgid "IPv6 communication is not supported"
msgstr "IPv6-viestint瓣瓣 ei tueta"
-#: main.c:364
+#: main.c:355
msgid "`-m[fr]' option irrelevant in gawk"
msgstr "-m[fr]-valitsin asiaanliittym瓣t繹n gawk:ssa"
-#: main.c:366
+#: main.c:357
msgid "-m option usage: `-m[fr] nnn'"
msgstr "-m valitsink瓣ytt繹: -m[fr] nnn"
-#: main.c:389
+#: main.c:386
msgid "empty argument to `-e/--source' ignored"
msgstr "tyhj瓣 argumentti valitsimelle -e/--source ohitetaan"
-#: main.c:460
+#: main.c:472
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: valitsin -W %s on tunnistamaton, ohitetaan\n"
-#: main.c:513
+#: main.c:518
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: valitsin vaatii argumentin -- %c\n"
-#: main.c:534
+#: main.c:539
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:540
+#: main.c:545
msgid "`--posix' overrides `--traditional'"
msgstr "valitsin --posix korvaa valitsimen --traditional"
-#: main.c:551
+#: main.c:556
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr ""
"valitsin --posix tai --traditional korvaa valitsimen --non-decimal-data"
-#: main.c:555
+#: main.c:560
#, 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:560
+#: main.c:565
msgid "`--posix' overrides `--binary'"
msgstr "valitsin --posix korvaa valitsimen --binary"
-#: main.c:611
+#: main.c:623
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "ei voi asettaa binaaritilaa vakiosy繹tteess瓣 (%s)"
-#: main.c:614
+#: main.c:626
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "ei voi asettaa binaaritilaa vakiotulosteessa (%s)"
-#: main.c:616
+#: main.c:628
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "ei voi asettaa binaaritilaa vakiovirheess瓣 (%s)"
-#: main.c:655
+#: main.c:679
msgid "no program text at all!"
msgstr "ei ohjelmateksti瓣 ollenkaan!"
-#: main.c:733
+#: main.c:763
#, 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:735
+#: main.c:765
#, 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:740
+#: main.c:770
msgid "POSIX options:\t\tGNU long options: (standard)\n"
msgstr "POSIX-valitsimet:\t\tGNU-pitk瓣t valitsimet: (vakio)\n"
-#: main.c:741
+#: main.c:771
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f ohjelmatiedosto\t\t--file=ohjelmatiedosto\n"
-#: main.c:742
+#: main.c:772
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F fs\t\t\t--field-separator=fs\n"
-#: main.c:743
+#: main.c:773
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v var=arvo\t\t--assign=muuttuja=arvo\n"
-#: main.c:744
+#: main.c:774
msgid "Short options:\t\tGNU long options: (extensions)\n"
msgstr "Lyhyet valitsimet:\t\tGNU-pitk瓣t valitsimet: (laajennukset)\n"
-#: main.c:745
+#: main.c:775
msgid "\t-b\t\t\t--characters-as-bytes\n"
msgstr "\t-b\t\t\t--characters-as-bytes\n"
-#: main.c:746
+#: main.c:776
msgid "\t-c\t\t\t--traditional\n"
msgstr "\t-c\t\t\t--traditional\n"
-#: main.c:747
+#: main.c:777
msgid "\t-C\t\t\t--copyright\n"
msgstr "\t-C\t\t\t--copyright\n"
-#: main.c:748
+#: main.c:778
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
msgstr "\t-d[tiedosto]\t\t--dump-variables[=tiedosto]\n"
-#: main.c:749
+#: main.c:779
+#, fuzzy
+msgid "\t-D[file]\t\t--debug[=file]\n"
+msgstr "\t-p[tiedosto]\t\t--profile[=tiedosto]\n"
+
+#: main.c:780
msgid "\t-e 'program-text'\t--source='program-text'\n"
msgstr "\t-e 'program-text'\t--source='program-text'\n"
-#: main.c:750
+#: main.c:781
msgid "\t-E file\t\t\t--exec=file\n"
msgstr "\t-E file\t\t\t--exec=tiedosto\n"
-#: main.c:751
+#: main.c:782
msgid "\t-g\t\t\t--gen-pot\n"
msgstr "\t-g\t\t\t--gen-po\n"
-#: main.c:752
+#: main.c:783
msgid "\t-h\t\t\t--help\n"
msgstr "\t-h\t\t\t--help\n"
-#: main.c:753
+#: main.c:784
+msgid "\t-l library\t\t--load=library\n"
+msgstr ""
+
+#: main.c:785
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
msgstr "\t-L [fatal]\t\t--lint[=fatal]\n"
-#: main.c:754
+#: main.c:786
msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr "\t-n\t\t\t--non-decimal-data\n"
-#: main.c:755
+#: main.c:787
+#, fuzzy
+msgid "\t-M\t\t\t--bignum\n"
+msgstr "\t-g\t\t\t--gen-po\n"
+
+#: main.c:788
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr "\t-N\t\t\t--use-lc-numeric\n"
-#: main.c:756
+#: main.c:789
+#, fuzzy
+msgid "\t-o[file]\t\t--pretty-print[=file]\n"
+msgstr "\t-p[tiedosto]\t\t--profile[=tiedosto]\n"
+
+#: main.c:790
msgid "\t-O\t\t\t--optimize\n"
msgstr "\t-O\t\t\t--optimize\n"
-#: main.c:757
+#: main.c:791
msgid "\t-p[file]\t\t--profile[=file]\n"
msgstr "\t-p[tiedosto]\t\t--profile[=tiedosto]\n"
-#: main.c:758
+#: main.c:792
msgid "\t-P\t\t\t--posix\n"
msgstr "\t-P\t\t\t--posix\n"
-#: main.c:759
+#: main.c:793
msgid "\t-r\t\t\t--re-interval\n"
msgstr "\t-r\t\t\t--re-interval\n"
-#: main.c:761
-msgid "\t-R file\t\t\t--command=file\n"
-msgstr "\t-R tiedosto\t\t\t--exec=tiedosto\n"
-
-#: main.c:762
+#: main.c:794
msgid "\t-S\t\t\t--sandbox\n"
msgstr "\t-S\t\t\t--sandbox\n"
-#: main.c:763
+#: main.c:795
msgid "\t-t\t\t\t--lint-old\n"
msgstr "\t-t\t\t\t--lint-old\n"
-#: main.c:764
+#: main.c:796
msgid "\t-V\t\t\t--version\n"
msgstr "\t-V\t\t\t--version\n"
-#: main.c:766
+#: main.c:798
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:769
+#: main.c:801
msgid "\t-Y\t\t--parsedebug\n"
msgstr "\t-Y\t\t--parsedebug\n"
@@ -1821,7 +1738,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:778
+#: main.c:810
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -1834,7 +1751,7 @@ msgstr ""
"joka on kappale Reporting Problems and Bugs painetussa versiossa.\n"
"\n"
-#: main.c:782
+#: main.c:814
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -1844,7 +1761,7 @@ msgstr ""
"Oletuksena se lukee vakiosy繹tett瓣 ja kirjoittaa vakiotulosteeseen.\n"
"\n"
-#: main.c:786
+#: main.c:818
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -1854,7 +1771,7 @@ msgstr ""
"\tgawk '{ sum += $1 }; END { print sum }' tiedosto\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:806
+#: main.c:838
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1873,7 +1790,7 @@ msgstr ""
"ehtojen mukaisesti.\n"
"\n"
-#: main.c:814
+#: main.c:846
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"
@@ -1887,7 +1804,7 @@ msgstr ""
"GNU General Public License-ehdoista.\n"
"\n"
-#: main.c:820
+#: main.c:852
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"
@@ -1895,16 +1812,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:855
+#: main.c:887
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft ei aseta FS v瓣lilehteen POSIX awk:ssa"
-#: main.c:1089
+#: main.c:1133
#, c-format
msgid "unknown value for field spec: %d\n"
msgstr "tuntematon arvo kentt瓣m瓣瓣ritteelle: %d\n"
-#: main.c:1170
+#: main.c:1214
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
@@ -1913,84 +1830,79 @@ msgstr ""
"%s: %s argumentti valitsimelle -v ei ole var=arvo-muodossa\n"
"\n"
-#: main.c:1196
+#: main.c:1240
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "%s ei ole laillinen muuttujanimi"
-#: main.c:1199
+#: main.c:1243
#, 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:1203
+#: main.c:1247
#, c-format
msgid "cannot use gawk builtin `%s' as variable name"
msgstr "ei voi k瓣ytt瓣瓣 gawk-ohjelman sis瓣ist瓣 %s-m瓣瓣rittely瓣 muuttujanimen瓣"
-#: main.c:1208
+#: main.c:1252
#, c-format
msgid "cannot use function `%s' as variable name"
msgstr "funktionime瓣 %s ei voi k瓣ytt瓣瓣 muuttujanimen瓣"
-#: main.c:1261
+#: main.c:1305
msgid "floating point exception"
msgstr "liukulukupoikkeus"
-#: main.c:1268
+#: main.c:1312
msgid "fatal error: internal error"
msgstr "tuhoisa virhe: sis瓣inen virhe"
-#: main.c:1283
+#: main.c:1327
msgid "fatal error: internal error: segfault"
msgstr "tuhoisa virhe: sis瓣inen virhe: segmenttivirhe"
-#: main.c:1295
+#: main.c:1339
msgid "fatal error: internal error: stack overflow"
msgstr "tuhoisa virhe: sis瓣inen virhe: pinoylivuoto"
-#: main.c:1345
+#: main.c:1393
#, c-format
msgid "no pre-opened fd %d"
msgstr "ei avattu uudelleen tiedostom瓣瓣rittelij瓣瓣 %d"
-#: main.c:1352
+#: main.c:1400
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "ei voitu avata uudelleen laitetta /dev/null tiedostom瓣瓣rittelij瓣lle %d"
-#: main.c:1375 main.c:1384
-#, c-format
-msgid "could not find groups: %s"
-msgstr "ei voitu l繹yt瓣瓣 ryhmi瓣: %s"
-
-#: msg.c:63
+#: msg.c:61
#, c-format
msgid "cmd. line:"
msgstr "komentorivi:"
-#: msg.c:107
+#: msg.c:121
msgid "error: "
msgstr "virhe:"
-#: node.c:406
+#: node.c:436
msgid "backslash at end of string"
msgstr "kenoviiva merkkijonon lopussa"
-#: node.c:517
+#: node.c:520
#, c-format
msgid "old awk does not support the `\\%c' escape sequence"
msgstr "vanha awk ei tue \\%c-koodinvaihtosekvenssi瓣"
-#: node.c:568
+#: node.c:571
msgid "POSIX does not allow `\\x' escapes"
msgstr "POSIX ei salli \\x-koodinvaihtoja"
-#: node.c:574
+#: node.c:577
msgid "no hex digits in `\\x' escape sequence"
msgstr "ei heksadesimaalilukuja \\x-koodinvaihtosekvenssiss瓣"
-#: node.c:596
+#: node.c:599
#, c-format
msgid ""
"hex escape \\x%.*s of %d characters probably not interpreted the way you "
@@ -1999,12 +1911,12 @@ msgstr ""
"heksadesimaalikoodinvaihtomerkkej瓣 \\x%.*s / %d ei ole luultavasti tulkittu "
"sill瓣 tavalla kuin odotat"
-#: node.c:611
+#: node.c:614
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr "koodinvaihtosekvenssi \\%c k瓣sitelty kuin pelkk瓣 %c"
-#: node.c:750
+#: node.c:759
msgid ""
"Invalid multibyte data detected. There may be a mismatch between your data "
"and your locale."
@@ -2022,16 +1934,16 @@ msgstr "%s %s %s: ei voitu hakea fd-lippuja: (fcntl F_GETFD: %s)"
msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
msgstr "%s %s %s: ei voitu asettaa close-on-exec: (fcntl F_SETFD: %s)"
-#: profile.c:83
+#: profile.c:69
#, c-format
msgid "could not open `%s' for writing: %s"
msgstr "ei voitu avata tiedostoa %s kirjoittamista varten: %s"
-#: profile.c:85
+#: profile.c:71
msgid "sending profile to standard error"
msgstr "l瓣hetet瓣瓣n profiili vakiovirheeseen"
-#: profile.c:203
+#: profile.c:187
#, c-format
msgid ""
"\t# %s block(s)\n"
@@ -2040,7 +1952,7 @@ msgstr ""
"\t# %s-lohko(t)\n"
"\n"
-#: profile.c:208
+#: profile.c:192
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -2049,17 +1961,22 @@ msgstr ""
"\t# S瓣瓣nn繹t\n"
"\n"
-#: profile.c:279
+#: profile.c:266
#, c-format
msgid "internal error: %s with null vname"
msgstr "sis瓣inen virhe: %s null vname-arvolla"
-#: profile.c:952
+#: profile.c:528
+#, fuzzy
+msgid "internal error: builtin with null fname"
+msgstr "sis瓣inen virhe: %s null vname-arvolla"
+
+#: profile.c:943
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# gawk-profiili, luotu %s\n"
-#: profile.c:1331
+#: profile.c:1328
#, c-format
msgid ""
"\n"
@@ -2068,94 +1985,169 @@ msgstr ""
"\n"
"\t# Funktiot, luetteloitu aakkosj瓣rjestyksess瓣\n"
-#: profile.c:1370
+#: profile.c:1366
#, c-format
msgid "redir2str: unknown redirection type %d"
msgstr "redir2str: tuntematon edelleenohjaustyyppi %d"
-#: re.c:572
-#, fuzzy, c-format
+#: re.c:571
+#, c-format
msgid "range of the form `[%c-%c]' is locale dependent"
msgstr "muodon [%c-%c] lukualue on paikallisasetuksesta riippuvainen"
-#: re.c:599
+#: re.c:598
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
msgstr ""
"s瓣瓣nn繹llisen lausekkeen komponentin %.*s pit瓣isi luultavasti olla [%.*s]"
-#: regcomp.c:132
+#: regcomp.c:131
msgid "Success"
msgstr "Onnistui"
-#: regcomp.c:135
+#: regcomp.c:134
msgid "No match"
msgstr "Ei t瓣sm瓣yst瓣"
-#: regcomp.c:138
+#: regcomp.c:137
msgid "Invalid regular expression"
msgstr "Virheellinen s瓣瓣nn繹llinen lauseke"
-#: regcomp.c:141
+#: regcomp.c:140
msgid "Invalid collation character"
msgstr "Virheellinen vertailumerkki"
-#: regcomp.c:144
+#: regcomp.c:143
msgid "Invalid character class name"
msgstr "Virheellinen merkkiluokkanimi"
-#: regcomp.c:147
+#: regcomp.c:146
msgid "Trailing backslash"
msgstr "J瓣ljess瓣 oleva kenoviiva"
-#: regcomp.c:150
+#: regcomp.c:149
msgid "Invalid back reference"
msgstr "Virheellinen paluuviite"
-#: regcomp.c:153
+#: regcomp.c:152
msgid "Unmatched [ or [^"
msgstr "Pariton [ tai [^"
-#: regcomp.c:156
+#: regcomp.c:155
msgid "Unmatched ( or \\("
msgstr "Pariton ( tai \\("
-#: regcomp.c:159
+#: regcomp.c:158
msgid "Unmatched \\{"
msgstr "Pariton \\{"
-#: regcomp.c:162
+#: regcomp.c:161
msgid "Invalid content of \\{\\}"
msgstr "Virheellinen \\{\\}-sis瓣lt繹"
-#: regcomp.c:165
+#: regcomp.c:164
msgid "Invalid range end"
msgstr "Virheellinen lukualueen loppu"
-#: regcomp.c:168
+#: regcomp.c:167
msgid "Memory exhausted"
msgstr "Muisti loppui"
-#: regcomp.c:171
+#: regcomp.c:170
msgid "Invalid preceding regular expression"
msgstr "Virheellinen edelt瓣v瓣 s瓣瓣nn繹llinen lauseke"
-#: regcomp.c:174
+#: regcomp.c:173
msgid "Premature end of regular expression"
msgstr "Ennenaikainen s瓣瓣nn繹llisen lausekkeen loppu"
-#: regcomp.c:177
+#: regcomp.c:176
msgid "Regular expression too big"
msgstr "S瓣瓣nn繹llinen lauseke on liian iso"
-#: regcomp.c:180
+#: regcomp.c:179
msgid "Unmatched ) or \\)"
msgstr "Pariton ) tai \\)"
-#: regcomp.c:701
+#: regcomp.c:700
msgid "No previous regular expression"
msgstr "Ei edellist瓣 s瓣瓣nn繹llist瓣 lauseketta"
+#~ 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\"]"
+
+#~ msgid "subscript of array `%s' is null string"
+#~ msgstr "taulukon alaindeksi %s on null-merkkijono"
+
+#~ msgid "%s: empty (null)\n"
+#~ msgstr "%s: tyhj瓣 (null)\n"
+
+#~ msgid "%s: empty (zero)\n"
+#~ msgstr "%s: tyhj瓣 (nolla)\n"
+
+#~ msgid "%s: table_size = %d, array_size = %d\n"
+#~ msgstr "%s: table_size = %d, array_size = %d\n"
+
+#~ msgid "%s: is parameter\n"
+#~ msgstr "%s: on parametri\n"
+
+#~ msgid "%s: array_ref to %s\n"
+#~ msgstr "%s: array_ref-viite taulukkoon %s\n"
+
+#~ msgid "use of non-array as array"
+#~ msgstr "ei-taulukon k瓣ytt繹 taulukkona"
+
+#~ msgid "can't use function name `%s' as variable or array"
+#~ msgstr "funktionime瓣 %s ei voi k瓣ytt瓣瓣 muuttujana tai taulukkona"
+
+#~ msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context"
+#~ msgstr "yritettiin k瓣ytt瓣瓣 taulukkoa %s[\"%.*s\"] skalaarikontekstissa"
+
+#~ msgid "assignment used in conditional context"
+#~ msgstr "sijoitusta k瓣ytetty ehdollisessa kontekstissa"
+
+#~ msgid "statement has no effect"
+#~ msgstr "k瓣skyll瓣 ei ole vaikutusta"
+
+#~ msgid ""
+#~ "for loop: array `%s' changed size from %ld to %ld during loop execution"
+#~ msgstr ""
+#~ "for-silmukka: taulukon %s koko muuttui arvosta %ld arvoon %ld silmukan "
+#~ "suorituksen aikana"
+
+#~ msgid "function called indirectly through `%s' does not exist"
+#~ msgstr "kohteen %s kautta ep瓣suorasti kutsuttu funktio ei ole olemassa"
+
+#~ 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 "error reading input file `%s': %s"
+#~ msgstr "virhe luettaessa sy繹tetiedostoa %s: %s"
+
+#~ msgid "`nextfile' cannot be called from a `%s' rule"
+#~ msgstr "nextfile ei voida kutsua %s-s瓣瓣nn繹st瓣"
+
+#~ msgid "`exit' cannot be called in the current context"
+#~ msgstr "exit ei voida kutsua nykyisess瓣 asiayhteydess瓣"
+
+#~ msgid "`next' cannot be called from a `%s' rule"
+#~ msgstr "next ei voida kutsua %s-s瓣瓣nn繹st瓣"
+
+#~ msgid "Sorry, don't know how to interpret `%s'"
+#~ msgstr "Ei osata tulkita kohdetta %s"
+
+#~ msgid "\t-R file\t\t\t--command=file\n"
+#~ msgstr "\t-R tiedosto\t\t\t--exec=tiedosto\n"
+
+#~ msgid "could not find groups: %s"
+#~ msgstr "ei voitu l繹yt瓣瓣 ryhmi瓣: %s"
+
#~ msgid "assignment is not allowed to result of builtin function"
#~ msgstr "sijoitusta ei sallita sis瓣瓣nrakennetun funktion tulokselle"
diff --git a/po/fr.gmo b/po/fr.gmo
index 49267fd7..a6e5a9d5 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index b43094c4..d91375d5 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -7,10 +7,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: gawk 4.0.0\n"
+"Project-Id-Version: gawk 4.0.0h\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2011-11-14 21:46+0200\n"
-"PO-Revision-Date: 2011-07-16 16:50+0200\n"
+"POT-Creation-Date: 2012-04-27 10:06+0300\n"
+"PO-Revision-Date: 2012-01-30 23:52+0100\n"
"Last-Translator: Jean-Philippe Gu矇rard <jean-philippe.guerard@corbeaunoir."
"org>\n"
"Language-Team: French <traduc@traduc.org>\n"
@@ -20,512 +20,469 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: array.c:140
+#: array.c:266
#, c-format
msgid "from %s"
msgstr "de %s"
-#: array.c:248
+#: array.c:366
msgid "attempt to use a scalar value as array"
msgstr "tentative d'utiliser un scalaire comme tableau"
-#: array.c:251
-#, c-format
-msgid "attempt to use function `%s' as an array"
-msgstr "tentative d'utiliser la fonction 竄%s罈 comme tableau"
-
-#: array.c:254
+#: array.c:368
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
msgstr "tentative d'utiliser le param癡tre scalaire 竄%s罈 comme tableau"
-#: array.c:257
+#: array.c:371
#, c-format
msgid "attempt to use scalar `%s' as an array"
msgstr "tentative d'utiliser le scalaire 竄%s罈 comme tableau"
-#: array.c:302 array.c:707 builtin.c:84 builtin.c:1384 builtin.c:1426
-#: builtin.c:1439 builtin.c:1858 builtin.c:1870 eval.c:1135 eval.c:1139
-#: eval.c:1495 eval.c:1812
+#: array.c:418 array.c:584 builtin.c:85 builtin.c:1560 builtin.c:1602
+#: builtin.c:1615 builtin.c:2041 builtin.c:2053 eval.c:1109 eval.c:1113
+#: eval.c:1508
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "tentative d'utilisation du tableau 竄%s罈 dans un contexte scalaire"
-#: array.c:513
-#, c-format
-msgid "reference to uninitialized element `%s[\"%.*s\"]'"
-msgstr "r矇f矇rence un 矇l矇ment non initialis矇 竄%s[\"%.*s\"]罈"
-
-#: array.c:519
-#, c-format
-msgid "subscript of array `%s' is null string"
-msgstr "l'indice du tableau 竄%s罈 est une cha簾ne vide"
-
-#: array.c:723
+#: array.c:591
#, c-format
msgid "delete: index `%s' not in array `%s'"
msgstr "delete: l'indice 竄%s罈 est absent du tableau 竄%s罈"
-#: array.c:734 eval.c:1865
+#: array.c:605
#, c-format
msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
msgstr "tentative d'utiliser le scalaire 竄%s[\"%.*s\"]罈 comme tableau"
-#: array.c:910
-#, c-format
-msgid "%s: empty (null)\n"
-msgstr "%s: vide (non d矇fini)\n"
-
-#: array.c:915
-#, c-format
-msgid "%s: empty (zero)\n"
-msgstr "%s: vide (vide)\n"
-
-#: array.c:919
-#, c-format
-msgid "%s: table_size = %d, array_size = %d\n"
-msgstr "%s: table_size = %d, array_size = %d\n"
-
-#: array.c:954
-#, c-format
-msgid "%s: is parameter\n"
-msgstr "%s: est un param癡tre\n"
-
-#: array.c:958
-#, c-format
-msgid "%s: array_ref to %s\n"
-msgstr "%s: array_ref %s\n"
-
-#: array.c:963
-msgid "adump: argument not an array"
+#: array.c:784
+#, fuzzy
+msgid "adump: first argument not an array"
msgstr "adump: l'argument n'est pas un tableau"
-#: array.c:1086
+#: array.c:823
msgid "asort: second argument not an array"
msgstr "asort: le 2nd argument n'est pas un tableau"
-#: array.c:1087
+#: array.c:824
msgid "asorti: second argument not an array"
msgstr "asorti: le 2nd argument n'est pas un tableau"
-#: array.c:1094
+#: array.c:831
msgid "asort: first argument not an array"
msgstr "asort: le 1er argument n'est pas un tableau"
-#: array.c:1095
+#: array.c:832
msgid "asorti: first argument not an array"
msgstr "asorti: le 1er argument n'est pas un tableau"
-#: array.c:1102
+#: array.c:839
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr "asort: le 2nd argument ne doit pas 礙tre un sous-tableau du 1er"
-#: array.c:1103
+#: array.c:840
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr "asorti: le 2nd argument ne doit pas 礙tre un sous-tableau du 1er"
-#: array.c:1108
+#: array.c:845
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr "asort: le 1er argument ne doit pas 礙tre un sous-tableau du 2nd"
-#: array.c:1109
+#: array.c:846
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 2nd"
-#: array.c:1659
+#: array.c:1314
#, c-format
msgid "`%s' is invalid as a function name"
msgstr "竄%s罈 n'est pas un nom de fonction valide"
-#: array.c:1663
+#: array.c:1318
#, 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:249
+#: awkgram.y:223
#, c-format
msgid "%s blocks must have an action part"
msgstr "les blocs %s doivent avoir une partie action"
-#: awkgram.y:252
+#: awkgram.y:226
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:323 awkgram.y:334
+#: awkgram.y:295 awkgram.y:306
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:371
+#: awkgram.y:343
#, 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:432
+#: awkgram.y:389
msgid "regexp constant `//' looks like a C++ comment, but is not"
msgstr "l'expression rationnelle constante 竄//罈 n'est pas un commentaire C++"
-#: awkgram.y:436
+#: awkgram.y:393
#, 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:528
+#: awkgram.y:485
#, 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:549
+#: awkgram.y:506
msgid "duplicate `default' detected in switch body"
msgstr "plusieurs 竄default罈 ont 矇t矇 d矇tect矇s dans le corps du switch"
-#: awkgram.y:809
+#: awkgram.y:766
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:818
+#: awkgram.y:775
msgid "`continue' is not allowed outside a loop"
msgstr "竄continue罈 est interdit en dehors d'une boucle ou d'un switch"
-#: awkgram.y:828
+#: awkgram.y:785
#, c-format
msgid "`next' used in %s action"
msgstr "竄next罈 est utilis矇 dans l'action %s"
-#: awkgram.y:836
+#: awkgram.y:793
msgid "`nextfile' is a gawk extension"
msgstr "竄nextfile罈 est une extension gawk"
-#: awkgram.y:841
+#: awkgram.y:798
#, c-format
msgid "`nextfile' used in %s action"
msgstr "竄nextfile罈 est utilis矇 dans l'action %s"
-#: awkgram.y:865
+#: awkgram.y:822
msgid "`return' used outside function context"
msgstr "竄return罈 est utilis矇 hors du contexte d'une fonction"
-#: awkgram.y:925
+#: awkgram.y:896
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:995 awkgram.y:999 awkgram.y:1023
+#: awkgram.y:966 awkgram.y:970 awkgram.y:994
msgid "`delete array' is a gawk extension"
msgstr "竄delete array罈 est une extension gawk"
-#: awkgram.y:1019
+#: awkgram.y:990
msgid "`delete(array)' is a non-portable tawk extension"
msgstr "竄delete(array)罈 est une extension non portable de tawk"
-#: awkgram.y:1135
+#: awkgram.y:1108
msgid "multistage two-way pipelines don't work"
msgstr "impossible d'utiliser des tubes bidirectionnels en s矇rie"
-#: awkgram.y:1238
+#: awkgram.y:1211
msgid "regular expression on right of assignment"
msgstr "expression rationnelle droite d'une affectation"
-#: awkgram.y:1249
+#: awkgram.y:1222
msgid "regular expression on left of `~' or `!~' operator"
msgstr "expression rationnelle gauche d'un op矇rateur 竄~罈 ou 竄!~罈"
-#: awkgram.y:1265 awkgram.y:1419
+#: awkgram.y:1238 awkgram.y:1389
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:1275
+#: awkgram.y:1248
msgid "regular expression on right of comparison"
msgstr "expression rationnelle droite d'une comparaison"
-#: awkgram.y:1394
+#: awkgram.y:1364
#, c-format
msgid "`getline var' invalid inside `%s' rule"
msgstr "竄getline var罈 n'est pas valable dans une r癡gle 竄%s罈"
-#: awkgram.y:1397 eval.c:2504
+#: awkgram.y:1367
#, c-format
msgid "`getline' invalid inside `%s' rule"
msgstr "竄getline罈 n'est pas valable dans une r癡gle 竄%s罈"
-#: awkgram.y:1402
+#: awkgram.y:1372
msgid "non-redirected `getline' undefined inside END action"
msgstr "dans une action END, un 竄getline罈 non redirig矇 n'est pas d矇fini"
-#: awkgram.y:1421
+#: awkgram.y:1391
msgid "old awk does not support multidimensional arrays"
msgstr "l'ancien awk ne dispose pas des tableaux multidimensionnels"
-#: awkgram.y:1517
+#: awkgram.y:1488
msgid "call of `length' without parentheses is not portable"
msgstr "l'appel de 竄length罈 sans parenth癡ses n'est pas portable"
-#: awkgram.y:1580
+#: awkgram.y:1554
msgid "indirect function calls are a gawk extension"
msgstr "les appels indirects de fonctions sont une extension gawk"
-#: awkgram.y:1593
+#: awkgram.y:1567
#, 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:1671
+#: awkgram.y:1645
msgid "invalid subscript expression"
msgstr "expression indice non valide"
-#: awkgram.y:1711
-msgid "use of non-array as array"
-msgstr "utilisation d'un non tableau comme tableau"
-
-#: awkgram.y:1975 awkgram.y:1995 msg.c:98
+#: awkgram.y:1966 awkgram.y:1986 msg.c:112
msgid "warning: "
msgstr "avertissement: "
-#: awkgram.y:1993 msg.c:130
+#: awkgram.y:1984 msg.c:144
msgid "fatal: "
msgstr "fatal: "
-#: awkgram.y:2043
+#: awkgram.y:2034
msgid "unexpected newline or end of string"
msgstr "fin de cha簾ne ou passage la ligne inattendu"
-#: awkgram.y:2300 awkgram.y:2358 awkgram.y:2542
+#: awkgram.y:2299 awkgram.y:2357 awkgram.y:2545
#, 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:2301 awkgram.y:2359 builtin.c:122
+#: awkgram.y:2300 awkgram.y:2358 builtin.c:124
msgid "reason unknown"
msgstr "raison inconnue"
-#: awkgram.y:2317
+#: awkgram.y:2316
#, c-format
msgid "already included source file `%s'"
msgstr "le fichier source 竄%s罈 a d矇j 矇t矇 int矇gr矇"
-#: awkgram.y:2343
+#: awkgram.y:2342
msgid "@include is a gawk extension"
msgstr "@include est une extension gawk"
-#: awkgram.y:2349
+#: awkgram.y:2348
msgid "empty filename after @include"
msgstr "Le nom de fichier apr癡s @include est vide"
-#: awkgram.y:2494
+#: awkgram.y:2497
msgid "empty program text on command line"
msgstr "le programme indiqu矇 en ligne de commande est vide"
-#: awkgram.y:2609
+#: awkgram.y:2612
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "impossible de lire le fichier source 竄%s罈 (%s)"
-#: awkgram.y:2620
+#: awkgram.y:2623
#, c-format
msgid "source file `%s' is empty"
msgstr "le fichier source 竄%s罈 est vide"
-#: awkgram.y:2805
+#: awkgram.y:2800
msgid "source file does not end in newline"
msgstr "le fichier source ne se termine pas par un passage la ligne"
-#: awkgram.y:2882
+#: awkgram.y:2905
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:2906
+#: awkgram.y:2929
#, 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:2910
+#: awkgram.y:2933
#, 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:2917
+#: awkgram.y:2940
msgid "unterminated regexp"
msgstr "expression rationnelle non referm矇e"
-#: awkgram.y:2921
+#: awkgram.y:2944
msgid "unterminated regexp at end of file"
msgstr "expression rationnelle non referm矇e en fin de fichier"
-#: awkgram.y:2980
+#: awkgram.y:3003
msgid "use of `\\ #...' line continuation is not portable"
msgstr ""
"l'utilisation de 竄\\ #...罈 pour prolonger une ligne n'est pas portable"
-#: awkgram.y:2996
+#: awkgram.y:3019
msgid "backslash not last character on line"
msgstr "la barre oblique inverse n'est pas le dernier caract癡re de la ligne"
-#: awkgram.y:3057
+#: awkgram.y:3080
msgid "POSIX does not allow operator `**='"
msgstr "POSIX n'autorise pas l'op矇rateur 竄**=罈"
-#: awkgram.y:3059
+#: awkgram.y:3082
msgid "old awk does not support operator `**='"
msgstr "l'ancien awk ne dispose pas de l'op矇rateur 竄**=罈"
-#: awkgram.y:3068
+#: awkgram.y:3091
msgid "POSIX does not allow operator `**'"
msgstr "POSIX n'autorise pas l'op矇rateur 竄**罈"
-#: awkgram.y:3070
+#: awkgram.y:3093
msgid "old awk does not support operator `**'"
msgstr "l'ancien awk ne dispose pas de l'op矇rateur 竄**罈"
-#: awkgram.y:3105
+#: awkgram.y:3128
msgid "operator `^=' is not supported in old awk"
msgstr "l'ancien awk ne dispose pas de l'op矇rateur 竄^=罈"
-#: awkgram.y:3113
+#: awkgram.y:3136
msgid "operator `^' is not supported in old awk"
msgstr "l'ancien awk ne dispose pas de l'op矇rateur 竄^罈"
-#: awkgram.y:3206 awkgram.y:3222
+#: awkgram.y:3229 awkgram.y:3245
msgid "unterminated string"
msgstr "cha簾ne non referm矇e"
-#: awkgram.y:3418
+#: awkgram.y:3466
#, c-format
msgid "invalid char '%c' in expression"
msgstr "caract癡re non valide 竄%c罈 dans l'expression"
-#: awkgram.y:3465
+#: awkgram.y:3513
#, c-format
msgid "`%s' is a gawk extension"
msgstr "竄%s罈 est une extension gawk"
-#: awkgram.y:3470
+#: awkgram.y:3518
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr "竄%s罈 est une extension Bell Labs"
-#: awkgram.y:3475
+#: awkgram.y:3523
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX n'autorise pas 竄%s罈"
-#: awkgram.y:3483
+#: awkgram.y:3531
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "l'ancien awk ne dispose pas de 竄%s罈"
-#: awkgram.y:3550
+#: awkgram.y:3598
msgid "`goto' considered harmful!\n"
msgstr "竄goto est jug矇 dangereux!罈 (Edsger W. Dijkstra)\n"
-#: awkgram.y:3601
+#: awkgram.y:3632
#, 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:3636
+#: awkgram.y:3667
#, 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:3641
+#: awkgram.y:3672
#, 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:3714 awkgram.y:3717
+#: awkgram.y:3751 awkgram.y:3754
msgid "match: third argument is a gawk extension"
msgstr "match: le 3e argument est une extension gawk"
-#: awkgram.y:3771 awkgram.y:3774
+#: awkgram.y:3808 awkgram.y:3811
msgid "close: second argument is a gawk extension"
msgstr "close: le 2e argument est une extension gawk"
-#: awkgram.y:3786
+#: awkgram.y:3823
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"utilisation incorrecte de dcgettext(_\"...\"): enlevez le soulign矇 de t礙te"
-#: awkgram.y:3801
+#: awkgram.y:3838
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"utilisation incorrecte de dcngettext(_\"...\"): enlevez le soulign矇 de t礙te"
-#: awkgram.y:3893
-#, 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:3935
+#: awkgram.y:3904
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "fonction 竄%s罈: le param癡tre 竄%s罈 masque la variable globale"
-#: awkgram.y:4093
+#: awkgram.y:3961
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "impossible d'ouvrir 竄%s罈 en 矇criture (%s)"
-#: awkgram.y:4094
+#: awkgram.y:3962
msgid "sending variable list to standard error"
msgstr "envoi de la liste des variables vers la sortie d'erreur standard"
-#: awkgram.y:4100
+#: awkgram.y:3970
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: 矇chec de la fermeture (%s)"
-#: awkgram.y:4152
+#: awkgram.y:3995
msgid "shadow_funcs() called twice!"
msgstr "shadows_funcs() a 矇t矇 appel矇 deux fois!"
-#: awkgram.y:4158
+#: awkgram.y:4003
msgid "there were shadowed variables."
msgstr "il y avait des variables masqu矇es."
-#: awkgram.y:4188
+#: awkgram.y:4074
+#, c-format
+msgid "function name `%s' previously defined"
+msgstr "nom de fonction 竄%s罈 d矇j d矇fini"
+
+#: awkgram.y:4120
#, 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:4192
+#: awkgram.y:4123
#, 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:4208
+#: awkgram.y:4131
#, c-format
-msgid "function name `%s' previously defined"
-msgstr "nom de fonction 竄%s罈 d矇j d矇fini"
+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:4376 awkgram.y:4382
+#: awkgram.y:4210 awkgram.y:4216
#, c-format
msgid "function `%s' called but never defined"
msgstr "fonction 竄%s罈 appel矇e sans 礙tre d矇finie"
-#: awkgram.y:4385
+#: awkgram.y:4219
#, c-format
msgid "function `%s' defined but never called directly"
msgstr "fonction 竄%s罈 d矇finie mais jamais appel矇e directement"
-#: awkgram.y:4417
+#: awkgram.y:4251
#, 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:4526
+#: awkgram.y:4297
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -534,232 +491,232 @@ msgstr ""
"fonction 竄%s罈 appel矇e avec un espace entre son nom\n"
"et 竄(罈, ou utilis矇e comme variable ou tableau"
-#: awkgram.y:4773 eval.c:2056
+#: awkgram.y:4505
msgid "division by zero attempted"
msgstr "tentative de division par z矇ro"
-#: awkgram.y:4782 eval.c:2072
+#: awkgram.y:4514
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "tentative de division par z矇ro dans 竄%%罈"
-#: builtin.c:120
+#: builtin.c:122
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "矇chec de %s vers 竄%s罈 (%s)"
-#: builtin.c:121
+#: builtin.c:123
msgid "standard output"
msgstr "sortie standard"
-#: builtin.c:135
+#: builtin.c:137
msgid "exp: received non-numeric argument"
msgstr "exp: l'argument n'est pas num矇rique"
-#: builtin.c:141
+#: builtin.c:143
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: l'argument %g est hors limite"
-#: builtin.c:200
+#: builtin.c:202
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: vidage impossible: le tube 竄%s罈 est ouvert en lecture et non en "
"矇criture"
-#: builtin.c:203
+#: builtin.c:205
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: vidage impossible: fichier 竄%s罈 ouvert en lecture, pas en "
"矇criture"
-#: builtin.c:215
+#: builtin.c:217
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr ""
"fflush: 竄%s罈 n'est ni un fichier ouvert, ni un tube, ni un co-processus"
-#: builtin.c:333
+#: builtin.c:335
msgid "index: received non-string first argument"
msgstr "index: le premier argument n'est pas une cha簾ne"
-#: builtin.c:335
+#: builtin.c:337
msgid "index: received non-string second argument"
msgstr "index: le second argument n'est pas une cha簾ne"
-#: builtin.c:457
+#: builtin.c:461
msgid "int: received non-numeric argument"
msgstr "int: l'argument n'est pas num矇rique"
-#: builtin.c:493
+#: builtin.c:497
msgid "length: received array argument"
msgstr "length: l'argument re癟u est un tableau"
-#: builtin.c:496
+#: builtin.c:500
msgid "`length(array)' is a gawk extension"
msgstr "竄length(tableau)罈 est une extension gawk"
-#: builtin.c:504
+#: builtin.c:508
msgid "length: received non-string argument"
msgstr "length: l'argument n'est pas une cha簾ne"
-#: builtin.c:535
+#: builtin.c:539
msgid "log: received non-numeric argument"
msgstr "log: l'argument n'est pas num矇rique"
-#: builtin.c:538
+#: builtin.c:542
#, c-format
msgid "log: received negative argument %g"
msgstr "log: l'argument est n矇gatif %g"
-#: builtin.c:694 builtin.c:699
+#: builtin.c:740 builtin.c:745
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:761
+#: builtin.c:815
#, c-format
msgid "field width is ignored for `%%' specifier"
msgstr "taille du champ de la sp矇cification 竄%%罈 ignor矇e"
-#: builtin.c:763
+#: builtin.c:817
#, c-format
msgid "precision is ignored for `%%' specifier"
msgstr "pr矇cision de la sp矇cification 竄%%罈 ignor矇e"
-#: builtin.c:765
+#: builtin.c:819
#, 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:816
+#: builtin.c:870
msgid "fatal: `$' is not permitted in awk formats"
msgstr "fatal: 竄$罈 n'est pas autoris矇 dans les formats awk"
-#: builtin.c:825
+#: builtin.c:879
msgid "fatal: arg count with `$' must be > 0"
msgstr "fatal: le num矇ro d'argument de 竄$罈 doit 礙tre > 0"
-#: builtin.c:829
+#: builtin.c:883
#, 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:833
+#: builtin.c:887
msgid "fatal: `$' not permitted after period in format"
msgstr "fatal: dans un format, 竄$罈 ne doit pas suivre un point"
-#: builtin.c:849
+#: builtin.c:903
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:920
+#: builtin.c:975
msgid "`l' is meaningless in awk formats; ignored"
msgstr "竄l罈 n'a aucun sens dans un format awk; ignor矇"
-#: builtin.c:924
+#: builtin.c:979
msgid "fatal: `l' is not permitted in POSIX awk formats"
msgstr "fatal: 竄l罈 est interdit dans un format awk POSIX"
-#: builtin.c:937
+#: builtin.c:992
msgid "`L' is meaningless in awk formats; ignored"
msgstr "竄L罈 n'a aucun sens dans un format awk; ignor矇"
-#: builtin.c:941
+#: builtin.c:996
msgid "fatal: `L' is not permitted in POSIX awk formats"
msgstr "fatal: 竄L罈 est interdit dans un format awk POSIX"
-#: builtin.c:954
+#: builtin.c:1009
msgid "`h' is meaningless in awk formats; ignored"
msgstr "竄h罈 n'a aucun sens dans un format awk; ignor矇"
-#: builtin.c:958
+#: builtin.c:1013
msgid "fatal: `h' is not permitted in POSIX awk formats"
msgstr "fatal: 竄h罈 est interdit dans un format awk POSIX"
-#: builtin.c:1271
+#: builtin.c:1408
#, 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:1331
+#: builtin.c:1506
#, 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:1336
+#: builtin.c:1511
msgid "fatal: not enough arguments to satisfy format string"
msgstr "fatal: pas assez d'arguments pour satisfaire la cha簾ne de formatage"
-#: builtin.c:1338
+#: builtin.c:1513
msgid "^ ran out for this one"
msgstr "^ court pour celui-ci"
-#: builtin.c:1345
+#: builtin.c:1520
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: sp矇cification de format sans lettre de contr繫le"
-#: builtin.c:1348
+#: builtin.c:1523
msgid "too many arguments supplied for format string"
msgstr "trop d'arguments pour la cha簾ne de formatage"
-#: builtin.c:1422 builtin.c:1433
+#: builtin.c:1598 builtin.c:1609
msgid "printf: no arguments"
msgstr "printf: aucun argument"
-#: builtin.c:1474
+#: builtin.c:1650
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: l'argument n'est pas num矇rique"
-#: builtin.c:1478
+#: builtin.c:1654
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: appel矇 avec un argument n矇gatif %g"
-#: builtin.c:1502
+#: builtin.c:1685
#, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: la longueur %g n'est pas >= 1"
-#: builtin.c:1504
+#: builtin.c:1687
#, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: la longueur %g n'est pas >= 0"
-#: builtin.c:1511
+#: builtin.c:1694
#, 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:1516
+#: builtin.c:1699
#, 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:1528
+#: builtin.c:1711
#, 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:1533
+#: builtin.c:1716
#, 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:1558
+#: builtin.c:1741
msgid "substr: source string is zero length"
msgstr "substr: la cha簾ne source est de longueur nulle"
-#: builtin.c:1574
+#: builtin.c:1757
#, 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:1582
+#: builtin.c:1765
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -767,237 +724,232 @@ 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:1656
+#: builtin.c:1839
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:1679
+#: builtin.c:1862
msgid "strftime: received non-numeric second argument"
msgstr "strftime: le second argument n'est pas num矇rique"
-#: builtin.c:1682
+#: builtin.c:1866
msgid "strftime: second argument less than 0 or too big for time_t"
-msgstr ""
+msgstr "strftime: second argument n矇gatif ou trop grand pour time_t"
-#: builtin.c:1689
+#: builtin.c:1873
msgid "strftime: received non-string first argument"
msgstr "strftim: le premier argument n'est pas une cha簾ne"
-#: builtin.c:1695
+#: builtin.c:1880
msgid "strftime: received empty format string"
msgstr "strftime: la cha簾ne de formatage est vide"
-#: builtin.c:1761
+#: builtin.c:1946
msgid "mktime: received non-string argument"
msgstr "mktime: l'argument n'est pas une cha簾ne"
-#: builtin.c:1778
+#: builtin.c:1963
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:1813
+#: builtin.c:1998
msgid "'system' function not allowed in sandbox mode"
msgstr "La fonction 竄system罈 est interdite en isolement (mode sandbox)"
-#: builtin.c:1818
+#: builtin.c:2003
msgid "system: received non-string argument"
msgstr "system: l'argument n'est pas une cha簾ne"
-#: builtin.c:1873 eval.c:1159 eval.c:1790 eval.c:1803
-#, c-format
-msgid "reference to uninitialized variable `%s'"
-msgstr "r矇f矇rence une variable non initialis矇e 竄%s罈"
-
-#: builtin.c:1940
+#: builtin.c:2121
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "r矇f矇rence un champ non initialis矇 竄$%d罈"
-#: builtin.c:2027
+#: builtin.c:2208
msgid "tolower: received non-string argument"
msgstr "tolower: l'argument n'est pas une cha簾ne"
-#: builtin.c:2061
+#: builtin.c:2242
msgid "toupper: received non-string argument"
msgstr "toupper: l'argument n'est pas une cha簾ne"
-#: builtin.c:2097
+#: builtin.c:2278
msgid "atan2: received non-numeric first argument"
msgstr "atan2: le premier argument n'est pas num矇rique"
-#: builtin.c:2099
+#: builtin.c:2280
msgid "atan2: received non-numeric second argument"
msgstr "atan2: le second argument n'est pas num矇rique"
-#: builtin.c:2118
+#: builtin.c:2299
msgid "sin: received non-numeric argument"
msgstr "sin: l'argument n'est pas num矇rique"
-#: builtin.c:2134
+#: builtin.c:2315
msgid "cos: received non-numeric argument"
msgstr "cos: l'argument n'est pas num矇rique"
-#: builtin.c:2187
+#: builtin.c:2368
msgid "srand: received non-numeric argument"
msgstr "srand: l'argument n'est pas num矇rique"
-#: builtin.c:2218
+#: builtin.c:2399
msgid "match: third argument is not an array"
msgstr "match: le 3e argument n'est pas un tableau"
-#: builtin.c:2482
+#: builtin.c:2664
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: le 3e argument vaut 0, il sera trait矇 comme un 1"
-#: builtin.c:2775
+#: builtin.c:2957
msgid "lshift: received non-numeric first argument"
msgstr "lshift: le premier argument n'est pas num矇rique"
-#: builtin.c:2777
+#: builtin.c:2959
msgid "lshift: received non-numeric second argument"
msgstr "lshift: le second argument re癟u n'est pas num矇rique"
-#: builtin.c:2783
+#: builtin.c:2965
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr ""
"lshift(%lf, %lf): les valeurs n矇gatives donneront des r矇sultats inattendus"
-#: builtin.c:2785
+#: builtin.c:2967
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr "lshift(%lf, %lf): les valeurs non enti癡res seront tronqu矇es"
-#: builtin.c:2787
+#: builtin.c:2969
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
"lshift(%lf, %lf): un d矇calage trop grand donnera des r矇sultats inattendus"
-#: builtin.c:2812
+#: builtin.c:2994
msgid "rshift: received non-numeric first argument"
msgstr "rshift: le premier argument n'est pas num矇rique"
-#: builtin.c:2814
+#: builtin.c:2996
msgid "rshift: received non-numeric second argument"
msgstr "rshift: le second argument re癟u n'est pas num矇rique"
-#: builtin.c:2820
+#: builtin.c:3002
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr ""
"rshift(%lf, %lf): les valeurs n矇gatives donneront des r矇sultats inattendus"
-#: builtin.c:2822
+#: builtin.c:3004
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr "rshift(%lf, %lf): les valeurs non enti癡res seront tronqu矇es"
-#: builtin.c:2824
+#: builtin.c:3006
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
"rshift(%lf, %lf): un d矇calage trop grand donnera des r矇sultats inattendus"
-#: builtin.c:2849
+#: builtin.c:3031
msgid "and: received non-numeric first argument"
msgstr "and: le premier argument n'est pas num矇rique"
-#: builtin.c:2851
+#: builtin.c:3033
msgid "and: received non-numeric second argument"
msgstr "and: le second argument re癟u n'est pas num矇rique"
-#: builtin.c:2857
+#: builtin.c:3039
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr ""
"and(%lf, %lf): les valeurs n矇gatives donneront des r矇sultats inattendus"
-#: builtin.c:2859
+#: builtin.c:3041
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr "and(%lf, %lf): les valeurs non enti癡res seront tronqu矇es"
-#: builtin.c:2884
+#: builtin.c:3066
msgid "or: received non-numeric first argument"
msgstr "or: le premier argument n'est pas num矇rique"
-#: builtin.c:2886
+#: builtin.c:3068
msgid "or: received non-numeric second argument"
msgstr "or: le second argument re癟u n'est pas num矇rique"
-#: builtin.c:2892
+#: builtin.c:3074
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr ""
"or(%lf, %lf): les valeurs n矇gatives donneront des r矇sultats inattendus"
-#: builtin.c:2894
+#: builtin.c:3076
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr "or(%lf, %lf): les valeurs non enti癡res seront tronqu矇es"
-#: builtin.c:2922
+#: builtin.c:3102
msgid "xor: received non-numeric first argument"
msgstr "xor: le premier argument n'est pas num矇rique"
-#: builtin.c:2924
+#: builtin.c:3104
msgid "xor: received non-numeric second argument"
msgstr "xor: le second argument re癟u n'est pas num矇rique"
-#: builtin.c:2930
+#: builtin.c:3110
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr ""
"xor(%lf, %lf): les valeurs n矇gatives donneront des r矇sultats inattendus"
-#: builtin.c:2932
+#: builtin.c:3112
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr "xor(%lf, %lf): les valeurs non enti癡res seront tronqu矇es"
-#: builtin.c:2956 builtin.c:2962
+#: builtin.c:3136
msgid "compl: received non-numeric argument"
msgstr "compl: l'argument n'est pas num矇rique"
-#: builtin.c:2964
+#: builtin.c:3142
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr "compl(%lf): les valeurs n矇gatives donneront des r矇sultats inattendus"
-#: builtin.c:2966
+#: builtin.c:3144
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr "compl(%lf): les valeurs non enti癡res seront tronqu矇es"
-#: builtin.c:3135
+#: builtin.c:3313
#, 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"
-#: eval.c:412
+#: eval.c:395
#, c-format
msgid "unknown nodetype %d"
msgstr "type de nud %d inconnu"
-#: eval.c:423 eval.c:437
+#: eval.c:406 eval.c:420
#, c-format
msgid "unknown opcode %d"
msgstr "code op矇ration %d inconnu"
-#: eval.c:434
+#: eval.c:417
#, 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:488
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr "d矇bordement de tampon dans genflag2str"
-#: eval.c:698
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -1008,828 +960,792 @@ msgstr ""
"\t# Pile des appels de fonctions:\n"
"\n"
-#: eval.c:725
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
msgstr "竄IGNORECASE罈 est une extension gawk"
-#: eval.c:754
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr "竄BINMODE罈 est une extension gawk"
-#: eval.c:812
+#: eval.c:793
#, 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:902
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "sp矇cification de 竄%sFMT罈 erron矇e 竄%s罈"
-#: eval.c:980
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "d矇sactivation de 竄--lint罈 en raison d'une affectation 竄LINT罈"
-#: eval.c:1127 eval.c:1777
-#, c-format
-msgid "can't use function name `%s' as variable or array"
-msgstr "impossible d'utiliser la fonction 竄%s罈 comme variable ou tableau"
-
-#: eval.c:1158 eval.c:1789 eval.c:1802
+#: eval.c:1132
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "r矇f矇rence un argument non initialis矇 竄%s罈"
-#: eval.c:1177
+#: eval.c:1133
+#, c-format
+msgid "reference to uninitialized variable `%s'"
+msgstr "r矇f矇rence une variable non initialis矇e 竄%s罈"
+
+#: eval.c:1151
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:1179
+#: eval.c:1153
msgid "attempt to field reference from null string"
msgstr "tentative de r矇f矇rence un champ via une cha簾ne nulle"
-#: eval.c:1185
+#: eval.c:1161
#, c-format
msgid "attempt to access field %ld"
msgstr "tentative d'acc癡s au champ %ld"
-#: eval.c:1194
+#: eval.c:1170
#, c-format
msgid "reference to uninitialized field `$%ld'"
msgstr "r矇f矇rence un champ non initialis矇 竄$%ld罈"
-#: eval.c:1256
+#: eval.c:1257
#, 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:1437
+#: eval.c:1452
#, c-format
msgid "unwind_stack: unexpected type `%s'"
msgstr "unwind_stack: type 竄%s罈 inattendu"
-#: eval.c:1532
+#: eval.c:1546
msgid "division by zero attempted in `/='"
msgstr "tentative de division par z矇ro dans 竄/=罈"
-#: eval.c:1539
+#: eval.c:1553
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "tentative de division par z矇ro dans 竄%%=罈"
-#: eval.c:1876 eval.c:2122
-#, c-format
-msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context"
-msgstr ""
-"tentative d'utilisation du tableau 竄%s[\"%.*s\"]罈 dans un contexte scalaire"
-
-#: eval.c:1907
-msgid "assignment used in conditional context"
-msgstr "affectation utilis矇e dans un contexte conditionnel"
-
-#: eval.c:1911
-msgid "statement has no effect"
-msgstr "la d矇claration est sans effet"
-
-#: eval.c:2343
-#, c-format
-msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
-msgstr "boucle for: la taille du tableau 竄%s罈 est pass矇e de %ld %ld"
-
-#: eval.c:2458
-#, c-format
-msgid "function called indirectly through `%s' does not exist"
-msgstr "la fonction indirectement appel矇e via 竄%s罈 n'existe pas"
-
-#: eval.c:2470
-#, c-format
-msgid "function `%s' not defined"
-msgstr "fonction 竄%s罈 non d矇finie"
-
-#: eval.c:2511
-#, c-format
-msgid "non-redirected `getline' invalid inside `%s' rule"
-msgstr "un 竄getline罈 non redirig矇 n'est pas valable dans une r癡gle 竄%s罈"
-
-#: eval.c:2600
-#, c-format
-msgid "error reading input file `%s': %s"
-msgstr "erreur lors de la lecture du fichier en entr矇e 竄%s罈: %s"
-
-#: eval.c:2614
-#, c-format
-msgid "`nextfile' cannot be called from a `%s' rule"
-msgstr "竄nextfile罈 ne peut pas 礙tre appel矇 depuis une r癡gle 竄%s罈"
-
-#: eval.c:2694
-#, c-format
-msgid "`next' cannot be called from a `%s' rule"
-msgstr "竄next罈 ne peut pas 礙tre appel矇 depuis une r癡gle 竄%s罈"
-
-#: eval.c:2760
-#, c-format
-msgid "Sorry, don't know how to interpret `%s'"
-msgstr "D矇sol矇, je ne sais pas comment interpr矇ter 竄%s罈"
-
-#: ext.c:64
+#: ext.c:70
msgid "extensions are not allowed in sandbox mode"
msgstr "les extensions sont interdites en isolement (mode sandbox)"
-#: ext.c:70 ext.c:75
+#: ext.c:73
msgid "`extension' is a gawk extension"
msgstr "竄extension罈 est une extension gawk"
-#: ext.c:85
-#, c-format
-msgid "fatal: extension: cannot open `%s' (%s)\n"
+#: ext.c:80
+#, fuzzy, c-format
+msgid "extension: cannot open library `%s' (%s)\n"
msgstr "fatal: extension: impossible d'ouvrir 竄%s罈 (%s)\n"
-#: ext.c:94
-#, c-format
+#: ext.c:86
+#, fuzzy, c-format
msgid ""
-"fatal: extension: library `%s': does not define "
-"`plugin_is_GPL_compatible' (%s)\n"
+"extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n"
msgstr ""
"fatal: extension: la biblioth癡que 竄%s罈ne d矇finit pas "
"竄plugin_is_GPL_compatible罈 (%s)\n"
-#: ext.c:103
-#, c-format
-msgid "fatal: extension: library `%s': cannot call function `%s' (%s)\n"
+#: ext.c:90
+#, fuzzy, c-format
+msgid "extension: library `%s': cannot call function `%s' (%s)\n"
msgstr ""
"fatal: extension: biblioth癡que 竄%s罈: impossible d'appeler la fonction "
"竄%s罈 (%s)\n"
-#: ext.c:137
+#: ext.c:118
msgid "extension: missing function name"
msgstr "extension: nom de fonction manquant"
-#: ext.c:142
+#: ext.c:123
#, 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:151
+#: ext.c:131
#, c-format
msgid "extension: can't redefine function `%s'"
msgstr "extension: impossible de red矇finir la fonction 竄%s罈"
-#: ext.c:155
+#: ext.c:135
#, c-format
msgid "extension: function `%s' already defined"
msgstr "extension: fonction 竄%s罈 est d矇j d矇finie"
-#: ext.c:160
+#: ext.c:139
#, c-format
msgid "extension: function name `%s' previously defined"
msgstr "extension: nom de la fonction 竄%s罈 d矇j d矇fini"
-#: ext.c:162
+#: ext.c:141
#, 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:166
+#: ext.c:144
#, 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:269
+#: ext.c:206
#, 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:272
+#: ext.c:209
#, c-format
msgid "function `%s': missing argument #%d"
msgstr "fonction 竄%s罈: argument #%d manquant"
-#: ext.c:289
+#: ext.c:226
#, 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:293
+#: ext.c:230
#, 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:306
+#: ext.c:244
msgid "Operation Not Supported"
msgstr "Op矇ration non disponible"
-#: field.c:328
+#: ext.c:256
+msgid "dynamic loading of library not supported"
+msgstr ""
+
+#: field.c:339
msgid "NF set to negative value"
msgstr "une valeur n矇gative a 矇t矇 assign矇e NF"
-#: field.c:951 field.c:958 field.c:962
+#: field.c:962 field.c:969 field.c:973
msgid "split: fourth argument is a gawk extension"
msgstr "split: le 4e argument est une extension gawk"
-#: field.c:955
+#: field.c:966
msgid "split: fourth argument is not an array"
msgstr "split: le 4e argument n'est pas un tableau"
-#: field.c:969
+#: field.c:980
msgid "split: second argument is not an array"
msgstr "split: le 2e argument n'est pas un tableau"
-#: field.c:973
+#: field.c:984
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:978
+#: field.c:989
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:981
+#: field.c:992
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:1010
+#: field.c:1021
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:1050
+#: field.c:1061
msgid "patsplit: fourth argument is not an array"
msgstr "patsplit: le 4e argument n'est pas un tableau"
-#: field.c:1055
+#: field.c:1066
msgid "patsplit: second argument is not an array"
msgstr "patsplit: le 2e argument n'est pas un tableau"
-#: field.c:1061
+#: field.c:1072
msgid "patsplit: third argument must be non-null"
msgstr "patsplit: le 3e argument n'est pas un tableau"
-#: field.c:1065
+#: field.c:1076
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:1070
+#: field.c:1081
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:1073
+#: field.c:1084
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:1110
+#: field.c:1122
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "竄FIELDWIDTHS罈 est une extension gawk"
-#: field.c:1173
+#: field.c:1186
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr "valeur de FIELDWIDTHS non valide, pr癡s de 竄%s罈"
-#: field.c:1246
+#: field.c:1259
msgid "null string for `FS' is a gawk extension"
msgstr "utiliser une cha簾ne vide pour 竄FS罈 est une extension gawk"
-#: field.c:1250
+#: field.c:1263
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:1369
+#: field.c:1382
msgid "`FPAT' is a gawk extension"
msgstr "竄FPAT罈 est une extension gawk"
-#: getopt.c:574 getopt.c:590
-#, c-format
-msgid "%s: option '%s' is ambiguous\n"
+#: getopt.c:604 getopt.c:633
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
msgstr "%s: l'option 竄%s罈 est ambigu禱\n"
-#: getopt.c:623 getopt.c:627
+#: getopt.c:679 getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: l'option 竄--%s罈 n'accepte pas d'argument\n"
-#: getopt.c:636 getopt.c:641
+#: getopt.c:692 getopt.c:697
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: l'option 竄%c%s罈 n'accepte pas d'argument\n"
-#: getopt.c:684 getopt.c:703
+#: getopt.c:740 getopt.c:759
#, c-format
msgid "%s: option '--%s' requires an argument\n"
msgstr "%s: l'option 竄--%s罈 n矇cessite un argument\n"
-#: getopt.c:741 getopt.c:744
+#: getopt.c:797 getopt.c:800
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: option non reconnue 竄--%s罈\n"
-#: getopt.c:752 getopt.c:755
+#: getopt.c:808 getopt.c:811
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: option non reconnue 竄%c%s罈\n"
-#: getopt.c:804 getopt.c:807
+#: getopt.c:860 getopt.c:863
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: option non valide -- 竄%c罈\n"
-#: getopt.c:857 getopt.c:874 getopt.c:1082 getopt.c:1100
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s: l'option requiert un argument -- 竄%c罈\n"
-#: getopt.c:930 getopt.c:946
+#: getopt.c:989 getopt.c:1005
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: l'option 竄-W %s罈 est ambigu禱\n"
-#: getopt.c:970 getopt.c:988
+#: getopt.c:1029 getopt.c:1047
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: l'option 竄-W %s罈 n'accepte pas d'argument\n"
-#: getopt.c:1009 getopt.c:1027
+#: getopt.c:1068 getopt.c:1086
#, c-format
msgid "%s: option '-W %s' requires an argument\n"
msgstr "%s: l'option 竄-W %s罈 n矇cessite un argument\n"
-#: io.c:280
+#: io.c:326
#, 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:283 io.c:385
+#: io.c:329 io.c:438
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "impossible d'ouvrir le fichier 竄%s罈 en lecture (%s)"
-#: io.c:501
+#: io.c:568
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "矇chec de la fermeture du fd %d (竄%s罈): %s"
-#: io.c:578
+#: io.c:645
msgid "redirection not allowed in sandbox mode"
msgstr "les redirections sont interdites en isolement (mode sandbox)"
-#: io.c:612
+#: io.c:679
#, 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:618
+#: io.c:685
#, 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:624
+#: io.c:690
#, 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:667
+#: io.c:733
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "m矇lange non n矇cessaire de 竄>罈 et 竄>>罈 pour le fichier 竄%.*s罈"
-#: io.c:720
+#: io.c:786
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "impossible d'ouvrir le tube 竄%s罈 en sortie (%s)"
-#: io.c:730
+#: io.c:796
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "impossible d'ouvrir le tube 竄%s罈 en entr矇e (%s)"
-#: io.c:753
+#: io.c:819
#, 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:835
+#: io.c:900
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "impossible de rediriger depuis 竄%s罈 (%s)"
-#: io.c:838
+#: io.c:903
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "impossible de rediriger vers 竄%s罈 (%s)"
-#: io.c:889
+#: io.c:954
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:905
+#: io.c:970
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "矇chec de la fermeture de 竄%s罈 (%s)"
-#: io.c:913
+#: io.c:978
msgid "too many pipes or input files open"
msgstr "trop de fichiers d'entr矇es ou de tubes ouverts"
-#: io.c:935
+#: io.c:1000
msgid "close: second argument must be `to' or `from'"
msgstr "close: le second argument doit 礙tre 竄to罈 ou 竄from罈"
-#: io.c:952
+#: io.c:1017
#, 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:957
+#: io.c:1022
msgid "close of redirection that was never opened"
msgstr "fermeture d'une redirection qui n'a jamais 矇t矇 ouverte"
-#: io.c:1054
+#: io.c:1120
#, 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:1070
+#: io.c:1137
#, 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:1073
+#: io.c:1140
#, 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:1093
+#: io.c:1160
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "aucune fermeture explicite du connecteur 竄%s罈 fournie"
-#: io.c:1096
+#: io.c:1163
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "aucune fermeture explicite du co-processus 竄%s罈 fournie"
-#: io.c:1099
+#: io.c:1166
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "aucune fermeture explicite du tube 竄%s罈 fournie"
-#: io.c:1102
+#: io.c:1169
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "aucune fermeture explicite du fichier 竄%s罈 fournie"
-#: io.c:1130 io.c:1185 main.c:793 main.c:830
+#: io.c:1197 io.c:1252 main.c:825 main.c:862
#, c-format
msgid "error writing standard output (%s)"
msgstr "erreur lors de l'矇criture vers la sortie standard (%s)"
-#: io.c:1134 io.c:1190
+#: io.c:1201 io.c:1257
#, c-format
msgid "error writing standard error (%s)"
msgstr "erreur lors de l'矇criture vers l'erreur standard (%s)"
-#: io.c:1142
+#: io.c:1209
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "矇chec du vidage du tube 竄%s罈 (%s)."
-#: io.c:1145
+#: io.c:1212
#, 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:1148
+#: io.c:1215
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "矇chec du vidage vers le fichier 竄%s罈 (%s)"
-#: io.c:1263
+#: io.c:1329
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr "le port local %s n'est pas valide dans 竄/inet罈"
-#: io.c:1280
+#: io.c:1347
#, 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:1432
+#: io.c:1499
#, 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:1446
+#: io.c:1513
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "nom de fichier sp矇cial 竄%s罈 incomplet"
-#: io.c:1463
+#: io.c:1530
msgid "must supply a remote hostname to `/inet'"
msgstr "un nom d'h繫te distant doit 礙tre fourni 竄/inet罈"
-#: io.c:1481
+#: io.c:1548
msgid "must supply a remote port to `/inet'"
msgstr "un port distant doit 礙tre fourni 竄/inet罈"
-#: io.c:1527
+#: io.c:1594
msgid "TCP/IP communications are not supported"
msgstr "les communications TCP/IP ne sont pas disponibles"
-#: io.c:1694
+#: io.c:1764
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "impossible d'ouvrir 竄%s罈, mode 竄%s罈"
-#: io.c:1748
+#: io.c:1814
#, c-format
msgid "close of master pty failed (%s)"
msgstr "矇chec de la fermeture du pty ma簾tre (%s)"
-#: io.c:1750 io.c:1918 io.c:2075
+#: io.c:1816 io.c:1984 io.c:2145
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "矇chec de la fermeture de stdout du processus fils (%s)"
-#: io.c:1753
+#: io.c:1819
#, 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:1755 io.c:1923
+#: io.c:1821 io.c:1989
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "矇chec de fermeture du stdin du processus fils (%s)"
-#: io.c:1758
+#: io.c:1824
#, 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:1760 io.c:1781
+#: io.c:1826 io.c:1847
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "矇chec de la fermeture du pty esclave (%s)"
-#: io.c:1859 io.c:1921 io.c:2053 io.c:2078
+#: io.c:1925 io.c:1987 io.c:2122 io.c:2148
#, 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:1866 io.c:1926
+#: io.c:1932 io.c:1992
#, 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:1886 io.c:2068
+#: io.c:1952 io.c:2138
msgid "restoring stdout in parent process failed\n"
msgstr "矇chec de la restauration du stdout dans le processus parent\n"
-#: io.c:1894
+#: io.c:1960
msgid "restoring stdin in parent process failed\n"
msgstr "矇chec de la restauration du stdin dans le processus parent\n"
-#: io.c:1929 io.c:2080 io.c:2094
+#: io.c:1995 io.c:2150 io.c:2164
#, c-format
msgid "close of pipe failed (%s)"
msgstr "矇chec de la fermeture du tube (%s)"
-#: io.c:1974
+#: io.c:2040
msgid "`|&' not supported"
msgstr "竄|&罈 non disponible"
-#: io.c:2040
+#: io.c:2107
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "impossible d'ouvrir le tube 竄%s罈 (%s)"
-#: io.c:2088
+#: io.c:2158
#, 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:2521
+#: io.c:2637
#, c-format
msgid "data file `%s' is empty"
msgstr "le fichier de donn矇es 竄%s罈 est vide"
-#: io.c:2562 io.c:2570
+#: io.c:2678 io.c:2686
msgid "could not allocate more input memory"
msgstr "impossible d'allouer plus de m矇moire d'entr矇e"
-#: io.c:3128
+#: io.c:3236
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:3233
+#: io.c:3326
msgid "IPv6 communication is not supported"
msgstr "les communications IPv6 ne sont pas disponibles"
-#: main.c:364
+#: main.c:355
msgid "`-m[fr]' option irrelevant in gawk"
msgstr "l'option 竄-m[fr]罈 n'est pas pertinente en gawk"
-#: main.c:366
+#: main.c:357
msgid "-m option usage: `-m[fr] nnn'"
msgstr "utilisation de l'option 竄-m罈: 竄-m[fr] nnn罈"
-#: main.c:389
+#: main.c:386
msgid "empty argument to `-e/--source' ignored"
msgstr "argument vide de l'option 竄-e / --source罈 ignor矇"
-#: main.c:460
+#: main.c:472
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: option 竄-W %s罈 non reconnue, ignor矇e\n"
-#: main.c:513
+#: main.c:518
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: l'option requiert un argument -- %c\n"
-#: main.c:534
+#: main.c:539
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
"variable d'environnement 竄POSIXLY__CORRECT罈 d矇finie: activation de 竄--"
"posix罈"
-#: main.c:540
+#: main.c:545
msgid "`--posix' overrides `--traditional'"
msgstr "竄--posix罈 prend le pas sur 竄--traditional罈"
-#: main.c:551
+#: main.c:556
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr ""
"竄--posix罈 et 竄--traditional罈 prennent le pas sur 竄--non-decimal-data罈"
-#: main.c:555
+#: main.c:560
#, 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:560
+#: main.c:565
msgid "`--posix' overrides `--binary'"
msgstr "竄--posix罈 prend le pas sur 竄--binary罈"
-#: main.c:611
+#: main.c:623
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "impossible d'activer le mode binaire sur stdin (%s)"
-#: main.c:614
+#: main.c:626
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "impossible d'activer le mode binaire sur stdout (%s)"
-#: main.c:616
+#: main.c:628
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "impossible d'activer le mode binaire sur stderr (%s)"
-#: main.c:655
+#: main.c:679
msgid "no program text at all!"
msgstr "aucun programme!"
-#: main.c:733
+#: main.c:763
#, 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:735
+#: main.c:765
#, 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:740
+#: main.c:770
msgid "POSIX options:\t\tGNU long options: (standard)\n"
msgstr "Options POSIX:\t\tOptions longues GNU: (standard)\n"
-#: main.c:741
+#: main.c:771
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f fichier_prog\t\t--file=fichier_prog\n"
-#: main.c:742
+#: main.c:772
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F fs\t\t\t--field-separator=fs\n"
-#: main.c:743
+#: main.c:773
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v var=valeur\t\t--assign=var=valeur\n"
-#: main.c:744
+#: main.c:774
msgid "Short options:\t\tGNU long options: (extensions)\n"
msgstr "Options POSIX:\t\tOptions longues GNU: (extensions)\n"
-#: main.c:745
+#: main.c:775
msgid "\t-b\t\t\t--characters-as-bytes\n"
msgstr "\t-b\t\t\t--characters-as-bytes\n"
-#: main.c:746
+#: main.c:776
msgid "\t-c\t\t\t--traditional\n"
msgstr "\t-c\t\t\t--traditional\n"
-#: main.c:747
+#: main.c:777
msgid "\t-C\t\t\t--copyright\n"
msgstr "\t-C\t\t\t--copyright\n"
-#: main.c:748
+#: main.c:778
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
msgstr "\t-d[fichier]\t\t--dump-variables[=fichier]\n"
-#: main.c:749
+#: main.c:779
+#, fuzzy
+msgid "\t-D[file]\t\t--debug[=file]\n"
+msgstr "\t-p[fichier]\t\t--profile[=fichier]\n"
+
+#: main.c:780
msgid "\t-e 'program-text'\t--source='program-text'\n"
msgstr "\t-e 'programme'\t\t--source='programme'\n"
-#: main.c:750
+#: main.c:781
msgid "\t-E file\t\t\t--exec=file\n"
msgstr "\t-E fichier\t\t--exec=fichier\n"
-#: main.c:751
+#: main.c:782
msgid "\t-g\t\t\t--gen-pot\n"
msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:752
+#: main.c:783
msgid "\t-h\t\t\t--help\n"
msgstr "\t-h\t\t\t--help\n"
-#: main.c:753
+#: main.c:784
+msgid "\t-l library\t\t--load=library\n"
+msgstr ""
+
+#: main.c:785
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
msgstr "\t-L [fatal]\t\t--lint[=fatal]\n"
-#: main.c:754
+#: main.c:786
msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr "\t-n\t\t\t--non-decimal-data\n"
-#: main.c:755
+#: main.c:787
+#, fuzzy
+msgid "\t-M\t\t\t--bignum\n"
+msgstr "\t-g\t\t\t--gen-pot\n"
+
+#: main.c:788
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr "\t-N\t\t\t--use-lc-numeric\n"
-#: main.c:756
+#: main.c:789
+#, fuzzy
+msgid "\t-o[file]\t\t--pretty-print[=file]\n"
+msgstr "\t-p[fichier]\t\t--profile[=fichier]\n"
+
+#: main.c:790
msgid "\t-O\t\t\t--optimize\n"
msgstr "\t-O\t\t\t--optimize\n"
-#: main.c:757
+#: main.c:791
msgid "\t-p[file]\t\t--profile[=file]\n"
msgstr "\t-p[fichier]\t\t--profile[=fichier]\n"
-#: main.c:758
+#: main.c:792
msgid "\t-P\t\t\t--posix\n"
msgstr "\t-P\t\t\t--posix\n"
-#: main.c:759
+#: main.c:793
msgid "\t-r\t\t\t--re-interval\n"
msgstr "\t-r\t\t\t--re-interval\n"
-#: main.c:761
-msgid "\t-R file\t\t\t--command=file\n"
-msgstr "\t-R fichier\t\t\t--command=fichier\n"
-
-#: main.c:762
+#: main.c:794
msgid "\t-S\t\t\t--sandbox\n"
msgstr "\t-S\t\t\t--sandbox\n"
-#: main.c:763
+#: main.c:795
msgid "\t-t\t\t\t--lint-old\n"
msgstr "\t-t\t\t\t--lint-old\n"
-#: main.c:764
+#: main.c:796
msgid "\t-V\t\t\t--version\n"
msgstr "\t-V\t\t\t--version\n"
-#: main.c:766
+#: main.c:798
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:769
+#: main.c:801
msgid "\t-Y\t\t--parsedebug\n"
msgstr "\t-Y\t\t--parsedebug\n"
@@ -1838,7 +1754,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:778
+#: main.c:810
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -1853,7 +1769,7 @@ msgstr ""
"<traduc CHEZ traduc POINT org>.\n"
"\n"
-#: main.c:782
+#: main.c:814
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -1863,7 +1779,7 @@ msgstr ""
"Par d矇faut, il lit l'entr矇e standard et 矇crit sur la sortie standard.\n"
"\n"
-#: main.c:786
+#: main.c:818
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -1873,7 +1789,7 @@ msgstr ""
"\tgawk '{ somme += $1 }; END { print somme }' fichier\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:806
+#: main.c:838
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1893,7 +1809,7 @@ msgstr ""
"version ult矇rieure de votre choix.\n"
"\n"
-#: main.c:814
+#: main.c:846
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"
@@ -1908,7 +1824,7 @@ msgstr ""
"General Public License).\n"
"\n"
-#: main.c:820
+#: main.c:852
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"
@@ -1917,16 +1833,16 @@ msgstr ""
"(GNU General Public License) avec ce programme. Sinon, consultez\n"
"http://www.gnu.org/licenses/.\n"
-#: main.c:855
+#: main.c:887
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft ne d矇finit pas le FScomme 矇tant une tabulation en awk POSIX"
-#: main.c:1089
+#: main.c:1133
#, c-format
msgid "unknown value for field spec: %d\n"
msgstr "valeur inconnue pour la d矇finition de champ: %d\n"
-#: main.c:1170
+#: main.c:1214
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
@@ -1935,84 +1851,79 @@ msgstr ""
"%s: 竄%s罈 l'argument de 竄-v罈 ne respecte pas la forme 竄var=valeur罈\n"
"\n"
-#: main.c:1196
+#: main.c:1240
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "竄%s罈 n'est pas un nom de variable valide"
-#: main.c:1199
+#: main.c:1243
#, 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:1203
+#: main.c:1247
#, c-format
msgid "cannot use gawk builtin `%s' as variable name"
msgstr "impossible d'utiliser le mot clef gawk 竄%s罈 comme variable"
-#: main.c:1208
+#: main.c:1252
#, c-format
msgid "cannot use function `%s' as variable name"
msgstr "impossible d'utiliser la fonction 竄%s罈 comme variable"
-#: main.c:1261
+#: main.c:1305
msgid "floating point exception"
msgstr "exception du traitement en virgule flottante"
-#: main.c:1268
+#: main.c:1312
msgid "fatal error: internal error"
msgstr "fatal: erreur interne"
-#: main.c:1283
+#: main.c:1327
msgid "fatal error: internal error: segfault"
msgstr "fatal: erreur interne: erreur de segmentation"
-#: main.c:1295
+#: main.c:1339
msgid "fatal error: internal error: stack overflow"
msgstr "fatal: erreur interne: d矇bordement de la pile"
-#: main.c:1345
+#: main.c:1393
#, c-format
msgid "no pre-opened fd %d"
msgstr "aucun descripteur fd %d pr矇-ouvert"
-#: main.c:1352
+#: main.c:1400
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "impossible de pr矇-ouvrir /dev/null pour le descripteud fd %d"
-#: main.c:1375 main.c:1384
-#, c-format
-msgid "could not find groups: %s"
-msgstr "impossible de trouver les groupes: %s"
-
-#: msg.c:63
+#: msg.c:61
#, c-format
msgid "cmd. line:"
msgstr "ligne de commande:"
-#: msg.c:107
+#: msg.c:121
msgid "error: "
msgstr "erreur: "
-#: node.c:406
+#: node.c:436
msgid "backslash at end of string"
msgstr "barre oblique inverse la fin de la cha簾ne"
-#: node.c:517
+#: node.c:520
#, 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:568
+#: node.c:571
msgid "POSIX does not allow `\\x' escapes"
msgstr "POSIX n'autorise pas les s矇quences d'矇chappement 竄\\x罈"
-#: node.c:574
+#: node.c:577
msgid "no hex digits in `\\x' escape sequence"
msgstr "aucun chiffre hexad矇cimal dans la s矇quence d'矇chappement 竄\\x罈 "
-#: node.c:596
+#: node.c:599
#, c-format
msgid ""
"hex escape \\x%.*s of %d characters probably not interpreted the way you "
@@ -2021,12 +1932,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:611
+#: node.c:614
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr "s矇quence d'矇chappement 竄\\%c罈 trait矇e comme un simple 竄%c罈"
-#: node.c:750
+#: node.c:759
msgid ""
"Invalid multibyte data detected. There may be a mismatch between your data "
"and your locale."
@@ -2046,16 +1957,16 @@ msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
msgstr ""
"%s %s 竄%s罈: impossible de positionner close-on-exec: (fcntl F_SETFD: %s)"
-#: profile.c:83
+#: profile.c:69
#, c-format
msgid "could not open `%s' for writing: %s"
msgstr "impossible d'ouvrir 竄%s罈 en 矇criture: %s"
-#: profile.c:85
+#: profile.c:71
msgid "sending profile to standard error"
msgstr "envoi du profil vers la sortie d'erreur standard"
-#: profile.c:203
+#: profile.c:187
#, c-format
msgid ""
"\t# %s block(s)\n"
@@ -2064,7 +1975,7 @@ msgstr ""
"\t# Bloc(s) %s\n"
"\n"
-#: profile.c:208
+#: profile.c:192
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -2073,17 +1984,22 @@ msgstr ""
"\t# R癡gle(s)\n"
"\n"
-#: profile.c:279
+#: profile.c:266
#, c-format
msgid "internal error: %s with null vname"
msgstr "erreur interne: %s avec un vname nul"
-#: profile.c:952
+#: profile.c:528
+#, fuzzy
+msgid "internal error: builtin with null fname"
+msgstr "erreur interne: %s avec un vname nul"
+
+#: profile.c:943
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# profile gawk, cr矇矇 %s\n"
-#: profile.c:1331
+#: profile.c:1328
#, c-format
msgid ""
"\n"
@@ -2092,96 +2008,169 @@ msgstr ""
"\n"
"\t# Fonctions, par ordre alphab矇tique\n"
-#: profile.c:1370
+#: profile.c:1366
#, c-format
msgid "redir2str: unknown redirection type %d"
msgstr "redir2str: type de redirection %d inconnu"
-#: re.c:572
-#, fuzzy, c-format
+#: re.c:571
+#, c-format
msgid "range of the form `[%c-%c]' is locale dependent"
-msgstr ""
-"les plages de type 竄[%c-%c]罈 sont d矇pendantes des param癡tres r矇gionaux "
-"(locale)"
+msgstr "les plages 竄[%c-%c]罈 sont d矇pendantes des param癡tres r矇gionaux"
-#: re.c:599
+#: re.c:598
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
msgstr ""
"le composant d'expression rationnelle 竄%.*s罈 devrait probablement 礙tre "
"竄[%.*s]罈"
-#: regcomp.c:132
+#: regcomp.c:131
msgid "Success"
msgstr "Succ癡s"
-#: regcomp.c:135
+#: regcomp.c:134
msgid "No match"
msgstr "Aucune concordance"
-#: regcomp.c:138
+#: regcomp.c:137
msgid "Invalid regular expression"
msgstr "Expression rationnelle non valide"
-#: regcomp.c:141
+#: regcomp.c:140
msgid "Invalid collation character"
msgstr "Caract癡re d'interclassement non valide"
-#: regcomp.c:144
+#: regcomp.c:143
msgid "Invalid character class name"
msgstr "Nom de classe de caract癡res non valide"
-#: regcomp.c:147
+#: regcomp.c:146
msgid "Trailing backslash"
msgstr "Barre oblique inverse finale"
-#: regcomp.c:150
+#: regcomp.c:149
msgid "Invalid back reference"
msgstr "R矇f矇rence arri癡re non valide"
-#: regcomp.c:153
+#: regcomp.c:152
msgid "Unmatched [ or [^"
msgstr "[ ou [^ sans correspondance"
-#: regcomp.c:156
+#: regcomp.c:155
msgid "Unmatched ( or \\("
msgstr "( ou \\( sans correspondance"
-#: regcomp.c:159
+#: regcomp.c:158
msgid "Unmatched \\{"
msgstr "\\{ sans correspondance"
-#: regcomp.c:162
+#: regcomp.c:161
msgid "Invalid content of \\{\\}"
msgstr "Contenu de \\{\\} non valide"
-#: regcomp.c:165
+#: regcomp.c:164
msgid "Invalid range end"
msgstr "Borne finale non valide"
-#: regcomp.c:168
+#: regcomp.c:167
msgid "Memory exhausted"
msgstr "M矇moire 矇puis矇e"
-#: regcomp.c:171
+#: regcomp.c:170
msgid "Invalid preceding regular expression"
msgstr "Expression rationnelle pr矇c矇dente non valide"
-#: regcomp.c:174
+#: regcomp.c:173
msgid "Premature end of regular expression"
msgstr "Fin pr矇matur矇e de l'expression rationnelle"
-#: regcomp.c:177
+#: regcomp.c:176
msgid "Regular expression too big"
msgstr "Expression rationnelle trop grande"
-#: regcomp.c:180
+#: regcomp.c:179
msgid "Unmatched ) or \\)"
msgstr ") ou \\) sans correspondance"
-#: regcomp.c:701
+#: regcomp.c:700
msgid "No previous regular expression"
msgstr "Aucune expression rationnelle pr矇c矇dente"
+#~ msgid "attempt to use function `%s' as an array"
+#~ msgstr "tentative d'utiliser la fonction 竄%s罈 comme tableau"
+
+#~ msgid "reference to uninitialized element `%s[\"%.*s\"]'"
+#~ msgstr "r矇f矇rence un 矇l矇ment non initialis矇 竄%s[\"%.*s\"]罈"
+
+#~ msgid "subscript of array `%s' is null string"
+#~ msgstr "l'indice du tableau 竄%s罈 est une cha簾ne vide"
+
+#~ msgid "%s: empty (null)\n"
+#~ msgstr "%s: vide (non d矇fini)\n"
+
+#~ msgid "%s: empty (zero)\n"
+#~ msgstr "%s: vide (vide)\n"
+
+#~ msgid "%s: table_size = %d, array_size = %d\n"
+#~ msgstr "%s: table_size = %d, array_size = %d\n"
+
+#~ msgid "%s: is parameter\n"
+#~ msgstr "%s: est un param癡tre\n"
+
+#~ msgid "%s: array_ref to %s\n"
+#~ msgstr "%s: array_ref %s\n"
+
+#~ msgid "use of non-array as array"
+#~ msgstr "utilisation d'un non tableau comme tableau"
+
+#~ msgid "can't use function name `%s' as variable or array"
+#~ msgstr "impossible d'utiliser la fonction 竄%s罈 comme variable ou tableau"
+
+#~ msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context"
+#~ msgstr ""
+#~ "tentative d'utilisation du tableau 竄%s[\"%.*s\"]罈 dans un contexte "
+#~ "scalaire"
+
+#~ msgid "assignment used in conditional context"
+#~ msgstr "affectation utilis矇e dans un contexte conditionnel"
+
+#~ msgid "statement has no effect"
+#~ msgstr "la d矇claration est sans effet"
+
+#~ msgid ""
+#~ "for loop: array `%s' changed size from %ld to %ld during loop execution"
+#~ msgstr "boucle for: la taille du tableau 竄%s罈 est pass矇e de %ld %ld"
+
+#~ msgid "function called indirectly through `%s' does not exist"
+#~ msgstr "la fonction indirectement appel矇e via 竄%s罈 n'existe pas"
+
+#~ msgid "function `%s' not defined"
+#~ msgstr "fonction 竄%s罈 non d矇finie"
+
+#~ msgid "non-redirected `getline' invalid inside `%s' rule"
+#~ msgstr "un 竄getline罈 non redirig矇 n'est pas valable dans une r癡gle 竄%s罈"
+
+#~ msgid "error reading input file `%s': %s"
+#~ msgstr "erreur lors de la lecture du fichier en entr矇e 竄%s罈: %s"
+
+#~ msgid "`nextfile' cannot be called from a `%s' rule"
+#~ msgstr "竄nextfile罈 ne peut pas 礙tre appel矇 depuis une r癡gle 竄%s罈"
+
+#~ msgid "`exit' cannot be called in the current context"
+#~ msgstr "竄exit罈 ne peut pas 礙tre appel矇 dans ce contexte"
+
+#~ msgid "`next' cannot be called from a `%s' rule"
+#~ msgstr "竄next罈 ne peut pas 礙tre appel矇 depuis une r癡gle 竄%s罈"
+
+#~ msgid "Sorry, don't know how to interpret `%s'"
+#~ msgstr "D矇sol矇, je ne sais pas comment interpr矇ter 竄%s罈"
+
+#~ msgid "\t-R file\t\t\t--command=file\n"
+#~ msgstr "\t-R fichier\t\t\t--command=fichier\n"
+
+#~ msgid "could not find groups: %s"
+#~ msgstr "impossible de trouver les groupes: %s"
+
#~ msgid "assignment is not allowed to result of builtin function"
#~ msgstr "impossible d'affecter au r矇sultat d'une fonction interne"
diff --git a/po/gawk.pot b/po/gawk.pot
index aa30ff3c..9fd02146 100644
--- a/po/gawk.pot
+++ b/po/gawk.pot
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: gawk 4.0.0e\n"
+"Project-Id-Version: gawk 4.0.70\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2011-11-14 21:46+0200\n"
+"POT-Creation-Date: 2012-04-27 10:06+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,944 +17,895 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: array.c:140
+#: array.c:266
#, c-format
msgid "from %s"
msgstr ""
-#: array.c:248
+#: array.c:366
msgid "attempt to use a scalar value as array"
msgstr ""
-#: array.c:251
-#, c-format
-msgid "attempt to use function `%s' as an array"
-msgstr ""
-
-#: array.c:254
+#: array.c:368
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
msgstr ""
-#: array.c:257
+#: array.c:371
#, c-format
msgid "attempt to use scalar `%s' as an array"
msgstr ""
-#: array.c:302 array.c:707 builtin.c:84 builtin.c:1384 builtin.c:1426
-#: builtin.c:1439 builtin.c:1858 builtin.c:1870 eval.c:1135 eval.c:1139
-#: eval.c:1495 eval.c:1812
+#: array.c:418 array.c:584 builtin.c:85 builtin.c:1560 builtin.c:1602
+#: builtin.c:1615 builtin.c:2041 builtin.c:2053 eval.c:1109 eval.c:1113
+#: eval.c:1508
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr ""
-#: array.c:513
-#, c-format
-msgid "reference to uninitialized element `%s[\"%.*s\"]'"
-msgstr ""
-
-#: array.c:519
-#, c-format
-msgid "subscript of array `%s' is null string"
-msgstr ""
-
-#: array.c:723
+#: array.c:591
#, c-format
msgid "delete: index `%s' not in array `%s'"
msgstr ""
-#: array.c:734 eval.c:1865
+#: array.c:605
#, c-format
msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
msgstr ""
-#: array.c:910
-#, c-format
-msgid "%s: empty (null)\n"
-msgstr ""
-
-#: array.c:915
-#, c-format
-msgid "%s: empty (zero)\n"
-msgstr ""
-
-#: array.c:919
-#, c-format
-msgid "%s: table_size = %d, array_size = %d\n"
-msgstr ""
-
-#: array.c:954
-#, c-format
-msgid "%s: is parameter\n"
-msgstr ""
-
-#: array.c:958
-#, c-format
-msgid "%s: array_ref to %s\n"
-msgstr ""
-
-#: array.c:963
-msgid "adump: argument not an array"
+#: array.c:784
+msgid "adump: first argument not an array"
msgstr ""
-#: array.c:1086
+#: array.c:823
msgid "asort: second argument not an array"
msgstr ""
-#: array.c:1087
+#: array.c:824
msgid "asorti: second argument not an array"
msgstr ""
-#: array.c:1094
+#: array.c:831
msgid "asort: first argument not an array"
msgstr ""
-#: array.c:1095
+#: array.c:832
msgid "asorti: first argument not an array"
msgstr ""
-#: array.c:1102
+#: array.c:839
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr ""
-#: array.c:1103
+#: array.c:840
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr ""
-#: array.c:1108
+#: array.c:845
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr ""
-#: array.c:1109
+#: array.c:846
msgid "asorti: cannot use a subarray of second arg for first arg"
msgstr ""
-#: array.c:1659
+#: array.c:1314
#, c-format
msgid "`%s' is invalid as a function name"
msgstr ""
-#: array.c:1663
+#: array.c:1318
#, c-format
msgid "sort comparison function `%s' is not defined"
msgstr ""
-#: awkgram.y:249
+#: awkgram.y:223
#, c-format
msgid "%s blocks must have an action part"
msgstr ""
-#: awkgram.y:252
+#: awkgram.y:226
msgid "each rule must have a pattern or an action part"
msgstr ""
-#: awkgram.y:323 awkgram.y:334
+#: awkgram.y:295 awkgram.y:306
msgid "old awk does not support multiple `BEGIN' or `END' rules"
msgstr ""
-#: awkgram.y:371
+#: awkgram.y:343
#, c-format
msgid "`%s' is a built-in function, it cannot be redefined"
msgstr ""
-#: awkgram.y:432
+#: awkgram.y:389
msgid "regexp constant `//' looks like a C++ comment, but is not"
msgstr ""
-#: awkgram.y:436
+#: awkgram.y:393
#, c-format
msgid "regexp constant `/%s/' looks like a C comment, but is not"
msgstr ""
-#: awkgram.y:528
+#: awkgram.y:485
#, c-format
msgid "duplicate case values in switch body: %s"
msgstr ""
-#: awkgram.y:549
+#: awkgram.y:506
msgid "duplicate `default' detected in switch body"
msgstr ""
-#: awkgram.y:809
+#: awkgram.y:766
msgid "`break' is not allowed outside a loop or switch"
msgstr ""
-#: awkgram.y:818
+#: awkgram.y:775
msgid "`continue' is not allowed outside a loop"
msgstr ""
-#: awkgram.y:828
+#: awkgram.y:785
#, c-format
msgid "`next' used in %s action"
msgstr ""
-#: awkgram.y:836
+#: awkgram.y:793
msgid "`nextfile' is a gawk extension"
msgstr ""
-#: awkgram.y:841
+#: awkgram.y:798
#, c-format
msgid "`nextfile' used in %s action"
msgstr ""
-#: awkgram.y:865
+#: awkgram.y:822
msgid "`return' used outside function context"
msgstr ""
-#: awkgram.y:925
+#: awkgram.y:896
msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
msgstr ""
-#: awkgram.y:995 awkgram.y:999 awkgram.y:1023
+#: awkgram.y:966 awkgram.y:970 awkgram.y:994
msgid "`delete array' is a gawk extension"
msgstr ""
-#: awkgram.y:1019
+#: awkgram.y:990
msgid "`delete(array)' is a non-portable tawk extension"
msgstr ""
-#: awkgram.y:1135
+#: awkgram.y:1108
msgid "multistage two-way pipelines don't work"
msgstr ""
-#: awkgram.y:1238
+#: awkgram.y:1211
msgid "regular expression on right of assignment"
msgstr ""
-#: awkgram.y:1249
+#: awkgram.y:1222
msgid "regular expression on left of `~' or `!~' operator"
msgstr ""
-#: awkgram.y:1265 awkgram.y:1419
+#: awkgram.y:1238 awkgram.y:1389
msgid "old awk does not support the keyword `in' except after `for'"
msgstr ""
-#: awkgram.y:1275
+#: awkgram.y:1248
msgid "regular expression on right of comparison"
msgstr ""
-#: awkgram.y:1394
+#: awkgram.y:1364
#, c-format
msgid "`getline var' invalid inside `%s' rule"
msgstr ""
-#: awkgram.y:1397 eval.c:2504
+#: awkgram.y:1367
#, c-format
msgid "`getline' invalid inside `%s' rule"
msgstr ""
-#: awkgram.y:1402
+#: awkgram.y:1372
msgid "non-redirected `getline' undefined inside END action"
msgstr ""
-#: awkgram.y:1421
+#: awkgram.y:1391
msgid "old awk does not support multidimensional arrays"
msgstr ""
-#: awkgram.y:1517
+#: awkgram.y:1488
msgid "call of `length' without parentheses is not portable"
msgstr ""
-#: awkgram.y:1580
+#: awkgram.y:1554
msgid "indirect function calls are a gawk extension"
msgstr ""
-#: awkgram.y:1593
+#: awkgram.y:1567
#, c-format
msgid "can not use special variable `%s' for indirect function call"
msgstr ""
-#: awkgram.y:1671
+#: awkgram.y:1645
msgid "invalid subscript expression"
msgstr ""
-#: awkgram.y:1711
-msgid "use of non-array as array"
-msgstr ""
-
-#: awkgram.y:1975 awkgram.y:1995 msg.c:98
+#: awkgram.y:1966 awkgram.y:1986 msg.c:112
msgid "warning: "
msgstr ""
-#: awkgram.y:1993 msg.c:130
+#: awkgram.y:1984 msg.c:144
msgid "fatal: "
msgstr ""
-#: awkgram.y:2043
+#: awkgram.y:2034
msgid "unexpected newline or end of string"
msgstr ""
-#: awkgram.y:2300 awkgram.y:2358 awkgram.y:2542
+#: awkgram.y:2299 awkgram.y:2357 awkgram.y:2545
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr ""
-#: awkgram.y:2301 awkgram.y:2359 builtin.c:122
+#: awkgram.y:2300 awkgram.y:2358 builtin.c:124
msgid "reason unknown"
msgstr ""
-#: awkgram.y:2317
+#: awkgram.y:2316
#, c-format
msgid "already included source file `%s'"
msgstr ""
-#: awkgram.y:2343
+#: awkgram.y:2342
msgid "@include is a gawk extension"
msgstr ""
-#: awkgram.y:2349
+#: awkgram.y:2348
msgid "empty filename after @include"
msgstr ""
-#: awkgram.y:2494
+#: awkgram.y:2497
msgid "empty program text on command line"
msgstr ""
-#: awkgram.y:2609
+#: awkgram.y:2612
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr ""
-#: awkgram.y:2620
+#: awkgram.y:2623
#, c-format
msgid "source file `%s' is empty"
msgstr ""
-#: awkgram.y:2805
+#: awkgram.y:2800
msgid "source file does not end in newline"
msgstr ""
-#: awkgram.y:2882
+#: awkgram.y:2905
msgid "unterminated regexp ends with `\\' at end of file"
msgstr ""
-#: awkgram.y:2906
+#: awkgram.y:2929
#, c-format
msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
-#: awkgram.y:2910
+#: awkgram.y:2933
#, c-format
msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
-#: awkgram.y:2917
+#: awkgram.y:2940
msgid "unterminated regexp"
msgstr ""
-#: awkgram.y:2921
+#: awkgram.y:2944
msgid "unterminated regexp at end of file"
msgstr ""
-#: awkgram.y:2980
+#: awkgram.y:3003
msgid "use of `\\ #...' line continuation is not portable"
msgstr ""
-#: awkgram.y:2996
+#: awkgram.y:3019
msgid "backslash not last character on line"
msgstr ""
-#: awkgram.y:3057
+#: awkgram.y:3080
msgid "POSIX does not allow operator `**='"
msgstr ""
-#: awkgram.y:3059
+#: awkgram.y:3082
msgid "old awk does not support operator `**='"
msgstr ""
-#: awkgram.y:3068
+#: awkgram.y:3091
msgid "POSIX does not allow operator `**'"
msgstr ""
-#: awkgram.y:3070
+#: awkgram.y:3093
msgid "old awk does not support operator `**'"
msgstr ""
-#: awkgram.y:3105
+#: awkgram.y:3128
msgid "operator `^=' is not supported in old awk"
msgstr ""
-#: awkgram.y:3113
+#: awkgram.y:3136
msgid "operator `^' is not supported in old awk"
msgstr ""
-#: awkgram.y:3206 awkgram.y:3222
+#: awkgram.y:3229 awkgram.y:3245
msgid "unterminated string"
msgstr ""
-#: awkgram.y:3418
+#: awkgram.y:3466
#, c-format
msgid "invalid char '%c' in expression"
msgstr ""
-#: awkgram.y:3465
+#: awkgram.y:3513
#, c-format
msgid "`%s' is a gawk extension"
msgstr ""
-#: awkgram.y:3470
+#: awkgram.y:3518
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr ""
-#: awkgram.y:3475
+#: awkgram.y:3523
#, c-format
msgid "POSIX does not allow `%s'"
msgstr ""
-#: awkgram.y:3483
+#: awkgram.y:3531
#, c-format
msgid "`%s' is not supported in old awk"
msgstr ""
-#: awkgram.y:3550
+#: awkgram.y:3598
msgid "`goto' considered harmful!\n"
msgstr ""
-#: awkgram.y:3601
+#: awkgram.y:3632
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr ""
-#: awkgram.y:3636
+#: awkgram.y:3667
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr ""
-#: awkgram.y:3641
+#: awkgram.y:3672
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr ""
-#: awkgram.y:3714 awkgram.y:3717
+#: awkgram.y:3751 awkgram.y:3754
msgid "match: third argument is a gawk extension"
msgstr ""
-#: awkgram.y:3771 awkgram.y:3774
+#: awkgram.y:3808 awkgram.y:3811
msgid "close: second argument is a gawk extension"
msgstr ""
-#: awkgram.y:3786
+#: awkgram.y:3823
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
-#: awkgram.y:3801
+#: awkgram.y:3838
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
-#: awkgram.y:3893
-#, c-format
-msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
-msgstr ""
-
-#: awkgram.y:3935
+#: awkgram.y:3904
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr ""
-#: awkgram.y:4093
+#: awkgram.y:3961
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr ""
-#: awkgram.y:4094
+#: awkgram.y:3962
msgid "sending variable list to standard error"
msgstr ""
-#: awkgram.y:4100
+#: awkgram.y:3970
#, c-format
msgid "%s: close failed (%s)"
msgstr ""
-#: awkgram.y:4152
+#: awkgram.y:3995
msgid "shadow_funcs() called twice!"
msgstr ""
-#: awkgram.y:4158
+#: awkgram.y:4003
msgid "there were shadowed variables."
msgstr ""
-#: awkgram.y:4188
+#: awkgram.y:4074
+#, c-format
+msgid "function name `%s' previously defined"
+msgstr ""
+
+#: awkgram.y:4120
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr ""
-#: awkgram.y:4192
+#: awkgram.y:4123
#, c-format
msgid "function `%s': can't use special variable `%s' as a function parameter"
msgstr ""
-#: awkgram.y:4208
+#: awkgram.y:4131
#, c-format
-msgid "function name `%s' previously defined"
+msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr ""
-#: awkgram.y:4376 awkgram.y:4382
+#: awkgram.y:4210 awkgram.y:4216
#, c-format
msgid "function `%s' called but never defined"
msgstr ""
-#: awkgram.y:4385
+#: awkgram.y:4219
#, c-format
msgid "function `%s' defined but never called directly"
msgstr ""
-#: awkgram.y:4417
+#: awkgram.y:4251
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr ""
-#: awkgram.y:4526
+#: awkgram.y:4297
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
"or used as a variable or an array"
msgstr ""
-#: awkgram.y:4773 eval.c:2056
+#: awkgram.y:4505
msgid "division by zero attempted"
msgstr ""
-#: awkgram.y:4782 eval.c:2072
+#: awkgram.y:4514
#, c-format
msgid "division by zero attempted in `%%'"
msgstr ""
-#: builtin.c:120
+#: builtin.c:122
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr ""
-#: builtin.c:121
+#: builtin.c:123
msgid "standard output"
msgstr ""
-#: builtin.c:135
+#: builtin.c:137
msgid "exp: received non-numeric argument"
msgstr ""
-#: builtin.c:141
+#: builtin.c:143
#, c-format
msgid "exp: argument %g is out of range"
msgstr ""
-#: builtin.c:200
+#: builtin.c:202
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
-#: builtin.c:203
+#: builtin.c:205
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
-#: builtin.c:215
+#: builtin.c:217
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr ""
-#: builtin.c:333
+#: builtin.c:335
msgid "index: received non-string first argument"
msgstr ""
-#: builtin.c:335
+#: builtin.c:337
msgid "index: received non-string second argument"
msgstr ""
-#: builtin.c:457
+#: builtin.c:461
msgid "int: received non-numeric argument"
msgstr ""
-#: builtin.c:493
+#: builtin.c:497
msgid "length: received array argument"
msgstr ""
-#: builtin.c:496
+#: builtin.c:500
msgid "`length(array)' is a gawk extension"
msgstr ""
-#: builtin.c:504
+#: builtin.c:508
msgid "length: received non-string argument"
msgstr ""
-#: builtin.c:535
+#: builtin.c:539
msgid "log: received non-numeric argument"
msgstr ""
-#: builtin.c:538
+#: builtin.c:542
#, c-format
msgid "log: received negative argument %g"
msgstr ""
-#: builtin.c:694 builtin.c:699
+#: builtin.c:740 builtin.c:745
msgid "fatal: must use `count$' on all formats or none"
msgstr ""
-#: builtin.c:761
+#: builtin.c:815
#, c-format
msgid "field width is ignored for `%%' specifier"
msgstr ""
-#: builtin.c:763
+#: builtin.c:817
#, c-format
msgid "precision is ignored for `%%' specifier"
msgstr ""
-#: builtin.c:765
+#: builtin.c:819
#, c-format
msgid "field width and precision are ignored for `%%' specifier"
msgstr ""
-#: builtin.c:816
+#: builtin.c:870
msgid "fatal: `$' is not permitted in awk formats"
msgstr ""
-#: builtin.c:825
+#: builtin.c:879
msgid "fatal: arg count with `$' must be > 0"
msgstr ""
-#: builtin.c:829
+#: builtin.c:883
#, c-format
msgid "fatal: arg count %ld greater than total number of supplied arguments"
msgstr ""
-#: builtin.c:833
+#: builtin.c:887
msgid "fatal: `$' not permitted after period in format"
msgstr ""
-#: builtin.c:849
+#: builtin.c:903
msgid "fatal: no `$' supplied for positional field width or precision"
msgstr ""
-#: builtin.c:920
+#: builtin.c:975
msgid "`l' is meaningless in awk formats; ignored"
msgstr ""
-#: builtin.c:924
+#: builtin.c:979
msgid "fatal: `l' is not permitted in POSIX awk formats"
msgstr ""
-#: builtin.c:937
+#: builtin.c:992
msgid "`L' is meaningless in awk formats; ignored"
msgstr ""
-#: builtin.c:941
+#: builtin.c:996
msgid "fatal: `L' is not permitted in POSIX awk formats"
msgstr ""
-#: builtin.c:954
+#: builtin.c:1009
msgid "`h' is meaningless in awk formats; ignored"
msgstr ""
-#: builtin.c:958
+#: builtin.c:1013
msgid "fatal: `h' is not permitted in POSIX awk formats"
msgstr ""
-#: builtin.c:1271
+#: builtin.c:1408
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr ""
-#: builtin.c:1331
+#: builtin.c:1506
#, c-format
msgid "ignoring unknown format specifier character `%c': no argument converted"
msgstr ""
-#: builtin.c:1336
+#: builtin.c:1511
msgid "fatal: not enough arguments to satisfy format string"
msgstr ""
-#: builtin.c:1338
+#: builtin.c:1513
msgid "^ ran out for this one"
msgstr ""
-#: builtin.c:1345
+#: builtin.c:1520
msgid "[s]printf: format specifier does not have control letter"
msgstr ""
-#: builtin.c:1348
+#: builtin.c:1523
msgid "too many arguments supplied for format string"
msgstr ""
-#: builtin.c:1422 builtin.c:1433
+#: builtin.c:1598 builtin.c:1609
msgid "printf: no arguments"
msgstr ""
-#: builtin.c:1474
+#: builtin.c:1650
msgid "sqrt: received non-numeric argument"
msgstr ""
-#: builtin.c:1478
+#: builtin.c:1654
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr ""
-#: builtin.c:1502
+#: builtin.c:1685
#, c-format
msgid "substr: length %g is not >= 1"
msgstr ""
-#: builtin.c:1504
+#: builtin.c:1687
#, c-format
msgid "substr: length %g is not >= 0"
msgstr ""
-#: builtin.c:1511
+#: builtin.c:1694
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr ""
-#: builtin.c:1516
+#: builtin.c:1699
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr ""
-#: builtin.c:1528
+#: builtin.c:1711
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr ""
-#: builtin.c:1533
+#: builtin.c:1716
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr ""
-#: builtin.c:1558
+#: builtin.c:1741
msgid "substr: source string is zero length"
msgstr ""
-#: builtin.c:1574
+#: builtin.c:1757
#, c-format
msgid "substr: start index %g is past end of string"
msgstr ""
-#: builtin.c:1582
+#: builtin.c:1765
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
msgstr ""
-#: builtin.c:1656
+#: builtin.c:1839
msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
msgstr ""
-#: builtin.c:1679
+#: builtin.c:1862
msgid "strftime: received non-numeric second argument"
msgstr ""
-#: builtin.c:1682
+#: builtin.c:1866
msgid "strftime: second argument less than 0 or too big for time_t"
msgstr ""
-#: builtin.c:1689
+#: builtin.c:1873
msgid "strftime: received non-string first argument"
msgstr ""
-#: builtin.c:1695
+#: builtin.c:1880
msgid "strftime: received empty format string"
msgstr ""
-#: builtin.c:1761
+#: builtin.c:1946
msgid "mktime: received non-string argument"
msgstr ""
-#: builtin.c:1778
+#: builtin.c:1963
msgid "mktime: at least one of the values is out of the default range"
msgstr ""
-#: builtin.c:1813
+#: builtin.c:1998
msgid "'system' function not allowed in sandbox mode"
msgstr ""
-#: builtin.c:1818
+#: builtin.c:2003
msgid "system: received non-string argument"
msgstr ""
-#: builtin.c:1873 eval.c:1159 eval.c:1790 eval.c:1803
-#, c-format
-msgid "reference to uninitialized variable `%s'"
-msgstr ""
-
-#: builtin.c:1940
+#: builtin.c:2121
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr ""
-#: builtin.c:2027
+#: builtin.c:2208
msgid "tolower: received non-string argument"
msgstr ""
-#: builtin.c:2061
+#: builtin.c:2242
msgid "toupper: received non-string argument"
msgstr ""
-#: builtin.c:2097
+#: builtin.c:2278
msgid "atan2: received non-numeric first argument"
msgstr ""
-#: builtin.c:2099
+#: builtin.c:2280
msgid "atan2: received non-numeric second argument"
msgstr ""
-#: builtin.c:2118
+#: builtin.c:2299
msgid "sin: received non-numeric argument"
msgstr ""
-#: builtin.c:2134
+#: builtin.c:2315
msgid "cos: received non-numeric argument"
msgstr ""
-#: builtin.c:2187
+#: builtin.c:2368
msgid "srand: received non-numeric argument"
msgstr ""
-#: builtin.c:2218
+#: builtin.c:2399
msgid "match: third argument is not an array"
msgstr ""
-#: builtin.c:2482
+#: builtin.c:2664
msgid "gensub: third argument of 0 treated as 1"
msgstr ""
-#: builtin.c:2775
+#: builtin.c:2957
msgid "lshift: received non-numeric first argument"
msgstr ""
-#: builtin.c:2777
+#: builtin.c:2959
msgid "lshift: received non-numeric second argument"
msgstr ""
-#: builtin.c:2783
+#: builtin.c:2965
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr ""
-#: builtin.c:2785
+#: builtin.c:2967
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr ""
-#: builtin.c:2787
+#: builtin.c:2969
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
-#: builtin.c:2812
+#: builtin.c:2994
msgid "rshift: received non-numeric first argument"
msgstr ""
-#: builtin.c:2814
+#: builtin.c:2996
msgid "rshift: received non-numeric second argument"
msgstr ""
-#: builtin.c:2820
+#: builtin.c:3002
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr ""
-#: builtin.c:2822
+#: builtin.c:3004
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr ""
-#: builtin.c:2824
+#: builtin.c:3006
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
-#: builtin.c:2849
+#: builtin.c:3031
msgid "and: received non-numeric first argument"
msgstr ""
-#: builtin.c:2851
+#: builtin.c:3033
msgid "and: received non-numeric second argument"
msgstr ""
-#: builtin.c:2857
+#: builtin.c:3039
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr ""
-#: builtin.c:2859
+#: builtin.c:3041
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr ""
-#: builtin.c:2884
+#: builtin.c:3066
msgid "or: received non-numeric first argument"
msgstr ""
-#: builtin.c:2886
+#: builtin.c:3068
msgid "or: received non-numeric second argument"
msgstr ""
-#: builtin.c:2892
+#: builtin.c:3074
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr ""
-#: builtin.c:2894
+#: builtin.c:3076
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr ""
-#: builtin.c:2922
+#: builtin.c:3102
msgid "xor: received non-numeric first argument"
msgstr ""
-#: builtin.c:2924
+#: builtin.c:3104
msgid "xor: received non-numeric second argument"
msgstr ""
-#: builtin.c:2930
+#: builtin.c:3110
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr ""
-#: builtin.c:2932
+#: builtin.c:3112
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr ""
-#: builtin.c:2956 builtin.c:2962
+#: builtin.c:3136
msgid "compl: received non-numeric argument"
msgstr ""
-#: builtin.c:2964
+#: builtin.c:3142
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr ""
-#: builtin.c:2966
+#: builtin.c:3144
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr ""
-#: builtin.c:3135
+#: builtin.c:3313
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr ""
-#: eval.c:412
+#: eval.c:395
#, c-format
msgid "unknown nodetype %d"
msgstr ""
-#: eval.c:423 eval.c:437
+#: eval.c:406 eval.c:420
#, c-format
msgid "unknown opcode %d"
msgstr ""
-#: eval.c:434
+#: eval.c:417
#, c-format
msgid "opcode %s not an operator or keyword"
msgstr ""
-#: eval.c:488
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr ""
-#: eval.c:698
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -962,788 +913,750 @@ msgid ""
"\n"
msgstr ""
-#: eval.c:725
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
msgstr ""
-#: eval.c:754
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr ""
-#: eval.c:812
+#: eval.c:793
#, c-format
msgid "BINMODE value `%s' is invalid, treated as 3"
msgstr ""
-#: eval.c:902
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr ""
-#: eval.c:980
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr ""
-#: eval.c:1127 eval.c:1777
+#: eval.c:1132
#, c-format
-msgid "can't use function name `%s' as variable or array"
+msgid "reference to uninitialized argument `%s'"
msgstr ""
-#: eval.c:1158 eval.c:1789 eval.c:1802
+#: eval.c:1133
#, c-format
-msgid "reference to uninitialized argument `%s'"
+msgid "reference to uninitialized variable `%s'"
msgstr ""
-#: eval.c:1177
+#: eval.c:1151
msgid "attempt to field reference from non-numeric value"
msgstr ""
-#: eval.c:1179
+#: eval.c:1153
msgid "attempt to field reference from null string"
msgstr ""
-#: eval.c:1185
+#: eval.c:1161
#, c-format
msgid "attempt to access field %ld"
msgstr ""
-#: eval.c:1194
+#: eval.c:1170
#, c-format
msgid "reference to uninitialized field `$%ld'"
msgstr ""
-#: eval.c:1256
+#: eval.c:1257
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr ""
-#: eval.c:1437
+#: eval.c:1452
#, c-format
msgid "unwind_stack: unexpected type `%s'"
msgstr ""
-#: eval.c:1532
+#: eval.c:1546
msgid "division by zero attempted in `/='"
msgstr ""
-#: eval.c:1539
+#: eval.c:1553
#, c-format
msgid "division by zero attempted in `%%='"
msgstr ""
-#: eval.c:1876 eval.c:2122
-#, c-format
-msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context"
-msgstr ""
-
-#: eval.c:1907
-msgid "assignment used in conditional context"
-msgstr ""
-
-#: eval.c:1911
-msgid "statement has no effect"
-msgstr ""
-
-#: eval.c:2343
-#, c-format
-msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
-msgstr ""
-
-#: eval.c:2458
-#, c-format
-msgid "function called indirectly through `%s' does not exist"
-msgstr ""
-
-#: eval.c:2470
-#, c-format
-msgid "function `%s' not defined"
-msgstr ""
-
-#: eval.c:2511
-#, c-format
-msgid "non-redirected `getline' invalid inside `%s' rule"
-msgstr ""
-
-#: eval.c:2600
-#, c-format
-msgid "error reading input file `%s': %s"
-msgstr ""
-
-#: eval.c:2614
-#, c-format
-msgid "`nextfile' cannot be called from a `%s' rule"
-msgstr ""
-
-#: eval.c:2694
-#, c-format
-msgid "`next' cannot be called from a `%s' rule"
-msgstr ""
-
-#: eval.c:2760
-#, c-format
-msgid "Sorry, don't know how to interpret `%s'"
-msgstr ""
-
-#: ext.c:64
+#: ext.c:70
msgid "extensions are not allowed in sandbox mode"
msgstr ""
-#: ext.c:70 ext.c:75
+#: ext.c:73
msgid "`extension' is a gawk extension"
msgstr ""
-#: ext.c:85
+#: ext.c:80
#, c-format
-msgid "fatal: extension: cannot open `%s' (%s)\n"
+msgid "extension: cannot open library `%s' (%s)\n"
msgstr ""
-#: ext.c:94
+#: ext.c:86
#, c-format
msgid ""
-"fatal: extension: library `%s': does not define "
-"`plugin_is_GPL_compatible' (%s)\n"
+"extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n"
msgstr ""
-#: ext.c:103
+#: ext.c:90
#, c-format
-msgid "fatal: extension: library `%s': cannot call function `%s' (%s)\n"
+msgid "extension: library `%s': cannot call function `%s' (%s)\n"
msgstr ""
-#: ext.c:137
+#: ext.c:118
msgid "extension: missing function name"
msgstr ""
-#: ext.c:142
+#: ext.c:123
#, c-format
msgid "extension: illegal character `%c' in function name `%s'"
msgstr ""
-#: ext.c:151
+#: ext.c:131
#, c-format
msgid "extension: can't redefine function `%s'"
msgstr ""
-#: ext.c:155
+#: ext.c:135
#, c-format
msgid "extension: function `%s' already defined"
msgstr ""
-#: ext.c:160
+#: ext.c:139
#, c-format
msgid "extension: function name `%s' previously defined"
msgstr ""
-#: ext.c:162
+#: ext.c:141
#, c-format
msgid "extension: can't use gawk built-in `%s' as function name"
msgstr ""
-#: ext.c:166
+#: ext.c:144
#, c-format
msgid "make_builtin: negative argument count for function `%s'"
msgstr ""
-#: ext.c:269
+#: ext.c:206
#, c-format
msgid "function `%s' defined to take no more than %d argument(s)"
msgstr ""
-#: ext.c:272
+#: ext.c:209
#, c-format
msgid "function `%s': missing argument #%d"
msgstr ""
-#: ext.c:289
+#: ext.c:226
#, c-format
msgid "function `%s': argument #%d: attempt to use scalar as an array"
msgstr ""
-#: ext.c:293
+#: ext.c:230
#, c-format
msgid "function `%s': argument #%d: attempt to use array as a scalar"
msgstr ""
-#: ext.c:306
+#: ext.c:244
msgid "Operation Not Supported"
msgstr ""
-#: field.c:328
+#: ext.c:256
+msgid "dynamic loading of library not supported"
+msgstr ""
+
+#: field.c:339
msgid "NF set to negative value"
msgstr ""
-#: field.c:951 field.c:958 field.c:962
+#: field.c:962 field.c:969 field.c:973
msgid "split: fourth argument is a gawk extension"
msgstr ""
-#: field.c:955
+#: field.c:966
msgid "split: fourth argument is not an array"
msgstr ""
-#: field.c:969
+#: field.c:980
msgid "split: second argument is not an array"
msgstr ""
-#: field.c:973
+#: field.c:984
msgid "split: cannot use the same array for second and fourth args"
msgstr ""
-#: field.c:978
+#: field.c:989
msgid "split: cannot use a subarray of second arg for fourth arg"
msgstr ""
-#: field.c:981
+#: field.c:992
msgid "split: cannot use a subarray of fourth arg for second arg"
msgstr ""
-#: field.c:1010
+#: field.c:1021
msgid "split: null string for third arg is a gawk extension"
msgstr ""
-#: field.c:1050
+#: field.c:1061
msgid "patsplit: fourth argument is not an array"
msgstr ""
-#: field.c:1055
+#: field.c:1066
msgid "patsplit: second argument is not an array"
msgstr ""
-#: field.c:1061
+#: field.c:1072
msgid "patsplit: third argument must be non-null"
msgstr ""
-#: field.c:1065
+#: field.c:1076
msgid "patsplit: cannot use the same array for second and fourth args"
msgstr ""
-#: field.c:1070
+#: field.c:1081
msgid "patsplit: cannot use a subarray of second arg for fourth arg"
msgstr ""
-#: field.c:1073
+#: field.c:1084
msgid "patsplit: cannot use a subarray of fourth arg for second arg"
msgstr ""
-#: field.c:1110
+#: field.c:1122
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr ""
-#: field.c:1173
+#: field.c:1186
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr ""
-#: field.c:1246
+#: field.c:1259
msgid "null string for `FS' is a gawk extension"
msgstr ""
-#: field.c:1250
+#: field.c:1263
msgid "old awk does not support regexps as value of `FS'"
msgstr ""
-#: field.c:1369
+#: field.c:1382
msgid "`FPAT' is a gawk extension"
msgstr ""
-#: getopt.c:574 getopt.c:590
+#: getopt.c:604 getopt.c:633
#, c-format
-msgid "%s: option '%s' is ambiguous\n"
+msgid "%s: option '%s' is ambiguous; possibilities:"
msgstr ""
-#: getopt.c:623 getopt.c:627
+#: getopt.c:679 getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr ""
-#: getopt.c:636 getopt.c:641
+#: getopt.c:692 getopt.c:697
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr ""
-#: getopt.c:684 getopt.c:703
+#: getopt.c:740 getopt.c:759
#, c-format
msgid "%s: option '--%s' requires an argument\n"
msgstr ""
-#: getopt.c:741 getopt.c:744
+#: getopt.c:797 getopt.c:800
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr ""
-#: getopt.c:752 getopt.c:755
+#: getopt.c:808 getopt.c:811
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr ""
-#: getopt.c:804 getopt.c:807
+#: getopt.c:860 getopt.c:863
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr ""
-#: getopt.c:857 getopt.c:874 getopt.c:1082 getopt.c:1100
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr ""
-#: getopt.c:930 getopt.c:946
+#: getopt.c:989 getopt.c:1005
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr ""
-#: getopt.c:970 getopt.c:988
+#: getopt.c:1029 getopt.c:1047
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr ""
-#: getopt.c:1009 getopt.c:1027
+#: getopt.c:1068 getopt.c:1086
#, c-format
msgid "%s: option '-W %s' requires an argument\n"
msgstr ""
-#: io.c:280
+#: io.c:326
#, c-format
msgid "command line argument `%s' is a directory: skipped"
msgstr ""
-#: io.c:283 io.c:385
+#: io.c:329 io.c:438
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr ""
-#: io.c:501
+#: io.c:568
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr ""
-#: io.c:578
+#: io.c:645
msgid "redirection not allowed in sandbox mode"
msgstr ""
-#: io.c:612
+#: io.c:679
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr ""
-#: io.c:618
+#: io.c:685
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr ""
-#: io.c:624
+#: io.c:690
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
-#: io.c:667
+#: io.c:733
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr ""
-#: io.c:720
+#: io.c:786
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr ""
-#: io.c:730
+#: io.c:796
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr ""
-#: io.c:753
+#: io.c:819
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr ""
-#: io.c:835
+#: io.c:900
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr ""
-#: io.c:838
+#: io.c:903
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr ""
-#: io.c:889
+#: io.c:954
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
-#: io.c:905
+#: io.c:970
#, c-format
msgid "close of `%s' failed (%s)."
msgstr ""
-#: io.c:913
+#: io.c:978
msgid "too many pipes or input files open"
msgstr ""
-#: io.c:935
+#: io.c:1000
msgid "close: second argument must be `to' or `from'"
msgstr ""
-#: io.c:952
+#: io.c:1017
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr ""
-#: io.c:957
+#: io.c:1022
msgid "close of redirection that was never opened"
msgstr ""
-#: io.c:1054
+#: io.c:1120
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
-#: io.c:1070
+#: io.c:1137
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr ""
-#: io.c:1073
+#: io.c:1140
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr ""
-#: io.c:1093
+#: io.c:1160
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr ""
-#: io.c:1096
+#: io.c:1163
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr ""
-#: io.c:1099
+#: io.c:1166
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr ""
-#: io.c:1102
+#: io.c:1169
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr ""
-#: io.c:1130 io.c:1185 main.c:793 main.c:830
+#: io.c:1197 io.c:1252 main.c:825 main.c:862
#, c-format
msgid "error writing standard output (%s)"
msgstr ""
-#: io.c:1134 io.c:1190
+#: io.c:1201 io.c:1257
#, c-format
msgid "error writing standard error (%s)"
msgstr ""
-#: io.c:1142
+#: io.c:1209
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr ""
-#: io.c:1145
+#: io.c:1212
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr ""
-#: io.c:1148
+#: io.c:1215
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr ""
-#: io.c:1263
+#: io.c:1329
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr ""
-#: io.c:1280
+#: io.c:1347
#, c-format
msgid "remote host and port information (%s, %s) invalid"
msgstr ""
-#: io.c:1432
+#: io.c:1499
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr ""
-#: io.c:1446
+#: io.c:1513
#, c-format
msgid "special file name `%s' is incomplete"
msgstr ""
-#: io.c:1463
+#: io.c:1530
msgid "must supply a remote hostname to `/inet'"
msgstr ""
-#: io.c:1481
+#: io.c:1548
msgid "must supply a remote port to `/inet'"
msgstr ""
-#: io.c:1527
+#: io.c:1594
msgid "TCP/IP communications are not supported"
msgstr ""
-#: io.c:1694
+#: io.c:1764
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr ""
-#: io.c:1748
+#: io.c:1814
#, c-format
msgid "close of master pty failed (%s)"
msgstr ""
-#: io.c:1750 io.c:1918 io.c:2075
+#: io.c:1816 io.c:1984 io.c:2145
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr ""
-#: io.c:1753
+#: io.c:1819
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr ""
-#: io.c:1755 io.c:1923
+#: io.c:1821 io.c:1989
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr ""
-#: io.c:1758
+#: io.c:1824
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr ""
-#: io.c:1760 io.c:1781
+#: io.c:1826 io.c:1847
#, c-format
msgid "close of slave pty failed (%s)"
msgstr ""
-#: io.c:1859 io.c:1921 io.c:2053 io.c:2078
+#: io.c:1925 io.c:1987 io.c:2122 io.c:2148
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr ""
-#: io.c:1866 io.c:1926
+#: io.c:1932 io.c:1992
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr ""
-#: io.c:1886 io.c:2068
+#: io.c:1952 io.c:2138
msgid "restoring stdout in parent process failed\n"
msgstr ""
-#: io.c:1894
+#: io.c:1960
msgid "restoring stdin in parent process failed\n"
msgstr ""
-#: io.c:1929 io.c:2080 io.c:2094
+#: io.c:1995 io.c:2150 io.c:2164
#, c-format
msgid "close of pipe failed (%s)"
msgstr ""
-#: io.c:1974
+#: io.c:2040
msgid "`|&' not supported"
msgstr ""
-#: io.c:2040
+#: io.c:2107
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr ""
-#: io.c:2088
+#: io.c:2158
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr ""
-#: io.c:2521
+#: io.c:2637
#, c-format
msgid "data file `%s' is empty"
msgstr ""
-#: io.c:2562 io.c:2570
+#: io.c:2678 io.c:2686
msgid "could not allocate more input memory"
msgstr ""
-#: io.c:3128
+#: io.c:3236
msgid "multicharacter value of `RS' is a gawk extension"
msgstr ""
-#: io.c:3233
+#: io.c:3326
msgid "IPv6 communication is not supported"
msgstr ""
-#: main.c:364
+#: main.c:355
msgid "`-m[fr]' option irrelevant in gawk"
msgstr ""
-#: main.c:366
+#: main.c:357
msgid "-m option usage: `-m[fr] nnn'"
msgstr ""
-#: main.c:389
+#: main.c:386
msgid "empty argument to `-e/--source' ignored"
msgstr ""
-#: main.c:460
+#: main.c:472
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr ""
-#: main.c:513
+#: main.c:518
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr ""
-#: main.c:534
+#: main.c:539
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
-#: main.c:540
+#: main.c:545
msgid "`--posix' overrides `--traditional'"
msgstr ""
-#: main.c:551
+#: main.c:556
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr ""
-#: main.c:555
+#: main.c:560
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr ""
-#: main.c:560
+#: main.c:565
msgid "`--posix' overrides `--binary'"
msgstr ""
-#: main.c:611
+#: main.c:623
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr ""
-#: main.c:614
+#: main.c:626
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr ""
-#: main.c:616
+#: main.c:628
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr ""
-#: main.c:655
+#: main.c:679
msgid "no program text at all!"
msgstr ""
-#: main.c:733
+#: main.c:763
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr ""
-#: main.c:735
+#: main.c:765
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr ""
-#: main.c:740
+#: main.c:770
msgid "POSIX options:\t\tGNU long options: (standard)\n"
msgstr ""
-#: main.c:741
+#: main.c:771
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr ""
-#: main.c:742
+#: main.c:772
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr ""
-#: main.c:743
+#: main.c:773
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr ""
-#: main.c:744
+#: main.c:774
msgid "Short options:\t\tGNU long options: (extensions)\n"
msgstr ""
-#: main.c:745
+#: main.c:775
msgid "\t-b\t\t\t--characters-as-bytes\n"
msgstr ""
-#: main.c:746
+#: main.c:776
msgid "\t-c\t\t\t--traditional\n"
msgstr ""
-#: main.c:747
+#: main.c:777
msgid "\t-C\t\t\t--copyright\n"
msgstr ""
-#: main.c:748
+#: main.c:778
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
msgstr ""
-#: main.c:749
+#: main.c:779
+msgid "\t-D[file]\t\t--debug[=file]\n"
+msgstr ""
+
+#: main.c:780
msgid "\t-e 'program-text'\t--source='program-text'\n"
msgstr ""
-#: main.c:750
+#: main.c:781
msgid "\t-E file\t\t\t--exec=file\n"
msgstr ""
-#: main.c:751
+#: main.c:782
msgid "\t-g\t\t\t--gen-pot\n"
msgstr ""
-#: main.c:752
+#: main.c:783
msgid "\t-h\t\t\t--help\n"
msgstr ""
-#: main.c:753
+#: main.c:784
+msgid "\t-l library\t\t--load=library\n"
+msgstr ""
+
+#: main.c:785
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
msgstr ""
-#: main.c:754
+#: main.c:786
msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr ""
-#: main.c:755
+#: main.c:787
+msgid "\t-M\t\t\t--bignum\n"
+msgstr ""
+
+#: main.c:788
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr ""
-#: main.c:756
+#: main.c:789
+msgid "\t-o[file]\t\t--pretty-print[=file]\n"
+msgstr ""
+
+#: main.c:790
msgid "\t-O\t\t\t--optimize\n"
msgstr ""
-#: main.c:757
+#: main.c:791
msgid "\t-p[file]\t\t--profile[=file]\n"
msgstr ""
-#: main.c:758
+#: main.c:792
msgid "\t-P\t\t\t--posix\n"
msgstr ""
-#: main.c:759
+#: main.c:793
msgid "\t-r\t\t\t--re-interval\n"
msgstr ""
-#: main.c:761
-msgid "\t-R file\t\t\t--command=file\n"
-msgstr ""
-
-#: main.c:762
+#: main.c:794
msgid "\t-S\t\t\t--sandbox\n"
msgstr ""
-#: main.c:763
+#: main.c:795
msgid "\t-t\t\t\t--lint-old\n"
msgstr ""
-#: main.c:764
+#: main.c:796
msgid "\t-V\t\t\t--version\n"
msgstr ""
-#: main.c:766
+#: main.c:798
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr ""
-#: main.c:769
+#: main.c:801
msgid "\t-Y\t\t--parsedebug\n"
msgstr ""
@@ -1752,7 +1665,7 @@ msgstr ""
#. for this application. Please add _another line_ with the
#. address for translation bugs.
#. no-wrap
-#: main.c:778
+#: main.c:810
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -1760,21 +1673,21 @@ msgid ""
"\n"
msgstr ""
-#: main.c:782
+#: main.c:814
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:786
+#: main.c:818
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
msgstr ""
-#: main.c:806
+#: main.c:838
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1786,7 +1699,7 @@ msgid ""
"\n"
msgstr ""
-#: main.c:814
+#: main.c:846
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"
@@ -1795,118 +1708,113 @@ msgid ""
"\n"
msgstr ""
-#: main.c:820
+#: main.c:852
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:855
+#: main.c:887
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr ""
-#: main.c:1089
+#: main.c:1133
#, c-format
msgid "unknown value for field spec: %d\n"
msgstr ""
-#: main.c:1170
+#: main.c:1214
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
"\n"
msgstr ""
-#: main.c:1196
+#: main.c:1240
#, c-format
msgid "`%s' is not a legal variable name"
msgstr ""
-#: main.c:1199
+#: main.c:1243
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr ""
-#: main.c:1203
+#: main.c:1247
#, c-format
msgid "cannot use gawk builtin `%s' as variable name"
msgstr ""
-#: main.c:1208
+#: main.c:1252
#, c-format
msgid "cannot use function `%s' as variable name"
msgstr ""
-#: main.c:1261
+#: main.c:1305
msgid "floating point exception"
msgstr ""
-#: main.c:1268
+#: main.c:1312
msgid "fatal error: internal error"
msgstr ""
-#: main.c:1283
+#: main.c:1327
msgid "fatal error: internal error: segfault"
msgstr ""
-#: main.c:1295
+#: main.c:1339
msgid "fatal error: internal error: stack overflow"
msgstr ""
-#: main.c:1345
+#: main.c:1393
#, c-format
msgid "no pre-opened fd %d"
msgstr ""
-#: main.c:1352
+#: main.c:1400
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr ""
-#: main.c:1375 main.c:1384
-#, c-format
-msgid "could not find groups: %s"
-msgstr ""
-
-#: msg.c:63
+#: msg.c:61
#, c-format
msgid "cmd. line:"
msgstr ""
-#: msg.c:107
+#: msg.c:121
msgid "error: "
msgstr ""
-#: node.c:406
+#: node.c:436
msgid "backslash at end of string"
msgstr ""
-#: node.c:517
+#: node.c:520
#, c-format
msgid "old awk does not support the `\\%c' escape sequence"
msgstr ""
-#: node.c:568
+#: node.c:571
msgid "POSIX does not allow `\\x' escapes"
msgstr ""
-#: node.c:574
+#: node.c:577
msgid "no hex digits in `\\x' escape sequence"
msgstr ""
-#: node.c:596
+#: node.c:599
#, c-format
msgid ""
"hex escape \\x%.*s of %d characters probably not interpreted the way you "
"expect"
msgstr ""
-#: node.c:611
+#: node.c:614
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr ""
-#: node.c:750
+#: node.c:759
msgid ""
"Invalid multibyte data detected. There may be a mismatch between your data "
"and your locale."
@@ -1922,129 +1830,133 @@ msgstr ""
msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
msgstr ""
-#: profile.c:83
+#: profile.c:69
#, c-format
msgid "could not open `%s' for writing: %s"
msgstr ""
-#: profile.c:85
+#: profile.c:71
msgid "sending profile to standard error"
msgstr ""
-#: profile.c:203
+#: profile.c:187
#, c-format
msgid ""
"\t# %s block(s)\n"
"\n"
msgstr ""
-#: profile.c:208
+#: profile.c:192
#, c-format
msgid ""
"\t# Rule(s)\n"
"\n"
msgstr ""
-#: profile.c:279
+#: profile.c:266
#, c-format
msgid "internal error: %s with null vname"
msgstr ""
-#: profile.c:952
+#: profile.c:528
+msgid "internal error: builtin with null fname"
+msgstr ""
+
+#: profile.c:943
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr ""
-#: profile.c:1331
+#: profile.c:1328
#, c-format
msgid ""
"\n"
"\t# Functions, listed alphabetically\n"
msgstr ""
-#: profile.c:1370
+#: profile.c:1366
#, c-format
msgid "redir2str: unknown redirection type %d"
msgstr ""
-#: re.c:572
+#: re.c:571
#, c-format
msgid "range of the form `[%c-%c]' is locale dependent"
msgstr ""
-#: re.c:599
+#: re.c:598
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
msgstr ""
-#: regcomp.c:132
+#: regcomp.c:131
msgid "Success"
msgstr ""
-#: regcomp.c:135
+#: regcomp.c:134
msgid "No match"
msgstr ""
-#: regcomp.c:138
+#: regcomp.c:137
msgid "Invalid regular expression"
msgstr ""
-#: regcomp.c:141
+#: regcomp.c:140
msgid "Invalid collation character"
msgstr ""
-#: regcomp.c:144
+#: regcomp.c:143
msgid "Invalid character class name"
msgstr ""
-#: regcomp.c:147
+#: regcomp.c:146
msgid "Trailing backslash"
msgstr ""
-#: regcomp.c:150
+#: regcomp.c:149
msgid "Invalid back reference"
msgstr ""
-#: regcomp.c:153
+#: regcomp.c:152
msgid "Unmatched [ or [^"
msgstr ""
-#: regcomp.c:156
+#: regcomp.c:155
msgid "Unmatched ( or \\("
msgstr ""
-#: regcomp.c:159
+#: regcomp.c:158
msgid "Unmatched \\{"
msgstr ""
-#: regcomp.c:162
+#: regcomp.c:161
msgid "Invalid content of \\{\\}"
msgstr ""
-#: regcomp.c:165
+#: regcomp.c:164
msgid "Invalid range end"
msgstr ""
-#: regcomp.c:168
+#: regcomp.c:167
msgid "Memory exhausted"
msgstr ""
-#: regcomp.c:171
+#: regcomp.c:170
msgid "Invalid preceding regular expression"
msgstr ""
-#: regcomp.c:174
+#: regcomp.c:173
msgid "Premature end of regular expression"
msgstr ""
-#: regcomp.c:177
+#: regcomp.c:176
msgid "Regular expression too big"
msgstr ""
-#: regcomp.c:180
+#: regcomp.c:179
msgid "Unmatched ) or \\)"
msgstr ""
-#: regcomp.c:701
+#: regcomp.c:700
msgid "No previous regular expression"
msgstr ""
diff --git a/po/it.gmo b/po/it.gmo
index 597024e7..d7f7432a 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 4fd09749..24b09233 100644
--- a/po/it.po
+++ b/po/it.po
@@ -1,13 +1,13 @@
# Italian messages for GNU Awk
-# Copyright (C) 2002-2011 Free Software Foundation, Inc.
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
# Antonio Colombo <azc100@gmail.com>.
#
msgid ""
msgstr ""
"Project-Id-Version: gawk 3.1.81\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2011-11-14 21:46+0200\n"
-"PO-Revision-Date: 2011-03-19 16:52+0100\n"
+"POT-Creation-Date: 2012-04-27 10:06+0300\n"
+"PO-Revision-Date: 2012-05-08 16:11+0100\n"
"Last-Translator: Antonio Colombo <azc100@gmail.com>\n"
"Language-Team: Italian <it@li.org>\n"
"Language: it\n"
@@ -15,513 +15,462 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8-bit\n"
-#: array.c:140
+#: array.c:266
#, c-format
msgid "from %s"
msgstr "da %s"
-#: array.c:248
+#: array.c:366
msgid "attempt to use a scalar value as array"
msgstr "tentativo di usare valore scalare come vettore"
-#: array.c:251
-#, c-format
-msgid "attempt to use function `%s' as an array"
-msgstr "tentativo di usare funzione '%s' come vettore"
-
-#: array.c:254
+#: array.c:368
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
msgstr "tentativo di usare il parametro scalare `%s' come un vettore"
-#: array.c:257
+#: array.c:371
#, c-format
msgid "attempt to use scalar `%s' as an array"
msgstr "tentativo di usare scalare '%s' come vettore"
-#: array.c:302 array.c:707 builtin.c:84 builtin.c:1384 builtin.c:1426
-#: builtin.c:1439 builtin.c:1858 builtin.c:1870 eval.c:1135 eval.c:1139
-#: eval.c:1495 eval.c:1812
+#: array.c:418 array.c:584 builtin.c:85 builtin.c:1560 builtin.c:1602
+#: builtin.c:1615 builtin.c:2041 builtin.c:2053 eval.c:1109 eval.c:1113
+#: eval.c:1508
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "tentativo di usare vettore `%s' in un contesto scalare"
-#: array.c:513
-#, c-format
-msgid "reference to uninitialized element `%s[\"%.*s\"]'"
-msgstr "riferimento a elemento non inizializzato `%s[\"%.*s\"]'"
-
-#: array.c:519
-#, c-format
-msgid "subscript of array `%s' is null string"
-msgstr "l'indice del vettore '%s' una stringa nulla"
-
-#: array.c:723
+#: array.c:591
#, c-format
msgid "delete: index `%s' not in array `%s'"
msgstr "delete: indice `%s' non presente nel vettore `%s'"
-#: array.c:734 eval.c:1865
+#: array.c:605
#, c-format
msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
msgstr "tentativo di usare scalare`%s[\"%.*s\"]' come vettore"
-#: array.c:910
-#, c-format
-msgid "%s: empty (null)\n"
-msgstr "%s: vuoto (nullo)\n"
-
-#: array.c:915
-#, c-format
-msgid "%s: empty (zero)\n"
-msgstr "%s: vuoto (zero)\n"
-
-#: array.c:919
-#, c-format
-msgid "%s: table_size = %d, array_size = %d\n"
-msgstr "%s: dimensione_tabella = %d, dimensione_vettore = %d\n"
-
-#: array.c:954
-#, c-format
-msgid "%s: is parameter\n"
-msgstr "%s: parametro\n"
-
-#: array.c:958
-#, c-format
-msgid "%s: array_ref to %s\n"
-msgstr "%s: riferimento_vettoriale a %s\n"
-
-#: array.c:963
-msgid "adump: argument not an array"
-msgstr "adump: l'argomento non un vettore"
+#: array.c:784
+msgid "adump: first argument not an array"
+msgstr "adump: il primo argomento non un vettore"
-#: array.c:1086
+#: array.c:823
msgid "asort: second argument not an array"
msgstr "asort: il secondo argomento non un vettore"
-#: array.c:1087
+#: array.c:824
msgid "asorti: second argument not an array"
msgstr "asorti: il secondo argomento non un vettore"
-#: array.c:1094
+#: array.c:831
msgid "asort: first argument not an array"
msgstr "asort: il primo argomento non un vettore"
-#: array.c:1095
+#: array.c:832
msgid "asorti: first argument not an array"
msgstr "asorti: il primo argomento non un vettore"
-#: array.c:1102
-#, fuzzy
+#: array.c:839
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr ""
-"patsplit: non si pu usare lo stesso vettore come secondo e quarto argomento"
+"asort: non permesso un secondo argomento che sia un sottovettore del primo argomento"
-#: array.c:1103
-#, fuzzy
+#: array.c:840
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr ""
-"patsplit: non si pu usare lo stesso vettore come secondo e quarto argomento"
+"asorti: non permesso un secondo argomento che sia un sottovettore del primo argomento"
-#: array.c:1108
-#, fuzzy
+#: array.c:845
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr ""
-"split: non si pu usare lo stesso vettore come secondo e quarto argomento"
+"asort: non permesso un primo argomento che sia un sottovettore del secondo argomento"
-#: array.c:1109
-#, fuzzy
+#: array.c:846
msgid "asorti: cannot use a subarray of second arg for first arg"
msgstr ""
-"split: non si pu usare lo stesso vettore come secondo e quarto argomento"
+"asorti: non permesso un primo argomento che sia un sottovettore del secondo argomento"
-#: array.c:1659
-#, fuzzy, c-format
+#: array.c:1314
msgid "`%s' is invalid as a function name"
-msgstr "estensione: manca nome di funzione"
+msgstr "`%s' non un nome funzione valido"
-#: array.c:1663
-#, fuzzy, c-format
+#: array.c:1318
msgid "sort comparison function `%s' is not defined"
-msgstr "funzione `%s' non definita"
+msgstr "funzione di confronto del sort `%s' non definita"
-#: awkgram.y:249
+#: awkgram.y:223
#, c-format
msgid "%s blocks must have an action part"
msgstr "blocchi %s richiedono una 'azione'"
-#: awkgram.y:252
+#: awkgram.y:226
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:323 awkgram.y:334
+#: awkgram.y:295 awkgram.y:306
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:371
+#: awkgram.y:343
#, c-format
msgid "`%s' is a built-in function, it cannot be redefined"
msgstr "`%s' una funzione interna, non si pu ridefinire"
-#: awkgram.y:432
+#: awkgram.y:389
msgid "regexp constant `//' looks like a C++ comment, but is not"
msgstr "espressione regolare costante `//' sembra un commento C++, ma non lo "
-#: awkgram.y:436
+#: awkgram.y:393
#, 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:528
+#: awkgram.y:485
#, c-format
msgid "duplicate case values in switch body: %s"
msgstr "valori di 'case' doppi all'interno di uno 'switch': %s"
-#: awkgram.y:549
+#: awkgram.y:506
msgid "duplicate `default' detected in switch body"
msgstr "valori di default doppi all'interno di uno 'switch'"
-#: awkgram.y:809
+#: awkgram.y:766
msgid "`break' is not allowed outside a loop or switch"
msgstr "`break' non permesso fuori da un ciclo o da uno 'switch'"
-#: awkgram.y:818
+#: awkgram.y:775
msgid "`continue' is not allowed outside a loop"
msgstr "`continue' non permesso fuori da un un ciclo"
-#: awkgram.y:828
+#: awkgram.y:785
#, c-format
msgid "`next' used in %s action"
msgstr "`next' usato in 'azione' %s"
-#: awkgram.y:836
+#: awkgram.y:793
msgid "`nextfile' is a gawk extension"
msgstr "`nextfile' un'estensione gawk"
-#: awkgram.y:841
+#: awkgram.y:798
#, c-format
msgid "`nextfile' used in %s action"
msgstr "`nextfile' usato in 'azione' %s"
-#: awkgram.y:865
+#: awkgram.y:822
msgid "`return' used outside function context"
msgstr "`return' usato fuori da una funzione"
-#: awkgram.y:925
+#: awkgram.y:896
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:995 awkgram.y:999 awkgram.y:1023
+#: awkgram.y:966 awkgram.y:970 awkgram.y:994
msgid "`delete array' is a gawk extension"
msgstr "`delete array' un'estensione gawk"
-#: awkgram.y:1019
+#: awkgram.y:990
msgid "`delete(array)' is a non-portable tawk extension"
msgstr "`delete(array)' un'estensione tawk non-portabile"
-#: awkgram.y:1135
+#: awkgram.y:1108
msgid "multistage two-way pipelines don't work"
msgstr "'pipeline' multistadio bidirezionali non funzionano"
-#: awkgram.y:1238
+#: awkgram.y:1211
msgid "regular expression on right of assignment"
msgstr "espressione regolare usata per assegnare un valore"
-#: awkgram.y:1249
+#: awkgram.y:1222
msgid "regular expression on left of `~' or `!~' operator"
msgstr "espressione regolare prima di operatore `~' o `!~'"
-#: awkgram.y:1265 awkgram.y:1419
+#: awkgram.y:1238 awkgram.y:1389
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:1275
+#: awkgram.y:1248
msgid "regular expression on right of comparison"
msgstr "espressione regolare a destra in un confronto"
-#: awkgram.y:1394
+#: awkgram.y:1364
#, c-format
msgid "`getline var' invalid inside `%s' rule"
msgstr "`getline var' invalida all'interno della regola `%s'"
-#: awkgram.y:1397 eval.c:2504
+#: awkgram.y:1367
#, c-format
msgid "`getline' invalid inside `%s' rule"
msgstr "`getline' invalida all'interno della regola `%s'"
-#: awkgram.y:1402
+#: awkgram.y:1372
msgid "non-redirected `getline' undefined inside END action"
msgstr "`getline' non re-diretta indefinita dentro 'azione' END"
-#: awkgram.y:1421
+#: awkgram.y:1391
msgid "old awk does not support multidimensional arrays"
msgstr "il vecchio awk non supporta vettori multidimensionali"
-#: awkgram.y:1517
+#: awkgram.y:1488
msgid "call of `length' without parentheses is not portable"
msgstr "chiamata a `length' senza parentesi non portabile"
-#: awkgram.y:1580
+#: awkgram.y:1554
msgid "indirect function calls are a gawk extension"
msgstr "chiamate a funzione indirette sono un'estensione gawk"
-#: awkgram.y:1593
+#: awkgram.y:1567
#, c-format
msgid "can not use special variable `%s' for indirect function call"
msgstr ""
"non posso usare la variabile speciale `%s' come parametro indiretto di "
"funzione "
-#: awkgram.y:1671
+#: awkgram.y:1645
msgid "invalid subscript expression"
msgstr "espressione indice invalida"
-#: awkgram.y:1711
-msgid "use of non-array as array"
-msgstr "uso di non-vettore come vettore"
-
-#: awkgram.y:1975 awkgram.y:1995 msg.c:98
+#: awkgram.y:1966 awkgram.y:1986 msg.c:112
msgid "warning: "
msgstr "attenzione: "
-#: awkgram.y:1993 msg.c:130
+#: awkgram.y:1984 msg.c:144
msgid "fatal: "
msgstr "fatale: "
-#: awkgram.y:2043
+#: awkgram.y:2034
msgid "unexpected newline or end of string"
msgstr "carattere 'a capo' o fine stringa inaspettati"
-#: awkgram.y:2300 awkgram.y:2358 awkgram.y:2542
+#: awkgram.y:2299 awkgram.y:2357 awkgram.y:2545
#, 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:2301 awkgram.y:2359 builtin.c:122
+#: awkgram.y:2300 awkgram.y:2358 builtin.c:124
msgid "reason unknown"
msgstr "ragione indeterminata"
-#: awkgram.y:2317
+#: awkgram.y:2316
#, c-format
msgid "already included source file `%s'"
msgstr "file sorgente `%s' gi incluso"
-#: awkgram.y:2343
+#: awkgram.y:2342
msgid "@include is a gawk extension"
msgstr "@include un'estensione gawk"
-#: awkgram.y:2349
+#: awkgram.y:2348
msgid "empty filename after @include"
msgstr "nome-file mancante dopo @include"
-#: awkgram.y:2494
+#: awkgram.y:2497
msgid "empty program text on command line"
msgstr "programma nullo sulla linea comandi"
-#: awkgram.y:2609
+#: awkgram.y:2612
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "non riesco a leggere file sorgente `%s' (%s)"
-#: awkgram.y:2620
+#: awkgram.y:2623
#, c-format
msgid "source file `%s' is empty"
msgstr "file sorgente `%s' vuoto"
-#: awkgram.y:2805
+#: awkgram.y:2800
msgid "source file does not end in newline"
msgstr "file sorgente non termina con carattere 'a capo'"
-#: awkgram.y:2882
+#: awkgram.y:2905
msgid "unterminated regexp ends with `\\' at end of file"
msgstr "espressione regolare non completata termina con `\\' a fine file"
-#: awkgram.y:2906
+#: awkgram.y:2929
#, 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:2910
+#: awkgram.y:2933
#, 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:2917
+#: awkgram.y:2940
msgid "unterminated regexp"
msgstr "espressione regolare non completata"
-#: awkgram.y:2921
+#: awkgram.y:2944
msgid "unterminated regexp at end of file"
msgstr "espressione regolare non completata a fine file"
-#: awkgram.y:2980
+#: awkgram.y:3003
msgid "use of `\\ #...' line continuation is not portable"
msgstr "uso di `\\ #...' continuazione linea non portabile"
-#: awkgram.y:2996
+#: awkgram.y:3019
msgid "backslash not last character on line"
msgstr "'\\' non l'ultimo carattere della linea"
-#: awkgram.y:3057
+#: awkgram.y:3080
msgid "POSIX does not allow operator `**='"
msgstr "POSIX non permette l'operatore `**='"
-#: awkgram.y:3059
+#: awkgram.y:3082
msgid "old awk does not support operator `**='"
msgstr "il vecchio awk non supporta l'operatore `**='"
-#: awkgram.y:3068
+#: awkgram.y:3091
msgid "POSIX does not allow operator `**'"
msgstr "POSIX non permette l'operatore `**'"
-#: awkgram.y:3070
+#: awkgram.y:3093
msgid "old awk does not support operator `**'"
msgstr "il vecchio awk non supporta l'operatore `**'"
-#: awkgram.y:3105
+#: awkgram.y:3128
msgid "operator `^=' is not supported in old awk"
msgstr "l'operatore `^=' non supportato nel vecchio awk"
-#: awkgram.y:3113
+#: awkgram.y:3136
msgid "operator `^' is not supported in old awk"
msgstr "l'operatore `^' non supportato nel vecchio awk"
-#: awkgram.y:3206 awkgram.y:3222
+#: awkgram.y:3229 awkgram.y:3245
msgid "unterminated string"
msgstr "stringa non terminata"
-#: awkgram.y:3418
+#: awkgram.y:3466
#, c-format
msgid "invalid char '%c' in expression"
msgstr "carattere '%c' non valido in un'espressione"
-#: awkgram.y:3465
+#: awkgram.y:3513
#, c-format
msgid "`%s' is a gawk extension"
msgstr "`%s' un'estensione gawk"
-#: awkgram.y:3470
+#: awkgram.y:3518
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr "`%s' un'estensione Bell Labs"
-#: awkgram.y:3475
+#: awkgram.y:3523
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX non permette `%s'"
-#: awkgram.y:3483
+#: awkgram.y:3531
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "`%s' non supportato nel vecchio awk"
-#: awkgram.y:3550
+#: awkgram.y:3598
msgid "`goto' considered harmful!\n"
msgstr "`goto' considerato pericoloso!\n"
-#: awkgram.y:3601
+#: awkgram.y:3632
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d non valido come numero di argomenti per %s"
-#: awkgram.y:3636
+#: awkgram.y:3667
#, 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:3641
+#: awkgram.y:3672
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "il terzo parametro di '%s' non un oggetto modificabile"
-#: awkgram.y:3714 awkgram.y:3717
+#: awkgram.y:3751 awkgram.y:3754
msgid "match: third argument is a gawk extension"
msgstr "match: il terzo argomento un'estensione gawk"
-#: awkgram.y:3771 awkgram.y:3774
+#: awkgram.y:3808 awkgram.y:3811
msgid "close: second argument is a gawk extension"
msgstr "close: il secondo argomento un'estensione gawk"
-#: awkgram.y:3786
+#: awkgram.y:3823
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"uso scorretto di dcgettext(_\"...\"): togliere il carattere '_' iniziale"
-#: awkgram.y:3801
+#: awkgram.y:3838
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"uso scorretto di dcngettext(_\"...\"): togliere il carattere '_' iniziale"
-#: awkgram.y:3893
-#, c-format
-msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
-msgstr "funzione `%s': parametro #%d, `%s', duplica parametro #%d"
-
-#: awkgram.y:3935
+#: awkgram.y:3904
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "funzione `%s': parametro `%s' nasconde variabile globale"
-#: awkgram.y:4093
+#: awkgram.y:3961
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "non riesco ad aprire `%s' in scrittura (%s)"
-#: awkgram.y:4094
-#, fuzzy
+#: awkgram.y:3962
msgid "sending variable list to standard error"
-msgstr "mando profilo a 'standard error'"
+msgstr "mando lista variabili a 'standard error'"
-#: awkgram.y:4100
+#: awkgram.y:3970
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: 'close' fallita (%s)"
-#: awkgram.y:4152
+#: awkgram.y:3995
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() chiamata due volte!"
-#: awkgram.y:4158
+#: awkgram.y:4003
msgid "there were shadowed variables."
msgstr "c'erano variabili nascoste."
-#: awkgram.y:4188
+#: awkgram.y:4074
+#, c-format
+msgid "function name `%s' previously defined"
+msgstr "funzione di nome `%s' definita in precedenza"
+
+#: awkgram.y:4120
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "funzione `%s': non posso usare nome della funzione come nome parametro"
-#: awkgram.y:4192
+#: awkgram.y:4123
#, c-format
msgid "function `%s': can't use special variable `%s' as a function parameter"
msgstr ""
"funzione `%s': non posso usare la variabile speciale `%s' come parametro di "
"funzione"
-#: awkgram.y:4208
+#: awkgram.y:4131
#, c-format
-msgid "function name `%s' previously defined"
-msgstr "funzione di nome `%s' definita in precedenza"
+msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
+msgstr "funzione `%s': parametro #%d, `%s', duplica parametro #%d"
-#: awkgram.y:4376 awkgram.y:4382
+#: awkgram.y:4210 awkgram.y:4216
#, c-format
msgid "function `%s' called but never defined"
msgstr "funzione `%s' chiamata ma mai definita"
-#: awkgram.y:4385
+#: awkgram.y:4219
#, c-format
msgid "function `%s' defined but never called directly"
msgstr "funzione `%s' definita ma mai chiamata direttamente"
-#: awkgram.y:4417
+#: awkgram.y:4251
#, 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:4526
+#: awkgram.y:4297
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -530,227 +479,226 @@ msgstr ""
"funzione `%s' chiamata con spazio tra il nome e `(',\n"
"o usata come variabile o vettore"
-#: awkgram.y:4773 eval.c:2056
+#: awkgram.y:4505
msgid "division by zero attempted"
msgstr "tentativo di dividere per zero"
-#: awkgram.y:4782 eval.c:2072
+#: awkgram.y:4514
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "tentativo di dividere per zero in `%%'"
-#: builtin.c:120
+#: builtin.c:122
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s a \"%s\" fallita (%s)"
-#: builtin.c:121
+#: builtin.c:123
msgid "standard output"
msgstr "standard output"
-#: builtin.c:135
+#: builtin.c:137
msgid "exp: received non-numeric argument"
msgstr "exp: argomento non numerico"
-#: builtin.c:141
+#: builtin.c:143
#, c-format
msgid "exp: argument %g is out of range"
-msgstr "exp: argomento %g non accettabile"
+msgstr "exp: argomento %g fuori dai limiti ammessi"
-#: builtin.c:200
+#: builtin.c:202
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: non posso scaricare: 'pipe' `%s' aperta in lettura, non in scrittura"
-#: builtin.c:203
+#: builtin.c:205
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: non posso scaricare: file `%s' aperto in lettura, non in scrittura"
-#: builtin.c:215
+#: builtin.c:217
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr "fflush: `%s' non un file aperto, una 'pipe' o un co-processo"
-#: builtin.c:333
+#: builtin.c:335
msgid "index: received non-string first argument"
msgstr "index: il primo argomento non una stringa"
-#: builtin.c:335
+#: builtin.c:337
msgid "index: received non-string second argument"
msgstr "index: il secondo argomento non una stringa"
-#: builtin.c:457
+#: builtin.c:461
msgid "int: received non-numeric argument"
msgstr "int: argomento non numerico"
-#: builtin.c:493
+#: builtin.c:497
msgid "length: received array argument"
msgstr "length: l'argomento fornito un vettore"
-#: builtin.c:496
+#: builtin.c:500
msgid "`length(array)' is a gawk extension"
msgstr "`length(array)' un'estensione gawk"
-#: builtin.c:504
+#: builtin.c:508
msgid "length: received non-string argument"
msgstr "length: l'argomento non una stringa"
-#: builtin.c:535
+#: builtin.c:539
msgid "log: received non-numeric argument"
msgstr "log: argomento non numerico"
-#: builtin.c:538
+#: builtin.c:542
#, c-format
msgid "log: received negative argument %g"
msgstr "log: argomento negativo %g"
-#: builtin.c:694 builtin.c:699
+#: builtin.c:740 builtin.c:745
msgid "fatal: must use `count$' on all formats or none"
-msgstr ""
+msgstr "fatale: `count$' va usato per ogni 'format' o per nessuno""
-#: builtin.c:761
+#: builtin.c:815
#, c-format
msgid "field width is ignored for `%%' specifier"
-msgstr ""
+msgstr "larghezza campo ignorata per la specifica `%%'"
-#: builtin.c:763
+#: builtin.c:817
#, c-format
msgid "precision is ignored for `%%' specifier"
-msgstr ""
+msgstr "precisione ignorata per la specifica `%%'"
-#: builtin.c:765
+#: builtin.c:819
#, c-format
msgid "field width and precision are ignored for `%%' specifier"
-msgstr ""
+msgstr "larghezza campo e precisone ignorate per la specifica `%%'"
-#: builtin.c:816
-#, fuzzy
+#: builtin.c:870
msgid "fatal: `$' is not permitted in awk formats"
-msgstr "l'operatore `^' non supportato nel vecchio awk"
+msgstr "fatale: operatore `$' non consentito nei 'format' awk"
-#: builtin.c:825
+#: builtin.c:879
msgid "fatal: arg count with `$' must be > 0"
-msgstr ""
+msgstr "fatale: numero argomenti con `$' dev'essere > 0"
-#: builtin.c:829
+#: builtin.c:883
#, c-format
msgid "fatal: arg count %ld greater than total number of supplied arguments"
-msgstr ""
+msgstr "fatale: numero argomenti %ld > del numero totale argomenti specificati"
-#: builtin.c:833
+#: builtin.c:887
msgid "fatal: `$' not permitted after period in format"
-msgstr ""
+msgstr "fatale: `$' non permesso dopo il punto in un 'format'"
-#: builtin.c:849
+#: builtin.c:903
msgid "fatal: no `$' supplied for positional field width or precision"
-msgstr ""
+msgstr "fatale: manca `$' per i campi posizionali larghezza o precisione"
-#: builtin.c:920
+#: builtin.c:975
msgid "`l' is meaningless in awk formats; ignored"
-msgstr ""
+msgstr "`l' non ha senso nei 'format' awk; ignorato"
-#: builtin.c:924
+#: builtin.c:979
msgid "fatal: `l' is not permitted in POSIX awk formats"
-msgstr ""
+msgstr "fatale: `l' non permesso nei 'format' POSIX awk"
-#: builtin.c:937
+#: builtin.c:992
msgid "`L' is meaningless in awk formats; ignored"
-msgstr ""
+msgstr "`L' non ha senso nei 'format' awk; ignorato"
-#: builtin.c:941
+#: builtin.c:996
msgid "fatal: `L' is not permitted in POSIX awk formats"
-msgstr ""
+msgstr "`L' non ha senso nei 'format' awk; ignorato"
-#: builtin.c:954
+#: builtin.c:1009
msgid "`h' is meaningless in awk formats; ignored"
-msgstr ""
+msgstr "`h' non ha senso nei 'format' awk; ignorato"
-#: builtin.c:958
+#: builtin.c:1013
msgid "fatal: `h' is not permitted in POSIX awk formats"
-msgstr ""
+msgstr "fatale: `h' non permesso nei 'format' POSIX awk"
-#: builtin.c:1271
+#: builtin.c:1408
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
-msgstr ""
+msgstr "[s]printf: valore %g fuori dai limiti ammessi per il 'format' `%%%c'"
-#: builtin.c:1331
+#: builtin.c:1506
#, c-format
msgid "ignoring unknown format specifier character `%c': no argument converted"
-msgstr ""
+msgstr "carattere di 'format' sconosciuto `%c' ignorato: nessun argomento convertito"
-#: builtin.c:1336
+#: builtin.c:1511
msgid "fatal: not enough arguments to satisfy format string"
-msgstr ""
+msgstr "fatale: argomenti in numero minore di quelli richiesti dalla stringa di 'format'"
-#: builtin.c:1338
+#: builtin.c:1513
msgid "^ ran out for this one"
-msgstr ""
+msgstr "^ esauriti a questo punto"
-#: builtin.c:1345
+#: builtin.c:1520
msgid "[s]printf: format specifier does not have control letter"
-msgstr ""
+msgstr "[s]printf: specifica di 'format' senza un carattere di controllo"
-#: builtin.c:1348
+#: builtin.c:1523
msgid "too many arguments supplied for format string"
-msgstr ""
+msgstr "troppi argomenti specificati per questa stringa di 'format'"
-#: builtin.c:1422 builtin.c:1433
+#: builtin.c:1598 builtin.c:1609
msgid "printf: no arguments"
-msgstr "printf: manca argomento"
+msgstr "printf: mancano argomenti"
-#: builtin.c:1474
+#: builtin.c:1650
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: argomento non numerico"
-#: builtin.c:1478
+#: builtin.c:1654
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: chiamata con argomento negativo %g"
-#: builtin.c:1502
+#: builtin.c:1685
#, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: lunghezza %g non >= 1"
-#: builtin.c:1504
+#: builtin.c:1687
#, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: lunghezza %g non >= 0"
-#: builtin.c:1511
+#: builtin.c:1694
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: lunghezza non intera %g: sar troncata"
-#: builtin.c:1516
+#: builtin.c:1699
#, 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:1528
+#: builtin.c:1711
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: indice di partenza %g non valido, uso 1"
-#: builtin.c:1533
+#: builtin.c:1716
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: indice di partenza non intero %g: sar troncato"
-#: builtin.c:1558
+#: builtin.c:1741
msgid "substr: source string is zero length"
msgstr "substr: stringa di partenza lunga zero"
-#: builtin.c:1574
+#: builtin.c:1757
#, 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:1582
+#: builtin.c:1765
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -758,228 +706,223 @@ msgstr ""
"substr: lunghezza %g all'indice di partenza %g supera la lunghezza del primo "
"argomento (%lu)"
-#: builtin.c:1656
+#: builtin.c:1839
msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
msgstr ""
"strftime: il valore del 'format' in PROCINFO[\"strftime\"] di tipo numerico"
-#: builtin.c:1679
+#: builtin.c:1862
msgid "strftime: received non-numeric second argument"
msgstr "strftime: il secondo argomento non numerico"
-#: builtin.c:1682
+#: builtin.c:1866
msgid "strftime: second argument less than 0 or too big for time_t"
-msgstr ""
+msgstr "strftime: secondo argomento < 0 o troppo elevato per time_t"
-#: builtin.c:1689
+#: builtin.c:1873
msgid "strftime: received non-string first argument"
msgstr "strftime: il primo argomento non una stringa"
-#: builtin.c:1695
+#: builtin.c:1880
msgid "strftime: received empty format string"
msgstr "strftime: 'format' una stringa nulla"
-#: builtin.c:1761
+#: builtin.c:1946
msgid "mktime: received non-string argument"
msgstr "mktime: l'argomento non una stringa"
-#: builtin.c:1778
+#: builtin.c:1963
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:1813
+#: builtin.c:1998
msgid "'system' function not allowed in sandbox mode"
msgstr "la funzione 'system' non permessa in modo 'sandbox'"
-#: builtin.c:1818
+#: builtin.c:2003
msgid "system: received non-string argument"
msgstr "system: l'argomento non una stringa"
-#: builtin.c:1873 eval.c:1159 eval.c:1790 eval.c:1803
-#, c-format
-msgid "reference to uninitialized variable `%s'"
-msgstr "riferimento a variabile non inizializzata `%s'"
-
-#: builtin.c:1940
+#: builtin.c:2121
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "riferimento a variabile non inizializzata `$%d'"
-#: builtin.c:2027
+#: builtin.c:2208
msgid "tolower: received non-string argument"
msgstr "tolower: l'argomento non una stringa"
-#: builtin.c:2061
+#: builtin.c:2242
msgid "toupper: received non-string argument"
msgstr "toupper: l'argomento non una stringa"
-#: builtin.c:2097
+#: builtin.c:2278
msgid "atan2: received non-numeric first argument"
msgstr "atan2: il primo argomento non numerico"
-#: builtin.c:2099
+#: builtin.c:2280
msgid "atan2: received non-numeric second argument"
msgstr "atan2: il secondo argomento non numerico"
-#: builtin.c:2118
+#: builtin.c:2299
msgid "sin: received non-numeric argument"
msgstr "sin: l'argomento non numerico"
-#: builtin.c:2134
+#: builtin.c:2315
msgid "cos: received non-numeric argument"
msgstr "cos: l'argomento non numerico"
-#: builtin.c:2187
+#: builtin.c:2368
msgid "srand: received non-numeric argument"
msgstr "srand: l'argomento non numerico"
-#: builtin.c:2218
+#: builtin.c:2399
msgid "match: third argument is not an array"
msgstr "match: il terzo argomento non un vettore"
-#: builtin.c:2482
+#: builtin.c:2664
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: il terzo argomento 0, trattato come 1"
-#: builtin.c:2775
+#: builtin.c:2957
msgid "lshift: received non-numeric first argument"
msgstr "lshift: il primo argomento non numerico"
-#: builtin.c:2777
+#: builtin.c:2959
msgid "lshift: received non-numeric second argument"
msgstr "lshift: il secondo argomento non numerico"
-#: builtin.c:2783
+#: builtin.c:2965
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr "lshift(%lf, %lf): valori negativi daranno risultati strani"
-#: builtin.c:2785
+#: builtin.c:2967
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr "lshift(%lf, %lf): valori con decimali verranno troncati"
-#: builtin.c:2787
+#: builtin.c:2969
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr "lshift(%lf, %lf): valori troppo alti daranno risultati strani"
-#: builtin.c:2812
+#: builtin.c:2994
msgid "rshift: received non-numeric first argument"
msgstr "rshift: il primo argomento non numerico"
-#: builtin.c:2814
+#: builtin.c:2996
msgid "rshift: received non-numeric second argument"
msgstr "rshift: il secondo argomento non numerico"
-#: builtin.c:2820
+#: builtin.c:3002
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr "rshift(%lf, %lf): valori negativi daranno risultati strani"
-#: builtin.c:2822
+#: builtin.c:3004
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr "rshift(%lf, %lf): valori con decimali verranno troncati"
-#: builtin.c:2824
+#: builtin.c:3006
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr "rshift(%lf, %lf): valori troppo alti daranno risultati strani"
-#: builtin.c:2849
+#: builtin.c:3031
msgid "and: received non-numeric first argument"
msgstr "and: il primo argomento non numerico"
-#: builtin.c:2851
+#: builtin.c:3033
msgid "and: received non-numeric second argument"
msgstr "and: il secondo argomento non numerico"
-#: builtin.c:2857
+#: builtin.c:3039
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr "and(%lf, %lf): valori negativi daranno risultati strani"
-#: builtin.c:2859
+#: builtin.c:3041
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr "and(%lf, %lf): valori con decimali verranno troncati"
-#: builtin.c:2884
+#: builtin.c:3066
msgid "or: received non-numeric first argument"
msgstr "or: il primo argomento non numerico"
-#: builtin.c:2886
+#: builtin.c:3068
msgid "or: received non-numeric second argument"
msgstr "or: il secondo argomento non numerico"
-#: builtin.c:2892
+#: builtin.c:3074
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr "or(%lf, %lf): valori negativi daranno risultati strani"
-#: builtin.c:2894
+#: builtin.c:3076
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr "or(%lf, %lf): valori con decimali verranno troncati"
-#: builtin.c:2922
+#: builtin.c:3102
msgid "xor: received non-numeric first argument"
msgstr "xor: il primo argomento non numerico"
-#: builtin.c:2924
+#: builtin.c:3104
msgid "xor: received non-numeric second argument"
msgstr "xor: il secondo argomento non numerico"
-#: builtin.c:2930
+#: builtin.c:3110
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr "xor(%lf, %lf): valori negativi daranno risultati strani"
-#: builtin.c:2932
+#: builtin.c:3112
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr "xor(%lf, %lf): valori con decimali verranno troncati"
-#: builtin.c:2956 builtin.c:2962
+#: builtin.c:3136
msgid "compl: received non-numeric argument"
msgstr "compl: l'argomento non numerico"
-#: builtin.c:2964
+#: builtin.c:3142
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr "compl(%lf): valore negativo dar risultati strani"
-#: builtin.c:2966
+#: builtin.c:3144
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr "compl(%lf): valore con decimali verr troncato"
-#: builtin.c:3135
+#: builtin.c:3313
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: `%s' non una categoria 'locale' valida"
-#: eval.c:412
+#: eval.c:395
#, c-format
msgid "unknown nodetype %d"
msgstr "tipo nodo sconosciuto %d"
-#: eval.c:423 eval.c:437
+#: eval.c:406 eval.c:420
#, c-format
msgid "unknown opcode %d"
msgstr "codice operativo sconosciuto %d"
-#: eval.c:434
+#: eval.c:417
#, c-format
msgid "opcode %s not an operator or keyword"
msgstr "codice operativo %s non un operatore o una parola chiave"
-#: eval.c:488
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr "superamento limiti buffer in 'genflags2str'"
-#: eval.c:698
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -990,816 +933,764 @@ msgstr ""
"\t# 'Stack' (Pila) Chiamate Funzione:\n"
"\n"
-#: eval.c:725
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
msgstr "`IGNORECASE' un'estensione gawk"
-#: eval.c:754
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr "`BINMODE' un'estensione gawk"
-#: eval.c:812
+#: eval.c:793
#, c-format
msgid "BINMODE value `%s' is invalid, treated as 3"
msgstr "valore di BINMODE `%s' non valido, considerato come 3"
-#: eval.c:902
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "specificazione invalida `%sFMT' `%s'"
-#: eval.c:980
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "disabilito `--lint' a causa di assegnamento a `LINT'"
-#: eval.c:1127 eval.c:1777
-#, c-format
-msgid "can't use function name `%s' as variable or array"
-msgstr "non posso usare nome di funzione `%s' come variabile o vettore"
-
-#: eval.c:1158 eval.c:1789 eval.c:1802
+#: eval.c:1132
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "riferimento ad argomento non inizializzato `%s'"
-#: eval.c:1177
+#: eval.c:1133
+#, c-format
+msgid "reference to uninitialized variable `%s'"
+msgstr "riferimento a variabile non inizializzata `%s'"
+
+#: eval.c:1151
msgid "attempt to field reference from non-numeric value"
msgstr "tentativo di riferimento a un campo da valore non numerico"
-#: eval.c:1179
+#: eval.c:1153
msgid "attempt to field reference from null string"
msgstr "tentativo di riferimento a un campo da una stringa nulla"
-#: eval.c:1185
+#: eval.c:1161
#, c-format
msgid "attempt to access field %ld"
msgstr "tentativo di accedere al campo %ld"
-#: eval.c:1194
+#: eval.c:1170
#, c-format
msgid "reference to uninitialized field `$%ld'"
msgstr "riferimento a campo non inizializzato `$%ld'"
-#: eval.c:1256
+#: eval.c:1257
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "funzione `%s' chiamata con pi argomenti di quelli previsti"
-#: eval.c:1437
+#: eval.c:1452
#, c-format
msgid "unwind_stack: unexpected type `%s'"
msgstr "unwind_stack: tipo non previsto `%s'"
-#: eval.c:1532
+#: eval.c:1546
msgid "division by zero attempted in `/='"
msgstr "divisione per zero tentata in `/='"
-#: eval.c:1539
+#: eval.c:1553
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "divisione per zero tentata in `%%='"
-#: eval.c:1876 eval.c:2122
-#, fuzzy, c-format
-msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context"
-msgstr "tentativo di usare vettore `%s' in un contesto scalare"
-
-#: eval.c:1907
-msgid "assignment used in conditional context"
-msgstr "assegnamento usato nel contesto di un test condizionale"
-
-#: eval.c:1911
-msgid "statement has no effect"
-msgstr "istruzione che non fa nulla"
-
-#: eval.c:2343
-#, c-format
-msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
-msgstr ""
-"ciclo for: vettore `%s' ha cambiato dimensione da %ld a %ld durante "
-"l'esecuzione del ciclo"
-
-#: eval.c:2458
-#, c-format
-msgid "function called indirectly through `%s' does not exist"
-msgstr "la funzione chiamata indirettamente tramite `%s' non esiste"
-
-#: eval.c:2470
-#, c-format
-msgid "function `%s' not defined"
-msgstr "funzione `%s' non definita"
-
-#: eval.c:2511
-#, c-format
-msgid "non-redirected `getline' invalid inside `%s' rule"
-msgstr "`getline' non-diretta indefinita dentro regola '%s'"
-
-#: eval.c:2600
-#, c-format
-msgid "error reading input file `%s': %s"
-msgstr "errore leggendo file di input `%s': %s"
-
-#: eval.c:2614
-#, c-format
-msgid "`nextfile' cannot be called from a `%s' rule"
-msgstr "`nextfile' non pu essere chiamato da una regola `%s'"
-
-#: eval.c:2694
-#, c-format
-msgid "`next' cannot be called from a `%s' rule"
-msgstr "`next' non pu essere chiamato da una regola `%s'"
-
-#: eval.c:2760
-#, c-format
-msgid "Sorry, don't know how to interpret `%s'"
-msgstr "Spiacente, non so come interpretare `%s'"
-
-#: ext.c:64
+#: ext.c:70
msgid "extensions are not allowed in sandbox mode"
msgstr "le estensioni non sono permesse in modo 'sandbox'"
-#: ext.c:70 ext.c:75
+#: ext.c:73
msgid "`extension' is a gawk extension"
msgstr "`extension' un'estensione gawk"
-#: ext.c:85
-#, c-format
-msgid "fatal: extension: cannot open `%s' (%s)\n"
-msgstr "fatale: estensione: non riesco ad aprire `%s' (%s)\n"
+#: ext.c:80
+msgid "extension: cannot open library `%s' (%s)\n"
+msgstr "estensione: non riesco ad aprire libreria `%s' (%s)\n"
-#: ext.c:94
-#, c-format
+#: ext.c:86
msgid ""
-"fatal: extension: library `%s': does not define "
-"`plugin_is_GPL_compatible' (%s)\n"
+"extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n"
msgstr ""
-"fatale: estensione: libreria `%s': non definisce "
+"estensione: libreria `%s': non definisce "
"`plugin_is_GPL_compatible' (%s)\n"
-#: ext.c:103
-#, c-format
-msgid "fatal: extension: library `%s': cannot call function `%s' (%s)\n"
+#: ext.c:90
+msgid "extension: library `%s': cannot call function `%s' (%s)\n"
msgstr ""
-"fatale: estensione: libreria `%s': non riesco a chiamare funzione `%s' (%s)\n"
+"estensione: libreria `%s': non riesco a chiamare funzione `%s' (%s)\n"
-#: ext.c:137
+#: ext.c:118
msgid "extension: missing function name"
msgstr "estensione: manca nome di funzione"
-#: ext.c:142
+#: ext.c:123
#, c-format
msgid "extension: illegal character `%c' in function name `%s'"
msgstr "estensione: carattere non ammesso `%c' nel nome di funzione `%s'"
-#: ext.c:151
+#: ext.c:131
#, c-format
msgid "extension: can't redefine function `%s'"
msgstr "estensione: non riesco a ridefinire funzione `%s'"
-#: ext.c:155
+#: ext.c:135
#, c-format
msgid "extension: function `%s' already defined"
msgstr "estensione: funzione `%s' gi definita"
-#: ext.c:160
+#: ext.c:139
#, c-format
msgid "extension: function name `%s' previously defined"
msgstr "estensione: funzione di nome `%s' definita in precedenza"
-#: ext.c:162
+#: ext.c:141
#, c-format
msgid "extension: can't use gawk built-in `%s' as function name"
msgstr ""
"estensione: nome funzione interna gawk `%s' non ammesso come nome funzione"
-#: ext.c:166
+#: ext.c:144
#, c-format
msgid "make_builtin: negative argument count for function `%s'"
msgstr "make_builtin: contatore argomenti negativo per la funzione `%s'"
-#: ext.c:269
+#: ext.c:206
#, c-format
msgid "function `%s' defined to take no more than %d argument(s)"
msgstr "funzione `%s' definita per avere al massimo %d argomenti(o)"
-#: ext.c:272
+#: ext.c:209
#, c-format
msgid "function `%s': missing argument #%d"
msgstr "funzione `%s': manca argomento #%d"
-#: ext.c:289
+#: ext.c:226
#, c-format
msgid "function `%s': argument #%d: attempt to use scalar as an array"
msgstr "funzione `%s': argomento #%d: tentativo di usare scalare come vettore"
-#: ext.c:293
+#: ext.c:230
#, c-format
msgid "function `%s': argument #%d: attempt to use array as a scalar"
msgstr "funzione `%s': argomento #%d: tentativo di usare vettore come scalare"
-#: ext.c:306
+#: ext.c:244
msgid "Operation Not Supported"
msgstr "Operazione Non Supportata"
-#: field.c:328
+#: ext.c:256
+msgid "dynamic loading of library not supported"
+msgstr "caricamento dinamico di libreria non supportato"
+
+#: field.c:339
msgid "NF set to negative value"
msgstr "NF impostato a un valore negativo"
-#: field.c:951 field.c:958 field.c:962
+#: field.c:962 field.c:969 field.c:973
msgid "split: fourth argument is a gawk extension"
msgstr "split: il quarto argomento un'estensione gawk"
-#: field.c:955
+#: field.c:966
msgid "split: fourth argument is not an array"
msgstr "split: il quarto argomento non un vettore"
-#: field.c:969
+#: field.c:980
msgid "split: second argument is not an array"
msgstr "split: il secondo argomento non un vettore"
-#: field.c:973
-#, fuzzy
+#: field.c:984
msgid "split: cannot use the same array for second and fourth args"
msgstr ""
-"split: non si pu usare lo stesso vettore come secondo e quarto argomento"
+"split: non si pu usare un unico vettore come secondo e quarto argomento"
-#: field.c:978
-#, fuzzy
+#: field.c:989
msgid "split: cannot use a subarray of second arg for fourth arg"
msgstr ""
-"split: non si pu usare lo stesso vettore come secondo e quarto argomento"
+"split: non permesso un quarto argomento che sia un sottovettore del secondo argomento"
-#: field.c:981
-#, fuzzy
+#: field.c:992
msgid "split: cannot use a subarray of fourth arg for second arg"
msgstr ""
-"split: non si pu usare lo stesso vettore come secondo e quarto argomento"
+"split: non permesso un secondo argomento che sia un sottovettore del quarto argomento"
-#: field.c:1010
+#: field.c:1021
msgid "split: null string for third arg is a gawk extension"
msgstr "split: la stringa nulla come terzo arg. un'estensione gawk"
-#: field.c:1050
+#: field.c:1061
msgid "patsplit: fourth argument is not an array"
msgstr "patsplit: il secondo argomento non un vettore"
-#: field.c:1055
+#: field.c:1066
msgid "patsplit: second argument is not an array"
msgstr "patsplit: il secondo argomento non un vettore"
-#: field.c:1061
+#: field.c:1072
msgid "patsplit: third argument must be non-null"
msgstr "patsplit: il terzo argomento non pu essere nullo"
-#: field.c:1065
-#, fuzzy
+#: field.c:1076
msgid "patsplit: cannot use the same array for second and fourth args"
msgstr ""
-"patsplit: non si pu usare lo stesso vettore come secondo e quarto argomento"
+"patsplit: non si pu usare un unico vettore come secondo e quarto argomento"
-#: field.c:1070
-#, fuzzy
+#: field.c:1081
msgid "patsplit: cannot use a subarray of second arg for fourth arg"
msgstr ""
-"patsplit: non si pu usare lo stesso vettore come secondo e quarto argomento"
+"patsplit: non permesso un quarto argomento che sia un sottovettore del secondo argomento"
-#: field.c:1073
-#, fuzzy
+#: field.c:1084
msgid "patsplit: cannot use a subarray of fourth arg for second arg"
msgstr ""
-"patsplit: non si pu usare lo stesso vettore come secondo e quarto argomento"
+"patsplit: non permesso un secondo argomento che sia un sottovettore del quarto argomento"
-#: field.c:1110
+#: field.c:1122
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "`FIELDWIDTHS' un'estensione gawk"
-#: field.c:1173
+#: field.c:1186
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr "valore di FIELDWIDTHS non valido, vicino a `%s'"
-#: field.c:1246
+#: field.c:1259
msgid "null string for `FS' is a gawk extension"
msgstr "la stringa nulla usata come `FS' un'estensione gawk"
-#: field.c:1250
+#: field.c:1263
msgid "old awk does not support regexps as value of `FS'"
msgstr "il vecchio awk non supporta espressioni come valori di `FS'"
-#: field.c:1369
+#: field.c:1382
msgid "`FPAT' is a gawk extension"
msgstr "`FPAT' un'estensione gawk"
-#: getopt.c:574 getopt.c:590
-#, c-format
-msgid "%s: option '%s' is ambiguous\n"
-msgstr "%s: opzione '%s' ambigua\n"
+#: getopt.c:604 getopt.c:633
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr "%s: opzione '%s' ambigua; possibilit:"
-#: getopt.c:623 getopt.c:627
+#: getopt.c:679 getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: l'opzione '--%s' non ammette un argomento\n"
-#: getopt.c:636 getopt.c:641
+#: getopt.c:692 getopt.c:697
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: l'opzione '%c%s' non ammette un argomento\n"
-#: getopt.c:684 getopt.c:703
+#: getopt.c:740 getopt.c:759
#, c-format
msgid "%s: option '--%s' requires an argument\n"
msgstr "%s: l'opzione '--%s' richiede un argomento\n"
-#: getopt.c:741 getopt.c:744
+#: getopt.c:797 getopt.c:800
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: opzione sconosciuta '--%s'\n"
-#: getopt.c:752 getopt.c:755
+#: getopt.c:808 getopt.c:811
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: opzione sconosciuta '%c%s'\n"
-#: getopt.c:804 getopt.c:807
+#: getopt.c:860 getopt.c:863
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: opzione non valida -- '%c'\n"
-#: getopt.c:857 getopt.c:874 getopt.c:1082 getopt.c:1100
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s: l'opzione richiede un argomento -- '%c'\n"
-#: getopt.c:930 getopt.c:946
+#: getopt.c:989 getopt.c:1005
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: l'opzione '-W %s' ambigua\n"
-#: getopt.c:970 getopt.c:988
+#: getopt.c:1029 getopt.c:1047
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: l'opzione '-W %s' non ammette un argomento\n"
-#: getopt.c:1009 getopt.c:1027
+#: getopt.c:1068 getopt.c:1086
#, c-format
msgid "%s: option '-W %s' requires an argument\n"
msgstr "%s: l'opzione '-W %s' richiede un argomento\n"
-#: io.c:280
+#: io.c:326
#, c-format
msgid "command line argument `%s' is a directory: skipped"
msgstr "l'argomento in linea comando `%s' una directory: saltato"
-#: io.c:283 io.c:385
+#: io.c:329 io.c:438
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "non riesco ad aprire file `%s' in lettura (%s)"
-#: io.c:501
+#: io.c:568
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "chiusura di fd %d (`%s') fallita (%s)"
-#: io.c:578
+#: io.c:645
msgid "redirection not allowed in sandbox mode"
msgstr "re-direzione non permessa in modo 'sandbox'"
-#: io.c:612
+#: io.c:679
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "espressione nella re-direzione `%s' ha solo un valore numerico"
-#: io.c:618
+#: io.c:685
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "espressione nella re-direzione `%s' ha per valore la stringa nulla"
-#: io.c:624
+#: io.c:690
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"nome-file `%s' per la re-direzione `%s' pu essere il risultato di una "
"espressione logica"
-#: io.c:667
+#: io.c:733
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "mistura non necessaria di `>' e `>>' per il file `%.*s'"
-#: io.c:720
+#: io.c:786
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "non posso aprire 'pipe' `%s' in scrittura (%s)"
-#: io.c:730
+#: io.c:796
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "non posso aprire 'pipe' `%s' in lettura (%s)"
-#: io.c:753
+#: io.c:819
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr "non posso aprire 'pipe' bidirezionale `%s' per lettura/scrittura (%s)"
-#: io.c:835
+#: io.c:900
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "non posso re-dirigere da `%s' (%s)"
-#: io.c:838
+#: io.c:903
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "non posso re-dirigere a `%s' (%s)"
-#: io.c:889
+#: io.c:954
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"numero massimo consentito di file aperti raggiunto: comincio a riutilizzare "
"i descrittori di file"
-#: io.c:905
+#: io.c:970
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "chiusura di `%s' fallita (%s)."
-#: io.c:913
+#: io.c:978
msgid "too many pipes or input files open"
msgstr "troppe 'pipe' o file di input aperti"
-#: io.c:935
+#: io.c:1000
msgid "close: second argument must be `to' or `from'"
msgstr "close: il secondo argomento deve essere `a' o `da'"
-#: io.c:952
+#: io.c:1017
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr "close: `%.*s' non un file aperto, una 'pipe' o un co-processo"
-#: io.c:957
+#: io.c:1022
msgid "close of redirection that was never opened"
msgstr "chiusura di una re-direzione mai aperta"
-#: io.c:1054
+#: io.c:1120
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr "close: re-direzione `%s' non aperta con `|&', ignoro secondo argomento"
-#: io.c:1070
+#: io.c:1137
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "errore ritornato (%d) dalla chiusura della 'pipe' `%s' (%s)"
-#: io.c:1073
+#: io.c:1140
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "errore ritornato (%d) dalla chiusura del file `%s' (%s)"
-#: io.c:1093
+#: io.c:1160
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "nessuna chiusura esplicita richiesta per 'socket' `%s'"
-#: io.c:1096
+#: io.c:1163
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "nessuna chiusura esplicita richiesta per co-processo `%s'"
-#: io.c:1099
+#: io.c:1166
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "nessuna chiusura esplicita richiesta per 'pipe' `%s'"
-#: io.c:1102
+#: io.c:1169
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "nessuna chiusura esplicita richiesta per file `%s'"
-#: io.c:1130 io.c:1185 main.c:793 main.c:830
+#: io.c:1197 io.c:1252 main.c:825 main.c:862
#, c-format
msgid "error writing standard output (%s)"
msgstr "errore scrivendo 'standard output' (%s)"
-#: io.c:1134 io.c:1190
+#: io.c:1201 io.c:1257
#, c-format
msgid "error writing standard error (%s)"
msgstr "errore scrivendo 'standard error' (%s)"
-#: io.c:1142
+#: io.c:1209
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "scaricamento di 'pipe' `%s' fallita (%s)."
-#: io.c:1145
+#: io.c:1212
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "scaricamento da co-processo di 'pipe' a `%s' fallita (%s)."
-#: io.c:1148
+#: io.c:1215
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "scaricamento di file `%s' fallita (%s)."
-#: io.c:1263
+#: io.c:1329
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr "porta locale %s invalida in `/inet'"
-#: io.c:1280
+#: io.c:1347
#, c-format
msgid "remote host and port information (%s, %s) invalid"
msgstr "host remoto e informazione di porta (%s, %s) invalidi"
-#: io.c:1432
+#: io.c:1499
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr "nessuno protocollo (noto) specificato nel filename speciale `%s'"
-#: io.c:1446
+#: io.c:1513
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "nome-file speciale `%s' incompleto"
-#: io.c:1463
+#: io.c:1530
msgid "must supply a remote hostname to `/inet'"
msgstr "va fornito nome di 'host' remoto a `/inet'"
-#: io.c:1481
+#: io.c:1548
msgid "must supply a remote port to `/inet'"
msgstr "va fornita porta remota a `/inet'"
-#: io.c:1527
+#: io.c:1594
msgid "TCP/IP communications are not supported"
msgstr "comunicazioni TCP/IP non supportate"
-#: io.c:1694
+#: io.c:1764
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "non riesco ad aprire `%s', modo `%s'"
-#: io.c:1748
+#: io.c:1814
#, c-format
msgid "close of master pty failed (%s)"
msgstr "fallita chiusura di 'pty' principale (%s)"
-#: io.c:1750 io.c:1918 io.c:2075
+#: io.c:1816 io.c:1984 io.c:2145
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "fallita chiusura di 'stdout' nel processo-figlio (%s)"
-#: io.c:1753
+#: io.c:1819
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr ""
"fallito trasferimento di 'pty' secondaria a 'stdout' nel processo-figlio "
"(dup: %s)"
-#: io.c:1755 io.c:1923
+#: io.c:1821 io.c:1989
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "fallita chiusura di 'stdin' nel processo-figlio (%s)"
-#: io.c:1758
+#: io.c:1824
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr ""
"fallito trasferimento di 'pty' secondaria a 'stdin' nel processo-figlio "
"(dup: %s)"
-#: io.c:1760 io.c:1781
+#: io.c:1826 io.c:1847
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "fallita chiusura di 'pty' secondaria (%s)"
-#: io.c:1859 io.c:1921 io.c:2053 io.c:2078
+#: io.c:1925 io.c:1987 io.c:2122 io.c:2148
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr "fallito passaggio di 'pipe' a 'stdout' nel processo-figlio (dup: %s)"
-#: io.c:1866 io.c:1926
+#: io.c:1932 io.c:1992
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr "fallito passaggio di pipe a 'stdin' nel processo-figlio (dup: %s)"
-#: io.c:1886 io.c:2068
+#: io.c:1952 io.c:2138
msgid "restoring stdout in parent process failed\n"
msgstr "fallito ripristino di 'stdout' nel processo-padre\n"
-#: io.c:1894
+#: io.c:1960
msgid "restoring stdin in parent process failed\n"
msgstr "fallito ripristino di 'stdin' nel processo-padre\n"
-#: io.c:1929 io.c:2080 io.c:2094
+#: io.c:1995 io.c:2150 io.c:2164
#, c-format
msgid "close of pipe failed (%s)"
msgstr "fallita chiusura di 'pipe' (%s)"
-#: io.c:1974
+#: io.c:2040
msgid "`|&' not supported"
msgstr "`|&' non supportato"
-#: io.c:2040
+#: io.c:2107
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "non riesco ad aprire 'pipe' `%s' (%s)"
-#: io.c:2088
+#: io.c:2158
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "non riesco a creare processo-figlio per `%s' (fork: %s)"
-#: io.c:2521
+#: io.c:2637
#, c-format
msgid "data file `%s' is empty"
msgstr "file dati `%s' vuoto"
-#: io.c:2562 io.c:2570
+#: io.c:2678 io.c:2686
msgid "could not allocate more input memory"
msgstr "non riesco ad allocare ulteriore memoria per l'input"
-#: io.c:3128
+#: io.c:3236
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "valore multicarattere per `RS' un'estensione gawk"
-#: io.c:3233
+#: io.c:3326
msgid "IPv6 communication is not supported"
msgstr "comunicazioni IPv6 non supportate"
-#: main.c:364
+#: main.c:355
msgid "`-m[fr]' option irrelevant in gawk"
msgstr "`-m[fr]' opzione irrilevante per gawk"
-#: main.c:366
+#: main.c:357
msgid "-m option usage: `-m[fr] nnn'"
msgstr "-m uso opzione: `-m[fr] nnn'"
-#: main.c:389
+#: main.c:386
msgid "empty argument to `-e/--source' ignored"
msgstr "argomento di `-e/--source' nullo, ignorato"
-#: main.c:460
+#: main.c:472
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: opzione `-W %s' non riconosciuta, ignorata\n"
-#: main.c:513
+#: main.c:518
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: l'opzione richiede un argomento -- %c\n"
-#: main.c:534
+#: main.c:539
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr "variable d'ambiente `POSIXLY_CORRECT' impostata: attivo `--posix'"
-#: main.c:540
+#: main.c:545
msgid "`--posix' overrides `--traditional'"
msgstr "`--posix' annulla `--traditional'"
-#: main.c:551
+#: main.c:556
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr "`--posix'/`--traditional' annulla `--non-decimal-data'"
-#: main.c:555
+#: main.c:560
#, 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:560
+#: main.c:565
msgid "`--posix' overrides `--binary'"
msgstr "`--posix' annulla `--binary"
-#: main.c:611
+#: main.c:623
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "non posso impostare modalit binaria su 'stdin'(%s)"
-#: main.c:614
+#: main.c:626
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "non posso impostare modalit binaria su 'stdout'(%s)"
-#: main.c:616
+#: main.c:628
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "non posso impostare modalit binaria su 'stderr'(%s)"
-#: main.c:655
+#: main.c:679
msgid "no program text at all!"
msgstr "manca del tutto il testo del programma!"
-#: main.c:733
+#: main.c:763
#, 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:735
+#: main.c:765
#, 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:740
+#: main.c:770
msgid "POSIX options:\t\tGNU long options: (standard)\n"
msgstr "Opzioni POSIX:\t\topzioni lunghe GNU: (standard)\n"
-#: main.c:741
+#: main.c:771
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f fileprog\t\t--file=file-prog.\n"
-#: main.c:742
+#: main.c:772
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F fs\t\t\t--field-separator=fs\n"
-#: main.c:743
+#: main.c:773
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v var=valore\t\t--assign=var=valore\n"
-#: main.c:744
+#: main.c:774
msgid "Short options:\t\tGNU long options: (extensions)\n"
msgstr "Opzioni brevi:\t\topzioni lunghe GNU: (estensioni)\n"
-#: main.c:745
+#: main.c:775
msgid "\t-b\t\t\t--characters-as-bytes\n"
msgstr "\t-b\t\t\t--characters-as-bytes\n"
-#: main.c:746
+#: main.c:776
msgid "\t-c\t\t\t--traditional\n"
msgstr "\t-c\t\t\t--traditional\n"
-#: main.c:747
+#: main.c:777
msgid "\t-C\t\t\t--copyright\n"
msgstr "\t-C\t\t\t--copyright\n"
-#: main.c:748
-#, fuzzy
+#: main.c:778
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
-msgstr "\t-d [file]\t\t--dump-variables[=file]\n"
+msgstr "\t-d[file]\t\t--dump-variables[=file]\n"
+
+#: main.c:779
+msgid "\t-D[file]\t\t--debug[=file]\n"
+msgstr "\t-D[file]\t\t--debug[=file]\n"
-#: main.c:749
+#: main.c:780
msgid "\t-e 'program-text'\t--source='program-text'\n"
msgstr "\t-e 'testo-del-programma'\t--source='testo-del-programma'\n"
-#: main.c:750
+#: main.c:781
msgid "\t-E file\t\t\t--exec=file\n"
msgstr "\t-E file\t\t\t--exec=file\n"
-#: main.c:751
+#: main.c:782
msgid "\t-g\t\t\t--gen-pot\n"
msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:752
+#: main.c:783
msgid "\t-h\t\t\t--help\n"
msgstr "\t-h\t\t\t--help\n"
-#: main.c:753
+#: main.c:784
+msgid "\t-l library\t\t--load=library\n"
+msgstr "\t-l libreria\t\t--load=libreria\n"
+
+#: main.c:785
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
msgstr "\t-L [fatal]\t\t--lint[=fatal]\n"
-#: main.c:754
+#: main.c:786
msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr "\t-n\t\t\t--non-decimal-data\n"
-#: main.c:755
+#: main.c:787
+msgid "\t-M\t\t\t--bignum\n"
+msgstr "\t-M\t\t\t--bignum\n"
+
+#: main.c:788
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr "\t-N\t\t\t--use-lc-numeric\n"
-#: main.c:756
+#: main.c:789
+msgid "\t-o[file]\t\t--pretty-print[=file]\n"
+msgstr "\t-o[file]\t\t--pretty-print[=file]\n"
+
+#: main.c:790
msgid "\t-O\t\t\t--optimize\n"
msgstr "\t-O\t\t\t--optimize\n"
-#: main.c:757
-#, fuzzy
+#: main.c:791
msgid "\t-p[file]\t\t--profile[=file]\n"
-msgstr "\t-p [file]\t\t--profile[=file]\n"
+msgstr "\t-p[file]\t\t--profile[=file]\n"
-#: main.c:758
+#: main.c:792
msgid "\t-P\t\t\t--posix\n"
msgstr "\t-P\t\t\t--posix\n"
-#: main.c:759
+#: main.c:793
msgid "\t-r\t\t\t--re-interval\n"
msgstr "\t-r\t\t\t--re-interval\n"
-#: main.c:761
-msgid "\t-R file\t\t\t--command=file\n"
-msgstr "\t-R file\t\t\t--command=file\n"
-
-#: main.c:762
+#: main.c:794
msgid "\t-S\t\t\t--sandbox\n"
msgstr "\t-S\t\t\t--sandbox\n"
-#: main.c:763
+#: main.c:795
msgid "\t-t\t\t\t--lint-old\n"
msgstr "\t-t\t\t\t--lint-old\n"
-#: main.c:764
+#: main.c:796
msgid "\t-V\t\t\t--version\n"
msgstr "\t-V\t\t\t--version\n"
-#: main.c:766
+#: main.c:798
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:769
+#: main.c:801
msgid "\t-Y\t\t--parsedebug\n"
msgstr "\t-Y\t\t--parsedebug\n"
@@ -1808,7 +1699,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:778
+#: main.c:810
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -1818,9 +1709,10 @@ msgstr ""
"\n"
"Per segnalare problemi, vedi nodo `Bugs' in `gawk.info', oppure la\n"
"sezione `Reporting Problems and Bugs' nella versione a stampa.\n"
+"Problemi di traduzione, segnalare ad: azc100@gmail.com.\n"
"\n"
-#: main.c:782
+#: main.c:814
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -1830,7 +1722,7 @@ msgstr ""
"Senza parametri, legge da 'standard input' e scrive su 'standard output'.\n"
"\n"
-#: main.c:786
+#: main.c:818
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -1840,7 +1732,7 @@ msgstr ""
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:806
+#: main.c:838
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1859,7 +1751,7 @@ msgstr ""
"Licenza, o (a tua scelta) a una qualsiasi versione successiva.\n"
"\n"
-#: main.c:814
+#: main.c:846
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"
@@ -1873,7 +1765,7 @@ msgstr ""
"Vedi la 'GNU General Public License' per ulteriori dettagli.\n"
"\n"
-#: main.c:820
+#: main.c:852
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"
@@ -1882,16 +1774,16 @@ msgstr ""
"assieme a questo programma; se non cos, vedi http://www.gnu.org/"
"licenses/.\n"
-#: main.c:855
+#: main.c:887
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft non imposta FS a 'tab' nell'awk POSIX"
-#: main.c:1089
+#: main.c:1133
#, c-format
msgid "unknown value for field spec: %d\n"
msgstr "valore non noto per specifica campo: %d\n"
-#: main.c:1170
+#: main.c:1214
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
@@ -1900,85 +1792,78 @@ msgstr ""
"%s: `%s' argomento di `-v' non in forma `var=valore'\n"
"\n"
-#: main.c:1196
+#: main.c:1240
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "`%s' non un nome di variabile ammesso"
-#: main.c:1199
+#: main.c:1243
#, 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:1203
-#, fuzzy, c-format
+#: main.c:1247
msgid "cannot use gawk builtin `%s' as variable name"
msgstr ""
-"estensione: nome funzione interna gawk `%s' non ammesso come nome funzione"
+"nome funzione interna gawk `%s' non ammesso come nome variabile"
-#: main.c:1208
-#, fuzzy, c-format
+#: main.c:1252
msgid "cannot use function `%s' as variable name"
-msgstr "non posso usare nome di funzione `%s' come variabile o vettore"
+msgstr "non posso usare nome di funzione `%s' come nome di variabile"
-#: main.c:1261
+#: main.c:1305
msgid "floating point exception"
msgstr "eccezione floating point"
-#: main.c:1268
+#: main.c:1312
msgid "fatal error: internal error"
msgstr "errore fatale: errore interno"
-#: main.c:1283
+#: main.c:1327
msgid "fatal error: internal error: segfault"
msgstr "errore fatale: errore interno: segfault"
-#: main.c:1295
+#: main.c:1339
msgid "fatal error: internal error: stack overflow"
msgstr "errore fatale: errore interno: stack overflow"
-#: main.c:1345
+#: main.c:1393
#, c-format
msgid "no pre-opened fd %d"
msgstr "manca 'fd' pre-aperta %d"
-#: main.c:1352
+#: main.c:1400
#, 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:1375 main.c:1384
-#, c-format
-msgid "could not find groups: %s"
-msgstr "non riesco a trovare gruppi: %s"
-
-#: msg.c:63
+#: msg.c:61
#, c-format
msgid "cmd. line:"
msgstr "linea com.:"
-#: msg.c:107
+#: msg.c:121
msgid "error: "
msgstr "errore: "
-#: node.c:406
+#: node.c:436
msgid "backslash at end of string"
msgstr "'\\' a fine stringa"
-#: node.c:517
+#: node.c:520
#, c-format
msgid "old awk does not support the `\\%c' escape sequence"
msgstr "il vecchio awk non supporta la sequenza di escape '\\%c'"
-#: node.c:568
+#: node.c:571
msgid "POSIX does not allow `\\x' escapes"
msgstr "POSIX non permette escape `\\x'"
-#: node.c:574
+#: node.c:577
msgid "no hex digits in `\\x' escape sequence"
msgstr "niente cifre esadecimali nella sequenza di escape `\\x'"
-#: node.c:596
+#: node.c:599
#, c-format
msgid ""
"hex escape \\x%.*s of %d characters probably not interpreted the way you "
@@ -1987,12 +1872,12 @@ msgstr ""
"sequenza di escape esadec.\\x%.*s di %d caratteri probabilmente non "
"interpretata nel modo previsto"
-#: node.c:611
+#: node.c:614
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr "sequenza di escape `\\%c' considerata come semplice `%c'"
-#: node.c:750
+#: node.c:759
msgid ""
"Invalid multibyte data detected. There may be a mismatch between your data "
"and your locale."
@@ -2011,16 +1896,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:83
+#: profile.c:69
#, c-format
msgid "could not open `%s' for writing: %s"
msgstr "non riesco ad aprire `%s' in scrittura: %s"
-#: profile.c:85
+#: profile.c:71
msgid "sending profile to standard error"
msgstr "mando profilo a 'standard error'"
-#: profile.c:203
+#: profile.c:187
#, c-format
msgid ""
"\t# %s block(s)\n"
@@ -2029,7 +1914,7 @@ msgstr ""
"\t# blocco(hi) %s\n"
"\n"
-#: profile.c:208
+#: profile.c:192
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -2038,124 +1923,113 @@ msgstr ""
"\t# Regola(e)\n"
"\n"
-#: profile.c:279
+#: profile.c:266
#, c-format
msgid "internal error: %s with null vname"
msgstr "errore interno: %s con 'vname' nullo"
-#: profile.c:952
+#: profile.c:528
+msgid "internal error: builtin with null fname"
+msgstr "errore interno: funzione interna con 'fname' nullo"
+
+#: profile.c:943
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# profilo gawk, creato %s\n"
-#: profile.c:1331
+#: profile.c:1328
#, c-format
msgid ""
"\n"
"\t# Functions, listed alphabetically\n"
msgstr ""
"\n"
-"\t# Funzioni, listate in ordine alfabetico\n"
+"\t# Funzioni, in ordine alfabetico\n"
-#: profile.c:1370
+#: profile.c:1366
#, c-format
msgid "redir2str: unknown redirection type %d"
msgstr "redir2str: tipo di re-direzione non noto %d"
-#: re.c:572
-#, fuzzy, c-format
+#: re.c:571
msgid "range of the form `[%c-%c]' is locale dependent"
-msgstr "intervallo nella forma `[%c-%c]' dipende da 'locale'"
+msgstr "intervallo della forma `[%c-%c]' dipende da 'locale'"
-#: re.c:599
+#: re.c:598
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
msgstr ""
"componente di espressione `%.*s' dovrebbe probabilmente essere `[%.*s]'"
-#: regcomp.c:132
+#: regcomp.c:131
msgid "Success"
msgstr "Successo"
-#: regcomp.c:135
+#: regcomp.c:134
msgid "No match"
msgstr "Nessuna corrispondenza"
-#: regcomp.c:138
+#: regcomp.c:137
msgid "Invalid regular expression"
msgstr "Espressione regolare invalida"
-#: regcomp.c:141
+#: regcomp.c:140
msgid "Invalid collation character"
msgstr "Carattere di ordinamento non valido"
-#: regcomp.c:144
+#: regcomp.c:143
msgid "Invalid character class name"
msgstr "Nome di 'classe di caratteri' non valido"
-#: regcomp.c:147
+#: regcomp.c:146
msgid "Trailing backslash"
msgstr "'\\' finale"
-#: regcomp.c:150
+#: regcomp.c:149
msgid "Invalid back reference"
msgstr "Riferimento indietro non valido"
-#: regcomp.c:153
+#: regcomp.c:152
msgid "Unmatched [ or [^"
msgstr "[ o [^ non chiusa"
-#: regcomp.c:156
+#: regcomp.c:155
msgid "Unmatched ( or \\("
msgstr "( o \\( non chiusa"
-#: regcomp.c:159
+#: regcomp.c:158
msgid "Unmatched \\{"
msgstr "\\{ non chiusa"
-#: regcomp.c:162
+#: regcomp.c:161
msgid "Invalid content of \\{\\}"
msgstr "Contenuto di \\{\\} non valido"
-#: regcomp.c:165
+#: regcomp.c:164
msgid "Invalid range end"
msgstr "Fine di intervallo non valido"
-#: regcomp.c:168
+#: regcomp.c:167
msgid "Memory exhausted"
msgstr "Memoria esaurita"
-#: regcomp.c:171
+#: regcomp.c:170
msgid "Invalid preceding regular expression"
msgstr "Espressione regolare precedente invalida"
-#: regcomp.c:174
+#: regcomp.c:173
msgid "Premature end of regular expression"
msgstr "Fine di espressione regolare inaspettata"
-#: regcomp.c:177
+#: regcomp.c:176
msgid "Regular expression too big"
msgstr "Espressione regolare troppo complessa"
-#: regcomp.c:180
+#: regcomp.c:179
msgid "Unmatched ) or \\)"
msgstr ") o \\) non aperta"
-#: regcomp.c:701
+#: regcomp.c:700
msgid "No previous regular expression"
msgstr "Nessuna espressione regolare precedente"
-#~ msgid "assignment is not allowed to result of builtin function"
-#~ msgstr "assegnamento non permesso al risultato di una funzione interna"
-
-#~ msgid "attempt to use array in a scalar context"
-#~ msgstr "tentativo di usare vettore in un contesto scalare"
-
-#~ msgid "sorted array traversal is a gawk extension"
-#~ msgstr "`sorted array traversal' un'estensione gawk"
-
-#~ msgid "`PROCINFO[\"sorted_in\"]' value is not recognized"
-#~ msgstr "`PROCINFO[\"sorted_in\"]' valore non riconosciuto"
-
-#~ msgid "out of memory"
-#~ msgstr "memoria esaurita"
diff --git a/po/ja.gmo b/po/ja.gmo
index c349e1b7..6e20cbfd 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index 19c654f5..1f396cd2 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gawk 4.0.0\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2011-11-14 21:46+0200\n"
+"POT-Creation-Date: 2012-04-27 10:06+0300\n"
"PO-Revision-Date: 2011-07-17 08:28+0900\n"
"Last-Translator: Yasuaki Taniguchi <yasuakit@gmail.com>\n"
"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
@@ -18,499 +18,456 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: array.c:140
+#: array.c:266
#, c-format
msgid "from %s"
msgstr "%s "
-#: array.c:248
+#: array.c:366
msgid "attempt to use a scalar value as array"
msgstr "嫘怒押澆扎具虫蝙具閰艾踴扼"
-#: array.c:251
-#, c-format
-msgid "attempt to use function `%s' as an array"
-msgstr "X `%s' 具虫蝙具閰艾踴扼"
-
-#: array.c:254
+#: array.c:368
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
msgstr "嫘怒押潔赫撘 `%s' 具虫蝙具閰艾踴扼"
-#: array.c:257
+#: array.c:371
#, c-format
msgid "attempt to use scalar `%s' as an array"
msgstr "嫘怒押 `%s' 具虫蝙具閰艾踴扼"
-#: array.c:302 array.c:707 builtin.c:84 builtin.c:1384 builtin.c:1426
-#: builtin.c:1439 builtin.c:1858 builtin.c:1870 eval.c:1135 eval.c:1139
-#: eval.c:1495 eval.c:1812
+#: array.c:418 array.c:584 builtin.c:85 builtin.c:1560 builtin.c:1602
+#: builtin.c:1615 builtin.c:2041 builtin.c:2053 eval.c:1109 eval.c:1113
+#: eval.c:1508
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "嫘怒押潦喋喋准嫘折 `%s' 雿輻具閰艾踴扼"
-#: array.c:513
-#, c-format
-msgid "reference to uninitialized element `%s[\"%.*s\"]'"
-msgstr "艾芥閬蝝 `%s[\"%.*s\"]' 詻桀扼扼"
-
-#: array.c:519
-#, c-format
-msgid "subscript of array `%s' is null string"
-msgstr " `%s' 格溶摮 NULL 摮扼"
-
-#: array.c:723
+#: array.c:591
#, c-format
msgid "delete: index `%s' not in array `%s'"
msgstr "delete: `%2$s' 怒扎喋胯 `%1$s' 整"
-#: array.c:734 eval.c:1865
+#: array.c:605
#, c-format
msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
msgstr "嫘怒押 `%s[\"%.*s\"]' 具虫蝙具閰艾踴扼"
-#: array.c:910
-#, c-format
-msgid "%s: empty (null)\n"
-msgstr "%s: 蝛 (null)\n"
-
-#: array.c:915
-#, c-format
-msgid "%s: empty (zero)\n"
-msgstr "%s: 蝛 (zero)\n"
-
-#: array.c:919
-#, c-format
-msgid "%s: table_size = %d, array_size = %d\n"
-msgstr "%s: 潦怒萸扎 (table_size) = %d, 萸扎 (array_size) = %d\n"
-
-#: array.c:954
-#, c-format
-msgid "%s: is parameter\n"
-msgstr "%s: 隞桀啜扼\n"
-
-#: array.c:958
-#, c-format
-msgid "%s: array_ref to %s\n"
-msgstr "%s: %s 詻桅 (array_ref) 扼\n"
-
-#: array.c:963
-msgid "adump: argument not an array"
+#: array.c:784
+#, fuzzy
+msgid "adump: first argument not an array"
msgstr "adump: 撘啜扼胯整"
-#: array.c:1086
+#: array.c:823
msgid "asort: second argument not an array"
msgstr "asort: 蝚砌撘啜扼胯整"
-#: array.c:1087
+#: array.c:824
msgid "asorti: second argument not an array"
msgstr "asorti: 蝚砌撘啜扼胯整"
-#: array.c:1094
+#: array.c:831
msgid "asort: first argument not an array"
msgstr "asort: 蝚砌撘啜扼胯整"
-#: array.c:1095
+#: array.c:832
msgid "asorti: first argument not an array"
msgstr "asorti: 蝚砌撘啜扼胯整"
-#: array.c:1102
+#: array.c:839
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr "asort: 蝚砌撘啜桅典蝚砌撘啁具思蝙具具臬箸乓整"
-#: array.c:1103
+#: array.c:840
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr "asorti: 蝚砌撘啜桅典蝚砌撘啁具思蝙具具臬箸乓整"
-#: array.c:1108
+#: array.c:845
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr "asort: 蝚砌撘啜桅典蝚砌撘啁具思蝙具具臬箸乓整"
-#: array.c:1109
+#: array.c:846
msgid "asorti: cannot use a subarray of second arg for first arg"
msgstr "asorti: 蝚砌撘啜桅典蝚砌撘啁具思蝙具具臬箸乓整"
-#: array.c:1659
+#: array.c:1314
#, c-format
msgid "`%s' is invalid as a function name"
msgstr "`%s' 舫X啣具艾舐∪嫘扼"
-#: array.c:1663
+#: array.c:1318
#, c-format
msgid "sort comparison function `%s' is not defined"
msgstr "賬潦瘥頛X `%s' 摰蝢押艾整"
-#: awkgram.y:249
+#: awkgram.y:223
#, c-format
msgid "%s blocks must have an action part"
msgstr "%s 准胯怒胯U胯瑯扼喲具敹扼"
-#: awkgram.y:252
+#: awkgram.y:226
msgid "each rule must have a pattern or an action part"
msgstr "怒潦怒怒胯踴潦喋整胯U胯瑯扼喲具敹扼"
-#: awkgram.y:323 awkgram.y:334
+#: awkgram.y:295 awkgram.y:306
msgid "old awk does not support multiple `BEGIN' or `END' rules"
msgstr "扎 awk 航啜 `BEGIN' 整 `END' 怒潦怒萸潦整"
-#: awkgram.y:371
+#: awkgram.y:343
#, c-format
msgid "`%s' is a built-in function, it cannot be redefined"
msgstr "`%s' 舐颲潦輸X啜扼摰蝢押扼整"
-#: awkgram.y:432
+#: awkgram.y:389
msgid "regexp constant `//' looks like a C++ comment, but is not"
msgstr "甇閬銵函曉 `//' C++喋∼喋思撮艾整整"
-#: awkgram.y:436
+#: awkgram.y:393
#, c-format
msgid "regexp constant `/%s/' looks like a C comment, but is not"
msgstr "甇閬銵函曉 `/%s/' C 喋∼喋思撮艾整啜芥整"
-#: awkgram.y:528
+#: awkgram.y:485
#, c-format
msgid "duplicate case values in switch body: %s"
msgstr "switch 桐葉折銴 case 扎雿輻具艾整: %s"
-#: awkgram.y:549
+#: awkgram.y:506
msgid "duplicate `default' detected in switch body"
msgstr "switch 桐葉折銴 `default' 璊箝整"
-#: awkgram.y:809
+#: awkgram.y:766
msgid "`break' is not allowed outside a loop or switch"
msgstr "`break' 胯怒潦整 switch 桀扼航迂胯艾整"
-#: awkgram.y:818
+#: awkgram.y:775
msgid "`continue' is not allowed outside a loop"
msgstr "`continue' 胯怒潦桀扼航迂胯艾整"
-#: awkgram.y:828
+#: awkgram.y:785
#, c-format
msgid "`next' used in %s action"
msgstr "%s U胯瑯扼喳 `next' 雿輻具整"
-#: awkgram.y:836
+#: awkgram.y:793
msgid "`nextfile' is a gawk extension"
msgstr "`nextfile' gawk ∪撐扼"
-#: awkgram.y:841
+#: awkgram.y:798
#, c-format
msgid "`nextfile' used in %s action"
msgstr "`nextfile' %s U胯瑯扼喳找蝙具整"
-#: awkgram.y:865
+#: awkgram.y:822
msgid "`return' used outside function context"
msgstr "`return' X啣蝢拇桀找蝙整"
-#: awkgram.y:925
+#: awkgram.y:896
msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
msgstr ""
"BEGIN 整 END 怒潦怠桀啜桃∼ `print' `print \"\"' 冽整"
-#: awkgram.y:995 awkgram.y:999 awkgram.y:1023
+#: awkgram.y:966 awkgram.y:970 awkgram.y:994
msgid "`delete array' is a gawk extension"
msgstr "`delete array' gawk ∪撐扼"
-#: awkgram.y:1019
+#: awkgram.y:990
msgid "`delete(array)' is a non-portable tawk extension"
msgstr "`delete(array)' 舐宏璊扼桃∼ tawk ∪撐扼"
-#: awkgram.y:1135
+#: awkgram.y:1108
msgid "multistage two-way pipelines don't work"
msgstr "憭畾菟批孵扎拍具撘臭蝙具扼整"
-#: awkgram.y:1238
+#: awkgram.y:1211
msgid "regular expression on right of assignment"
msgstr "甇閬銵函整隞亙桀唾噥思蝙具艾整"
-#: awkgram.y:1249
+#: awkgram.y:1222
msgid "regular expression on left of `~' or `!~' operator"
msgstr "`~' `!~' 瞍蝞摮桀椰颲箝急迤閬銵函整雿輻具艾整"
-#: awkgram.y:1265 awkgram.y:1419
+#: awkgram.y:1238 awkgram.y:1389
msgid "old awk does not support the keyword `in' except after `for'"
msgstr "扎 awk 扼 `in' 鈭蝝隤 `for' 桀扎萸潦整"
-#: awkgram.y:1275
+#: awkgram.y:1248
msgid "regular expression on right of comparison"
msgstr "瘥頛撘桀唾噥急迤閬銵函整雿輻具艾整"
-#: awkgram.y:1394
+#: awkgram.y:1364
#, c-format
msgid "`getline var' invalid inside `%s' rule"
msgstr "`%s' 怒潦怒桀具扼 `getline var' 舐∪嫘扼"
-#: awkgram.y:1397 eval.c:2504
+#: awkgram.y:1367
#, c-format
msgid "`getline' invalid inside `%s' rule"
msgstr "`%s' 怒潦怒桀具扼 `getline' 舐∪嫘扼"
-#: awkgram.y:1402
+#: awkgram.y:1372
msgid "non-redirected `getline' undefined inside END action"
msgstr "芥扎研胯艾芥 `getline' END U胯瑯扼喋扼舀芸蝢押扼"
-#: awkgram.y:1421
+#: awkgram.y:1391
msgid "old awk does not support multidimensional arrays"
msgstr "扎 awk 臬甈∪萸潦整"
-#: awkgram.y:1517
+#: awkgram.y:1488
msgid "call of `length' without parentheses is not portable"
msgstr "撠砍憫∼ `length' 舐宏璊扼整"
-#: awkgram.y:1580
+#: awkgram.y:1554
msgid "indirect function calls are a gawk extension"
msgstr "仿X啣潦喳箝 gawk ∪撐扼"
-#: awkgram.y:1593
+#: awkgram.y:1567
#, c-format
msgid "can not use special variable `%s' for indirect function call"
msgstr "孵乓芸 `%s' 舫仿X啣潦喳箝具怒臭蝙典箸乓整"
-#: awkgram.y:1671
+#: awkgram.y:1645
msgid "invalid subscript expression"
msgstr "瘛餃桀∪嫘扼"
-#: awkgram.y:1711
-msgid "use of non-array as array"
-msgstr "扼芥柴具虫蝙具艾整"
-
-#: awkgram.y:1975 awkgram.y:1995 msg.c:98
+#: awkgram.y:1966 awkgram.y:1986 msg.c:112
msgid "warning: "
msgstr "霅血: "
-#: awkgram.y:1993 msg.c:130
+#: awkgram.y:1984 msg.c:144
msgid "fatal: "
msgstr "游賜: "
-#: awkgram.y:2043
+#: awkgram.y:2034
msgid "unexpected newline or end of string"
msgstr "鈭芥寡整舀摮蝯蝡胯扼"
-#: awkgram.y:2300 awkgram.y:2358 awkgram.y:2542
+#: awkgram.y:2299 awkgram.y:2357 awkgram.y:2545
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "賬潦嫘∼扎 `%s' 隤准輯噯輻具恍整 (%s)"
-#: awkgram.y:2301 awkgram.y:2359 builtin.c:122
+#: awkgram.y:2300 awkgram.y:2358 builtin.c:124
msgid "reason unknown"
msgstr "銝"
-#: awkgram.y:2317
+#: awkgram.y:2316
#, c-format
msgid "already included source file `%s'"
msgstr "賬潦嫘∼扎 `%s' 舀U怨狎輯噯整艾整"
-#: awkgram.y:2343
+#: awkgram.y:2342
msgid "@include is a gawk extension"
msgstr "@include gawk ∪撐扼"
-#: awkgram.y:2349
+#: awkgram.y:2348
msgid "empty filename after @include"
msgstr "@include 桀怎征柴∼扎怠整"
-#: awkgram.y:2494
+#: awkgram.y:2497
msgid "empty program text on command line"
msgstr "喋喋銵柴准啜押銵刻蝛箝扼"
-#: awkgram.y:2609
+#: awkgram.y:2612
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "賬潦嫘∼扎 `%s' 隤准輯噯整 (%s)"
-#: awkgram.y:2620
+#: awkgram.y:2623
#, c-format
msgid "source file `%s' is empty"
msgstr "賬潦嫘∼扎 `%s' 舐征扼"
-#: awkgram.y:2805
+#: awkgram.y:2800
msgid "source file does not end in newline"
msgstr "賬潦嫘∼扎怒寡抒艾整"
-#: awkgram.y:2882
+#: awkgram.y:2905
msgid "unterminated regexp ends with `\\' at end of file"
msgstr "蝯蝡胯艾芥甇閬銵函整∼扎急敺 `\\' 抒艾整"
-#: awkgram.y:2906
+#: awkgram.y:2929
#, c-format
msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr "%s: %d: tawk 格迤閬銵函曆耨憌曉 `/.../%c' gawk 找蝙具扼整"
-#: awkgram.y:2910
+#: awkgram.y:2933
#, c-format
msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr "tawk 格迤閬銵函曆耨憌曉 `/.../%c' gawk 找蝙具扼整"
-#: awkgram.y:2917
+#: awkgram.y:2940
msgid "unterminated regexp"
msgstr "甇閬銵函整蝯蝡胯艾整"
-#: awkgram.y:2921
+#: awkgram.y:2944
msgid "unterminated regexp at end of file"
msgstr "∼扎怒桐葉扳迤閬銵函整蝯蝡胯艾整"
-#: awkgram.y:2980
+#: awkgram.y:3003
msgid "use of `\\ #...' line continuation is not portable"
msgstr "`\\ #...' 敶W株蝬蝬舐宏璊扼整"
-#: awkgram.y:2996
+#: awkgram.y:3019
msgid "backslash not last character on line"
msgstr "胯嫘押瑯乓銵敺格摮怒芥艾整"
-#: awkgram.y:3057
+#: awkgram.y:3080
msgid "POSIX does not allow operator `**='"
msgstr "POSIX 扼舀蝞摮 `**=' 航迂胯艾整"
-#: awkgram.y:3059
+#: awkgram.y:3082
msgid "old awk does not support operator `**='"
msgstr "扎 awk 舀蝞摮 `**=' 萸潦整"
-#: awkgram.y:3068
+#: awkgram.y:3091
msgid "POSIX does not allow operator `**'"
msgstr "POSIX 扼舀蝞摮 `**' 航迂胯艾整"
-#: awkgram.y:3070
+#: awkgram.y:3093
msgid "old awk does not support operator `**'"
msgstr "扎 awk 舀蝞摮 `**' 萸潦整"
-#: awkgram.y:3105
+#: awkgram.y:3128
msgid "operator `^=' is not supported in old awk"
msgstr "扎 awk 舀蝞摮 `^=' 萸潦整"
-#: awkgram.y:3113
+#: awkgram.y:3136
msgid "operator `^' is not supported in old awk"
msgstr "扎 awk 舀蝞摮 `^' 萸潦整"
-#: awkgram.y:3206 awkgram.y:3222
+#: awkgram.y:3229 awkgram.y:3245
msgid "unterminated string"
msgstr "摮蝯蝡胯艾整"
-#: awkgram.y:3418
+#: awkgram.y:3466
#, c-format
msgid "invalid char '%c' in expression"
msgstr "撘怎∪嫘芣摮 '%c' 整"
-#: awkgram.y:3465
+#: awkgram.y:3513
#, c-format
msgid "`%s' is a gawk extension"
msgstr "`%s' gawk ∪撐扼"
-#: awkgram.y:3470
+#: awkgram.y:3518
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr "`%s' 胯怎蝛嗆怒∪撐扼"
-#: awkgram.y:3475
+#: awkgram.y:3523
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX 扼 `%s' 航迂胯艾整"
-#: awkgram.y:3483
+#: awkgram.y:3531
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "扎 awk `%s' 萸潦整"
-#: awkgram.y:3550
+#: awkgram.y:3598
msgid "`goto' considered harmful!\n"
msgstr "`goto' 舀摰喋刻芥艾整!\n"
-#: awkgram.y:3601
+#: awkgram.y:3632
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d %s 具桀啜格啜具艾舐∪嫘扼"
-#: awkgram.y:3636
+#: awkgram.y:3667
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr "%s: 摮芥押怒蝵柴敺桀啜思蝙具典寞整"
-#: awkgram.y:3641
+#: awkgram.y:3672
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "%s 蝚砌隞桀啜臬臬芥詻扼胯扼胯整"
-#: awkgram.y:3714 awkgram.y:3717
+#: awkgram.y:3751 awkgram.y:3754
msgid "match: third argument is a gawk extension"
msgstr "match: 蝚砌撘啜 gawk ∪撐扼"
-#: awkgram.y:3771 awkgram.y:3774
+#: awkgram.y:3808 awkgram.y:3811
msgid "close: second argument is a gawk extension"
msgstr "close: 蝚砌撘啜 gawk ∪撐扼"
-#: awkgram.y:3786
+#: awkgram.y:3823
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"dcgettext(_\"...\")桐蝙冽艾整: 准柴U喋潦嫘喋(_)扎"
"艾"
-#: awkgram.y:3801
+#: awkgram.y:3838
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"dcngettext(_\"...\")桐蝙冽艾整: 准柴U喋潦嫘喋(_)扎"
"艾"
-#: awkgram.y:3893
-#, c-format
-msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
-msgstr "X `%s': 隞桀 #%d, `%s' 隞桀 #%d 券銴艾整"
-
-#: awkgram.y:3935
+#: awkgram.y:3904
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "X `%s': 隞桀 `%s' 憭批憭啜閬艾整"
-#: awkgram.y:4093
+#: awkgram.y:3961
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "`%s' 貉噯輻具恍整扼 (%s)"
-#: awkgram.y:4094
+#: awkgram.y:3962
msgid "sending variable list to standard error"
msgstr "憭啜芥嫘璅皞具押潦恍艾整"
-#: awkgram.y:4100
+#: awkgram.y:3970
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: 柴怠仃整 (%s)"
-#: awkgram.y:4152
+#: awkgram.y:3995
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() 鈭潦喳箝艾整!"
-#: awkgram.y:4158
+#: awkgram.y:4003
msgid "there were shadowed variables."
msgstr "閬憭啜整"
-#: awkgram.y:4188
+#: awkgram.y:4074
+#, c-format
+msgid "function name `%s' previously defined"
+msgstr "X啣 `%s' 臬怠蝢押艾整"
+
+#: awkgram.y:4120
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "X `%s': X啣隞桀啣具虫蝙典箸乓整"
-#: awkgram.y:4192
+#: awkgram.y:4123
#, c-format
msgid "function `%s': can't use special variable `%s' as a function parameter"
msgstr "X `%s': 孵乓芸 `%s' 舫X啜桐赫撘啜具虫蝙典箸乓整"
-#: awkgram.y:4208
+#: awkgram.y:4131
#, c-format
-msgid "function name `%s' previously defined"
-msgstr "X啣 `%s' 臬怠蝢押艾整"
+msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
+msgstr "X `%s': 隞桀 #%d, `%s' 隞桀 #%d 券銴艾整"
-#: awkgram.y:4376 awkgram.y:4382
+#: awkgram.y:4210 awkgram.y:4216
#, c-format
msgid "function `%s' called but never defined"
msgstr "芸蝢押桅X `%s' 潦喳箝整"
-#: awkgram.y:4385
+#: awkgram.y:4219
#, c-format
msgid "function `%s' defined but never called directly"
msgstr "X `%s' 臬蝢押艾整銝摨艾湔亙潦喳箝艾整"
-#: awkgram.y:4417
+#: awkgram.y:4251
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr "隞桀 #%d 具格迤閬銵函曉啜舐賢扎箏整"
-#: awkgram.y:4526
+#: awkgram.y:4297
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -519,230 +476,230 @@ msgstr ""
"X啣 `(' 桅怒嫘潦嫘乓阡X `%s' 潦喳箝艾整\n"
"整胯憭啜具虫蝙艾整"
-#: awkgram.y:4773 eval.c:2056
+#: awkgram.y:4505
msgid "division by zero attempted"
msgstr "潦准怒斤閰艾踴整"
-#: awkgram.y:4782 eval.c:2072
+#: awkgram.y:4514
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "`%%' 扼潦准怒斤閰艾踴整"
-#: builtin.c:120
+#: builtin.c:122
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s \"%s\" 詨箏扼整 (%s)"
-#: builtin.c:121
+#: builtin.c:123
msgid "standard output"
msgstr "璅皞箏"
-#: builtin.c:135
+#: builtin.c:137
msgid "exp: received non-numeric argument"
msgstr "exp: 撘啜啣扎扼胯整"
-#: builtin.c:141
+#: builtin.c:143
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: 撘 %g 蝭脣扼"
-#: builtin.c:200
+#: builtin.c:202
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: flush 扼整: 扎 `%s' 航狎輯噯輻具恍艾整詻颲潦"
"具扼胯整"
-#: builtin.c:203
+#: builtin.c:205
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: flush 扼整: ∼扎 `%s' 航狎輯噯輻具恍艾整詻颲"
"輻具扼胯整"
-#: builtin.c:215
+#: builtin.c:217
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr "fflush: `%s' ∼扎怒扎准颯孵望扼胯整"
-#: builtin.c:333
+#: builtin.c:335
msgid "index: received non-string first argument"
msgstr "index: 摮扼舐∼蝚砌撘啜整"
-#: builtin.c:335
+#: builtin.c:337
msgid "index: received non-string second argument"
msgstr "index: 摮扼舐∼蝚砌撘啜整"
-#: builtin.c:457
+#: builtin.c:461
msgid "int: received non-numeric argument"
msgstr "int: 啣扎扼舐∼撘啜整"
-#: builtin.c:493
+#: builtin.c:497
msgid "length: received array argument"
msgstr "length: 撘啜整"
-#: builtin.c:496
+#: builtin.c:500
msgid "`length(array)' is a gawk extension"
msgstr "`length(array)' gawk ∪撐扼"
-#: builtin.c:504
+#: builtin.c:508
msgid "length: received non-string argument"
msgstr "length: 摮扼舐∼撘啜整"
-#: builtin.c:535
+#: builtin.c:539
msgid "log: received non-numeric argument"
msgstr "log: 啣扎扼舐∼撘啜整"
-#: builtin.c:538
+#: builtin.c:542
#, c-format
msgid "log: received negative argument %g"
msgstr "log: 鞎桀 %g 整"
-#: builtin.c:694 builtin.c:699
+#: builtin.c:740 builtin.c:745
msgid "fatal: must use `count$' on all formats or none"
msgstr ""
"游賜: `count$ 臬具艾格詨雿輻具整臬具艾思蝙具芥柴扼芥"
"啜整"
-#: builtin.c:761
+#: builtin.c:815
#, c-format
msgid "field width is ignored for `%%' specifier"
msgstr "`%%' 摰具柴潦怒撟舐∟整"
-#: builtin.c:763
+#: builtin.c:817
#, c-format
msgid "precision is ignored for `%%' specifier"
msgstr "`%%' 摰具柴潦怒撟舐∟整"
-#: builtin.c:765
+#: builtin.c:819
#, c-format
msgid "field width and precision are ignored for `%%' specifier"
msgstr "`%%' 摰具柴潦怒撟喟移摨艾舐∟整"
-#: builtin.c:816
+#: builtin.c:870
msgid "fatal: `$' is not permitted in awk formats"
msgstr "游賜: `$' awk 敶W扼航迂胯艾整"
-#: builtin.c:825
+#: builtin.c:879
msgid "fatal: arg count with `$' must be > 0"
msgstr "游賜: `$' 扳摰撘啜桃芸瑯舀迤扼芥啜整"
-#: builtin.c:829
+#: builtin.c:883
#, c-format
msgid "fatal: arg count %ld greater than total number of supplied arguments"
msgstr "游賜: 撘啜桃芸 %ld 臬啜具虫啜憭扼扼"
-#: builtin.c:833
+#: builtin.c:887
msgid "fatal: `$' not permitted after period in format"
msgstr "游賜: `$' 舀詨摰柴芥芥 `.' 桀思蝙具扼整"
-#: builtin.c:849
+#: builtin.c:903
msgid "fatal: no `$' supplied for positional field width or precision"
msgstr "游賜: 潦怒撟整舐移摨艾格摰摮 `$' 銝艾整"
-#: builtin.c:920
+#: builtin.c:975
msgid "`l' is meaningless in awk formats; ignored"
msgstr "awk 格詨摰扼 `l' 舐⊥喋扼∟整"
-#: builtin.c:924
+#: builtin.c:979
msgid "fatal: `l' is not permitted in POSIX awk formats"
msgstr "游賜: POSIX awk 詨扼 `l' 航迂胯艾整"
-#: builtin.c:937
+#: builtin.c:992
msgid "`L' is meaningless in awk formats; ignored"
msgstr "awk 格詨摰扼 `L' 舐⊥喋扼∟整"
-#: builtin.c:941
+#: builtin.c:996
msgid "fatal: `L' is not permitted in POSIX awk formats"
msgstr "游賜: POSIX awk 詨扼 `L' 航迂胯艾整"
-#: builtin.c:954
+#: builtin.c:1009
msgid "`h' is meaningless in awk formats; ignored"
msgstr "awk 格詨摰扼 `h' 舐⊥喋扼∟整"
-#: builtin.c:958
+#: builtin.c:1013
msgid "fatal: `h' is not permitted in POSIX awk formats"
msgstr "游賜: POSIX awk 詨扼 `h' 航迂胯艾整"
-#: builtin.c:1271
+#: builtin.c:1408
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr "[s]printf: %g 舀詨 `%%%c' 桃脣扼"
-#: builtin.c:1331
+#: builtin.c:1506
#, c-format
msgid "ignoring unknown format specifier character `%c': no argument converted"
msgstr "銝芣詨摰摮 `%c' ∟艾整: 憭撘啜胯整"
-#: builtin.c:1336
+#: builtin.c:1511
msgid "fatal: not enough arguments to satisfy format string"
msgstr "游賜: 詨摮皞芣啜桀啜整"
-#: builtin.c:1338
+#: builtin.c:1513
msgid "^ ran out for this one"
msgstr "^ 頞喋整"
-#: builtin.c:1345
+#: builtin.c:1520
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: 詨摰摮怠嗅鴃摮整"
-#: builtin.c:1348
+#: builtin.c:1523
msgid "too many arguments supplied for format string"
msgstr "詨摮思艾撘啜憭整"
-#: builtin.c:1422 builtin.c:1433
+#: builtin.c:1598 builtin.c:1609
msgid "printf: no arguments"
msgstr "printf: 撘啜整"
-#: builtin.c:1474
+#: builtin.c:1650
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: 啣扎扼舐∼撘啜整"
-#: builtin.c:1478
+#: builtin.c:1654
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: 鞎桀 %g 撘啜思蝙具血潦喳箝整"
-#: builtin.c:1502
+#: builtin.c:1685
#, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: 瑯 %g 1 隞乩扼胯整"
-#: builtin.c:1504
+#: builtin.c:1687
#, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: 瑯 %g 0 隞乩扼胯整"
-#: builtin.c:1511
+#: builtin.c:1694
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: 摮 %g 桀啁嫣誑銝臬具艾整"
-#: builtin.c:1516
+#: builtin.c:1699
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr "substr: 摮 %g 舀憭批扎頞艾整%g 雿踴整"
-#: builtin.c:1528
+#: builtin.c:1711
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: 憪扎喋胯 %g ∪嫘扼1雿輻具整"
-#: builtin.c:1533
+#: builtin.c:1716
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: 憪扎喋胯 %g 湔啜柴扎臬具艾整"
-#: builtin.c:1558
+#: builtin.c:1741
msgid "substr: source string is zero length"
msgstr "substr: 摮桅瑯潦准扼"
-#: builtin.c:1574
+#: builtin.c:1757
#, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: 憪扎喋胯 %g 摮蝯蝡胯桀怒整"
-#: builtin.c:1582
+#: builtin.c:1765
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -750,227 +707,222 @@ msgstr ""
"substr: 憪扎喋胯 %2$g 桅瑯 %1$g 舐洵銝撘啜桅瑯頞艾整 "
"(%3$lu)"
-#: builtin.c:1656
+#: builtin.c:1839
msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
msgstr "strftime: PROCINFO[\"strftime\"] 格詨桀扎舀啣文扼"
-#: builtin.c:1679
+#: builtin.c:1862
msgid "strftime: received non-numeric second argument"
msgstr "strftime: 啣扎桃洵鈭撘啜整"
-#: builtin.c:1682
+#: builtin.c:1866
msgid "strftime: second argument less than 0 or too big for time_t"
msgstr ""
-#: builtin.c:1689
+#: builtin.c:1873
msgid "strftime: received non-string first argument"
msgstr "strftime: 摮桃洵銝撘啜整"
-#: builtin.c:1695
+#: builtin.c:1880
msgid "strftime: received empty format string"
msgstr "strftime: 蝛箝格詨摮整"
-#: builtin.c:1761
+#: builtin.c:1946
msgid "mktime: received non-string argument"
msgstr "mktime: 摮撘啜整"
-#: builtin.c:1778
+#: builtin.c:1963
msgid "mktime: at least one of the values is out of the default range"
msgstr "mktime: 銝支誑銝桀扎押怒桃脯頞艾整"
-#: builtin.c:1813
+#: builtin.c:1998
msgid "'system' function not allowed in sandbox mode"
msgstr "萸喋胯嫘U潦扼 'system' X啜航迂胯艾整"
-#: builtin.c:1818
+#: builtin.c:2003
msgid "system: received non-string argument"
msgstr "system: 摮扼舐∼撘啜整"
-#: builtin.c:1873 eval.c:1159 eval.c:1790 eval.c:1803
-#, c-format
-msgid "reference to uninitialized variable `%s'"
-msgstr "艾芥憭 `%s' 詻桀扼扼"
-
-#: builtin.c:1940
+#: builtin.c:2121
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "艾芥潦怒 `$%d' 詻桀扼扼"
-#: builtin.c:2027
+#: builtin.c:2208
msgid "tolower: received non-string argument"
msgstr "tolower: 摮撘啜整"
-#: builtin.c:2061
+#: builtin.c:2242
msgid "toupper: received non-string argument"
msgstr "toupper: 摮撘啜整"
-#: builtin.c:2097
+#: builtin.c:2278
msgid "atan2: received non-numeric first argument"
msgstr "atan2: 啣扎桃洵銝撘啜整"
-#: builtin.c:2099
+#: builtin.c:2280
msgid "atan2: received non-numeric second argument"
msgstr "atan2: 啣扎桃洵鈭撘啜整"
-#: builtin.c:2118
+#: builtin.c:2299
msgid "sin: received non-numeric argument"
msgstr "sin: 啣扎桀啜整"
-#: builtin.c:2134
+#: builtin.c:2315
msgid "cos: received non-numeric argument"
msgstr "cos: 啣扎桀啜整"
-#: builtin.c:2187
+#: builtin.c:2368
msgid "srand: received non-numeric argument"
msgstr "srand: 啣扎桀啜整"
-#: builtin.c:2218
+#: builtin.c:2399
msgid "match: third argument is not an array"
msgstr "match: 蝚砌撘啜扼胯整"
-#: builtin.c:2482
+#: builtin.c:2664
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: 蝚砌撘啜 0 扼1 隞思蝙具整"
-#: builtin.c:2775
+#: builtin.c:2957
msgid "lshift: received non-numeric first argument"
msgstr "lshift: 啣扎桃洵銝撘啜整"
-#: builtin.c:2777
+#: builtin.c:2959
msgid "lshift: received non-numeric second argument"
msgstr "lshift: 啣扎桃洵鈭撘啜整"
-#: builtin.c:2783
+#: builtin.c:2965
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr "lshift(%lf, %lf): 鞎格啣扎雿輻具函啣虜芰怒芥整"
-#: builtin.c:2785
+#: builtin.c:2967
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr "lshift(%lf, %lf): 撠啁嫣誑銝臬具艾整"
-#: builtin.c:2787
+#: builtin.c:2969
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr "lshift(%lf, %lf): 瑯扎憭扼函啣虜芰怒芥整"
-#: builtin.c:2812
+#: builtin.c:2994
msgid "rshift: received non-numeric first argument"
msgstr "rshift: 啣扎桃洵銝撘啜整"
-#: builtin.c:2814
+#: builtin.c:2996
msgid "rshift: received non-numeric second argument"
msgstr "rshift: 啣扎桃洵鈭撘啜整"
-#: builtin.c:2820
+#: builtin.c:3002
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr "rshift(%lf, %lf): 鞎格啣扎雿輻具函啣虜芰怒芥整"
-#: builtin.c:2822
+#: builtin.c:3004
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr "rshift(%lf, %lf): 撠啁嫣誑銝臬具艾整"
-#: builtin.c:2824
+#: builtin.c:3006
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr "rshift(%lf, %lf): 瑯扎憭扼函啣虜芰怒芥整"
-#: builtin.c:2849
+#: builtin.c:3031
msgid "and: received non-numeric first argument"
msgstr "and: 啣扎桃洵銝撘啜整"
-#: builtin.c:2851
+#: builtin.c:3033
msgid "and: received non-numeric second argument"
msgstr "and: 啣扎桃洵鈭撘啜整"
-#: builtin.c:2857
+#: builtin.c:3039
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr "and(%lf, %lf): 鞎格啣扎雿輻具函啣虜芰怒芥整"
-#: builtin.c:2859
+#: builtin.c:3041
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr "and(%lf, %lf): 撠啁嫣誑銝臬具艾整"
-#: builtin.c:2884
+#: builtin.c:3066
msgid "or: received non-numeric first argument"
msgstr "or: 啣扎桃洵銝撘啜整"
-#: builtin.c:2886
+#: builtin.c:3068
msgid "or: received non-numeric second argument"
msgstr "or: 啣扎桃洵鈭撘啜整"
-#: builtin.c:2892
+#: builtin.c:3074
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr "or(%lf, %lf): 鞎格啣扎雿輻具函啣虜芰怒芥整"
-#: builtin.c:2894
+#: builtin.c:3076
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr "or(%lf, %lf): 撠啁嫣誑銝臬具艾整"
-#: builtin.c:2922
+#: builtin.c:3102
msgid "xor: received non-numeric first argument"
msgstr "xor: 啣扎桃洵銝撘啜整"
-#: builtin.c:2924
+#: builtin.c:3104
msgid "xor: received non-numeric second argument"
msgstr "xor: 啣扎桃洵鈭撘啜整"
-#: builtin.c:2930
+#: builtin.c:3110
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr "xor(%lf, %lf): 鞎格啣扎雿輻具函啣虜芰怒芥整"
-#: builtin.c:2932
+#: builtin.c:3112
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr "xor(%lf, %lf): 撠啁嫣誑銝臬具艾整"
-#: builtin.c:2956 builtin.c:2962
+#: builtin.c:3136
msgid "compl: received non-numeric argument"
msgstr "compl: 啣扎桀啜整"
-#: builtin.c:2964
+#: builtin.c:3142
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr "compl(%lf): 鞎格啣扎雿輻具函啣虜芰怒芥整"
-#: builtin.c:2966
+#: builtin.c:3144
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr "compl(%lf): 撠啁嫣誑銝臬具艾整"
-#: builtin.c:3135
+#: builtin.c:3313
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: `%s' 舐∪嫘芥准晞潦怠箏扼"
-#: eval.c:412
+#: eval.c:395
#, c-format
msgid "unknown nodetype %d"
msgstr "銝芥潦 %d 扼"
-#: eval.c:423 eval.c:437
+#: eval.c:406 eval.c:420
#, c-format
msgid "unknown opcode %d"
msgstr "銝芥芥喋潦 %d 扼"
-#: eval.c:434
+#: eval.c:417
#, c-format
msgid "opcode %s not an operator or keyword"
msgstr "芥喋潦 %s 舀蝞摮整臭蝝隤扼胯整"
-#: eval.c:488
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr "genflags2str 扼∼芥潦潦准潦箇整"
-#: eval.c:698
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -981,807 +933,771 @@ msgstr ""
"\t# 澆粹X啜嫘踴:\n"
"\n"
-#: eval.c:725
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
msgstr "`IGNORECASE' gawk ∪撐扼"
-#: eval.c:754
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr "`BINMODE' gawk ∪撐扼"
-#: eval.c:812
+#: eval.c:793
#, c-format
msgid "BINMODE value `%s' is invalid, treated as 3"
msgstr "BINMODE `%s' 舐∪嫘扼隞 3 雿輻具整"
-#: eval.c:902
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "隤扎 `%sFMT' 摰 `%s' 扼"
-#: eval.c:980
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "`LINT' 詻桐誨乓怠 `--lint' ∪嫘怒整"
-#: eval.c:1127 eval.c:1777
-#, c-format
-msgid "can't use function name `%s' as variable or array"
-msgstr "X啣 `%s' 臬啜整舫具虫蝙典箸乓整"
-
-#: eval.c:1158 eval.c:1789 eval.c:1802
+#: eval.c:1132
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "艾芥撘 `%s' 詻桀扼扼"
-#: eval.c:1177
+#: eval.c:1133
+#, c-format
+msgid "reference to uninitialized variable `%s'"
+msgstr "艾芥憭 `%s' 詻桀扼扼"
+
+#: eval.c:1151
msgid "attempt to field reference from non-numeric value"
msgstr "啣扎雿輻具扎潦怒扼株岫踴扼"
-#: eval.c:1179
+#: eval.c:1153
msgid "attempt to field reference from null string"
msgstr "NULL 摮雿輻具艾潦怒桀扼閰艾踴艾整"
-#: eval.c:1185
+#: eval.c:1161
#, c-format
msgid "attempt to access field %ld"
msgstr "潦怒 %ld 詻柴U胯颯嫘株岫踴扼"
-#: eval.c:1194
+#: eval.c:1170
#, c-format
msgid "reference to uninitialized field `$%ld'"
msgstr "艾芥潦怒 `$%ld' 詻桀扼扼"
-#: eval.c:1256
+#: eval.c:1257
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "摰閮艾啜憭撘啜雿踴阡X `%s' 潦喳箝整"
-#: eval.c:1437
+#: eval.c:1452
#, c-format
msgid "unwind_stack: unexpected type `%s'"
msgstr "unwind_stack: 鈭芥 `%s' 扼"
-#: eval.c:1532
+#: eval.c:1546
msgid "division by zero attempted in `/='"
msgstr "`/=' 扼潦准怒斤銵整"
-#: eval.c:1539
+#: eval.c:1553
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "`%%=' 扼潦准怒斤銵整"
-#: eval.c:1876 eval.c:2122
-#, c-format
-msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context"
-msgstr "嫘怒押潦喋喋准嫘折 `%s[\"%.*s\"]' 桐蝙具株岫踴扼"
-
-#: eval.c:1907
-msgid "assignment used in conditional context"
-msgstr "∩辣喋喋准嫘找誨乓雿輻具整"
-
-#: eval.c:1911
-msgid "statement has no effect"
-msgstr "怠寞整"
-
-#: eval.c:2343
-#, c-format
-msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
-msgstr ""
-"for 怒潦: 怒潦摰銵銝准恍 `%s' 柴萸扎箝 %ld %ld 詨氬整"
-
-#: eval.c:2458
-#, c-format
-msgid "function called indirectly through `%s' does not exist"
-msgstr "`%s' 阡亦怠潦喳箝X啜摮具整"
-
-#: eval.c:2470
-#, c-format
-msgid "function `%s' not defined"
-msgstr "X `%s' 臬蝢押艾整"
-
-#: eval.c:2511
-#, c-format
-msgid "non-redirected `getline' invalid inside `%s' rule"
-msgstr "`%s' 怒潦怒桀氬扼胯芥扎研胯艾芥 `getline' 舐∪嫘扼"
-
-#: eval.c:2600
-#, c-format
-msgid "error reading input file `%s': %s"
-msgstr "亙∼扎 `%s' 隤准輯噯蹂葉怒具押潦箇整: %s"
-
-#: eval.c:2614
-#, c-format
-msgid "`nextfile' cannot be called from a `%s' rule"
-msgstr "`nextfile' `%s' 怒潦怒潦喳箝具箸乓整"
-
-#: eval.c:2694
-#, c-format
-msgid "`next' cannot be called from a `%s' rule"
-msgstr "`next' `%s' 潦喳箝具箸乓整"
-
-#: eval.c:2760
-#, c-format
-msgid "Sorry, don't know how to interpret `%s'"
-msgstr "喋閮喋整 `%s' 押柴怨圾整"
-
-#: ext.c:64
+#: ext.c:70
msgid "extensions are not allowed in sandbox mode"
msgstr "萸喋胯嫘U潦扼舀∪撐航迂胯艾整"
-#: ext.c:70 ext.c:75
+#: ext.c:73
msgid "`extension' is a gawk extension"
msgstr "`extension' gawk ∪撐扼"
-#: ext.c:85
-#, c-format
-msgid "fatal: extension: cannot open `%s' (%s)\n"
+#: ext.c:80
+#, fuzzy, c-format
+msgid "extension: cannot open library `%s' (%s)\n"
msgstr "游賜: extension: `%s' 具箸乓整 (%s)\n"
-#: ext.c:94
-#, c-format
+#: ext.c:86
+#, fuzzy, c-format
msgid ""
-"fatal: extension: library `%s': does not define "
-"`plugin_is_GPL_compatible' (%s)\n"
+"extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n"
msgstr ""
"游賜: extension: 押扎押 `%s': `plugin_is_GPL_compatible' 摰蝢押艾"
"整 (%s)\n"
-#: ext.c:103
-#, c-format
-msgid "fatal: extension: library `%s': cannot call function `%s' (%s)\n"
+#: ext.c:90
+#, fuzzy, c-format
+msgid "extension: library `%s': cannot call function `%s' (%s)\n"
msgstr ""
"游賜: extension: 押扎押 `%s': X `%s' 潦喳箝具箸乓整 "
"(%s)\n"
-#: ext.c:137
+#: ext.c:118
msgid "extension: missing function name"
msgstr "extension: X啣整"
-#: ext.c:142
+#: ext.c:123
#, c-format
msgid "extension: illegal character `%c' in function name `%s'"
msgstr "extension: X啣 `%2$s' 桐葉找甇芣摮 `%1$c' 雿輻具艾整"
-#: ext.c:151
+#: ext.c:131
#, c-format
msgid "extension: can't redefine function `%s'"
msgstr "extension: X `%s' 摰蝢押扼整"
-#: ext.c:155
+#: ext.c:135
#, c-format
msgid "extension: function `%s' already defined"
msgstr "extension: X `%s' 舀U怠蝢押艾整"
-#: ext.c:160
+#: ext.c:139
#, c-format
msgid "extension: function name `%s' previously defined"
msgstr "extension: X啣 `%s' 臬怠蝢押艾整"
-#: ext.c:162
+#: ext.c:141
#, c-format
msgid "extension: can't use gawk built-in `%s' as function name"
msgstr "extension: gawk 怎輯噯整艾 `%s' 舫X啣具虫蝙典箸乓整"
-#: ext.c:166
+#: ext.c:144
#, c-format
msgid "make_builtin: negative argument count for function `%s'"
msgstr "make_builtin: X `%s' 桀啜格啜鞎扼"
-#: ext.c:269
+#: ext.c:206
#, c-format
msgid "function `%s' defined to take no more than %d argument(s)"
msgstr "X `%s' 思蝙撘啜格啜 `%d' 隞乩典蝢押艾整"
-#: ext.c:272
+#: ext.c:209
#, c-format
msgid "function `%s': missing argument #%d"
msgstr "X `%s': 撘 #%d 整"
-#: ext.c:289
+#: ext.c:226
#, c-format
msgid "function `%s': argument #%d: attempt to use scalar as an array"
msgstr "X `%s': 撘 #%d: 嫘怒押潦具虫蝙具閰艾踴扼"
-#: ext.c:293
+#: ext.c:230
#, c-format
msgid "function `%s': argument #%d: attempt to use array as a scalar"
msgstr "X `%s': 撘 #%d: 嫘怒押潦具虫蝙具閰艾踴扼"
-#: ext.c:306
+#: ext.c:244
msgid "Operation Not Supported"
msgstr "格雿胯萸潦艾整"
-#: field.c:328
+#: ext.c:256
+msgid "dynamic loading of library not supported"
+msgstr ""
+
+#: field.c:339
msgid "NF set to negative value"
msgstr "NF 鞎桀扎怨身摰艾整"
-#: field.c:951 field.c:958 field.c:962
+#: field.c:962 field.c:969 field.c:973
msgid "split: fourth argument is a gawk extension"
msgstr "split: 蝚砍撘啜 gawk ∪撐扼"
-#: field.c:955
+#: field.c:966
msgid "split: fourth argument is not an array"
msgstr "split: 蝚砍撘啜扼胯整"
-#: field.c:969
+#: field.c:980
msgid "split: second argument is not an array"
msgstr "split: 蝚砌撘啜扼胯整"
-#: field.c:973
+#: field.c:984
msgid "split: cannot use the same array for second and fourth args"
msgstr "split: 蝚砌撘啜函洵撘啜怠雿輻具具臬箸乓整"
-#: field.c:978
+#: field.c:989
msgid "split: cannot use a subarray of second arg for fourth arg"
msgstr "split: 蝚砍撘啜怎洵鈭撘啜桅典雿輻具具臬箸乓整"
-#: field.c:981
+#: field.c:992
msgid "split: cannot use a subarray of fourth arg for second arg"
msgstr "split: 蝚砌撘啜怎洵撘啜桅典雿輻具具臬箸乓整"
-#: field.c:1010
+#: field.c:1021
msgid "split: null string for third arg is a gawk extension"
msgstr "split: 蝚砌撘啜 NULL 摮雿輻具具 gawk ∪撐扼"
-#: field.c:1050
+#: field.c:1061
msgid "patsplit: fourth argument is not an array"
msgstr "patsplit: 蝚砍撘啜扼胯整"
-#: field.c:1055
+#: field.c:1066
msgid "patsplit: second argument is not an array"
msgstr "patsplit: 蝚砌撘啜扼胯整"
-#: field.c:1061
+#: field.c:1072
msgid "patsplit: third argument must be non-null"
msgstr "patsplit: 蝚砌撘啜舫 NULL 扼芥啜整"
-#: field.c:1065
+#: field.c:1076
msgid "patsplit: cannot use the same array for second and fourth args"
msgstr "patsplit: 蝚砌撘啜函洵撘啜怠雿輻具具臬箸乓整"
-#: field.c:1070
+#: field.c:1081
msgid "patsplit: cannot use a subarray of second arg for fourth arg"
msgstr "patsplit: 蝚砍撘啜怎洵鈭撘啜桅典雿輻具具臬箸乓整"
-#: field.c:1073
+#: field.c:1084
msgid "patsplit: cannot use a subarray of fourth arg for second arg"
msgstr "patsplit: 蝚砌撘啜怎洵撘啜桅典雿輻具具臬箸乓整"
-#: field.c:1110
+#: field.c:1122
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "`FIELDWIDTHS' gawk ∪撐扼"
-#: field.c:1173
+#: field.c:1186
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr "`%s' 隞餈 FIELDWIDTHS 扎∪嫘扼"
-#: field.c:1246
+#: field.c:1259
msgid "null string for `FS' is a gawk extension"
msgstr "`FS' NULL 摮雿輻具柴 gawk ∪撐扼"
-#: field.c:1250
+#: field.c:1263
msgid "old awk does not support regexps as value of `FS'"
msgstr "扎 awk `FS' 桀扎具行迤閬銵函整萸潦整"
-#: field.c:1369
+#: field.c:1382
msgid "`FPAT' is a gawk extension"
msgstr "`FPAT' gawk ∪撐扼"
-#: getopt.c:574 getopt.c:590
-#, c-format
-msgid "%s: option '%s' is ambiguous\n"
+#: getopt.c:604 getopt.c:633
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
msgstr "%s: 芥瑯扼 '%s' 舀扼扼\n"
-#: getopt.c:623 getopt.c:627
+#: getopt.c:679 getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: 芥瑯扼 '--%s' 臬啜具扼整\n"
-#: getopt.c:636 getopt.c:641
+#: getopt.c:692 getopt.c:697
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: 芥瑯扼 '%c%s' 臬啜具扼整\n"
-#: getopt.c:684 getopt.c:703
+#: getopt.c:740 getopt.c:759
#, c-format
msgid "%s: option '--%s' requires an argument\n"
msgstr "%s: 芥瑯扼 '--%s' 怒臬啜敹閬扼\n"
-#: getopt.c:741 getopt.c:744
+#: getopt.c:797 getopt.c:800
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: 芥瑯扼 '--%s' 隤霅扼整\n"
-#: getopt.c:752 getopt.c:755
+#: getopt.c:808 getopt.c:811
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: 芥瑯扼 '%c%s' 隤霅扼整\n"
-#: getopt.c:804 getopt.c:807
+#: getopt.c:860 getopt.c:863
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: ∪嫘芥芥瑯扼 -- '%c'\n"
-#: getopt.c:857 getopt.c:874 getopt.c:1082 getopt.c:1100
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s: 芥瑯扼喋怒臬啜敹閬扼 -- '%c'\n"
-#: getopt.c:930 getopt.c:946
+#: getopt.c:989 getopt.c:1005
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: 芥瑯扼 '-W %s' 舀扼扼\n"
-#: getopt.c:970 getopt.c:988
+#: getopt.c:1029 getopt.c:1047
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: 芥瑯扼 '-W %s' 臬啜具扼整\n"
-#: getopt.c:1009 getopt.c:1027
+#: getopt.c:1068 getopt.c:1086
#, c-format
msgid "%s: option '-W %s' requires an argument\n"
msgstr "%s: 芥瑯扼 '-W %s' 怒臬啜敹閬扼\n"
-#: io.c:280
+#: io.c:326
#, c-format
msgid "command line argument `%s' is a directory: skipped"
msgstr "喋喋押扎喳 `%s' 胯研胯芥扼: 嫘准整"
-#: io.c:283 io.c:385
+#: io.c:329 io.c:438
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "∼扎 `%s' 隤准輯噯輻具恍整 (%s)"
-#: io.c:501
+#: io.c:568
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "fd %d (`%s') 具扼整 (%s)"
-#: io.c:578
+#: io.c:645
msgid "redirection not allowed in sandbox mode"
msgstr "萸喋胯嫘U潦扼胯芥扎研胯航迂胯艾整"
-#: io.c:612
+#: io.c:679
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "`%s' 芥扎研胯桀賭誘撘急啣扎閮餈啜艾整"
-#: io.c:618
+#: io.c:685
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "`%s' 芥扎研胯桀賭誘撘蝛箏扼"
-#: io.c:624
+#: io.c:690
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"`%2$s' 芥扎研胯怨瞍蝞桃冽∼扎怠 `%1$s' 雿踴艾"
""
-#: io.c:667
+#: io.c:733
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "∼扎 `%.*s' 批閬隞乩 `>' `>>' 蝯艾整"
-#: io.c:720
+#: io.c:786
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "箏具怒扎 `%s' 整 (%s)"
-#: io.c:730
+#: io.c:796
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "亙具怒扎 `%s' 整 (%s)"
-#: io.c:753
+#: io.c:819
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr "亙箏具桀孵扎 `%s' 整 (%s)"
-#: io.c:835
+#: io.c:900
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "`%s' 芥扎研胯扼整 (%s)"
-#: io.c:838
+#: io.c:903
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "`%s' 怒芥扎研胯扼整 (%s)"
-#: io.c:889
+#: io.c:954
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"艾∼扎怒格啜瑯嫘園恍整∼扎怨餈啣憭"
""
-#: io.c:905
+#: io.c:970
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "`%s' 柴怠仃整 (%s)"
-#: io.c:913
+#: io.c:978
msgid "too many pipes or input files open"
msgstr "艾扎整臬亙∼扎怒格啜憭整"
-#: io.c:935
+#: io.c:1000
msgid "close: second argument must be `to' or `from'"
msgstr "close: 蝚砌撘啜 `to' 整 `from' 扼芥啜整"
-#: io.c:952
+#: io.c:1017
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr "close: `%.*s' 舫艾∼扎怒扎准颯孵望扼胯整"
-#: io.c:957
+#: io.c:1022
msgid "close of redirection that was never opened"
msgstr "艾芥芥扎研胯具艾整"
-#: io.c:1054
+#: io.c:1120
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: 芥扎研胯 `%s' `|&' 雿輻具阡艾整蝚砌撘啜舐∟"
"整"
-#: io.c:1070
+#: io.c:1137
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "扎 `%2$s' 具桃嗆喋潦憭望 (%1$d) 扼 (%3$s)"
-#: io.c:1073
+#: io.c:1140
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "∼扎 `%2$s' 具桃嗆喋潦憭望 (%1$d) 扼 (%3$s)"
-#: io.c:1093
+#: io.c:1160
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "賬晞 `%s' 蝷箝阡艾整"
-#: io.c:1096
+#: io.c:1163
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "銝西准颯 `%s' 蝷箝阡艾整"
-#: io.c:1099
+#: io.c:1166
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "扎 `%s' 蝷箝阡艾整"
-#: io.c:1102
+#: io.c:1169
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "∼扎 `%s' 蝷箝阡艾整"
-#: io.c:1130 io.c:1185 main.c:793 main.c:830
+#: io.c:1197 io.c:1252 main.c:825 main.c:862
#, c-format
msgid "error writing standard output (%s)"
msgstr "璅皞箏詻格貉噯踴具押 (%s)"
-#: io.c:1134 io.c:1190
+#: io.c:1201 io.c:1257
#, c-format
msgid "error writing standard error (%s)"
msgstr "璅皞具押潦詻格貉噯踴具押 (%s)"
-#: io.c:1142
+#: io.c:1209
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "扎 `%s' 押瑯乓扼整 (%s)"
-#: io.c:1145
+#: io.c:1212
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "`%s' 豢亦扎銝西准颯嫘押瑯乓扼整 (%s)"
-#: io.c:1148
+#: io.c:1215
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "∼扎 `%s' 押瑯乓扼整 (%s)"
-#: io.c:1263
+#: io.c:1329
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr "`/inet' 柴准潦怒怒潦 %s ∪嫘扼"
-#: io.c:1280
+#: io.c:1347
#, c-format
msgid "remote host and port information (%s, %s) invalid"
msgstr "芥U潦柴嫘喋潦 (%s, %s) ∪嫘扼"
-#: io.c:1432
+#: io.c:1499
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr ""
"嫘瑯怒∼扎怠 `%s' 恬隤霅扼嚗准喋怒摰艾整"
-#: io.c:1446
+#: io.c:1513
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "嫘瑯怒∼扎怠 `%s' 臭摰具扼"
-#: io.c:1463
+#: io.c:1530
msgid "must supply a remote hostname to `/inet'"
msgstr "`/inet' 怒胯芥U潦嫘銝芥啜整"
-#: io.c:1481
+#: io.c:1548
msgid "must supply a remote port to `/inet'"
msgstr "`/inet' 怒胯芥U潦潦芸瑯銝芥啜整"
-#: io.c:1527
+#: io.c:1594
msgid "TCP/IP communications are not supported"
msgstr "TCP/IP 靽∼胯萸潦艾整"
-#: io.c:1694
+#: io.c:1764
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "`%s' U潦 `%s' 折整"
-#: io.c:1748
+#: io.c:1814
#, c-format
msgid "close of master pty failed (%s)"
msgstr "嫘踴 pty 柴怠仃整 (%s)"
-#: io.c:1750 io.c:1918 io.c:2075
+#: io.c:1816 io.c:1984 io.c:2145
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "摮准颯嫘璅皞箏柴怠仃整 (%s)"
-#: io.c:1753
+#: io.c:1819
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr "摮准颯嫘嫘研潦 pty 璅皞箏怎宏扼整 (dup: %s)"
-#: io.c:1755 io.c:1923
+#: io.c:1821 io.c:1989
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "摮准颯嫘璅皞亙整 (%s)"
-#: io.c:1758
+#: io.c:1824
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr "摮准颯嫘嫘研潦 pty 璅皞亙怎宏扼整 (dup: %s)"
-#: io.c:1760 io.c:1781
+#: io.c:1826 io.c:1847
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "嫘研潦 pty 柴怠仃整 (%s)"
-#: io.c:1859 io.c:1921 io.c:2053 io.c:2078
+#: io.c:1925 io.c:1987 io.c:2122 io.c:2148
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr "摮准颯嫘扎璅皞箏怎宏扼整 (dup: %s)"
-#: io.c:1866 io.c:1926
+#: io.c:1932 io.c:1992
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr "摮准颯嫘扎璅皞亙怎宏扼整 (dup: %s)"
-#: io.c:1886 io.c:2068
+#: io.c:1952 io.c:2138
msgid "restoring stdout in parent process failed\n"
msgstr "閬芥准颯嫘璅皞箏敺拇扼扼整\n"
-#: io.c:1894
+#: io.c:1960
msgid "restoring stdin in parent process failed\n"
msgstr "閬芥准颯嫘璅皞亙敺拇扼扼整\n"
-#: io.c:1929 io.c:2080 io.c:2094
+#: io.c:1995 io.c:2150 io.c:2164
#, c-format
msgid "close of pipe failed (%s)"
msgstr "扎整 (%s)"
-#: io.c:1974
+#: io.c:2040
msgid "`|&' not supported"
msgstr "`|&' 臭蝙具扼整"
-#: io.c:2040
+#: io.c:2107
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "扎 `%s' 整 (%s)"
-#: io.c:2088
+#: io.c:2158
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "`%s' 具桀准颯嫘摰銵扼整 (fork: %s)"
-#: io.c:2521
+#: io.c:2637
#, c-format
msgid "data file `%s' is empty"
msgstr "潦踴∼扎 `%s' 舐征扼"
-#: io.c:2562 io.c:2570
+#: io.c:2678 io.c:2686
msgid "could not allocate more input memory"
msgstr "亙具∼U芥潦隞乩蝣箔扼整"
-#: io.c:3128
+#: io.c:3236
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "銴啜格摮 `RS' 思蝙具柴 gawk 寞格∪撐扼"
-#: io.c:3233
+#: io.c:3326
msgid "IPv6 communication is not supported"
msgstr "IPv6 靽∼胯萸潦艾整"
-#: main.c:364
+#: main.c:355
msgid "`-m[fr]' option irrelevant in gawk"
msgstr "gawk 扼胯芥瑯扼 `-m[fr]' 怠寞胯整"
-#: main.c:366
+#: main.c:357
msgid "-m option usage: `-m[fr] nnn'"
msgstr "-m 芥瑯扼喋桐蝙冽: `-m[fr] 啣'"
-#: main.c:389
+#: main.c:386
msgid "empty argument to `-e/--source' ignored"
msgstr "`-e/--source' 詻桃征桀啜舐∟整"
-#: main.c:460
+#: main.c:472
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: 芥瑯扼 `-W %s' 航霅扼整∟整\n"
-#: main.c:513
+#: main.c:518
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: 撘啜敹閬芥芥瑯扼 -- %c\n"
-#: main.c:534
+#: main.c:539
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
"啣憭 `POSIXLY_CORRECT' 摰艾整芥瑯扼 `--posix' 嫘"
"整"
-#: main.c:540
+#: main.c:545
msgid "`--posix' overrides `--traditional'"
msgstr "芥瑯扼 `--posix' `--traditional' ∪嫘怒整"
-#: main.c:551
+#: main.c:556
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr ""
"芥瑯扼 `--posix'/`--traditional' `--non-decimal-data' ∪嫘怒整"
-#: main.c:555
+#: main.c:560
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr ""
"setuid root %s 摰銵具颯准乓芥銝桀憿箇游"
""
-#: main.c:560
+#: main.c:565
msgid "`--posix' overrides `--binary'"
msgstr "`--posix' `--binary' 銝詻整"
-#: main.c:611
+#: main.c:623
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "璅皞亙扎芥U潦怨身摰扼整 (%s)"
-#: main.c:614
+#: main.c:626
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "璅皞箏扎芥U潦怨身摰扼整 (%s)"
-#: main.c:616
+#: main.c:628
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "璅皞具押潦扎芥U潦怨身摰扼整 (%s)"
-#: main.c:655
+#: main.c:679
msgid "no program text at all!"
msgstr "准啜押具整!"
-#: main.c:733
+#: main.c:763
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr ""
"雿輻冽: %s [POSIX 整 GNU 敶W柴芥瑯扼設 -f progfile [--] file ...\n"
-#: main.c:735
+#: main.c:765
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr ""
"雿輻冽: %s [POSIX 整 GNU 敶W柴芥瑯扼設 [--] %cprogram%c file ...\n"
-#: main.c:740
+#: main.c:770
msgid "POSIX options:\t\tGNU long options: (standard)\n"
msgstr "POSIX 芥瑯扼:\t\tGNU 瑯敶W柴芥瑯扼: (璅皞)\n"
-#: main.c:741
+#: main.c:771
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f progfile\t\t--file=progfile\n"
-#: main.c:742
+#: main.c:772
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F fs\t\t\t--field-separator=fs\n"
-#: main.c:743
+#: main.c:773
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v var=val\t\t--assign=var=val\n"
-#: main.c:744
+#: main.c:774
msgid "Short options:\t\tGNU long options: (extensions)\n"
msgstr "准芥瑯扼:\t\tGNU 瑯敶W柴芥瑯扼: (∪撐)\n"
-#: main.c:745
+#: main.c:775
msgid "\t-b\t\t\t--characters-as-bytes\n"
msgstr "\t-b\t\t\t--characters-as-bytes\n"
-#: main.c:746
+#: main.c:776
msgid "\t-c\t\t\t--traditional\n"
msgstr "\t-c\t\t\t--traditional\n"
-#: main.c:747
+#: main.c:777
msgid "\t-C\t\t\t--copyright\n"
msgstr "\t-C\t\t\t--copyright\n"
-#: main.c:748
+#: main.c:778
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
msgstr "\t-d[file]\t\t--dump-variables[=file]\n"
-#: main.c:749
+#: main.c:779
+#, fuzzy
+msgid "\t-D[file]\t\t--debug[=file]\n"
+msgstr "\t-p[file]\t\t--profile[=file]\n"
+
+#: main.c:780
msgid "\t-e 'program-text'\t--source='program-text'\n"
msgstr "\t-e 'program-text'\t--source='program-text'\n"
-#: main.c:750
+#: main.c:781
msgid "\t-E file\t\t\t--exec=file\n"
msgstr "\t-E file\t\t\t--exec=file\n"
-#: main.c:751
+#: main.c:782
msgid "\t-g\t\t\t--gen-pot\n"
msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:752
+#: main.c:783
msgid "\t-h\t\t\t--help\n"
msgstr "\t-h\t\t\t--help\n"
-#: main.c:753
+#: main.c:784
+msgid "\t-l library\t\t--load=library\n"
+msgstr ""
+
+#: main.c:785
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
msgstr "\t-L [fatal]\t\t--lint[=fatal]\n"
-#: main.c:754
+#: main.c:786
msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr "\t-n\t\t\t--non-decimal-data\n"
-#: main.c:755
+#: main.c:787
+#, fuzzy
+msgid "\t-M\t\t\t--bignum\n"
+msgstr "\t-g\t\t\t--gen-pot\n"
+
+#: main.c:788
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr "\t-N\t\t\t--use-lc-numeric\n"
-#: main.c:756
+#: main.c:789
+#, fuzzy
+msgid "\t-o[file]\t\t--pretty-print[=file]\n"
+msgstr "\t-p[file]\t\t--profile[=file]\n"
+
+#: main.c:790
msgid "\t-O\t\t\t--optimize\n"
msgstr "\t-O\t\t\t--optimize\n"
-#: main.c:757
+#: main.c:791
msgid "\t-p[file]\t\t--profile[=file]\n"
msgstr "\t-p[file]\t\t--profile[=file]\n"
-#: main.c:758
+#: main.c:792
msgid "\t-P\t\t\t--posix\n"
msgstr "\t-P\t\t\t--posix\n"
-#: main.c:759
+#: main.c:793
msgid "\t-r\t\t\t--re-interval\n"
msgstr "\t-r\t\t\t--re-interval\n"
-#: main.c:761
-msgid "\t-R file\t\t\t--command=file\n"
-msgstr "\t-R file\t\t\t--command=file\n"
-
-#: main.c:762
+#: main.c:794
msgid "\t-S\t\t\t--sandbox\n"
msgstr "\t-S\t\t\t--sandbox\n"
-#: main.c:763
+#: main.c:795
msgid "\t-t\t\t\t--lint-old\n"
msgstr "\t-t\t\t\t--lint-old\n"
-#: main.c:764
+#: main.c:796
msgid "\t-V\t\t\t--version\n"
msgstr "\t-V\t\t\t--version\n"
-#: main.c:766
+#: main.c:798
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:769
+#: main.c:801
msgid "\t-Y\t\t--parsedebug\n"
msgstr "\t-Y\t\t--parsedebug\n"
@@ -1790,7 +1706,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:778
+#: main.c:810
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -1805,7 +1721,7 @@ msgstr ""
"蝧餉迅恍U啜<translation-team-ja@lists.sourceforge.net>怠勗艾"
"\n"
-#: main.c:782
+#: main.c:814
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -1815,7 +1731,7 @@ msgstr ""
"押怒閮剖扼胯璅皞亙隤准輯噯踴璅皞箏急詻箝整\n"
"\n"
-#: main.c:786
+#: main.c:818
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -1825,7 +1741,7 @@ msgstr ""
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:806
+#: main.c:838
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1844,7 +1760,7 @@ msgstr ""
"(at your option) any later version.\n"
"\n"
-#: main.c:814
+#: main.c:846
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"
@@ -1858,7 +1774,7 @@ msgstr ""
"GNU General Public License for more details.\n"
"\n"
-#: main.c:820
+#: main.c:852
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"
@@ -1866,16 +1782,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:855
+#: main.c:887
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "POSIX awk 扼 -Ft FS 踴怨身摰整"
-#: main.c:1089
+#: main.c:1133
#, c-format
msgid "unknown value for field spec: %d\n"
msgstr "潦怒摰思芸扎整: %d\n"
-#: main.c:1170
+#: main.c:1214
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
@@ -1884,84 +1800,79 @@ msgstr ""
"%s: 芥瑯扼 `-v' 桀 `%s' `憭=隞亙' 桀耦撘怒芥艾整\n"
"\n"
-#: main.c:1196
+#: main.c:1240
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "`%s' 臭甇芸啣扼"
-#: main.c:1199
+#: main.c:1243
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr "`%s' 臬啣扼胯整`%s=%s' 柴∼扎怒U整"
-#: main.c:1203
+#: main.c:1247
#, c-format
msgid "cannot use gawk builtin `%s' as variable name"
msgstr "gawk 怎輯噯踴 `%s' 臬啣具虫蝙典箸乓整"
-#: main.c:1208
+#: main.c:1252
#, c-format
msgid "cannot use function `%s' as variable name"
msgstr "X `%s' 臬啣具虫蝙典箸乓整"
-#: main.c:1261
+#: main.c:1305
msgid "floating point exception"
msgstr "瘚桀撠啁嫣憭"
-#: main.c:1268
+#: main.c:1312
msgid "fatal error: internal error"
msgstr "游賜具押: 具具押"
-#: main.c:1283
+#: main.c:1327
msgid "fatal error: internal error: segfault"
msgstr "游賜具押: 具具押: 颯啜∼喋潦瑯扼喲"
-#: main.c:1295
+#: main.c:1339
msgid "fatal error: internal error: stack overflow"
msgstr "游賜具押: 具具押: 嫘踴胯芥潦潦准"
-#: main.c:1345
+#: main.c:1393
#, c-format
msgid "no pre-opened fd %d"
msgstr "fd %d 鈭恍艾整"
-#: main.c:1352
+#: main.c:1400
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "鈭 fd %d 具 /dev/null 整"
-#: main.c:1375 main.c:1384
-#, c-format
-msgid "could not find groups: %s"
-msgstr "啜怒潦閬扎整: %s"
-
-#: msg.c:63
+#: msg.c:61
#, c-format
msgid "cmd. line:"
msgstr "喋喋押扎:"
-#: msg.c:107
+#: msg.c:121
msgid "error: "
msgstr "具押: "
-#: node.c:406
+#: node.c:436
msgid "backslash at end of string"
msgstr "摮桃怒胯嫘押瑯乓雿踴艾整"
-#: node.c:517
+#: node.c:520
#, c-format
msgid "old awk does not support the `\\%c' escape sequence"
msgstr "扎 awk `\\%c' 具嫘晞潦瑯潦晞喋嫘萸潦整"
-#: node.c:568
+#: node.c:571
msgid "POSIX does not allow `\\x' escapes"
msgstr "POSIX 扼 `\\x' 具嫘晞潦航迂胯艾整"
-#: node.c:574
+#: node.c:577
msgid "no hex digits in `\\x' escape sequence"
msgstr "`\\x' 具嫘晞潦瑯潦晞喋嫘怠剝脫啜整"
-#: node.c:596
+#: node.c:599
#, c-format
msgid ""
"hex escape \\x%.*s of %d characters probably not interpreted the way you "
@@ -1970,12 +1881,12 @@ msgstr ""
"剝脯具嫘晞潦 \\x%.*s (%d 摮) 胯鈭怒航圾芥"
""
-#: node.c:611
+#: node.c:614
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr "具嫘晞潦瑯潦晞喋 `\\%c' `%c' 典蝑急晞整"
-#: node.c:750
+#: node.c:759
msgid ""
"Invalid multibyte data detected. There may be a mismatch between your data "
"and your locale."
@@ -1993,16 +1904,16 @@ msgstr "%s %s `%s': fd 押啜敺扼整: (fcntl F_GETFD: %s)"
msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
msgstr "%s %s `%s': close-on-exec 閮剖扼整: (fcntl F_SETFD: %s)"
-#: profile.c:83
+#: profile.c:69
#, c-format
msgid "could not open `%s' for writing: %s"
msgstr "`%s' 貉噯輻具恍整扼: %s"
-#: profile.c:85
+#: profile.c:71
msgid "sending profile to standard error"
msgstr "准∼扎怒璅皞具押潦恍艾整"
-#: profile.c:203
+#: profile.c:187
#, c-format
msgid ""
"\t# %s block(s)\n"
@@ -2011,7 +1922,7 @@ msgstr ""
"\t# %s 准珮n"
"\n"
-#: profile.c:208
+#: profile.c:192
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -2020,17 +1931,22 @@ msgstr ""
"\t# 怒潦俞n"
"\n"
-#: profile.c:279
+#: profile.c:266
#, c-format
msgid "internal error: %s with null vname"
msgstr "具具押: %s vname ∪嫘扼"
-#: profile.c:952
+#: profile.c:528
+#, fuzzy
+msgid "internal error: builtin with null fname"
+msgstr "具具押: %s vname ∪嫘扼"
+
+#: profile.c:943
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# gawk 准∼扎怒雿交 %s\n"
-#: profile.c:1331
+#: profile.c:1328
#, c-format
msgid ""
"\n"
@@ -2039,92 +1955,169 @@ msgstr ""
"\n"
"\t# X唬閬改U怒∼嚗\n"
-#: profile.c:1370
+#: profile.c:1366
#, c-format
msgid "redir2str: unknown redirection type %d"
msgstr "redir2str: 銝芥芥扎研胯 %d 扼"
-#: re.c:572
+#: re.c:571
#, fuzzy, c-format
msgid "range of the form `[%c-%c]' is locale dependent"
msgstr "`[%c-%c]' 敶W桃脯胯准晞潦思摮扼"
-#: re.c:599
+#: re.c:598
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
msgstr "甇閬銵函整株蝝 `%.*s' 胯 `[%.*s]' 扼嫘扼"
-#: regcomp.c:132
+#: regcomp.c:131
msgid "Success"
msgstr "扼"
-#: regcomp.c:135
+#: regcomp.c:134
msgid "No match"
msgstr "銝氬整"
-#: regcomp.c:138
+#: regcomp.c:137
msgid "Invalid regular expression"
msgstr "∪嫘芣迤閬銵函整扼"
-#: regcomp.c:141
+#: regcomp.c:140
msgid "Invalid collation character"
msgstr "∪嫘芰批摮扼"
-#: regcomp.c:144
+#: regcomp.c:143
msgid "Invalid character class name"
msgstr "∪嫘芣摮胯押孵扼"
-#: regcomp.c:147
+#: regcomp.c:146
msgid "Trailing backslash"
msgstr "蝯蝡胯柴胯嫘押瑯"
-#: regcomp.c:150
+#: regcomp.c:149
msgid "Invalid back reference"
msgstr "∪嫘芸孵扼扼"
-#: regcomp.c:153
+#: regcomp.c:152
msgid "Unmatched [ or [^"
msgstr "[ 整 [^ 銝銝氬扼"
-#: regcomp.c:156
+#: regcomp.c:155
msgid "Unmatched ( or \\("
msgstr "( 整 \\( 銝銝氬扼"
-#: regcomp.c:159
+#: regcomp.c:158
msgid "Unmatched \\{"
msgstr "\\{ 銝銝氬扼"
-#: regcomp.c:162
+#: regcomp.c:161
msgid "Invalid content of \\{\\}"
msgstr "\\{\\} 桐葉頨怒∪嫘扼"
-#: regcomp.c:165
+#: regcomp.c:164
msgid "Invalid range end"
msgstr "∪嫘芰脩鈭扼"
-#: regcomp.c:168
+#: regcomp.c:167
msgid "Memory exhausted"
msgstr "∼U芥雿踴整"
-#: regcomp.c:171
+#: regcomp.c:170
msgid "Invalid preceding regular expression"
msgstr "∪嫘芸寞迤閬銵函整扼"
-#: regcomp.c:174
+#: regcomp.c:173
msgid "Premature end of regular expression"
msgstr "甇閬銵函整銝准抒鈭整"
-#: regcomp.c:177
+#: regcomp.c:176
msgid "Regular expression too big"
msgstr "甇閬銵函整憭扼整"
-#: regcomp.c:180
+#: regcomp.c:179
msgid "Unmatched ) or \\)"
msgstr ") 整 \\) 銝銝氬扼"
-#: regcomp.c:701
+#: regcomp.c:700
msgid "No previous regular expression"
msgstr "隞亙急迤閬銵函整整"
+#~ msgid "attempt to use function `%s' as an array"
+#~ msgstr "X `%s' 具虫蝙具閰艾踴扼"
+
+#~ msgid "reference to uninitialized element `%s[\"%.*s\"]'"
+#~ msgstr "艾芥閬蝝 `%s[\"%.*s\"]' 詻桀扼扼"
+
+#~ msgid "subscript of array `%s' is null string"
+#~ msgstr " `%s' 格溶摮 NULL 摮扼"
+
+#~ msgid "%s: empty (null)\n"
+#~ msgstr "%s: 蝛 (null)\n"
+
+#~ msgid "%s: empty (zero)\n"
+#~ msgstr "%s: 蝛 (zero)\n"
+
+#~ msgid "%s: table_size = %d, array_size = %d\n"
+#~ msgstr ""
+#~ "%s: 潦怒萸扎 (table_size) = %d, 萸扎 (array_size) = %d\n"
+
+#~ msgid "%s: is parameter\n"
+#~ msgstr "%s: 隞桀啜扼\n"
+
+#~ msgid "%s: array_ref to %s\n"
+#~ msgstr "%s: %s 詻桅 (array_ref) 扼\n"
+
+#~ msgid "use of non-array as array"
+#~ msgstr "扼芥柴具虫蝙具艾整"
+
+#~ msgid "can't use function name `%s' as variable or array"
+#~ msgstr "X啣 `%s' 臬啜整舫具虫蝙典箸乓整"
+
+#~ msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context"
+#~ msgstr "嫘怒押潦喋喋准嫘折 `%s[\"%.*s\"]' 桐蝙具株岫踴扼"
+
+#~ msgid "assignment used in conditional context"
+#~ msgstr "∩辣喋喋准嫘找誨乓雿輻具整"
+
+#~ msgid "statement has no effect"
+#~ msgstr "怠寞整"
+
+#~ msgid ""
+#~ "for loop: array `%s' changed size from %ld to %ld during loop execution"
+#~ msgstr ""
+#~ "for 怒潦: 怒潦摰銵銝准恍 `%s' 柴萸扎箝 %ld %ld 詨氬整"
+#~ ""
+
+#~ msgid "function called indirectly through `%s' does not exist"
+#~ msgstr "`%s' 阡亦怠潦喳箝X啜摮具整"
+
+#~ msgid "function `%s' not defined"
+#~ msgstr "X `%s' 臬蝢押艾整"
+
+#~ msgid "non-redirected `getline' invalid inside `%s' rule"
+#~ msgstr "`%s' 怒潦怒桀氬扼胯芥扎研胯艾芥 `getline' 舐∪嫘扼"
+
+#~ msgid "error reading input file `%s': %s"
+#~ msgstr "亙∼扎 `%s' 隤准輯噯蹂葉怒具押潦箇整: %s"
+
+#~ msgid "`nextfile' cannot be called from a `%s' rule"
+#~ msgstr "`nextfile' `%s' 怒潦怒潦喳箝具箸乓整"
+
+#, fuzzy
+#~ msgid "`exit' cannot be called in the current context"
+#~ msgstr "`next' `%s' 潦喳箝具箸乓整"
+
+#~ msgid "`next' cannot be called from a `%s' rule"
+#~ msgstr "`next' `%s' 潦喳箝具箸乓整"
+
+#~ msgid "Sorry, don't know how to interpret `%s'"
+#~ msgstr "喋閮喋整 `%s' 押柴怨圾整"
+
+#~ msgid "\t-R file\t\t\t--command=file\n"
+#~ msgstr "\t-R file\t\t\t--command=file\n"
+
+#~ msgid "could not find groups: %s"
+#~ msgstr "啜怒潦閬扎整: %s"
+
#~ msgid "assignment is not allowed to result of builtin function"
#~ msgstr "蝯颲潮X啜格颯扎詻桐誨乓航迂胯艾整"
diff --git a/po/nl.gmo b/po/nl.gmo
index 52f492d6..afaec62c 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index ecb41655..2d21c58b 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -1,17 +1,17 @@
# Dutch translations for GNU gawk.
-# Copyright (C) 2011 Free Software Foundation, Inc.
+# Copyright (C) 2012 Free Software Foundation, Inc.
# This file is distributed under the same license as the gawk package.
#
-# And so it goes.
+# Als het schone blinkt.
#
-# Benno Schulenberg <benno@vertaalt.nl>, 2005, 2007, 2010, 2011.
+# Benno Schulenberg <benno@vertaalt.nl>, 2005, 2007, 2010, 2011, 2012.
# Erwin Poeze <erwin.poeze@gmail.com>, 2009.
msgid ""
msgstr ""
-"Project-Id-Version: gawk 4.0.0\n"
+"Project-Id-Version: gawk 4.0.0h\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2011-11-14 21:46+0200\n"
-"PO-Revision-Date: 2011-07-17 21:44+0200\n"
+"POT-Creation-Date: 2012-04-27 10:06+0300\n"
+"PO-Revision-Date: 2012-01-30 20:40+0100\n"
"Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
"Language: nl\n"
@@ -21,505 +21,462 @@ msgstr ""
"X-Generator: Lokalize 1.0\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: array.c:140
+#: array.c:266
#, c-format
msgid "from %s"
msgstr "van %s"
-#: array.c:248
+#: array.c:366
msgid "attempt to use a scalar value as array"
msgstr "scalaire waarde wordt gebruikt als array"
-#: array.c:251
-#, c-format
-msgid "attempt to use function `%s' as an array"
-msgstr "functie '%s' wordt gebruikt als array"
-
-#: array.c:254
+#: array.c:368
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
msgstr "scalaire parameter '%s' wordt gebruikt als array"
-#: array.c:257
+#: array.c:371
#, c-format
msgid "attempt to use scalar `%s' as an array"
msgstr "scalair '%s' wordt gebruikt als array"
-#: array.c:302 array.c:707 builtin.c:84 builtin.c:1384 builtin.c:1426
-#: builtin.c:1439 builtin.c:1858 builtin.c:1870 eval.c:1135 eval.c:1139
-#: eval.c:1495 eval.c:1812
+#: array.c:418 array.c:584 builtin.c:85 builtin.c:1560 builtin.c:1602
+#: builtin.c:1615 builtin.c:2041 builtin.c:2053 eval.c:1109 eval.c:1113
+#: eval.c:1508
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "array '%s' wordt gebruikt in een scalaire context"
-#: array.c:513
-#, c-format
-msgid "reference to uninitialized element `%s[\"%.*s\"]'"
-msgstr "verwijzing naar onge簿nitialiseerd element '%s[\"%.*s\"]'"
-
-#: array.c:519
-#, c-format
-msgid "subscript of array `%s' is null string"
-msgstr "index van array '%s' is lege string"
-
-#: array.c:723
+#: array.c:591
#, c-format
msgid "delete: index `%s' not in array `%s'"
msgstr "delete: index '%s' niet in array '%s'"
-#: array.c:734 eval.c:1865
+#: array.c:605
#, c-format
msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
msgstr "scalair '%s[\"%.*s\"]' wordt gebruikt als array"
-#: array.c:910
-#, c-format
-msgid "%s: empty (null)\n"
-msgstr "%s: leeg (nil)\n"
-
-#: array.c:915
-#, c-format
-msgid "%s: empty (zero)\n"
-msgstr "%s: leeg (nul)\n"
-
-#: array.c:919
-#, c-format
-msgid "%s: table_size = %d, array_size = %d\n"
-msgstr "%s: tabelgrootte = %d, arraygrootte = %d\n"
-
-#: array.c:954
-#, c-format
-msgid "%s: is parameter\n"
-msgstr "%s: is een parameter\n"
-
-#: array.c:958
-#, c-format
-msgid "%s: array_ref to %s\n"
-msgstr "%s: array-verwijzing naar %s\n"
-
-#: array.c:963
-msgid "adump: argument not an array"
+#: array.c:784
+#, fuzzy
+msgid "adump: first argument not an array"
msgstr "adump: argument is geen array"
-#: array.c:1086
+#: array.c:823
msgid "asort: second argument not an array"
msgstr "asort: tweede argument is geen array"
-#: array.c:1087
+#: array.c:824
msgid "asorti: second argument not an array"
msgstr "asorti: tweede argument is geen array"
-#: array.c:1094
+#: array.c:831
msgid "asort: first argument not an array"
msgstr "asort: eerste argument is geen array"
-#: array.c:1095
+#: array.c:832
msgid "asorti: first argument not an array"
msgstr "asorti: eerste argument is geen array"
-#: array.c:1102
+#: array.c:839
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr ""
"asort: een subarray van het eerste argument kan niet als tweede argument "
"gebruikt worden"
-#: array.c:1103
+#: array.c:840
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr ""
"asorti: een subarray van het eerste argument kan niet als tweede argument "
"gebruikt worden"
-#: array.c:1108
+#: array.c:845
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr ""
"asort: een subarray van het tweede argument kan niet als eerste argument "
"gebruikt worden"
-#: array.c:1109
+#: array.c:846
msgid "asorti: cannot use a subarray of second arg for first arg"
msgstr ""
"asorti: een subarray van het tweede argument kan niet als eerste argument "
"gebruikt worden"
-#: array.c:1659
+#: array.c:1314
#, c-format
msgid "`%s' is invalid as a function name"
msgstr "'%s' is ongeldig als functienaam"
-#: array.c:1663
+#: array.c:1318
#, c-format
msgid "sort comparison function `%s' is not defined"
msgstr "sorteervergelijkingsfunctie '%s' is niet gedefinieerd"
-#: awkgram.y:249
+#: awkgram.y:223
#, c-format
msgid "%s blocks must have an action part"
msgstr "%s-blokken horen een actiedeel te hebben"
-#: awkgram.y:252
+#: awkgram.y:226
msgid "each rule must have a pattern or an action part"
msgstr "elke regel hoort een patroon of een actiedeel te hebben"
-#: awkgram.y:323 awkgram.y:334
+#: awkgram.y:295 awkgram.y:306
msgid "old awk does not support multiple `BEGIN' or `END' rules"
msgstr "oude 'awk' staat meerdere 'BEGIN'- en 'END'-regels niet toe"
-#: awkgram.y:371
+#: awkgram.y:343
#, 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:432
+#: awkgram.y:389
msgid "regexp constant `//' looks like a C++ comment, but is not"
msgstr "regexp-constante '//' lijkt op C-commentaar, maar is het niet"
-#: awkgram.y:436
+#: awkgram.y:393
#, 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:528
+#: awkgram.y:485
#, c-format
msgid "duplicate case values in switch body: %s"
msgstr "dubbele 'case'-waarde in 'switch'-opdracht: %s"
-#: awkgram.y:549
+#: awkgram.y:506
msgid "duplicate `default' detected in switch body"
msgstr "dubbele 'default' in 'switch'-opdracht"
-#: awkgram.y:809
+#: awkgram.y:766
msgid "`break' is not allowed outside a loop or switch"
msgstr "'break' buiten een lus of 'switch'-opdracht is niet toegestaan"
-#: awkgram.y:818
+#: awkgram.y:775
msgid "`continue' is not allowed outside a loop"
msgstr "'continue' buiten een lus is niet toegestaan"
-#: awkgram.y:828
+#: awkgram.y:785
#, c-format
msgid "`next' used in %s action"
msgstr "'next' wordt gebruikt in %s-actie"
-#: awkgram.y:836
+#: awkgram.y:793
msgid "`nextfile' is a gawk extension"
msgstr "'nextfile' is een gawk-uitbreiding"
-#: awkgram.y:841
+#: awkgram.y:798
#, c-format
msgid "`nextfile' used in %s action"
msgstr "'nextfile' wordt gebruikt in %s-actie"
-#: awkgram.y:865
+#: awkgram.y:822
msgid "`return' used outside function context"
msgstr "'return' wordt gebruikt buiten functiecontext"
-#: awkgram.y:925
+#: awkgram.y:896
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:995 awkgram.y:999 awkgram.y:1023
+#: awkgram.y:966 awkgram.y:970 awkgram.y:994
msgid "`delete array' is a gawk extension"
msgstr "'delete array' is een gawk-uitbreiding"
-#: awkgram.y:1019
+#: awkgram.y:990
msgid "`delete(array)' is a non-portable tawk extension"
msgstr "'delete(array)' is een niet-overdraagbare 'tawk'-uitbreiding"
-#: awkgram.y:1135
+#: awkgram.y:1108
msgid "multistage two-way pipelines don't work"
msgstr "meerfase-tweerichtings-pijplijnen werken niet"
-#: awkgram.y:1238
+#: awkgram.y:1211
msgid "regular expression on right of assignment"
msgstr "reguliere expressie rechts van toewijzing"
-#: awkgram.y:1249
+#: awkgram.y:1222
msgid "regular expression on left of `~' or `!~' operator"
msgstr "reguliere expressie links van operator '~' of '!~'"
-#: awkgram.y:1265 awkgram.y:1419
+#: awkgram.y:1238 awkgram.y:1389
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:1275
+#: awkgram.y:1248
msgid "regular expression on right of comparison"
msgstr "reguliere expressie rechts van vergelijking"
-#: awkgram.y:1394
+#: awkgram.y:1364
#, c-format
msgid "`getline var' invalid inside `%s' rule"
msgstr "'getline var' is ongeldig binnen een '%s'-regel"
-#: awkgram.y:1397 eval.c:2504
+#: awkgram.y:1367
#, c-format
msgid "`getline' invalid inside `%s' rule"
msgstr "'getline' is ongeldig binnen een '%s'-regel"
-#: awkgram.y:1402
+#: awkgram.y:1372
msgid "non-redirected `getline' undefined inside END action"
msgstr "niet-omgeleide 'getline' is ongedefinieerd binnen een END-actie"
-#: awkgram.y:1421
+#: awkgram.y:1391
msgid "old awk does not support multidimensional arrays"
msgstr "oude 'awk' kent geen meerdimensionale arrays"
-#: awkgram.y:1517
+#: awkgram.y:1488
msgid "call of `length' without parentheses is not portable"
msgstr "aanroep van 'length' zonder haakjes is niet overdraagbaar"
-#: awkgram.y:1580
+#: awkgram.y:1554
msgid "indirect function calls are a gawk extension"
msgstr "indirecte functieaanroepen zijn een gawk-uitbreiding"
-#: awkgram.y:1593
+#: awkgram.y:1567
#, 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:1671
+#: awkgram.y:1645
msgid "invalid subscript expression"
msgstr "ongeldige index-expressie"
-#: awkgram.y:1711
-msgid "use of non-array as array"
-msgstr "non-array wordt gebruikt als array"
-
-#: awkgram.y:1975 awkgram.y:1995 msg.c:98
+#: awkgram.y:1966 awkgram.y:1986 msg.c:112
msgid "warning: "
msgstr "waarschuwing: "
-#: awkgram.y:1993 msg.c:130
+#: awkgram.y:1984 msg.c:144
msgid "fatal: "
msgstr "fataal: "
-#: awkgram.y:2043
+#: awkgram.y:2034
msgid "unexpected newline or end of string"
msgstr "onverwacht regeleinde of einde van string"
-#: awkgram.y:2300 awkgram.y:2358 awkgram.y:2542
+#: awkgram.y:2299 awkgram.y:2357 awkgram.y:2545
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "kan bronbestand '%s' niet openen om te lezen (%s)"
-#: awkgram.y:2301 awkgram.y:2359 builtin.c:122
+#: awkgram.y:2300 awkgram.y:2358 builtin.c:124
msgid "reason unknown"
msgstr "reden onbekend"
-#: awkgram.y:2317
+#: awkgram.y:2316
#, c-format
msgid "already included source file `%s'"
msgstr "bronbestand '%s' is reeds ingesloten"
-#: awkgram.y:2343
+#: awkgram.y:2342
msgid "@include is a gawk extension"
msgstr "'@include' is een gawk-uitbreiding"
-#: awkgram.y:2349
+#: awkgram.y:2348
msgid "empty filename after @include"
msgstr "lege bestandsnaam na '@include'"
-#: awkgram.y:2494
+#: awkgram.y:2497
msgid "empty program text on command line"
msgstr "lege programmatekst op commandoregel"
-#: awkgram.y:2609
+#: awkgram.y:2612
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "kan bronbestand '%s' niet lezen (%s)"
-#: awkgram.y:2620
+#: awkgram.y:2623
#, c-format
msgid "source file `%s' is empty"
msgstr "bronbestand '%s' is leeg"
-#: awkgram.y:2805
+#: awkgram.y:2800
msgid "source file does not end in newline"
msgstr "bronbestand eindigt niet met een regeleindeteken (LF)"
-#: awkgram.y:2882
+#: awkgram.y:2905
msgid "unterminated regexp ends with `\\' at end of file"
msgstr "onafgesloten reguliere expressie eindigt met '\\' aan bestandseinde"
-#: awkgram.y:2906
+#: awkgram.y:2929
#, 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:2910
+#: awkgram.y:2933
#, c-format
msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr "regexp-optie '/.../%c' van 'tawk' werkt niet in gawk"
-#: awkgram.y:2917
+#: awkgram.y:2940
msgid "unterminated regexp"
msgstr "onafgesloten reguliere expressie"
-#: awkgram.y:2921
+#: awkgram.y:2944
msgid "unterminated regexp at end of file"
msgstr "onafgesloten reguliere expressie aan bestandseinde"
-#: awkgram.y:2980
+#: awkgram.y:3003
msgid "use of `\\ #...' line continuation is not portable"
msgstr "gebruik van regelvoortzetting '\\ #...' is niet overdraagbaar"
-#: awkgram.y:2996
+#: awkgram.y:3019
msgid "backslash not last character on line"
msgstr "backslash is niet het laatste teken op de regel"
-#: awkgram.y:3057
+#: awkgram.y:3080
msgid "POSIX does not allow operator `**='"
msgstr "POSIX staat operator '**=' niet toe"
-#: awkgram.y:3059
+#: awkgram.y:3082
msgid "old awk does not support operator `**='"
msgstr "oude 'awk' kent de operator '**=' niet"
-#: awkgram.y:3068
+#: awkgram.y:3091
msgid "POSIX does not allow operator `**'"
msgstr "POSIX staat operator '**' niet toe"
-#: awkgram.y:3070
+#: awkgram.y:3093
msgid "old awk does not support operator `**'"
msgstr "oude 'awk' kent de operator '**' niet"
-#: awkgram.y:3105
+#: awkgram.y:3128
msgid "operator `^=' is not supported in old awk"
msgstr "oude 'awk' kent de operator '^=' niet"
-#: awkgram.y:3113
+#: awkgram.y:3136
msgid "operator `^' is not supported in old awk"
msgstr "oude 'awk' kent de operator '^' niet"
-#: awkgram.y:3206 awkgram.y:3222
+#: awkgram.y:3229 awkgram.y:3245
msgid "unterminated string"
msgstr "onafgesloten string"
-#: awkgram.y:3418
+#: awkgram.y:3466
#, c-format
msgid "invalid char '%c' in expression"
msgstr "ongeldig teken '%c' in expressie"
-#: awkgram.y:3465
+#: awkgram.y:3513
#, c-format
msgid "`%s' is a gawk extension"
msgstr "'%s' is een gawk-uitbreiding"
-#: awkgram.y:3470
+#: awkgram.y:3518
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr "'%s' is een uitbreiding door Bell Labs"
-#: awkgram.y:3475
+#: awkgram.y:3523
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX staat '%s' niet toe"
-#: awkgram.y:3483
+#: awkgram.y:3531
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "oude 'awk' kent '%s' niet"
-#: awkgram.y:3550
+#: awkgram.y:3598
msgid "`goto' considered harmful!\n"
msgstr "'goto' wordt als schadelijk beschouwd!\n"
-#: awkgram.y:3601
+#: awkgram.y:3632
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d is een ongeldig aantal argumenten voor %s"
-#: awkgram.y:3636
+#: awkgram.y:3667
#, 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:3641
+#: awkgram.y:3672
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "%s: derde parameter is geen veranderbaar object"
-#: awkgram.y:3714 awkgram.y:3717
+#: awkgram.y:3751 awkgram.y:3754
msgid "match: third argument is a gawk extension"
msgstr "match: derde argument is een gawk-uitbreiding"
-#: awkgram.y:3771 awkgram.y:3774
+#: awkgram.y:3808 awkgram.y:3811
msgid "close: second argument is a gawk extension"
msgstr "close: tweede argument is een gawk-uitbreiding"
-#: awkgram.y:3786
+#: awkgram.y:3823
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr "dcgettext(_\"...\") is onjuist: verwijder het liggende streepje"
-#: awkgram.y:3801
+#: awkgram.y:3838
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr "dcngettext(_\"...\") is onjuist: verwijder het liggende streepje"
-#: awkgram.y:3893
-#, c-format
-msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
-msgstr "functie '%s': parameter #%d, '%s', dupliceert parameter #%d"
-
-#: awkgram.y:3935
+#: awkgram.y:3904
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "functie '%s': parameter '%s' schaduwt een globale variabele"
-#: awkgram.y:4093
+#: awkgram.y:3961
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "kan '%s' niet openen om te schrijven (%s)"
-#: awkgram.y:4094
+#: awkgram.y:3962
msgid "sending variable list to standard error"
msgstr "variabelenlijst gaat naar standaardfoutuitvoer"
-#: awkgram.y:4100
+#: awkgram.y:3970
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: sluiten is mislukt (%s)"
-#: awkgram.y:4152
+#: awkgram.y:3995
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() twee keer aangeroepen!"
-#: awkgram.y:4158
+#: awkgram.y:4003
msgid "there were shadowed variables."
msgstr "er waren geschaduwde variabelen."
-#: awkgram.y:4188
+#: awkgram.y:4074
+#, c-format
+msgid "function name `%s' previously defined"
+msgstr "functienaam '%s' is al eerder gedefinieerd"
+
+#: awkgram.y:4120
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "functie '%s': kan functienaam niet als parameternaam gebruiken"
-#: awkgram.y:4192
+#: awkgram.y:4123
#, 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:4208
+#: awkgram.y:4131
#, c-format
-msgid "function name `%s' previously defined"
-msgstr "functienaam '%s' is al eerder gedefinieerd"
+msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
+msgstr "functie '%s': parameter #%d, '%s', dupliceert parameter #%d"
-#: awkgram.y:4376 awkgram.y:4382
+#: awkgram.y:4210 awkgram.y:4216
#, c-format
msgid "function `%s' called but never defined"
msgstr "functie '%s' wordt aangeroepen maar is nergens gedefinieerd"
-#: awkgram.y:4385
+#: awkgram.y:4219
#, c-format
msgid "function `%s' defined but never called directly"
msgstr "functie '%s' is gedefinieerd maar wordt nergens direct aangeroepen"
-#: awkgram.y:4417
+#: awkgram.y:4251
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr "regexp-constante als parameter #%d levert booleanwaarde op"
-#: awkgram.y:4526
+#: awkgram.y:4297
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -528,230 +485,230 @@ msgstr ""
"functie '%s' wordt aangeroepen met een spatie tussen naam en '(',\n"
"of wordt gebruikt als variabele of array"
-#: awkgram.y:4773 eval.c:2056
+#: awkgram.y:4505
msgid "division by zero attempted"
msgstr "deling door nul"
-#: awkgram.y:4782 eval.c:2072
+#: awkgram.y:4514
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "deling door nul in '%%'"
-#: builtin.c:120
+#: builtin.c:122
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s naar \"%s\" is mislukt (%s)"
-#: builtin.c:121
+#: builtin.c:123
msgid "standard output"
msgstr "standaarduitvoer"
-#: builtin.c:135
+#: builtin.c:137
msgid "exp: received non-numeric argument"
msgstr "exp: argument is geen getal"
-#: builtin.c:141
+#: builtin.c:143
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: argument %g ligt buiten toegestane bereik"
-#: builtin.c:200
+#: builtin.c:202
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: kan pijp niet leegmaken: '%s' is geopend om te lezen, niet om te "
"schrijven"
-#: builtin.c:203
+#: builtin.c:205
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: kan bestand niet leegmaken: '%s' is geopend om te lezen, niet om te "
"schrijven"
-#: builtin.c:215
+#: builtin.c:217
#, c-format
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:333
+#: builtin.c:335
msgid "index: received non-string first argument"
msgstr "index: eerste argument is geen string"
-#: builtin.c:335
+#: builtin.c:337
msgid "index: received non-string second argument"
msgstr "index: tweede argument is geen string"
-#: builtin.c:457
+#: builtin.c:461
msgid "int: received non-numeric argument"
msgstr "int: argument is geen getal"
-#: builtin.c:493
+#: builtin.c:497
msgid "length: received array argument"
msgstr "length: argument is een array"
-#: builtin.c:496
+#: builtin.c:500
msgid "`length(array)' is a gawk extension"
msgstr "'length(array)' is een gawk-uitbreiding"
-#: builtin.c:504
+#: builtin.c:508
msgid "length: received non-string argument"
msgstr "length: argument is geen string"
-#: builtin.c:535
+#: builtin.c:539
msgid "log: received non-numeric argument"
msgstr "log: argument is geen getal"
-#: builtin.c:538
+#: builtin.c:542
#, c-format
msgid "log: received negative argument %g"
msgstr "log: argument %g is negatief"
-#: builtin.c:694 builtin.c:699
+#: builtin.c:740 builtin.c:745
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:761
+#: builtin.c:815
#, c-format
msgid "field width is ignored for `%%' specifier"
msgstr "veldbreedte wordt genegeerd voor opmaakaanduiding '%%'"
-#: builtin.c:763
+#: builtin.c:817
#, c-format
msgid "precision is ignored for `%%' specifier"
msgstr "veldprecisie wordt genegeerd voor opmaakaanduiding '%%'"
-#: builtin.c:765
+#: builtin.c:819
#, c-format
msgid "field width and precision are ignored for `%%' specifier"
msgstr "veldbreedte en -precisie worden genegeerd voor opmaakaanduiding '%%'"
-#: builtin.c:816
+#: builtin.c:870
msgid "fatal: `$' is not permitted in awk formats"
msgstr "fataal: '$' is niet toegestaan in awk-opmaak"
-#: builtin.c:825
+#: builtin.c:879
msgid "fatal: arg count with `$' must be > 0"
msgstr "fataal: het aantal argumenten met '$' moet > 0 zijn"
-#: builtin.c:829
+#: builtin.c:883
#, 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:833
+#: builtin.c:887
msgid "fatal: `$' not permitted after period in format"
msgstr "fataal: '$' is niet toegestaan na een punt in de opmaak"
-#: builtin.c:849
+#: builtin.c:903
msgid "fatal: no `$' supplied for positional field width or precision"
msgstr "fataal: geen '$' opgegeven bij positionele veldbreedte of -precisie"
-#: builtin.c:920
+#: builtin.c:975
msgid "`l' is meaningless in awk formats; ignored"
msgstr "'l' is betekenisloos in awk-opmaak; genegeerd"
-#: builtin.c:924
+#: builtin.c:979
msgid "fatal: `l' is not permitted in POSIX awk formats"
msgstr "fataal: 'l' is niet toegestaan in POSIX awk-opmaak"
-#: builtin.c:937
+#: builtin.c:992
msgid "`L' is meaningless in awk formats; ignored"
msgstr "'L' is betekenisloos in awk-opmaak; genegeerd"
-#: builtin.c:941
+#: builtin.c:996
msgid "fatal: `L' is not permitted in POSIX awk formats"
msgstr "fataal: 'L' is niet toegestaan in POSIX awk-opmaak"
-#: builtin.c:954
+#: builtin.c:1009
msgid "`h' is meaningless in awk formats; ignored"
msgstr "'h' is betekenisloos in awk-opmaak; genegeerd"
-#: builtin.c:958
+#: builtin.c:1013
msgid "fatal: `h' is not permitted in POSIX awk formats"
msgstr "fataal: 'h' is niet toegestaan in POSIX awk-opmaak"
-#: builtin.c:1271
+#: builtin.c:1408
#, 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:1331
+#: builtin.c:1506
#, c-format
msgid "ignoring unknown format specifier character `%c': no argument converted"
msgstr ""
"onbekend opmaakteken '%c' wordt genegeerd: geen argument is geconverteerd"
-#: builtin.c:1336
+#: builtin.c:1511
msgid "fatal: not enough arguments to satisfy format string"
msgstr "fataal: niet genoeg argumenten voor opmaakstring"
-#: builtin.c:1338
+#: builtin.c:1513
msgid "^ ran out for this one"
msgstr "niet genoeg ^ voor deze"
-#: builtin.c:1345
+#: builtin.c:1520
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: opmaakaanduiding mist een stuurletter"
-#: builtin.c:1348
+#: builtin.c:1523
msgid "too many arguments supplied for format string"
msgstr "te veel argumenten voor opmaakstring"
-#: builtin.c:1422 builtin.c:1433
+#: builtin.c:1598 builtin.c:1609
msgid "printf: no arguments"
msgstr "printf: geen argumenten"
-#: builtin.c:1474
+#: builtin.c:1650
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: argument is geen getal"
-#: builtin.c:1478
+#: builtin.c:1654
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: argument %g is negatief"
-#: builtin.c:1502
+#: builtin.c:1685
#, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: lengte %g is niet >= 1"
-#: builtin.c:1504
+#: builtin.c:1687
#, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: lengte %g is niet >= 0"
-#: builtin.c:1511
+#: builtin.c:1694
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: lengte %g is geen integer; wordt afgekapt"
-#: builtin.c:1516
+#: builtin.c:1699
#, 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:1528
+#: builtin.c:1711
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: startindex %g is ongeldig; 1 wordt gebruikt"
-#: builtin.c:1533
+#: builtin.c:1716
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: startindex %g is geen integer; wordt afgekapt"
-#: builtin.c:1558
+#: builtin.c:1741
msgid "substr: source string is zero length"
msgstr "substr: bronstring heeft lengte nul"
-#: builtin.c:1574
+#: builtin.c:1757
#, 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:1582
+#: builtin.c:1765
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -759,227 +716,222 @@ msgstr ""
"substr: lengte %g bij startindex %g is groter dan de lengte van het eerste "
"argument (%lu)"
-#: builtin.c:1656
+#: builtin.c:1839
msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
msgstr "strftime: opmaakwaarde in PROCINFO[\"strftime\"] is numeriek"
-#: builtin.c:1679
+#: builtin.c:1862
msgid "strftime: received non-numeric second argument"
msgstr "strftime: tweede argument is geen getal"
-#: builtin.c:1682
+#: builtin.c:1866
msgid "strftime: second argument less than 0 or too big for time_t"
-msgstr ""
+msgstr "strftime: tweede argument is kleiner dan nul of te groot voor 'time_t'"
-#: builtin.c:1689
+#: builtin.c:1873
msgid "strftime: received non-string first argument"
msgstr "strftime: eerste argument is geen string"
-#: builtin.c:1695
+#: builtin.c:1880
msgid "strftime: received empty format string"
msgstr "strftime: opmaakstring is leeg"
-#: builtin.c:1761
+#: builtin.c:1946
msgid "mktime: received non-string argument"
msgstr "mktime: argument is geen string"
-#: builtin.c:1778
+#: builtin.c:1963
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:1813
+#: builtin.c:1998
msgid "'system' function not allowed in sandbox mode"
msgstr "'system'-functie is niet toegestaan in sandbox-modus"
-#: builtin.c:1818
+#: builtin.c:2003
msgid "system: received non-string argument"
msgstr "system: argument is geen string"
-#: builtin.c:1873 eval.c:1159 eval.c:1790 eval.c:1803
-#, c-format
-msgid "reference to uninitialized variable `%s'"
-msgstr "verwijzing naar onge簿nitialiseerde variabele '%s'"
-
-#: builtin.c:1940
+#: builtin.c:2121
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "verwijzing naar onge簿nitialiseerd veld '$%d'"
-#: builtin.c:2027
+#: builtin.c:2208
msgid "tolower: received non-string argument"
msgstr "tolower: argument is geen string"
-#: builtin.c:2061
+#: builtin.c:2242
msgid "toupper: received non-string argument"
msgstr "toupper: argument is geen string"
-#: builtin.c:2097
+#: builtin.c:2278
msgid "atan2: received non-numeric first argument"
msgstr "atan2: eerste argument is geen getal"
-#: builtin.c:2099
+#: builtin.c:2280
msgid "atan2: received non-numeric second argument"
msgstr "atan2: tweede argument is geen getal"
-#: builtin.c:2118
+#: builtin.c:2299
msgid "sin: received non-numeric argument"
msgstr "sin: argument is geen getal"
-#: builtin.c:2134
+#: builtin.c:2315
msgid "cos: received non-numeric argument"
msgstr "cos: argument is geen getal"
-#: builtin.c:2187
+#: builtin.c:2368
msgid "srand: received non-numeric argument"
msgstr "srand: argument is geen getal"
-#: builtin.c:2218
+#: builtin.c:2399
msgid "match: third argument is not an array"
msgstr "match: derde argument is geen array"
-#: builtin.c:2482
+#: builtin.c:2664
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: derde argument is 0; wordt beschouwd als 1"
-#: builtin.c:2775
+#: builtin.c:2957
msgid "lshift: received non-numeric first argument"
msgstr "lshift: eerste argument is geen getal"
-#: builtin.c:2777
+#: builtin.c:2959
msgid "lshift: received non-numeric second argument"
msgstr "lshift: tweede argument is geen getal"
-#: builtin.c:2783
+#: builtin.c:2965
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr "lshift(%lf, %lf): negatieve waarden geven rare resultaten"
-#: builtin.c:2785
+#: builtin.c:2967
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr "lshift(%lf, %lf): cijfers na de komma worden afgekapt"
-#: builtin.c:2787
+#: builtin.c:2969
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr "lshift(%lf, %lf): te grote opschuifwaarden geven rare resultaten"
-#: builtin.c:2812
+#: builtin.c:2994
msgid "rshift: received non-numeric first argument"
msgstr "rshift: eerste argument is geen getal"
-#: builtin.c:2814
+#: builtin.c:2996
msgid "rshift: received non-numeric second argument"
msgstr "rshift: tweede argument is geen getal"
-#: builtin.c:2820
+#: builtin.c:3002
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr "rshift(%lf, %lf): negatieve waarden geven rare resultaten"
-#: builtin.c:2822
+#: builtin.c:3004
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr "rshift(%lf, %lf): cijfers na de komma worden afgekapt"
-#: builtin.c:2824
+#: builtin.c:3006
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr "rshift(%lf, %lf): te grote opschuifwaarden geven rare resultaten"
-#: builtin.c:2849
+#: builtin.c:3031
msgid "and: received non-numeric first argument"
msgstr "and: eerste argument is geen getal"
-#: builtin.c:2851
+#: builtin.c:3033
msgid "and: received non-numeric second argument"
msgstr "and: tweede argument is geen getal"
-#: builtin.c:2857
+#: builtin.c:3039
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr "and(%lf, %lf): negatieve waarden geven rare resultaten"
-#: builtin.c:2859
+#: builtin.c:3041
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr "and(%lf, %lf): cijfers na de komma worden afgekapt"
-#: builtin.c:2884
+#: builtin.c:3066
msgid "or: received non-numeric first argument"
msgstr "or: eerste argument is geen getal"
-#: builtin.c:2886
+#: builtin.c:3068
msgid "or: received non-numeric second argument"
msgstr "or: tweede argument is geen getal"
-#: builtin.c:2892
+#: builtin.c:3074
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr "or(%lf, %lf): negatieve waarden geven rare resultaten"
-#: builtin.c:2894
+#: builtin.c:3076
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr "or(%lf, %lf): cijfers na de komma worden afgekapt"
-#: builtin.c:2922
+#: builtin.c:3102
msgid "xor: received non-numeric first argument"
msgstr "xor: eerste argument is geen getal"
-#: builtin.c:2924
+#: builtin.c:3104
msgid "xor: received non-numeric second argument"
msgstr "xor: tweede argument is geen getal"
-#: builtin.c:2930
+#: builtin.c:3110
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr "xor(%lf, %lf): negatieve waarden geven rare resultaten"
-#: builtin.c:2932
+#: builtin.c:3112
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr "xor(%lf, %lf): cijfers na de komma worden afgekapt"
-#: builtin.c:2956 builtin.c:2962
+#: builtin.c:3136
msgid "compl: received non-numeric argument"
msgstr "compl: argument is geen getal"
-#: builtin.c:2964
+#: builtin.c:3142
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr "compl(%lf): negatieve waarden geven rare resultaten"
-#: builtin.c:2966
+#: builtin.c:3144
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr "compl(%lf): cijfers na de komma worden afgekapt"
-#: builtin.c:3135
+#: builtin.c:3313
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: '%s' is geen geldige taalregio-deelcategorie"
-#: eval.c:412
+#: eval.c:395
#, c-format
msgid "unknown nodetype %d"
msgstr "onbekend knooptype %d"
-#: eval.c:423 eval.c:437
+#: eval.c:406 eval.c:420
#, c-format
msgid "unknown opcode %d"
msgstr "onbekende opcode %d"
-#: eval.c:434
+#: eval.c:417
#, c-format
msgid "opcode %s not an operator or keyword"
msgstr "opcode %s is geen operator noch sleutelwoord"
-#: eval.c:488
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr "bufferoverloop in genflags2str()"
-#: eval.c:698
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -990,822 +942,785 @@ msgstr ""
"\t# Functieaanroepen-stack:\n"
"\n"
-#: eval.c:725
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
msgstr "'IGNORECASE' is een gawk-uitbreiding"
-#: eval.c:754
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr "'BINMODE' is een gawk-uitbreiding"
-#: eval.c:812
+#: eval.c:793
#, c-format
msgid "BINMODE value `%s' is invalid, treated as 3"
msgstr "BINMODE-waarde '%s' is ongeldig, wordt behandeld als 3"
-#: eval.c:902
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "onjuiste opgave van '%sFMT': '%s'"
-#: eval.c:980
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "'--lint' wordt uitgeschakeld wegens toewijzing aan 'LINT'"
-#: eval.c:1127 eval.c:1777
-#, c-format
-msgid "can't use function name `%s' as variable or array"
-msgstr "kan functienaam '%s' niet als variabele of array gebruiken"
-
-#: eval.c:1158 eval.c:1789 eval.c:1802
+#: eval.c:1132
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "verwijzing naar onge簿nitialiseerd argument '%s'"
-#: eval.c:1177
+#: eval.c:1133
+#, c-format
+msgid "reference to uninitialized variable `%s'"
+msgstr "verwijzing naar onge簿nitialiseerde variabele '%s'"
+
+#: eval.c:1151
msgid "attempt to field reference from non-numeric value"
msgstr "veldverwijzingspoging via een waarde die geen getal is"
-#: eval.c:1179
+#: eval.c:1153
msgid "attempt to field reference from null string"
msgstr "veldverwijzingspoging via een lege string"
-#: eval.c:1185
+#: eval.c:1161
#, c-format
msgid "attempt to access field %ld"
msgstr "toegangspoging tot veld %ld"
-#: eval.c:1194
+#: eval.c:1170
#, c-format
msgid "reference to uninitialized field `$%ld'"
msgstr "verwijzing naar onge簿nitialiseerd veld '$%ld'"
-#: eval.c:1256
+#: eval.c:1257
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "functie '%s' aangeroepen met meer argumenten dan gedeclareerd"
-#: eval.c:1437
+#: eval.c:1452
#, c-format
msgid "unwind_stack: unexpected type `%s'"
msgstr "unwind_stack(): onverwacht type '%s'"
-#: eval.c:1532
+#: eval.c:1546
msgid "division by zero attempted in `/='"
msgstr "deling door nul in '/='"
-#: eval.c:1539
+#: eval.c:1553
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "deling door nul in '%%='"
-#: eval.c:1876 eval.c:2122
-#, c-format
-msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context"
-msgstr "array '%s[\"%.*s\"]' wordt gebruikt in een scalaire context"
-
-#: eval.c:1907
-msgid "assignment used in conditional context"
-msgstr "toewijzing wordt gebruikt in een conditionele context"
-
-#: eval.c:1911
-msgid "statement has no effect"
-msgstr "opdracht heeft geen effect"
-
-#: eval.c:2343
-#, c-format
-msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
-msgstr ""
-"for: array '%s' veranderde van grootte %ld naar %ld tijdens uitvoer van de "
-"lus"
-
-#: eval.c:2458
-#, c-format
-msgid "function called indirectly through `%s' does not exist"
-msgstr "indirect (via '%s') aangeroepen functie bestaat niet"
-
-#: eval.c:2470
-#, c-format
-msgid "function `%s' not defined"
-msgstr "functie '%s' is niet gedefinieerd"
-
-#: eval.c:2511
-#, c-format
-msgid "non-redirected `getline' invalid inside `%s' rule"
-msgstr "niet-omgeleide 'getline' is ongeldig binnen een '%s'-regel"
-
-#: eval.c:2600
-#, c-format
-msgid "error reading input file `%s': %s"
-msgstr "fout tijdens lezen van invoerbestand '%s': %s"
-
-#: eval.c:2614
-#, c-format
-msgid "`nextfile' cannot be called from a `%s' rule"
-msgstr "'nextfile' kan niet aangeroepen worden in een '%s'-regel"
-
-#: eval.c:2694
-#, c-format
-msgid "`next' cannot be called from a `%s' rule"
-msgstr "'next' kan niet aangeroepen worden in een '%s'-regel"
-
-#: eval.c:2760
-#, c-format
-msgid "Sorry, don't know how to interpret `%s'"
-msgstr "Kan '%s' niet interpreteren"
-
-#: ext.c:64
+#: ext.c:70
msgid "extensions are not allowed in sandbox mode"
msgstr "uitbreidingen zijn niet toegestaan in sandbox-modus"
-#: ext.c:70 ext.c:75
+#: ext.c:73
msgid "`extension' is a gawk extension"
msgstr "'extension' is een gawk-uitbreiding"
-#: ext.c:85
-#, c-format
-msgid "fatal: extension: cannot open `%s' (%s)\n"
+#: ext.c:80
+#, fuzzy, c-format
+msgid "extension: cannot open library `%s' (%s)\n"
msgstr "fatale fout: extension: kan '%s' niet openen (%s)\n"
-#: ext.c:94
-#, c-format
+#: ext.c:86
+#, fuzzy, c-format
msgid ""
-"fatal: extension: library `%s': does not define "
-"`plugin_is_GPL_compatible' (%s)\n"
+"extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n"
msgstr ""
"fatale fout: extension: bibliotheek '%s': definieert "
"'plugin_is_GPL_compatible' niet (%s)\n"
-#: ext.c:103
-#, c-format
-msgid "fatal: extension: library `%s': cannot call function `%s' (%s)\n"
+#: ext.c:90
+#, fuzzy, c-format
+msgid "extension: library `%s': cannot call function `%s' (%s)\n"
msgstr ""
"fatale fout: extension: bibliotheek '%s': kan functie '%s' niet aanroepen "
"(%s)\n"
-#: ext.c:137
+#: ext.c:118
msgid "extension: missing function name"
msgstr "extension: ontbrekende functienaam"
-#: ext.c:142
+#: ext.c:123
#, c-format
msgid "extension: illegal character `%c' in function name `%s'"
msgstr "extension: ongeldig teken '%c' in functienaam '%s'"
-#: ext.c:151
+#: ext.c:131
#, c-format
msgid "extension: can't redefine function `%s'"
msgstr "extension: kan functie '%s' niet herdefini禱ren"
-#: ext.c:155
+#: ext.c:135
#, c-format
msgid "extension: function `%s' already defined"
msgstr "extension: functie '%s' is al gedefinieerd"
-#: ext.c:160
+#: ext.c:139
#, c-format
msgid "extension: function name `%s' previously defined"
msgstr "extension: functienaam '%s' is al eerder gedefinieerd"
-#: ext.c:162
+#: ext.c:141
#, 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:166
+#: ext.c:144
#, c-format
msgid "make_builtin: negative argument count for function `%s'"
msgstr "make_builtin: negatief aantal argumenten voor functie '%s'"
-#: ext.c:269
+#: ext.c:206
#, 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:272
+#: ext.c:209
#, c-format
msgid "function `%s': missing argument #%d"
msgstr "functie '%s': ontbrekend argument #%d"
-#: ext.c:289
+#: ext.c:226
#, 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:293
+#: ext.c:230
#, 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:306
+#: ext.c:244
msgid "Operation Not Supported"
msgstr "Actie wordt niet ondersteund"
-#: field.c:328
+#: ext.c:256
+msgid "dynamic loading of library not supported"
+msgstr ""
+
+#: field.c:339
msgid "NF set to negative value"
msgstr "NF is op een negatieve waarde gezet"
-#: field.c:951 field.c:958 field.c:962
+#: field.c:962 field.c:969 field.c:973
msgid "split: fourth argument is a gawk extension"
msgstr "split: vierde argument is een gawk-uitbreiding"
-#: field.c:955
+#: field.c:966
msgid "split: fourth argument is not an array"
msgstr "split: vierde argument is geen array"
-#: field.c:969
+#: field.c:980
msgid "split: second argument is not an array"
msgstr "split: tweede argument is geen array"
-#: field.c:973
+#: field.c:984
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:978
+#: field.c:989
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:981
+#: field.c:992
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:1010
+#: field.c:1021
msgid "split: null string for third arg is a gawk extension"
msgstr "split: lege string als derde argument is een gawk-uitbreiding"
-#: field.c:1050
+#: field.c:1061
msgid "patsplit: fourth argument is not an array"
msgstr "patsplit: vierde argument is geen array"
-#: field.c:1055
+#: field.c:1066
msgid "patsplit: second argument is not an array"
msgstr "patsplit: tweede argument is geen array"
-#: field.c:1061
+#: field.c:1072
msgid "patsplit: third argument must be non-null"
msgstr "patsplit: derde argument moet niet-nil zijn"
-#: field.c:1065
+#: field.c:1076
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:1070
+#: field.c:1081
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:1073
+#: field.c:1084
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:1110
+#: field.c:1122
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "'FIELDWIDTHS' is een gawk-uitbreiding"
-#: field.c:1173
+#: field.c:1186
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr "ongeldige waarde voor FIELDWIDTHS, nabij '%s'"
-#: field.c:1246
+#: field.c:1259
msgid "null string for `FS' is a gawk extension"
msgstr "een lege string als 'FS' is een gawk-uitbreiding"
-#: field.c:1250
+#: field.c:1263
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:1369
+#: field.c:1382
msgid "`FPAT' is a gawk extension"
msgstr "'FPAT' is een gawk-uitbreiding"
-#: getopt.c:574 getopt.c:590
-#, c-format
-msgid "%s: option '%s' is ambiguous\n"
+#: getopt.c:604 getopt.c:633
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
msgstr "%s: optie '%s' is niet eenduidig\n"
-#: getopt.c:623 getopt.c:627
+#: getopt.c:679 getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: optie '--%s' staat geen argument toe\n"
-#: getopt.c:636 getopt.c:641
+#: getopt.c:692 getopt.c:697
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: optie '%c%s' staat geen argument toe\n"
-#: getopt.c:684 getopt.c:703
+#: getopt.c:740 getopt.c:759
#, c-format
msgid "%s: option '--%s' requires an argument\n"
msgstr "%s: optie '--%s' vereist een argument\n"
-#: getopt.c:741 getopt.c:744
+#: getopt.c:797 getopt.c:800
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: onbekende optie '--%s'\n"
-#: getopt.c:752 getopt.c:755
+#: getopt.c:808 getopt.c:811
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: onbekende optie '%c%s'\n"
-#: getopt.c:804 getopt.c:807
+#: getopt.c:860 getopt.c:863
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: ongeldige optie -- '%c'\n"
-#: getopt.c:857 getopt.c:874 getopt.c:1082 getopt.c:1100
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s: optie vereist een argument -- '%c'\n"
-#: getopt.c:930 getopt.c:946
+#: getopt.c:989 getopt.c:1005
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: optie '-W %s' is niet eenduidig\n"
-#: getopt.c:970 getopt.c:988
+#: getopt.c:1029 getopt.c:1047
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: optie '-W %s' staat geen argument toe\n"
-#: getopt.c:1009 getopt.c:1027
+#: getopt.c:1068 getopt.c:1086
#, c-format
msgid "%s: option '-W %s' requires an argument\n"
msgstr "%s: optie '-W %s' vereist een argument\n"
-#: io.c:280
+#: io.c:326
#, c-format
msgid "command line argument `%s' is a directory: skipped"
msgstr "opdrachtregelargument '%s' is een map -- overgeslagen"
-#: io.c:283 io.c:385
+#: io.c:329 io.c:438
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "kan bestand '%s' niet openen om te lezen (%s)"
-#: io.c:501
+#: io.c:568
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "sluiten van bestandsdescriptor %d ('%s') is mislukt (%s)"
-#: io.c:578
+#: io.c:645
msgid "redirection not allowed in sandbox mode"
msgstr "omleiding is niet toegestaan in sandbox-modus"
-#: io.c:612
+#: io.c:679
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "expressie in omleiding '%s' heeft alleen een getal als waarde"
-#: io.c:618
+#: io.c:685
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "expressie voor omleiding '%s' heeft een lege string als waarde"
-#: io.c:624
+#: io.c:690
#, 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:667
+#: io.c:733
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "onnodige mix van '>' en '>>' voor bestand '%.*s'"
-#: io.c:720
+#: io.c:786
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "kan pijp '%s' niet openen voor uitvoer (%s)"
-#: io.c:730
+#: io.c:796
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "kan pijp '%s' niet openen voor invoer (%s)"
-#: io.c:753
+#: io.c:819
#, 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:835
+#: io.c:900
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "kan niet omleiden van '%s' (%s)"
-#: io.c:838
+#: io.c:903
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "kan niet omleiden naar '%s' (%s)"
-#: io.c:889
+#: io.c:954
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:905
+#: io.c:970
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "sluiten van '%s' is mislukt (%s)"
-#: io.c:913
+#: io.c:978
msgid "too many pipes or input files open"
msgstr "te veel pijpen of invoerbestanden geopend"
-#: io.c:935
+#: io.c:1000
msgid "close: second argument must be `to' or `from'"
msgstr "close: tweede argument moet 'to' of 'from' zijn"
-#: io.c:952
+#: io.c:1017
#, 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:957
+#: io.c:1022
msgid "close of redirection that was never opened"
msgstr "sluiten van een nooit-geopende omleiding"
-#: io.c:1054
+#: io.c:1120
#, 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:1070
+#: io.c:1137
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "afsluitwaarde %d bij mislukte sluiting van pijp '%s' (%s)"
-#: io.c:1073
+#: io.c:1140
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "afsluitwaarde %d bij mislukte sluiting van bestand '%s' (%s)"
-#: io.c:1093
+#: io.c:1160
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "geen expliciete sluiting van socket '%s' aangegeven"
-#: io.c:1096
+#: io.c:1163
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "geen expliciete sluiting van co-proces '%s' aangegeven"
-#: io.c:1099
+#: io.c:1166
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "geen expliciete sluiting van pijp '%s' aangegeven"
-#: io.c:1102
+#: io.c:1169
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "geen expliciete sluiting van bestand '%s' aangegeven"
-#: io.c:1130 io.c:1185 main.c:793 main.c:830
+#: io.c:1197 io.c:1252 main.c:825 main.c:862
#, c-format
msgid "error writing standard output (%s)"
msgstr "fout tijdens schrijven van standaarduitvoer (%s)"
-#: io.c:1134 io.c:1190
+#: io.c:1201 io.c:1257
#, c-format
msgid "error writing standard error (%s)"
msgstr "fout tijdens schrijven van standaardfoutuitvoer (%s)"
-#: io.c:1142
+#: io.c:1209
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "leegmaken van pijp '%s' is mislukt (%s)"
-#: io.c:1145
+#: io.c:1212
#, 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:1148
+#: io.c:1215
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "leegmaken van bestand '%s' is mislukt (%s)"
-#: io.c:1263
+#: io.c:1329
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr "lokale poort %s is ongeldig in '/inet'"
-#: io.c:1280
+#: io.c:1347
#, c-format
msgid "remote host and port information (%s, %s) invalid"
msgstr "host- en poortinformatie (%s, %s) zijn ongeldig"
-#: io.c:1432
+#: io.c:1499
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr "geen (bekend) protocol aangegeven in speciale bestandsnaam '%s'"
-#: io.c:1446
+#: io.c:1513
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "speciale bestandsnaam '%s' is onvolledig"
-#: io.c:1463
+#: io.c:1530
msgid "must supply a remote hostname to `/inet'"
msgstr "'/inet' heeft een gindse hostnaam nodig"
-#: io.c:1481
+#: io.c:1548
msgid "must supply a remote port to `/inet'"
msgstr "'/inet' heeft een gindse poort nodig"
-#: io.c:1527
+#: io.c:1594
msgid "TCP/IP communications are not supported"
msgstr "TCP/IP-communicatie wordt niet ondersteund"
-#: io.c:1694
+#: io.c:1764
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "kan '%s' niet openen -- modus '%s'"
-#: io.c:1748
+#: io.c:1814
#, c-format
msgid "close of master pty failed (%s)"
msgstr "kan meester-pty van dochterproces niet sluiten (%s)"
-#: io.c:1750 io.c:1918 io.c:2075
+#: io.c:1816 io.c:1984 io.c:2145
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "kan standaarduitvoer van dochterproces niet sluiten (%s)"
-#: io.c:1753
+#: io.c:1819
#, 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:1755 io.c:1923
+#: io.c:1821 io.c:1989
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "kan standaardinvoer van dochterproces niet sluiten (%s)"
-#: io.c:1758
+#: io.c:1824
#, 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:1760 io.c:1781
+#: io.c:1826 io.c:1847
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "kan slaaf-pty niet sluiten (%s)"
-#: io.c:1859 io.c:1921 io.c:2053 io.c:2078
+#: io.c:1925 io.c:1987 io.c:2122 io.c:2148
#, 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:1866 io.c:1926
+#: io.c:1932 io.c:1992
#, 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:1886 io.c:2068
+#: io.c:1952 io.c:2138
msgid "restoring stdout in parent process failed\n"
msgstr "kan standaarduitvoer van ouderproces niet herstellen\n"
-#: io.c:1894
+#: io.c:1960
msgid "restoring stdin in parent process failed\n"
msgstr "kan standaardinvoer van ouderproces niet herstellen\n"
-#: io.c:1929 io.c:2080 io.c:2094
+#: io.c:1995 io.c:2150 io.c:2164
#, c-format
msgid "close of pipe failed (%s)"
msgstr "kan pijp niet sluiten (%s)"
-#: io.c:1974
+#: io.c:2040
msgid "`|&' not supported"
msgstr "'|&' wordt niet ondersteund"
-#: io.c:2040
+#: io.c:2107
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "kan pijp '%s' niet openen (%s)"
-#: io.c:2088
+#: io.c:2158
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "kan voor '%s' geen dochterproces starten (fork: %s)"
-#: io.c:2521
+#: io.c:2637
#, c-format
msgid "data file `%s' is empty"
msgstr "databestand '%s' is leeg"
-#: io.c:2562 io.c:2570
+#: io.c:2678 io.c:2686
msgid "could not allocate more input memory"
msgstr "kan geen extra invoergeheugen meer toewijzen"
-#: io.c:3128
+#: io.c:3236
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "een 'RS' van meerdere tekens is een gawk-uitbreiding"
-#: io.c:3233
+#: io.c:3326
msgid "IPv6 communication is not supported"
msgstr "IPv6-communicatie wordt niet ondersteund"
-#: main.c:364
+#: main.c:355
msgid "`-m[fr]' option irrelevant in gawk"
msgstr "optie '-m[fr]' is irrelevant in gawk"
-#: main.c:366
+#: main.c:357
msgid "-m option usage: `-m[fr] nnn'"
msgstr "gebruikswijze van optie -m: '-m[fr] nnn'"
-#: main.c:389
+#: main.c:386
msgid "empty argument to `-e/--source' ignored"
msgstr "argument van '-e/--source' is leeg; genegeerd"
-#: main.c:460
+#: main.c:472
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: optie '-W %s' is onbekend; genegeerd\n"
-#: main.c:513
+#: main.c:518
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: optie vereist een argument -- %c\n"
-#: main.c:534
+#: main.c:539
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr "omgevingsvariabele 'POSIXLY_CORRECT' is gezet: '--posix' ingeschakeld"
-#: main.c:540
+#: main.c:545
msgid "`--posix' overrides `--traditional'"
msgstr "'--posix' overstijgt '--traditional'"
-#: main.c:551
+#: main.c:556
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr "'--posix'/'--traditional' overstijgen '--non-decimal-data'"
-#: main.c:555
+#: main.c:560
#, 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:560
+#: main.c:565
msgid "`--posix' overrides `--binary'"
msgstr "'--posix' overstijgt '--binary'"
-#: main.c:611
+#: main.c:623
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "kan standaardinvoer niet in binaire modus zetten (%s)"
-#: main.c:614
+#: main.c:626
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "kan standaarduitvoer niet in binaire modus zetten (%s)"
-#: main.c:616
+#: main.c:628
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "kan standaardfoutuitvoer niet in binaire modus zetten (%s)"
-#: main.c:655
+#: main.c:679
msgid "no program text at all!"
msgstr "helemaal geen programmatekst!"
-#: main.c:733
+#: main.c:763
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr "Gebruik: %s [opties] -f programmabestand [--] bestand...\n"
-#: main.c:735
+#: main.c:765
#, 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:740
+#: main.c:770
msgid "POSIX options:\t\tGNU long options: (standard)\n"
msgstr "\tPOSIX-opties:\t\tEquivalente GNU-opties: (standaard)\n"
-#: main.c:741
+#: main.c:771
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f programmabestand\t--file=programmabestand\n"
-#: main.c:742
+#: main.c:772
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F veldscheidingsteken\t--field-separator=veldscheidingsteken\n"
-#: main.c:743
+#: main.c:773
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:744
+#: main.c:774
msgid "Short options:\t\tGNU long options: (extensions)\n"
msgstr "\tKorte opties:\t\tEquivalente GNU-opties: (uitbreidingen)\n"
-#: main.c:745
+#: main.c:775
msgid "\t-b\t\t\t--characters-as-bytes\n"
msgstr "\t-b\t\t\t--characters-as-bytes\n"
-#: main.c:746
+#: main.c:776
msgid "\t-c\t\t\t--traditional\n"
msgstr "\t-c\t\t\t--traditional\n"
-#: main.c:747
+#: main.c:777
msgid "\t-C\t\t\t--copyright\n"
msgstr "\t-C\t\t\t--copyright\n"
-#: main.c:748
+#: main.c:778
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
msgstr "\t-d[bestand]\t\t--dump-variables[=bestand]\n"
-#: main.c:749
+#: main.c:779
+#, fuzzy
+msgid "\t-D[file]\t\t--debug[=file]\n"
+msgstr "\t-p[bestand]\t\t--profile[=bestand]\n"
+
+#: main.c:780
msgid "\t-e 'program-text'\t--source='program-text'\n"
msgstr "\t-e 'programmatekst'\t--source='programmatekst'\n"
-#: main.c:750
+#: main.c:781
msgid "\t-E file\t\t\t--exec=file\n"
msgstr "\t-E bestand\t\t--exec=bestand\n"
-#: main.c:751
+#: main.c:782
msgid "\t-g\t\t\t--gen-pot\n"
msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:752
+#: main.c:783
msgid "\t-h\t\t\t--help\n"
msgstr "\t-h\t\t\t--help\n"
-#: main.c:753
+#: main.c:784
+msgid "\t-l library\t\t--load=library\n"
+msgstr ""
+
+#: main.c:785
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
msgstr "\t-L [fataal]\t\t--lint[=fataal]\n"
-#: main.c:754
+#: main.c:786
msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr "\t-n\t\t\t--non-decimal-data\n"
-#: main.c:755
+#: main.c:787
+#, fuzzy
+msgid "\t-M\t\t\t--bignum\n"
+msgstr "\t-g\t\t\t--gen-pot\n"
+
+#: main.c:788
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr "\t-N\t\t\t--use-lc-numeric\n"
-#: main.c:756
+#: main.c:789
+#, fuzzy
+msgid "\t-o[file]\t\t--pretty-print[=file]\n"
+msgstr "\t-p[bestand]\t\t--profile[=bestand]\n"
+
+#: main.c:790
msgid "\t-O\t\t\t--optimize\n"
msgstr "\t-O\t\t\t--optimize\n"
-#: main.c:757
+#: main.c:791
msgid "\t-p[file]\t\t--profile[=file]\n"
msgstr "\t-p[bestand]\t\t--profile[=bestand]\n"
-#: main.c:758
+#: main.c:792
msgid "\t-P\t\t\t--posix\n"
msgstr "\t-P\t\t\t--posix\n"
-#: main.c:759
+#: main.c:793
msgid "\t-r\t\t\t--re-interval\n"
msgstr "\t-r\t\t\t--re-interval\n"
-#: main.c:761
-msgid "\t-R file\t\t\t--command=file\n"
-msgstr "\t-R bestand\t\t\t--command=bestand\n"
-
-#: main.c:762
+#: main.c:794
msgid "\t-S\t\t\t--sandbox\n"
msgstr "\t-S\t\t\t--sandbox\n"
-#: main.c:763
+#: main.c:795
msgid "\t-t\t\t\t--lint-old\n"
msgstr "\t-t\t\t\t--lint-old\n"
-#: main.c:764
+#: main.c:796
msgid "\t-V\t\t\t--version\n"
msgstr "\t-V\t\t\t--version\n"
-#: main.c:766
+#: main.c:798
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t\t--nostalgia\n"
-#: main.c:769
+#: main.c:801
msgid "\t-Y\t\t--parsedebug\n"
msgstr "\t-Y\t\t\t--parsedebug\n"
@@ -1814,7 +1729,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:778
+#: main.c:810
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -1827,7 +1742,7 @@ msgstr ""
"Meld fouten in de vertaling aan <vertaling@vrijschrift.org>.\n"
"\n"
-#: main.c:782
+#: main.c:814
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -1837,7 +1752,7 @@ msgstr ""
"Standaard leest het van standaardinvoer en schrijft naar standaarduitvoer.\n"
"\n"
-#: main.c:786
+#: main.c:818
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -1847,7 +1762,7 @@ msgstr ""
"\tgawk '{ som += $1 }; END { print som }' bestand\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:806
+#: main.c:838
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1865,7 +1780,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:814
+#: main.c:846
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"
@@ -1879,7 +1794,7 @@ msgstr ""
"Zie de GNU General Public License voor meer details.\n"
"\n"
-#: main.c:820
+#: main.c:852
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"
@@ -1888,16 +1803,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:855
+#: main.c:887
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft maakt van FS geen tab in POSIX-awk"
-#: main.c:1089
+#: main.c:1133
#, c-format
msgid "unknown value for field spec: %d\n"
msgstr "onbekende waarde voor veldspecificatie: %d\n"
-#: main.c:1170
+#: main.c:1214
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
@@ -1906,84 +1821,79 @@ msgstr ""
"%s: argument '%s' van '-v' is niet van de vorm 'var=waarde'\n"
"\n"
-#: main.c:1196
+#: main.c:1240
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "'%s' is geen geldige variabelenaam"
-#: main.c:1199
+#: main.c:1243
#, 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:1203
+#: main.c:1247
#, c-format
msgid "cannot use gawk builtin `%s' as variable name"
msgstr "kan in gawk ingebouwde '%s' niet als variabelenaam gebruiken"
-#: main.c:1208
+#: main.c:1252
#, c-format
msgid "cannot use function `%s' as variable name"
msgstr "kan functie '%s' niet als variabelenaam gebruiken"
-#: main.c:1261
+#: main.c:1305
msgid "floating point exception"
msgstr "drijvendekomma-berekeningsfout"
-#: main.c:1268
+#: main.c:1312
msgid "fatal error: internal error"
msgstr "fatale fout: **interne fout**"
-#: main.c:1283
+#: main.c:1327
msgid "fatal error: internal error: segfault"
msgstr "fatale fout: **interne fout**: segmentatiefout"
-#: main.c:1295
+#: main.c:1339
msgid "fatal error: internal error: stack overflow"
msgstr "fatale fout: **interne fout**: stack is vol"
-#: main.c:1345
+#: main.c:1393
#, c-format
msgid "no pre-opened fd %d"
msgstr "geen reeds-geopende bestandsdescriptor %d"
-#: main.c:1352
+#: main.c:1400
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "kan /dev/null niet openen voor bestandsdescriptor %d"
-#: main.c:1375 main.c:1384
-#, c-format
-msgid "could not find groups: %s"
-msgstr "kan groepen niet vinden: %s"
-
-#: msg.c:63
+#: msg.c:61
#, c-format
msgid "cmd. line:"
msgstr "commandoregel:"
-#: msg.c:107
+#: msg.c:121
msgid "error: "
msgstr "fout: "
-#: node.c:406
+#: node.c:436
msgid "backslash at end of string"
msgstr "backslash aan het einde van de string"
-#: node.c:517
+#: node.c:520
#, c-format
msgid "old awk does not support the `\\%c' escape sequence"
msgstr "oude 'awk' kent de stuurcodereeks '\\%c' niet"
-#: node.c:568
+#: node.c:571
msgid "POSIX does not allow `\\x' escapes"
msgstr "POSIX staat stuurcode '\\x' niet toe"
-#: node.c:574
+#: node.c:577
msgid "no hex digits in `\\x' escape sequence"
msgstr "geen hex cijfers in stuurcodereeks '\\x'"
-#: node.c:596
+#: node.c:599
#, c-format
msgid ""
"hex escape \\x%.*s of %d characters probably not interpreted the way you "
@@ -1992,12 +1902,12 @@ msgstr ""
"hexadecimale stuurcode \\x%.*s van %d tekens wordt waarschijnlijk niet "
"afgehandeld zoals u verwacht"
-#: node.c:611
+#: node.c:614
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr "stuurcodereeks '\\%c' behandeld als normale '%c'"
-#: node.c:750
+#: node.c:759
msgid ""
"Invalid multibyte data detected. There may be a mismatch between your data "
"and your locale."
@@ -2017,16 +1927,16 @@ msgstr ""
msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
msgstr "%s %s '%s': kan 'close-on-exec' niet activeren: (fcntl F_SETFD: %s)"
-#: profile.c:83
+#: profile.c:69
#, c-format
msgid "could not open `%s' for writing: %s"
msgstr "kan '%s' niet openen om te schrijven: %s"
-#: profile.c:85
+#: profile.c:71
msgid "sending profile to standard error"
msgstr "profiel gaat naar standaardfoutuitvoer"
-#: profile.c:203
+#: profile.c:187
#, c-format
msgid ""
"\t# %s block(s)\n"
@@ -2035,7 +1945,7 @@ msgstr ""
"\t# %s-blok(ken)\n"
"\n"
-#: profile.c:208
+#: profile.c:192
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -2044,17 +1954,22 @@ msgstr ""
"\t# Regel(s)\n"
"\n"
-#: profile.c:279
+#: profile.c:266
#, c-format
msgid "internal error: %s with null vname"
msgstr "**interne fout**: %s heeft een lege 'vname'"
-#: profile.c:952
+#: profile.c:528
+#, fuzzy
+msgid "internal error: builtin with null fname"
+msgstr "**interne fout**: %s heeft een lege 'vname'"
+
+#: profile.c:943
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# gawk-profiel, gemaakt op %s\n"
-#: profile.c:1331
+#: profile.c:1328
#, c-format
msgid ""
"\n"
@@ -2063,96 +1978,171 @@ msgstr ""
"\n"
"\t# Functies, alfabetisch geordend\n"
-#: profile.c:1370
+#: profile.c:1366
#, c-format
msgid "redir2str: unknown redirection type %d"
msgstr "redir2str(): onbekend omleidingstype %d"
-#: re.c:572
-#, fuzzy, c-format
+#: re.c:571
+#, c-format
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"
-#: re.c:599
+#: re.c:598
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
msgstr ""
"component '%.*s' van reguliere expressie moet vermoedelijk '[%.*s]' zijn"
-#: regcomp.c:132
+#: regcomp.c:131
msgid "Success"
msgstr "Gelukt"
-#: regcomp.c:135
+#: regcomp.c:134
msgid "No match"
msgstr "Geen overeenkomsten"
-#: regcomp.c:138
+#: regcomp.c:137
msgid "Invalid regular expression"
msgstr "Ongeldige reguliere expressie"
-#: regcomp.c:141
+#: regcomp.c:140
msgid "Invalid collation character"
msgstr "Ongeldig samengesteld teken"
-#: regcomp.c:144
+#: regcomp.c:143
msgid "Invalid character class name"
msgstr "Ongeldige tekenklassenaam"
-#: regcomp.c:147
+#: regcomp.c:146
msgid "Trailing backslash"
msgstr "Backslash aan het eind"
-#: regcomp.c:150
+#: regcomp.c:149
msgid "Invalid back reference"
msgstr "Ongeldige terugverwijzing"
-#: regcomp.c:153
+#: regcomp.c:152
msgid "Unmatched [ or [^"
msgstr "Ongepaarde [ of [^"
-#: regcomp.c:156
+#: regcomp.c:155
msgid "Unmatched ( or \\("
msgstr "Ongepaarde ( of \\("
-#: regcomp.c:159
+#: regcomp.c:158
msgid "Unmatched \\{"
msgstr "Ongepaarde \\{"
-#: regcomp.c:162
+#: regcomp.c:161
msgid "Invalid content of \\{\\}"
msgstr "Ongeldige inhoud van \\{\\}"
-#: regcomp.c:165
+#: regcomp.c:164
msgid "Invalid range end"
msgstr "Ongeldig bereikeinde"
-#: regcomp.c:168
+#: regcomp.c:167
msgid "Memory exhausted"
msgstr "Onvoldoende geheugen beschikbaar"
-#: regcomp.c:171
+#: regcomp.c:170
msgid "Invalid preceding regular expression"
msgstr "Ongeldige voorafgaande reguliere expressie"
-#: regcomp.c:174
+#: regcomp.c:173
msgid "Premature end of regular expression"
msgstr "Voortijdig einde van reguliere expressie"
-#: regcomp.c:177
+#: regcomp.c:176
msgid "Regular expression too big"
msgstr "Reguliere expressie is te groot"
-#: regcomp.c:180
+#: regcomp.c:179
msgid "Unmatched ) or \\)"
msgstr "Ongepaarde ) of \\)"
-#: regcomp.c:701
+#: regcomp.c:700
msgid "No previous regular expression"
msgstr "Geen eerdere reguliere expressie"
+#~ 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\"]'"
+
+#~ msgid "subscript of array `%s' is null string"
+#~ msgstr "index van array '%s' is lege string"
+
+#~ msgid "%s: empty (null)\n"
+#~ msgstr "%s: leeg (nil)\n"
+
+#~ msgid "%s: empty (zero)\n"
+#~ msgstr "%s: leeg (nul)\n"
+
+#~ msgid "%s: table_size = %d, array_size = %d\n"
+#~ msgstr "%s: tabelgrootte = %d, arraygrootte = %d\n"
+
+#~ msgid "%s: is parameter\n"
+#~ msgstr "%s: is een parameter\n"
+
+#~ msgid "%s: array_ref to %s\n"
+#~ msgstr "%s: array-verwijzing naar %s\n"
+
+#~ msgid "use of non-array as array"
+#~ msgstr "non-array wordt gebruikt als array"
+
+#~ msgid "can't use function name `%s' as variable or array"
+#~ msgstr "kan functienaam '%s' niet als variabele of array gebruiken"
+
+#~ msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context"
+#~ msgstr "array '%s[\"%.*s\"]' wordt gebruikt in een scalaire context"
+
+#~ msgid "assignment used in conditional context"
+#~ msgstr "toewijzing wordt gebruikt in een conditionele context"
+
+#~ msgid "statement has no effect"
+#~ msgstr "opdracht heeft geen effect"
+
+#~ msgid ""
+#~ "for loop: array `%s' changed size from %ld to %ld during loop execution"
+#~ msgstr ""
+#~ "for: array '%s' veranderde van grootte %ld naar %ld tijdens uitvoer van "
+#~ "de lus"
+
+#~ msgid "function called indirectly through `%s' does not exist"
+#~ msgstr "indirect (via '%s') aangeroepen functie bestaat niet"
+
+#~ 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 "error reading input file `%s': %s"
+#~ msgstr "fout tijdens lezen van invoerbestand '%s': %s"
+
+#~ msgid "`nextfile' cannot be called from a `%s' rule"
+#~ msgstr "'nextfile' kan niet aangeroepen worden in een '%s'-regel"
+
+#~ msgid "`exit' cannot be called in the current context"
+#~ msgstr "'exit' kan niet aangeroepen worden in de huidige context"
+
+#~ msgid "`next' cannot be called from a `%s' rule"
+#~ msgstr "'next' kan niet aangeroepen worden in een '%s'-regel"
+
+#~ msgid "Sorry, don't know how to interpret `%s'"
+#~ msgstr "Kan '%s' niet interpreteren"
+
+#~ msgid "\t-R file\t\t\t--command=file\n"
+#~ msgstr "\t-R bestand\t\t\t--command=bestand\n"
+
+#~ msgid "could not find groups: %s"
+#~ msgstr "kan groepen niet vinden: %s"
+
#~ msgid "assignment is not allowed to result of builtin function"
#~ msgstr ""
#~ "toewijzing aan het resultaat van een ingebouwde functie is niet toegestaan"
diff --git a/po/pl.gmo b/po/pl.gmo
index f0b2f7c1..d7272593 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 68aedb4f..edd132ae 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,16 +1,16 @@
# Polish translations for GNU AWK package.
-# Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
# This file is distributed under the same license as the gawk package.
#
-# Wojciech Polak <polak@gnu.org>, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011.
+# Wojciech Polak <polak@gnu.org>, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012.
# additional help by Sergey Poznyakoff <gray@gnu.org>, 2003.
#
msgid ""
msgstr ""
-"Project-Id-Version: gawk 3.1.81\n"
+"Project-Id-Version: gawk 4.0.0h\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2011-11-14 21:46+0200\n"
-"PO-Revision-Date: 2011-05-14 11:41-0400\n"
+"POT-Creation-Date: 2012-04-27 10:06+0300\n"
+"PO-Revision-Date: 2012-02-04 19:17+0100\n"
"Last-Translator: Wojciech Polak <polak@gnu.org>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
"Language: pl\n"
@@ -20,515 +20,471 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
-#: array.c:140
+#: array.c:266
#, c-format
msgid "from %s"
msgstr "od %s"
-#: array.c:248
+#: array.c:366
msgid "attempt to use a scalar value as array"
msgstr "pr籀ba u髒ycia wartoci skalarnej jako tablicy"
-#: array.c:251
-#, c-format
-msgid "attempt to use function `%s' as an array"
-msgstr "pr籀ba u髒ycia funkcji `%s' jako tablicy"
-
-#: array.c:254
+#: array.c:368
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
msgstr "pr籀ba u髒ycia parametru `%s' skalaru jako tablicy"
-#: array.c:257
+#: array.c:371
#, c-format
msgid "attempt to use scalar `%s' as an array"
msgstr "pr籀ba u髒ycia skalaru `%s' jako tablicy"
-#: array.c:302 array.c:707 builtin.c:84 builtin.c:1384 builtin.c:1426
-#: builtin.c:1439 builtin.c:1858 builtin.c:1870 eval.c:1135 eval.c:1139
-#: eval.c:1495 eval.c:1812
+#: array.c:418 array.c:584 builtin.c:85 builtin.c:1560 builtin.c:1602
+#: builtin.c:1615 builtin.c:2041 builtin.c:2053 eval.c:1109 eval.c:1113
+#: eval.c:1508
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "pr籀ba u髒ycia tablicy `%s' w kontekcie skalaru"
-#: array.c:513
-#, c-format
-msgid "reference to uninitialized element `%s[\"%.*s\"]'"
-msgstr "odwoanie do niezainicjowanego elementu `%s[\"%.*s\"]'"
-
-#: array.c:519
-#, c-format
-msgid "subscript of array `%s' is null string"
-msgstr "indeks tablicy `%s' jest zerowym acuchem"
-
-#: array.c:723
+#: array.c:591
#, c-format
msgid "delete: index `%s' not in array `%s'"
msgstr "delete: indeks `%s' nie jest w tablicy `%s'"
-#: array.c:734 eval.c:1865
+#: array.c:605
#, c-format
msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
msgstr "pr籀ba u髒ycia skalaru `%s[\"%.*s\"]' jako tablicy"
-#: array.c:910
-#, c-format
-msgid "%s: empty (null)\n"
-msgstr "%s: pusty (null)\n"
-
-#: array.c:915
-#, c-format
-msgid "%s: empty (zero)\n"
-msgstr "%s: pusty (zero)\n"
-
-#: array.c:919
-#, c-format
-msgid "%s: table_size = %d, array_size = %d\n"
-msgstr "%s: table_size = %d, array_size = %d\n"
-
-#: array.c:954
-#, c-format
-msgid "%s: is parameter\n"
-msgstr "%s: jest parametrem\n"
-
-#: array.c:958
-#, c-format
-msgid "%s: array_ref to %s\n"
-msgstr "%s: array_ref do %s\n"
-
-#: array.c:963
-msgid "adump: argument not an array"
+#: array.c:784
+#, fuzzy
+msgid "adump: first argument not an array"
msgstr "adump: argument nie jest tablic"
-#: array.c:1086
+#: array.c:823
msgid "asort: second argument not an array"
msgstr "asort: drugi argument nie jest tablic"
-#: array.c:1087
+#: array.c:824
msgid "asorti: second argument not an array"
msgstr "asorti: drugi argument nie jest tablic"
-#: array.c:1094
+#: array.c:831
msgid "asort: first argument not an array"
msgstr "asort: pierwszy argument nie jest tablic"
-#: array.c:1095
+#: array.c:832
msgid "asorti: first argument not an array"
msgstr "asorti: pierwszy argument nie jest tablic"
-#: array.c:1102
+#: array.c:839
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr ""
"asort: nie mo髒na u髒y podtablicy pierwszego argumentu dla drugiego argumentu"
-#: array.c:1103
+#: array.c:840
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr ""
"asorti: nie mo髒na u髒y podtablicy pierwszego argumentu dla drugiego argumentu"
-#: array.c:1108
+#: array.c:845
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr ""
"asort: nie mo髒na u髒y podtablicy drugiego argumentu dla pierwszego argumentu"
-#: array.c:1109
+#: array.c:846
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:1659
+#: array.c:1314
#, c-format
msgid "`%s' is invalid as a function name"
msgstr "nieprawidowa nazwa funkcji `%s'"
-#: array.c:1663
+#: array.c:1318
#, c-format
msgid "sort comparison function `%s' is not defined"
msgstr "funkcja por籀wnujca w sortowaniu `%s' nie zostaa zdefiniowna"
-#: awkgram.y:249
+#: awkgram.y:223
#, c-format
msgid "%s blocks must have an action part"
msgstr "%s blok籀w musi posiada cz dotyczc akcji"
-#: awkgram.y:252
+#: awkgram.y:226
msgid "each rule must have a pattern or an action part"
msgstr "ka髒da regua musi posiada wzorzec lub cz dotyczc akcji"
-#: awkgram.y:323 awkgram.y:334
+#: awkgram.y:295 awkgram.y:306
msgid "old awk does not support multiple `BEGIN' or `END' rules"
msgstr "stary awk nie wspiera wielokrotnych regu `BEGIN' lub `END'"
-#: awkgram.y:371
+#: awkgram.y:343
#, c-format
msgid "`%s' is a built-in function, it cannot be redefined"
msgstr ""
"`%s' jest funkcj wbudowan, wic nie mo髒e zosta ponownie zdefiniowana"
-#: awkgram.y:432
+#: awkgram.y:389
msgid "regexp constant `//' looks like a C++ comment, but is not"
msgstr ""
"stae wyra髒enie regularne `//' wyglda jak komentarz C++, ale nim nie jest"
-#: awkgram.y:436
+#: awkgram.y:393
#, c-format
msgid "regexp constant `/%s/' looks like a C comment, but is not"
msgstr ""
"stae wyra髒enie regularne `/%s/' wyglda jak komentarz C, ale nim nie jest"
-#: awkgram.y:528
+#: awkgram.y:485
#, c-format
msgid "duplicate case values in switch body: %s"
msgstr "powielone wartoci case w ciele switch: %s"
-#: awkgram.y:549
+#: awkgram.y:506
msgid "duplicate `default' detected in switch body"
msgstr "wykryto powielony `default' w ciele switch"
-#: awkgram.y:809
+#: awkgram.y:766
msgid "`break' is not allowed outside a loop or switch"
msgstr "instrukcja `break' poza ptl lub switch'em jest niedozwolona"
-#: awkgram.y:818
+#: awkgram.y:775
msgid "`continue' is not allowed outside a loop"
msgstr "instrukcja `continue' poza ptl jest niedozwolona"
-#: awkgram.y:828
+#: awkgram.y:785
#, c-format
msgid "`next' used in %s action"
msgstr "`next' u髒yty w akcji %s"
-#: awkgram.y:836
+#: awkgram.y:793
msgid "`nextfile' is a gawk extension"
msgstr "`nextfile' jest rozszerzeniem gawk"
-#: awkgram.y:841
+#: awkgram.y:798
#, c-format
msgid "`nextfile' used in %s action"
msgstr "`nextfile' u髒yty w akcji %s"
-#: awkgram.y:865
+#: awkgram.y:822
msgid "`return' used outside function context"
msgstr "`return' u髒yty poza kontekstem funkcji"
-#: awkgram.y:925
+#: awkgram.y:896
msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
msgstr ""
"zwyky `print' w reguach BEGIN lub END powinien prawdopodobnie by jako "
"`print \"\"'"
-#: awkgram.y:995 awkgram.y:999 awkgram.y:1023
+#: awkgram.y:966 awkgram.y:970 awkgram.y:994
msgid "`delete array' is a gawk extension"
msgstr "`delete tablica' jest rozszerzeniem gawk"
-#: awkgram.y:1019
+#: awkgram.y:990
msgid "`delete(array)' is a non-portable tawk extension"
msgstr "`delete(tablica)' jest nieprzenonym rozszerzeniem tawk"
-#: awkgram.y:1135
+#: awkgram.y:1108
msgid "multistage two-way pipelines don't work"
msgstr "wieloetapowe dwukierunkowe linie potokowe nie dziaaj"
-#: awkgram.y:1238
+#: awkgram.y:1211
msgid "regular expression on right of assignment"
msgstr "wyra髒anie regularne po prawej stronie przypisania"
-#: awkgram.y:1249
+#: awkgram.y:1222
msgid "regular expression on left of `~' or `!~' operator"
msgstr "wyra髒enie regularne po lewej stronie operatora `~' lub `!~'"
-#: awkgram.y:1265 awkgram.y:1419
+#: awkgram.y:1238 awkgram.y:1389
msgid "old awk does not support the keyword `in' except after `for'"
msgstr ""
"stary awk nie wspiera sowa kluczowego `in', z wyjtkiem po sowie `for'"
-#: awkgram.y:1275
+#: awkgram.y:1248
msgid "regular expression on right of comparison"
msgstr "wyra髒enie regularne po prawej stronie por籀wnania"
-#: awkgram.y:1394
+#: awkgram.y:1364
#, c-format
msgid "`getline var' invalid inside `%s' rule"
msgstr "nieprawidowy `getline var' wewntrz reguy `%s'"
-#: awkgram.y:1397 eval.c:2504
+#: awkgram.y:1367
#, c-format
msgid "`getline' invalid inside `%s' rule"
msgstr "nieprawidowy `getline' wewntrz reguy `%s'"
-#: awkgram.y:1402
+#: awkgram.y:1372
msgid "non-redirected `getline' undefined inside END action"
msgstr ""
"komenda `getline' bez przekierowania nie jest zdefiniowana wewntrz akcji END"
-#: awkgram.y:1421
+#: awkgram.y:1391
msgid "old awk does not support multidimensional arrays"
msgstr "stary awk nie wspiera wielowymiarowych tablic"
-#: awkgram.y:1517
+#: awkgram.y:1488
msgid "call of `length' without parentheses is not portable"
msgstr "wywoanie `length' bez nawias籀w jest nieprzenone"
-#: awkgram.y:1580
+#: awkgram.y:1554
msgid "indirect function calls are a gawk extension"
msgstr "porednie wywoania funkcji s rozszerzeniem gawk"
-#: awkgram.y:1593
+#: awkgram.y:1567
#, c-format
msgid "can not use special variable `%s' for indirect function call"
msgstr ""
"nie mo髒na u髒y specjalnej zmiennej `%s' do poredniego wywoania funkcji"
-#: awkgram.y:1671
+#: awkgram.y:1645
msgid "invalid subscript expression"
msgstr "nieprawidowe wyra髒enie indeksowe"
-#: awkgram.y:1711
-msgid "use of non-array as array"
-msgstr "u髒ycie nie-tablicy jako tablicy"
-
-#: awkgram.y:1975 awkgram.y:1995 msg.c:98
+#: awkgram.y:1966 awkgram.y:1986 msg.c:112
msgid "warning: "
msgstr "ostrze髒enie: "
-#: awkgram.y:1993 msg.c:130
+#: awkgram.y:1984 msg.c:144
msgid "fatal: "
msgstr "fatalny bd: "
-#: awkgram.y:2043
+#: awkgram.y:2034
msgid "unexpected newline or end of string"
msgstr "niespodziewany znak nowego wiersza lub koca acucha"
-#: awkgram.y:2300 awkgram.y:2358 awkgram.y:2542
+#: awkgram.y:2299 awkgram.y:2357 awkgram.y:2545
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "nie mo髒na otworzy pliku 驕r籀dowego `%s' do czytania (%s)"
-#: awkgram.y:2301 awkgram.y:2359 builtin.c:122
+#: awkgram.y:2300 awkgram.y:2358 builtin.c:124
msgid "reason unknown"
msgstr "nieznany pow籀d"
-#: awkgram.y:2317
+#: awkgram.y:2316
#, c-format
msgid "already included source file `%s'"
msgstr "plik 驕r籀dowy `%s' jest ju髒 zaczony"
-#: awkgram.y:2343
+#: awkgram.y:2342
msgid "@include is a gawk extension"
msgstr "@include jest rozszerzeniem gawk"
-#: awkgram.y:2349
+#: awkgram.y:2348
msgid "empty filename after @include"
msgstr "pusta nazwa pliku po @include"
-#: awkgram.y:2494
+#: awkgram.y:2497
msgid "empty program text on command line"
msgstr "pusty tekst programu w linii polece"
-#: awkgram.y:2609
+#: awkgram.y:2612
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "nie mo髒na otworzy pliku 驕r籀dowego `%s' (%s)"
-#: awkgram.y:2620
+#: awkgram.y:2623
#, c-format
msgid "source file `%s' is empty"
msgstr "plik 驕r籀dowy `%s' jest pusty"
-#: awkgram.y:2805
+#: awkgram.y:2800
msgid "source file does not end in newline"
msgstr "plik 驕r籀dowy nie posiada na kocu znaku nowego wiersza"
-#: awkgram.y:2882
+#: awkgram.y:2905
msgid "unterminated regexp ends with `\\' at end of file"
msgstr ""
"niezakoczone prawidowo wyra髒enie regularne koczy si znakiem `\\' na "
"kocu pliku"
-#: awkgram.y:2906
+#: awkgram.y:2929
#, c-format
msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
"%s: %d: modyfikator wyra髒enia regularnego `/.../%c' tawk nie dziaa w gawk"
-#: awkgram.y:2910
+#: awkgram.y:2933
#, c-format
msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr "modyfikator wyra髒enia regularnego `/.../%c' tawk nie dziaa w gawk"
-#: awkgram.y:2917
+#: awkgram.y:2940
msgid "unterminated regexp"
msgstr "niezakoczone wyra髒enie regularne"
-#: awkgram.y:2921
+#: awkgram.y:2944
msgid "unterminated regexp at end of file"
msgstr "niezakoczone wyra髒enie regularne na kocu pliku"
-#: awkgram.y:2980
+#: awkgram.y:3003
msgid "use of `\\ #...' line continuation is not portable"
msgstr "u髒ycie `\\ #...' kontynuacji linii nie jest przenone"
-#: awkgram.y:2996
+#: awkgram.y:3019
msgid "backslash not last character on line"
msgstr "backslash nie jest ostatnim znakiem w wierszu"
-#: awkgram.y:3057
+#: awkgram.y:3080
msgid "POSIX does not allow operator `**='"
msgstr "POSIX nie zezwala na operator `**='"
-#: awkgram.y:3059
+#: awkgram.y:3082
msgid "old awk does not support operator `**='"
msgstr "stary awk nie wspiera operatora `**='"
-#: awkgram.y:3068
+#: awkgram.y:3091
msgid "POSIX does not allow operator `**'"
msgstr "POSIX nie zezwala na operator `**'"
-#: awkgram.y:3070
+#: awkgram.y:3093
msgid "old awk does not support operator `**'"
msgstr "stary awk nie wspiera operatora `**'"
-#: awkgram.y:3105
+#: awkgram.y:3128
msgid "operator `^=' is not supported in old awk"
msgstr "operator `^=' nie jest wspierany w starym awk"
-#: awkgram.y:3113
+#: awkgram.y:3136
msgid "operator `^' is not supported in old awk"
msgstr "operator `^' nie jest wspierany w starym awk"
-#: awkgram.y:3206 awkgram.y:3222
+#: awkgram.y:3229 awkgram.y:3245
msgid "unterminated string"
msgstr "niezakoczony acuch"
-#: awkgram.y:3418
+#: awkgram.y:3466
#, c-format
msgid "invalid char '%c' in expression"
msgstr "nieprawidowy znak '%c' w wyra髒eniu"
-#: awkgram.y:3465
+#: awkgram.y:3513
#, c-format
msgid "`%s' is a gawk extension"
msgstr "`%s' jest rozszerzeniem gawk"
-#: awkgram.y:3470
+#: awkgram.y:3518
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr "`%s' jest rozszerzeniem Bell Labs"
-#: awkgram.y:3475
+#: awkgram.y:3523
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX nie zezwala na `%s'"
-#: awkgram.y:3483
+#: awkgram.y:3531
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "`%s' nie jest wspierany w starym awk"
-#: awkgram.y:3550
+#: awkgram.y:3598
msgid "`goto' considered harmful!\n"
msgstr "`goto' uwa髒ane za szkodliwe!\n"
-#: awkgram.y:3601
+#: awkgram.y:3632
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d jest nieprawidowe jako liczba argument籀w dla %s"
-#: awkgram.y:3636
+#: awkgram.y:3667
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr ""
"%s: litera acuchowy jako ostatni argument podstawienia nie ma 髒adnego "
"efektu"
-#: awkgram.y:3641
+#: awkgram.y:3672
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "%s trzeci parametr nie jest zmiennym obiektem"
-#: awkgram.y:3714 awkgram.y:3717
+#: awkgram.y:3751 awkgram.y:3754
msgid "match: third argument is a gawk extension"
msgstr "match: trzeci argument jest rozszerzeniem gawk"
-#: awkgram.y:3771 awkgram.y:3774
+#: awkgram.y:3808 awkgram.y:3811
msgid "close: second argument is a gawk extension"
msgstr "close: drugi argument jest rozszerzeniem gawk"
-#: awkgram.y:3786
+#: awkgram.y:3823
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr "nieprawidowe u髒ycie dcgettext(_\"...\"): usu znak podkrelenia"
-#: awkgram.y:3801
+#: awkgram.y:3838
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr "nieprawidowe u髒ycie dcngettext(_\"...\"): usu znak podkrelenia"
-#: awkgram.y:3893
-#, c-format
-msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
-msgstr "funkcja `%s': parametr #%d, `%s', powiela parametr #%d"
-
-#: awkgram.y:3935
+#: awkgram.y:3904
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "funkcja `%s': parametr `%s' zasania globaln zmienn"
-#: awkgram.y:4093
+#: awkgram.y:3961
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "nie mo髒na otworzy `%s' do zapisu (%s)"
-#: awkgram.y:4094
-#, fuzzy
+#: awkgram.y:3962
msgid "sending variable list to standard error"
-msgstr "wysyanie profilu na standardowe wyjcie diagnostyczne"
+msgstr "wysyanie listy zmiennych na standardowe wyjcie diagnostyczne"
-#: awkgram.y:4100
+#: awkgram.y:3970
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: zamknicie nie powiodo si (%s)"
-#: awkgram.y:4152
+#: awkgram.y:3995
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() wywoana podw籀jnie!"
-#: awkgram.y:4158
+#: awkgram.y:4003
msgid "there were shadowed variables."
msgstr "wystpiy przykryte zmienne."
-#: awkgram.y:4188
+#: awkgram.y:4074
+#, c-format
+msgid "function name `%s' previously defined"
+msgstr "nazwa funkcji `%s' zostaa zdefiniowana poprzednio"
+
+#: awkgram.y:4120
#, 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:4192
+#: awkgram.y:4123
#, 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:4208
+#: awkgram.y:4131
#, c-format
-msgid "function name `%s' previously defined"
-msgstr "nazwa funkcji `%s' zostaa zdefiniowana poprzednio"
+msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
+msgstr "funkcja `%s': parametr #%d, `%s', powiela parametr #%d"
-#: awkgram.y:4376 awkgram.y:4382
+#: awkgram.y:4210 awkgram.y:4216
#, c-format
msgid "function `%s' called but never defined"
msgstr "funkcja `%s' zostaa wywoana, ale nigdy nie zostaa zdefiniowana"
-#: awkgram.y:4385
+#: awkgram.y:4219
#, c-format
msgid "function `%s' defined but never called directly"
msgstr ""
"funkcja `%s' zostaa zdefiniowana, ale nigdy nie zostaa wywoana "
"bezporednio"
-#: awkgram.y:4417
+#: awkgram.y:4251
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr "stae wyra髒enie regularne dla parametru #%d daje warto logiczn"
-#: awkgram.y:4526
+#: awkgram.y:4297
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -538,233 +494,233 @@ msgstr ""
"`(',\n"
"lub u髒yta jako zmienna lub jako tablica"
-#: awkgram.y:4773 eval.c:2056
+#: awkgram.y:4505
msgid "division by zero attempted"
msgstr "pr籀ba dzielenia przez zero"
-#: awkgram.y:4782 eval.c:2072
+#: awkgram.y:4514
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "pr籀ba dzielenia przez zero w `%%'"
-#: builtin.c:120
+#: builtin.c:122
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s do \"%s\" nie powi籀d si (%s)"
-#: builtin.c:121
+#: builtin.c:123
msgid "standard output"
msgstr "standardowe wyjcie"
-#: builtin.c:135
+#: builtin.c:137
msgid "exp: received non-numeric argument"
msgstr "exp: otrzymano argument nie bdcy liczb"
-#: builtin.c:141
+#: builtin.c:143
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: argument %g jest poza zasigiem"
-#: builtin.c:200
+#: builtin.c:202
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: nie mo髒na opr籀髒ni: potok `%s' otwarty do czytania, a nie do zapisu"
-#: builtin.c:203
+#: builtin.c:205
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: nie mo髒na opr籀髒ni: plik `%s' otwarty do czytania, a nie do zapisu"
-#: builtin.c:215
+#: builtin.c:217
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr "fflush: `%s' nie jest ani otwartym plikiem, ani potokiem, ani procesem"
-#: builtin.c:333
+#: builtin.c:335
msgid "index: received non-string first argument"
msgstr "index: otrzymano pierwszy argument, kt籀ry nie jest acuchem"
-#: builtin.c:335
+#: builtin.c:337
msgid "index: received non-string second argument"
msgstr "index: otrzymano drugi argument, kt籀ry nie jest acuchem"
-#: builtin.c:457
+#: builtin.c:461
msgid "int: received non-numeric argument"
msgstr "int: otrzymano argument, kt籀ry nie jest liczb"
-#: builtin.c:493
+#: builtin.c:497
msgid "length: received array argument"
msgstr "length: otrzymano argument, kt籀ry jest tablic"
-#: builtin.c:496
+#: builtin.c:500
msgid "`length(array)' is a gawk extension"
msgstr "`length(tablica)' jest rozszerzeniem gawk"
-#: builtin.c:504
+#: builtin.c:508
msgid "length: received non-string argument"
msgstr "length: otrzymano argument, kt籀ry nie jest acuchem"
-#: builtin.c:535
+#: builtin.c:539
msgid "log: received non-numeric argument"
msgstr "log: otrzymano argument, kt籀ry nie jest liczb"
-#: builtin.c:538
+#: builtin.c:542
#, c-format
msgid "log: received negative argument %g"
msgstr "log: otrzymano ujemny argument %g"
-#: builtin.c:694 builtin.c:699
+#: builtin.c:740 builtin.c:745
msgid "fatal: must use `count$' on all formats or none"
msgstr "fatal: nale髒y u髒y `count$' we wszystkich formatach lub nic"
-#: builtin.c:761
+#: builtin.c:815
#, c-format
msgid "field width is ignored for `%%' specifier"
msgstr "szeroko pola jest ignorowana dla specyfikatora `%%'"
-#: builtin.c:763
+#: builtin.c:817
#, c-format
msgid "precision is ignored for `%%' specifier"
msgstr "precyzja jest ignorowana dla specyfikatora `%%'"
-#: builtin.c:765
+#: builtin.c:819
#, c-format
msgid "field width and precision are ignored for `%%' specifier"
msgstr "szeroko pola i precyzja s ignorowane dla specyfikatora `%%'"
-#: builtin.c:816
+#: builtin.c:870
msgid "fatal: `$' is not permitted in awk formats"
msgstr "fatal: `$' jest niedozwolony w formatach awk"
-#: builtin.c:825
+#: builtin.c:879
msgid "fatal: arg count with `$' must be > 0"
msgstr "fatal: argument count z `$' musi by > 0"
-#: builtin.c:829
+#: builtin.c:883
#, c-format
msgid "fatal: arg count %ld greater than total number of supplied arguments"
msgstr ""
"fatal: argument count %ld wikszy ni髒 cakowita suma argument籀w dostarczonych"
-#: builtin.c:833
+#: builtin.c:887
msgid "fatal: `$' not permitted after period in format"
msgstr "fatal: `$' jest niedozwolony po kropce w formacie"
-#: builtin.c:849
+#: builtin.c:903
msgid "fatal: no `$' supplied for positional field width or precision"
msgstr "fatal: brak `$' dla pozycyjnej szerokoci pola lub precyzji"
-#: builtin.c:920
+#: builtin.c:975
msgid "`l' is meaningless in awk formats; ignored"
msgstr "`l' jest bezsensowny w formatach awk; zignorowany"
-#: builtin.c:924
+#: builtin.c:979
msgid "fatal: `l' is not permitted in POSIX awk formats"
msgstr "fatal: `l' jest niedozwolony w formatach POSIX awk"
-#: builtin.c:937
+#: builtin.c:992
msgid "`L' is meaningless in awk formats; ignored"
msgstr "`L' jest bezsensowny w formatach awk; zignorowany"
-#: builtin.c:941
+#: builtin.c:996
msgid "fatal: `L' is not permitted in POSIX awk formats"
msgstr "fatal: `L' jest niedozwolony w formatach POSIX awk"
-#: builtin.c:954
+#: builtin.c:1009
msgid "`h' is meaningless in awk formats; ignored"
msgstr "`h' jest bezsensowny w formatach awk; zignorowany"
-#: builtin.c:958
+#: builtin.c:1013
msgid "fatal: `h' is not permitted in POSIX awk formats"
msgstr "fatal: `h' jest niedozwolony w formatach POSIX awk"
-#: builtin.c:1271
+#: builtin.c:1408
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr "[s]printf: warto %g jest poza zasigiem dla formatu `%%%c'"
-#: builtin.c:1331
+#: builtin.c:1506
#, c-format
msgid "ignoring unknown format specifier character `%c': no argument converted"
msgstr ""
"pominicie nieznanego formatu specyfikatora znaku `%c': nie skonwertowano "
"argumentu"
-#: builtin.c:1336
+#: builtin.c:1511
msgid "fatal: not enough arguments to satisfy format string"
msgstr ""
"fatal: brak wystarczajcej liczby argument籀w, aby zaspokoi acuch "
"formatujcy"
-#: builtin.c:1338
+#: builtin.c:1513
msgid "^ ran out for this one"
msgstr "zabrako ^"
-#: builtin.c:1345
+#: builtin.c:1520
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: specyfikator formatu nie posiada kontrolnej litery"
-#: builtin.c:1348
+#: builtin.c:1523
msgid "too many arguments supplied for format string"
msgstr "zbyt du髒o podanych argument籀w w acuchu formatujcym"
-#: builtin.c:1422 builtin.c:1433
+#: builtin.c:1598 builtin.c:1609
msgid "printf: no arguments"
msgstr "printf: brak argument籀w"
-#: builtin.c:1474
+#: builtin.c:1650
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: otrzymano argument, kt籀ry nie jest liczb"
-#: builtin.c:1478
+#: builtin.c:1654
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: wywoana z ujemnym argumentem %g"
-#: builtin.c:1502
+#: builtin.c:1685
#, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: dugo %g nie jest >= 1"
-#: builtin.c:1504
+#: builtin.c:1687
#, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: dugo %g nie jest >= 0"
-#: builtin.c:1511
+#: builtin.c:1694
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: dugo %g, kt籀ra nie jest liczb cakowit, zostanie obcita"
-#: builtin.c:1516
+#: builtin.c:1699
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr "substr: dugo %g zbyt du髒a dla indeksu acucha, obcinanie do %g"
-#: builtin.c:1528
+#: builtin.c:1711
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: pocztkowy indeks %g jest nieprawidowy, nastpi u髒ycie 1"
-#: builtin.c:1533
+#: builtin.c:1716
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr ""
"substr: pocztkowy indeks %g, kt籀ry nie jest liczb cakowit, zostanie "
"obcity"
-#: builtin.c:1558
+#: builtin.c:1741
msgid "substr: source string is zero length"
msgstr "substr: acuch 驕r籀dowy ma zerow dugo"
-#: builtin.c:1574
+#: builtin.c:1757
#, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: pocztkowy indeks %g le髒y poza kocem acucha"
-#: builtin.c:1582
+#: builtin.c:1765
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -772,230 +728,225 @@ msgstr ""
"substr: dugo %g zaczynajc od %g przekracza dugo pierwszego argumentu "
"(%lu)"
-#: builtin.c:1656
+#: builtin.c:1839
msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
msgstr ""
"strftime: warto formatu w PROCINFO[\"strftime\"] posiada typ numeryczny"
-#: builtin.c:1679
+#: builtin.c:1862
msgid "strftime: received non-numeric second argument"
msgstr "strftime: otrzymano drugi argument, kt籀ry nie jest liczb"
-#: builtin.c:1682
+#: builtin.c:1866
msgid "strftime: second argument less than 0 or too big for time_t"
-msgstr ""
+msgstr "strftime: drugi argument mniejszy od 0 lub zbyt du髒y dla time_t"
-#: builtin.c:1689
+#: builtin.c:1873
msgid "strftime: received non-string first argument"
msgstr "strftime: otrzymano pierwszy argument, kt籀ry nie jest acuchem"
-#: builtin.c:1695
+#: builtin.c:1880
msgid "strftime: received empty format string"
msgstr "strftime: otrzymano pusty acuch formatujcy"
-#: builtin.c:1761
+#: builtin.c:1946
msgid "mktime: received non-string argument"
msgstr "mktime: otrzymano argument, kt籀ry nie jest acuchem"
-#: builtin.c:1778
+#: builtin.c:1963
msgid "mktime: at least one of the values is out of the default range"
msgstr "mktime: przynajmniej jedna z wartoci jest poza domylnym zakresem"
-#: builtin.c:1813
+#: builtin.c:1998
msgid "'system' function not allowed in sandbox mode"
msgstr "funkcja 'system' nie jest dozwolona w trybie piaskownicy"
-#: builtin.c:1818
+#: builtin.c:2003
msgid "system: received non-string argument"
msgstr "system: otrzymano argument, kt籀ry nie jest acuchem"
-#: builtin.c:1873 eval.c:1159 eval.c:1790 eval.c:1803
-#, c-format
-msgid "reference to uninitialized variable `%s'"
-msgstr "odwoanie do niezainicjowanej zmiennej `%s'"
-
-#: builtin.c:1940
+#: builtin.c:2121
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "odwoanie do niezainicjowanego pola `$%d'"
-#: builtin.c:2027
+#: builtin.c:2208
msgid "tolower: received non-string argument"
msgstr "tolower: otrzymano argument, kt籀ry nie jest acuchem"
-#: builtin.c:2061
+#: builtin.c:2242
msgid "toupper: received non-string argument"
msgstr "toupper: otrzymano argument, kt籀ry nie jest acuchem"
-#: builtin.c:2097
+#: builtin.c:2278
msgid "atan2: received non-numeric first argument"
msgstr "atan2: otrzymano pierwszy argument, kt籀ry nie jest liczb"
-#: builtin.c:2099
+#: builtin.c:2280
msgid "atan2: received non-numeric second argument"
msgstr "atan2: otrzymano drugi argument, kt籀ry nie jest liczb"
-#: builtin.c:2118
+#: builtin.c:2299
msgid "sin: received non-numeric argument"
msgstr "sin: otrzymano argument, kt籀ry nie jest liczb"
-#: builtin.c:2134
+#: builtin.c:2315
msgid "cos: received non-numeric argument"
msgstr "cos: otrzymano argument, kt籀ry nie jest liczb"
-#: builtin.c:2187
+#: builtin.c:2368
msgid "srand: received non-numeric argument"
msgstr "srand: otrzymano argument, kt籀ry nie jest liczb"
-#: builtin.c:2218
+#: builtin.c:2399
msgid "match: third argument is not an array"
msgstr "match: otrzymano trzeci argument, kt籀ry nie jest tablic"
-#: builtin.c:2482
+#: builtin.c:2664
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: trzeci argument 0 potraktowany jako 1"
-#: builtin.c:2775
+#: builtin.c:2957
msgid "lshift: received non-numeric first argument"
msgstr "lshift: otrzymano pierwszy argument, kt籀ry nie jest liczb"
-#: builtin.c:2777
+#: builtin.c:2959
msgid "lshift: received non-numeric second argument"
msgstr "lshift: otrzymano drugi argument, kt籀ry nie jest liczb"
-#: builtin.c:2783
+#: builtin.c:2965
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr "lshift(%lf, %lf): ujemne wartoci spowoduj dziwne wyniki"
-#: builtin.c:2785
+#: builtin.c:2967
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr "lshift(%lf, %lf): uamkowe wartoci zostan obcite"
-#: builtin.c:2787
+#: builtin.c:2969
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
"lshift(%lf, %lf): zbyt du髒a warto przesunicia spowoduje dziwne wyniki"
-#: builtin.c:2812
+#: builtin.c:2994
msgid "rshift: received non-numeric first argument"
msgstr "rshift: otrzymano pierwszy argument, kt籀ry nie jest liczb"
-#: builtin.c:2814
+#: builtin.c:2996
msgid "rshift: received non-numeric second argument"
msgstr "rshift: otrzymano drugi argument, kt籀ry nie jest liczb"
-#: builtin.c:2820
+#: builtin.c:3002
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr "rshift(%lf, %lf): ujemne wartoci spowoduj dziwne wyniki"
-#: builtin.c:2822
+#: builtin.c:3004
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr "rshift(%lf, %lf): uamkowe wartoci zostan obcite"
-#: builtin.c:2824
+#: builtin.c:3006
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
"rshift(%lf, %lf): zbyt du髒a warto przesunicia spowoduje dziwne wyniki"
-#: builtin.c:2849
+#: builtin.c:3031
msgid "and: received non-numeric first argument"
msgstr "and: otrzymano pierwszy argument, kt籀ry nie jest liczb"
-#: builtin.c:2851
+#: builtin.c:3033
msgid "and: received non-numeric second argument"
msgstr "and: otrzymano drugi argument, kt籀ry nie jest liczb"
-#: builtin.c:2857
+#: builtin.c:3039
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr "and(%lf, %lf): ujemne wartoci spowoduj dziwne wyniki"
-#: builtin.c:2859
+#: builtin.c:3041
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr "and(%lf, %lf): uamkowe wartoci zostan obcite"
-#: builtin.c:2884
+#: builtin.c:3066
msgid "or: received non-numeric first argument"
msgstr "or: otrzymano pierwszy argument, kt籀ry nie jest liczb"
-#: builtin.c:2886
+#: builtin.c:3068
msgid "or: received non-numeric second argument"
msgstr "or: otrzymano drugi argument, kt籀ry nie jest liczb"
-#: builtin.c:2892
+#: builtin.c:3074
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr "or(%lf, %lf): ujemne wartoci spowoduj dziwne wyniki"
-#: builtin.c:2894
+#: builtin.c:3076
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr "or(%lf, %lf): uamkowe wartoci zostan obcite"
-#: builtin.c:2922
+#: builtin.c:3102
msgid "xor: received non-numeric first argument"
msgstr "xor: otrzymano pierwszy argument, kt籀ry nie jest liczb"
-#: builtin.c:2924
+#: builtin.c:3104
msgid "xor: received non-numeric second argument"
msgstr "xor: otrzymano drugi argument, kt籀ry nie jest liczb"
-#: builtin.c:2930
+#: builtin.c:3110
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr "xor(%lf, %lf): ujemne wartoci spowoduj dziwne wyniki"
-#: builtin.c:2932
+#: builtin.c:3112
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr "xor(%lf, %lf): uamkowe wartoci zostan obcite"
-#: builtin.c:2956 builtin.c:2962
+#: builtin.c:3136
msgid "compl: received non-numeric argument"
msgstr "compl: otrzymano argument, kt籀ry nie jest liczb"
-#: builtin.c:2964
+#: builtin.c:3142
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr "compl(%lf): ujemne wartoci spowoduj dziwne wyniki"
-#: builtin.c:2966
+#: builtin.c:3144
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr "compl(%lf): uamkowe wartoci zostan obcite"
-#: builtin.c:3135
+#: builtin.c:3313
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: `%s' nie jest prawidow kategori lokalizacji"
-#: eval.c:412
+#: eval.c:395
#, c-format
msgid "unknown nodetype %d"
msgstr "nieznany typ wza %d"
-#: eval.c:423 eval.c:437
+#: eval.c:406 eval.c:420
#, c-format
msgid "unknown opcode %d"
msgstr "nieznany opcode %d"
-#: eval.c:434
+#: eval.c:417
#, c-format
msgid "opcode %s not an operator or keyword"
msgstr "opcode %s nie jest operatorem ani sowem kluczowym"
-#: eval.c:488
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr "przepenienie bufora w genflags2str"
-#: eval.c:698
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -1006,830 +957,790 @@ msgstr ""
"\t# Stos Wywoawczy Funkcji:\n"
"\n"
-#: eval.c:725
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
msgstr "`IGNORECASE' jest rozszerzeniem gawk"
-#: eval.c:754
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr "`BINMODE' jest rozszerzeniem gawk"
-#: eval.c:812
+#: eval.c:793
#, c-format
msgid "BINMODE value `%s' is invalid, treated as 3"
msgstr "warto BINMODE `%s' jest nieprawidowa, przyjto j jako 3"
-#: eval.c:902
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "za specyfikacja `%sFMT' `%s'"
-#: eval.c:980
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "wyczenie `--lint' z powodu przypisania do `LINT'"
-#: eval.c:1127 eval.c:1777
-#, c-format
-msgid "can't use function name `%s' as variable or array"
-msgstr "nie mo髒na u髒y nazwy funkcji `%s' jako zmiennej lub tablicy"
-
-#: eval.c:1158 eval.c:1789 eval.c:1802
+#: eval.c:1132
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "odwoanie do niezainicjowanego argumentu `%s'"
-#: eval.c:1177
+#: eval.c:1133
+#, c-format
+msgid "reference to uninitialized variable `%s'"
+msgstr "odwoanie do niezainicjowanej zmiennej `%s'"
+
+#: eval.c:1151
msgid "attempt to field reference from non-numeric value"
msgstr "pr籀ba odwoania do pola poprzez nienumeryczn warto"
-#: eval.c:1179
+#: eval.c:1153
msgid "attempt to field reference from null string"
msgstr "pr籀ba odwoania z zerowego acucha"
-#: eval.c:1185
+#: eval.c:1161
#, c-format
msgid "attempt to access field %ld"
msgstr "pr籀ba dostpu do pola %ld"
-#: eval.c:1194
+#: eval.c:1170
#, c-format
msgid "reference to uninitialized field `$%ld'"
msgstr "odwoanie do niezainicjowanego pola `$%ld'"
-#: eval.c:1256
+#: eval.c:1257
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr ""
"funkcja `%s' zostaa wywoana z wiksz iloci argument籀w ni髒 zostao to "
"zadeklarowane"
-#: eval.c:1437
+#: eval.c:1452
#, c-format
msgid "unwind_stack: unexpected type `%s'"
msgstr "unwind_stack: niespodziewany typ `%s'"
-#: eval.c:1532
+#: eval.c:1546
msgid "division by zero attempted in `/='"
msgstr "pr籀ba dzielenia przez zero w `/='"
-#: eval.c:1539
+#: eval.c:1553
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "pr籀ba dzielenia przez zero w `%%='"
-#: eval.c:1876 eval.c:2122
-#, c-format
-msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context"
-msgstr "pr籀ba u髒ycia tablicy `%s[\"%.*s\"]' w kontekcie skalaru"
-
-#: eval.c:1907
-msgid "assignment used in conditional context"
-msgstr "przypisanie u髒yte w kontekcie warunkowym"
-
-#: eval.c:1911
-msgid "statement has no effect"
-msgstr "instrukcja nie ma 髒adnego efektu"
-
-#: eval.c:2343
-#, c-format
-msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
-msgstr ""
-"ptla for: tablica `%s' zmienia rozmiar z %ld do %ld podczas wykonywania "
-"ptli"
-
-#: eval.c:2458
-#, c-format
-msgid "function called indirectly through `%s' does not exist"
-msgstr "porednio wywoana funkcja poprzez `%s' nie istnieje"
-
-#: eval.c:2470
-#, c-format
-msgid "function `%s' not defined"
-msgstr "funkcja `%s' nie zostaa zdefiniowana"
-
-#: eval.c:2511
-#, c-format
-msgid "non-redirected `getline' invalid inside `%s' rule"
-msgstr ""
-"komenda `getline' bez przekierowania jest nieprawidowa wewntrz reguy `%s'"
-
-#: eval.c:2600
-#, c-format
-msgid "error reading input file `%s': %s"
-msgstr "bd podczas czytania z pliku `%s': %s"
-
-#: eval.c:2614
-#, c-format
-msgid "`nextfile' cannot be called from a `%s' rule"
-msgstr "instrukcja `nextfile' nie mo髒e by wywoana z wntrza reguy `%s'"
-
-#: eval.c:2694
-#, c-format
-msgid "`next' cannot be called from a `%s' rule"
-msgstr "instrukcja `next' nie mo髒e by wywoana z wntrza reguy `%s'"
-
-#: eval.c:2760
-#, c-format
-msgid "Sorry, don't know how to interpret `%s'"
-msgstr "Niestety nie wiem jak zinterpretowa `%s'"
-
-#: ext.c:64
+#: ext.c:70
msgid "extensions are not allowed in sandbox mode"
msgstr "rozszerzenia nie s dozwolone w trybie piaskownicy"
-#: ext.c:70 ext.c:75
+#: ext.c:73
msgid "`extension' is a gawk extension"
msgstr "`extension' jest rozszerzeniem gawk"
-#: ext.c:85
-#, c-format
-msgid "fatal: extension: cannot open `%s' (%s)\n"
+#: ext.c:80
+#, fuzzy, c-format
+msgid "extension: cannot open library `%s' (%s)\n"
msgstr "fatal: rozszerzenie: nie mo髒na otworzy `%s' (%s)\n"
-#: ext.c:94
-#, c-format
+#: ext.c:86
+#, fuzzy, c-format
msgid ""
-"fatal: extension: library `%s': does not define "
-"`plugin_is_GPL_compatible' (%s)\n"
+"extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n"
msgstr ""
"fatal: rozszerzenie: biblioteka `%s': nie definiuje "
"`plugin_is_GPL_compatible' (%s)\n"
-#: ext.c:103
-#, c-format
-msgid "fatal: extension: library `%s': cannot call function `%s' (%s)\n"
+#: ext.c:90
+#, fuzzy, c-format
+msgid "extension: library `%s': cannot call function `%s' (%s)\n"
msgstr ""
"fatal: rozszerzenie: biblioteka `%s': nie mo髒na wywoa funkcji `%s' (%s)\n"
-#: ext.c:137
+#: ext.c:118
msgid "extension: missing function name"
msgstr "rozszerzenie: brakujca nazwa funkcji"
-#: ext.c:142
+#: ext.c:123
#, c-format
msgid "extension: illegal character `%c' in function name `%s'"
msgstr "rozszerzenie: nieprawidowy znak `%c' w nazwie funkcji `%s'"
-#: ext.c:151
+#: ext.c:131
#, c-format
msgid "extension: can't redefine function `%s'"
msgstr "rozszerzenie: nie mo髒na zredefiniowa funkcji `%s'"
-#: ext.c:155
+#: ext.c:135
#, c-format
msgid "extension: function `%s' already defined"
msgstr "rozserzenie: funkcja `%s' zostaa ju髒 zdefiniowana"
-#: ext.c:160
+#: ext.c:139
#, c-format
msgid "extension: function name `%s' previously defined"
msgstr "rozserzenie: nazwa funkcji `%s' zostaa zdefiniowana wczeniej"
-#: ext.c:162
+#: ext.c:141
#, c-format
msgid "extension: can't use gawk built-in `%s' as function name"
msgstr "rozszerzenie: nie mo髒na u髒y wbudowanej w gawk `%s' jako nazwy funkcji"
-#: ext.c:166
+#: ext.c:144
#, c-format
msgid "make_builtin: negative argument count for function `%s'"
msgstr "make_builtin: ujemny licznik argument籀w dla funkcji `%s'"
-#: ext.c:269
+#: ext.c:206
#, c-format
msgid "function `%s' defined to take no more than %d argument(s)"
msgstr "funkcja `%s' zdefiniowana aby pobra nie wicej ni髒 %d argument(籀w)"
-#: ext.c:272
+#: ext.c:209
#, c-format
msgid "function `%s': missing argument #%d"
msgstr "funkcja `%s': brakuje #%d argumentu"
-#: ext.c:289
+#: ext.c:226
#, 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:293
+#: ext.c:230
#, 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:306
+#: ext.c:244
msgid "Operation Not Supported"
msgstr "Operacja nie jest wspierana"
-#: field.c:328
+#: ext.c:256
+msgid "dynamic loading of library not supported"
+msgstr ""
+
+#: field.c:339
msgid "NF set to negative value"
msgstr "NF ustawiony na warto ujemn"
-#: field.c:951 field.c:958 field.c:962
+#: field.c:962 field.c:969 field.c:973
msgid "split: fourth argument is a gawk extension"
msgstr "split: czwarty argument jest rozszerzeniem gawk"
-#: field.c:955
+#: field.c:966
msgid "split: fourth argument is not an array"
msgstr "split: czwarty argument nie jest tablic"
-#: field.c:969
+#: field.c:980
msgid "split: second argument is not an array"
msgstr "split: drugi argument nie jest tablic"
-#: field.c:973
+#: field.c:984
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:978
+#: field.c:989
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:981
+#: field.c:992
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:1010
+#: field.c:1021
msgid "split: null string for third arg is a gawk extension"
msgstr "split: zerowy acuch dla trzeciego argumentu jest rozszerzeniem gawk"
-#: field.c:1050
+#: field.c:1061
msgid "patsplit: fourth argument is not an array"
msgstr "patsplit: czwarty argument nie jest tablic"
-#: field.c:1055
+#: field.c:1066
msgid "patsplit: second argument is not an array"
msgstr "patsplit: drugi argument nie jest tablic"
-#: field.c:1061
+#: field.c:1072
msgid "patsplit: third argument must be non-null"
msgstr "patsplit: trzeci argument nie mo髒e by pusty"
-#: field.c:1065
+#: field.c:1076
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:1070
+#: field.c:1081
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:1073
+#: field.c:1084
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:1110
+#: field.c:1122
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "`FIELDWIDTHS' jest rozszerzeniem gawk"
-#: field.c:1173
+#: field.c:1186
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr "nieprawidowa warto FIELDWIDTHS, w pobli髒u `%s'"
-#: field.c:1246
+#: field.c:1259
msgid "null string for `FS' is a gawk extension"
msgstr "zerowy acuch dla `FS' jest rozszerzeniem gawk"
-#: field.c:1250
+#: field.c:1263
msgid "old awk does not support regexps as value of `FS'"
msgstr "stary awk nie wspiera wyra髒e regularnych jako wartoci `FS'"
-#: field.c:1369
+#: field.c:1382
msgid "`FPAT' is a gawk extension"
msgstr "`FPAT' jest rozszerzeniem gawk"
-#: getopt.c:574 getopt.c:590
-#, c-format
-msgid "%s: option '%s' is ambiguous\n"
+#: getopt.c:604 getopt.c:633
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
msgstr "%s: opcja '%s' jest niejednoznaczna\n"
-#: getopt.c:623 getopt.c:627
+#: getopt.c:679 getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: opcja '--%s' nie mo髒e mie argument籀w\n"
-#: getopt.c:636 getopt.c:641
+#: getopt.c:692 getopt.c:697
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: opcja '%c%s' nie mo髒e mie argument籀w\n"
-#: getopt.c:684 getopt.c:703
+#: getopt.c:740 getopt.c:759
#, c-format
msgid "%s: option '--%s' requires an argument\n"
msgstr "%s: opcja '--%s' wymaga argumentu\n"
-#: getopt.c:741 getopt.c:744
+#: getopt.c:797 getopt.c:800
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: nieznana opcja '--%s'\n"
-#: getopt.c:752 getopt.c:755
+#: getopt.c:808 getopt.c:811
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: nieznana opcja '%c%s'\n"
-#: getopt.c:804 getopt.c:807
+#: getopt.c:860 getopt.c:863
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: bdna opcja -- '%c'\n"
-#: getopt.c:857 getopt.c:874 getopt.c:1082 getopt.c:1100
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s: opcja wymaga argumentu -- '%c'\n"
-#: getopt.c:930 getopt.c:946
+#: getopt.c:989 getopt.c:1005
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: opcja '-W %s' jest niejednoznaczna\n"
-#: getopt.c:970 getopt.c:988
+#: getopt.c:1029 getopt.c:1047
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: opcja '-W %s' nie mo髒e mie argument籀w\n"
-#: getopt.c:1009 getopt.c:1027
+#: getopt.c:1068 getopt.c:1086
#, c-format
msgid "%s: option '-W %s' requires an argument\n"
msgstr "%s: opcja '-W %s' wymaga argumentu\n"
-#: io.c:280
+#: io.c:326
#, c-format
msgid "command line argument `%s' is a directory: skipped"
msgstr "argument linii polece `%s' jest katalogiem: pominito"
-#: io.c:283 io.c:385
+#: io.c:329 io.c:438
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "nie mo髒na otworzy pliku `%s' do czytania (%s)"
-#: io.c:501
+#: io.c:568
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "zamknicie fd %d (`%s') nie powiodo si (%s)"
-#: io.c:578
+#: io.c:645
msgid "redirection not allowed in sandbox mode"
msgstr "przekierowanie nie jest dozwolone w trybie piaskownicy"
-#: io.c:612
+#: io.c:679
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "wyra髒enie w przekierowaniu `%s' ma tylko warto numeryczn"
-#: io.c:618
+#: io.c:685
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "wyra髒enie dla przekierowania `%s' ma zerow warto acucha"
-#: io.c:624
+#: io.c:690
#, 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:667
+#: io.c:733
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "niepotrzebne mieszanie `>' i `>>' dla pliku `%.*s'"
-#: io.c:720
+#: io.c:786
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "nie mo髒na otworzy potoku `%s' jako wyjcia (%s)"
-#: io.c:730
+#: io.c:796
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "nie mo髒na otworzy potoku `%s' jako wejcia (%s)"
-#: io.c:753
+#: io.c:819
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr ""
"nie mo髒na otworzy dwukierunkowego potoku `%s' jako wejcia/wyjcia (%s)"
-#: io.c:835
+#: io.c:900
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "nie mo髒na przekierowa z `%s' (%s)"
-#: io.c:838
+#: io.c:903
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "nie mo髒na przekierowa do `%s' (%s)"
-#: io.c:889
+#: io.c:954
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"osignito systemowy limit otwartych plik籀w: rozpoczcie multipleksowania "
"deskryptor籀w plik籀w"
-#: io.c:905
+#: io.c:970
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "zamknicie `%s' nie powiodo si (%s)."
-#: io.c:913
+#: io.c:978
msgid "too many pipes or input files open"
msgstr "zbyt du髒o otwartych potok籀w lub plik籀w wejciowych"
-#: io.c:935
+#: io.c:1000
msgid "close: second argument must be `to' or `from'"
msgstr "close: drugim argumentem musi by `to' lub `from'"
-#: io.c:952
+#: io.c:1017
#, 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:957
+#: io.c:1022
msgid "close of redirection that was never opened"
msgstr "zamknicie przekierowania, kt籀re nigdy nie zostao otwarte"
-#: io.c:1054
+#: io.c:1120
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: przekierowanie `%s' nie zostao otwarte z `|&', drugi argument "
"zignorowany"
-#: io.c:1070
+#: io.c:1137
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "status awarii (%d) podczas zamykania potoku `%s' (%s)"
-#: io.c:1073
+#: io.c:1140
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "status awarii (%d) podczas zamykania pliku `%s' (%s)"
-#: io.c:1093
+#: io.c:1160
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "brak jawnego zamknicia gniazdka `%s'"
-#: io.c:1096
+#: io.c:1163
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "brak jawnego zamknicia procesu pomocniczego `%s'"
-#: io.c:1099
+#: io.c:1166
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "brak jawnego zamknicia potoku `%s'"
-#: io.c:1102
+#: io.c:1169
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "brak jawnego zamknicia pliku `%s'"
-#: io.c:1130 io.c:1185 main.c:793 main.c:830
+#: io.c:1197 io.c:1252 main.c:825 main.c:862
#, c-format
msgid "error writing standard output (%s)"
msgstr "bd podczas zapisu na standardowe wyjcie (%s)"
-#: io.c:1134 io.c:1190
+#: io.c:1201 io.c:1257
#, c-format
msgid "error writing standard error (%s)"
msgstr "bd podczas zapisu na standardowe wyjcie diagnostyczne (%s)"
-#: io.c:1142
+#: io.c:1209
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "opr籀髒nienie potoku `%s' nie powiodo si (%s)."
-#: io.c:1145
+#: io.c:1212
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr ""
"opr籀髒nienie potoku do `%s' przez proces pomocniczy nie powiodo si (%s)."
-#: io.c:1148
+#: io.c:1215
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "opr籀髒nienie pliku `%s' nie powiodo si (%s)."
-#: io.c:1263
+#: io.c:1329
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr "nieprawidowy lokalny port %s w `/inet'"
-#: io.c:1280
+#: io.c:1347
#, c-format
msgid "remote host and port information (%s, %s) invalid"
msgstr "informacje o zdalnym hocie i porcie s nieprawidowe (%s, %s)"
-#: io.c:1432
+#: io.c:1499
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr "nie dostarczono (znanego) protokou w specjalnym pliku `%s'"
-#: io.c:1446
+#: io.c:1513
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "specjalna nazwa pliku `%s' jest niekompletna"
-#: io.c:1463
+#: io.c:1530
msgid "must supply a remote hostname to `/inet'"
msgstr "nale髒y dostarczy nazw zdalnego hosta do `/inet'"
-#: io.c:1481
+#: io.c:1548
msgid "must supply a remote port to `/inet'"
msgstr "nale髒y dostarczy numer zdalnego portu do `/inet'"
-#: io.c:1527
+#: io.c:1594
msgid "TCP/IP communications are not supported"
msgstr "Komunikacja TCP/IP nie jest wspierana"
-#: io.c:1694
+#: io.c:1764
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "nie mo髒na otworzy `%s', tryb `%s'"
-#: io.c:1748
+#: io.c:1814
#, c-format
msgid "close of master pty failed (%s)"
msgstr "zamknicie nadrzdnego pty nie powiodo si (%s)"
-#: io.c:1750 io.c:1918 io.c:2075
+#: io.c:1816 io.c:1984 io.c:2145
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr ""
"zamknicie standardowego wyjcia w procesie potomnym nie powiodo si (%s)"
-#: io.c:1753
+#: io.c:1819
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr ""
"przesunicie podlegego pty na standardowe wyjcie w procesie potomnym nie "
"powiodo si (dup: %s)"
-#: io.c:1755 io.c:1923
+#: io.c:1821 io.c:1989
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr ""
"zamknicie standardowego wejcia w procesie potomnym nie powiodo si (%s)"
-#: io.c:1758
+#: io.c:1824
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr ""
"przesunicie podlegego pty na standardowe wejcie w procesie potomnym nie "
"powiodo si (dup: %s)"
-#: io.c:1760 io.c:1781
+#: io.c:1826 io.c:1847
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "zamknicie podlegego pty nie powiodo si (%s)"
-#: io.c:1859 io.c:1921 io.c:2053 io.c:2078
+#: io.c:1925 io.c:1987 io.c:2122 io.c:2148
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr ""
"przesunicie potoku na standardowe wyjcie w procesie potomnym nie powiodo "
"si (dup: %s)"
-#: io.c:1866 io.c:1926
+#: io.c:1932 io.c:1992
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr ""
"przesunicie potoku na standardowe wejcie w procesie potomnym nie powiodo "
"si (dup: %s)"
-#: io.c:1886 io.c:2068
+#: io.c:1952 io.c:2138
msgid "restoring stdout in parent process failed\n"
msgstr ""
"odzyskanie standardowego wyjcia w procesie potomnym nie powiodo si\n"
-#: io.c:1894
+#: io.c:1960
msgid "restoring stdin in parent process failed\n"
msgstr ""
"odzyskanie standardowego wejcia w procesie potomnym nie powiodo si\n"
-#: io.c:1929 io.c:2080 io.c:2094
+#: io.c:1995 io.c:2150 io.c:2164
#, c-format
msgid "close of pipe failed (%s)"
msgstr "zamknicie potoku nie powiodo si (%s)"
-#: io.c:1974
+#: io.c:2040
msgid "`|&' not supported"
msgstr "`|&' nie jest wspierany"
-#: io.c:2040
+#: io.c:2107
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "nie mo髒na otworzy potoku `%s' (%s)"
-#: io.c:2088
+#: io.c:2158
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "nie mo髒na utworzy procesu potomnego dla `%s' (fork: %s)"
-#: io.c:2521
+#: io.c:2637
#, c-format
msgid "data file `%s' is empty"
msgstr "plik danych `%s' jest pusty"
-#: io.c:2562 io.c:2570
+#: io.c:2678 io.c:2686
msgid "could not allocate more input memory"
msgstr "nie mo髒na zarezerwowa wicej pamici wejciowej"
-#: io.c:3128
+#: io.c:3236
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "wieloznakowa warto `RS' jest rozszerzeniem gawk"
-#: io.c:3233
+#: io.c:3326
msgid "IPv6 communication is not supported"
msgstr "Komunikacja IPv6 nie jest wspierana"
-#: main.c:364
+#: main.c:355
msgid "`-m[fr]' option irrelevant in gawk"
msgstr "nieistotna opcja `-m[fr]' w gawk"
-#: main.c:366
+#: main.c:357
msgid "-m option usage: `-m[fr] nnn'"
msgstr "u髒ycie opcji -m: `-m[fr] nnn'"
-#: main.c:389
+#: main.c:386
msgid "empty argument to `-e/--source' ignored"
msgstr "pusty argument dla opcji `-e/--source' zosta zignorowany"
-#: main.c:460
+#: main.c:472
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: opcja `-W %s' nierozpoznana i zignorowana\n"
-#: main.c:513
+#: main.c:518
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: opcja musi mie argument -- %c\n"
-#: main.c:534
+#: main.c:539
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
"zmienna rodowiskowa `POSIXLY_CORRECT' ustawiona: `--posix' zosta wczony"
-#: main.c:540
+#: main.c:545
msgid "`--posix' overrides `--traditional'"
msgstr "opcja `--posix' zostanie u髒yta nad `--traditional'"
-#: main.c:551
+#: main.c:556
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr "`--posix'/`--traditional' u髒yte nad opcj `--non-decimal-data'"
-#: main.c:555
+#: main.c:560
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr ""
"uruchamianie %s setuid root mo髒e by problemem pod wzgldem bezpieczestwa"
-#: main.c:560
+#: main.c:565
msgid "`--posix' overrides `--binary'"
msgstr "opcja `--posix' zostanie u髒yta nad `--binary'"
-#: main.c:611
+#: main.c:623
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "nie mo髒na ustawi trybu binarnego na standardowym wejciu (%s)"
-#: main.c:614
+#: main.c:626
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "nie mo髒na ustawi trybu binarnego na standardowym wyjciu (%s)"
-#: main.c:616
+#: main.c:628
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "nie mo髒na ustawi trybu binarnego na wyjciu diagnostycznym (%s)"
-#: main.c:655
+#: main.c:679
msgid "no program text at all!"
msgstr "brak tekstu programu!"
-#: main.c:733
+#: main.c:763
#, 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:735
+#: main.c:765
#, 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:740
+#: main.c:770
msgid "POSIX options:\t\tGNU long options: (standard)\n"
msgstr "Opcje POSIX:\t\tDugie opcje GNU (standard):\n"
-#: main.c:741
+#: main.c:771
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f program\t\t--file=program\n"
-#: main.c:742
+#: main.c:772
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F fs\t\t\t--field-separator=fs\n"
-#: main.c:743
+#: main.c:773
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v zmienna=warto\t--assign=zmienna=warto\n"
-#: main.c:744
+#: main.c:774
msgid "Short options:\t\tGNU long options: (extensions)\n"
msgstr "Kr籀tkie opcje:\t\tDugie opcje GNU: (rozszerzenia)\n"
-#: main.c:745
+#: main.c:775
msgid "\t-b\t\t\t--characters-as-bytes\n"
msgstr "\t-b\t\t\t--characters-as-bytes\n"
-#: main.c:746
+#: main.c:776
msgid "\t-c\t\t\t--traditional\n"
msgstr "\t-c\t\t\t--traditional\n"
-#: main.c:747
+#: main.c:777
msgid "\t-C\t\t\t--copyright\n"
msgstr "\t-C\t\t\t--copyright\n"
-#: main.c:748
-#, fuzzy
+#: main.c:778
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
-msgstr "\t-d [plik]\t\t--dump-variables[=plik]\n"
+msgstr "\t-d[plik]\t\t--dump-variables[=plik]\n"
-#: main.c:749
+#: main.c:779
+#, fuzzy
+msgid "\t-D[file]\t\t--debug[=file]\n"
+msgstr "\t-p[plik]\t\t--profile[=plik]\n"
+
+#: main.c:780
msgid "\t-e 'program-text'\t--source='program-text'\n"
msgstr "\t-e 'tekst-programu'\t--source='tekst-programu'\n"
-#: main.c:750
+#: main.c:781
msgid "\t-E file\t\t\t--exec=file\n"
msgstr "\t-E plik\t\t\t--exec=plik\n"
-#: main.c:751
+#: main.c:782
msgid "\t-g\t\t\t--gen-pot\n"
msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:752
+#: main.c:783
msgid "\t-h\t\t\t--help\n"
msgstr "\t-h\t\t\t--help\n"
-#: main.c:753
+#: main.c:784
+msgid "\t-l library\t\t--load=library\n"
+msgstr ""
+
+#: main.c:785
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
msgstr "\t-L [fatal]\t\t--lint[=fatal]\n"
-#: main.c:754
+#: main.c:786
msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr "\t-n\t\t\t--non-decimal-data\n"
-#: main.c:755
+#: main.c:787
+#, fuzzy
+msgid "\t-M\t\t\t--bignum\n"
+msgstr "\t-g\t\t\t--gen-pot\n"
+
+#: main.c:788
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr "\t-N\t\t\t--use-lc-numeric\n"
-#: main.c:756
+#: main.c:789
+#, fuzzy
+msgid "\t-o[file]\t\t--pretty-print[=file]\n"
+msgstr "\t-p[plik]\t\t--profile[=plik]\n"
+
+#: main.c:790
msgid "\t-O\t\t\t--optimize\n"
msgstr "\t-O\t\t\t--optimize\n"
-#: main.c:757
-#, fuzzy
+#: main.c:791
msgid "\t-p[file]\t\t--profile[=file]\n"
-msgstr "\t-p [plik]\t\t--profile[=plik]\n"
+msgstr "\t-p[plik]\t\t--profile[=plik]\n"
-#: main.c:758
+#: main.c:792
msgid "\t-P\t\t\t--posix\n"
msgstr "\t-P\t\t\t--posix\n"
-#: main.c:759
+#: main.c:793
msgid "\t-r\t\t\t--re-interval\n"
msgstr "\t-r\t\t\t--re-interval\n"
-#: main.c:761
-msgid "\t-R file\t\t\t--command=file\n"
-msgstr "\t-R plik\t\t\t--command=plik\n"
-
-#: main.c:762
+#: main.c:794
msgid "\t-S\t\t\t--sandbox\n"
msgstr "\t-S\t\t\t--sandbox\n"
-#: main.c:763
+#: main.c:795
msgid "\t-t\t\t\t--lint-old\n"
msgstr "\t-t\t\t\t--lint-old\n"
-#: main.c:764
+#: main.c:796
msgid "\t-V\t\t\t--version\n"
msgstr "\t-V\t\t\t--version\n"
-#: main.c:766
+#: main.c:798
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:769
+#: main.c:801
msgid "\t-Y\t\t--parsedebug\n"
msgstr "\t-Y\t\t--parsedebug\n"
@@ -1838,7 +1749,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:778
+#: main.c:810
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -1851,7 +1762,7 @@ msgstr ""
"dokumentacji.\n"
"\n"
-#: main.c:782
+#: main.c:814
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -1861,7 +1772,7 @@ msgstr ""
"Program domylnie czyta standardowe wejcie i zapisuje standardowe wyjcie.\n"
"\n"
-#: main.c:786
+#: main.c:818
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -1871,7 +1782,7 @@ msgstr ""
"\tgawk '{ suma += $1 }; END { print suma }' plik\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:806
+#: main.c:838
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1890,7 +1801,7 @@ msgstr ""
"tej Licencji lub kt籀rej z p籀驕niejszych wersji.\n"
"\n"
-#: main.c:814
+#: main.c:846
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"
@@ -1905,7 +1816,7 @@ msgstr ""
"Powszechn Licencj Publiczn GNU.\n"
"\n"
-#: main.c:820
+#: main.c:852
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"
@@ -1914,16 +1825,16 @@ msgstr ""
"Powszechnej Licencji Publicznej GNU (GNU General Public License);\n"
"jeli za nie - odwied驕 stron http://www.gnu.org/licenses/.\n"
-#: main.c:855
+#: main.c:887
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft nie ustawia FS na znak tabulatora w POSIX awk"
-#: main.c:1089
+#: main.c:1133
#, c-format
msgid "unknown value for field spec: %d\n"
msgstr "nieznana warto dla specyfikacji pola: %d\n"
-#: main.c:1170
+#: main.c:1214
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
@@ -1932,84 +1843,79 @@ msgstr ""
"%s: argument `%s' dla `-v' nie jest zgodny ze skadni `zmienna=warto'\n"
"\n"
-#: main.c:1196
+#: main.c:1240
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "`%s' nie jest dozwolon nazw zmiennej"
-#: main.c:1199
+#: main.c:1243
#, 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:1203
-#, fuzzy, c-format
+#: main.c:1247
+#, c-format
msgid "cannot use gawk builtin `%s' as variable name"
-msgstr "rozszerzenie: nie mo髒na u髒y wbudowanej w gawk `%s' jako nazwy funkcji"
+msgstr "nie mo髒na u髒y wbudowanej w gawk `%s' jako nazwy zmiennej"
-#: main.c:1208
-#, fuzzy, c-format
+#: main.c:1252
+#, c-format
msgid "cannot use function `%s' as variable name"
-msgstr "nie mo髒na u髒y nazwy funkcji `%s' jako zmiennej lub tablicy"
+msgstr "nie mo髒na u髒y funkcji `%s' jako nazwy zmiennej"
-#: main.c:1261
+#: main.c:1305
msgid "floating point exception"
msgstr "wyjtek zmiennopozycyjny"
-#: main.c:1268
+#: main.c:1312
msgid "fatal error: internal error"
msgstr "fatalny bd: wewntrzny bd"
-#: main.c:1283
+#: main.c:1327
msgid "fatal error: internal error: segfault"
msgstr "fatalny bd: wewntrzny bd: bd segmentacji"
-#: main.c:1295
+#: main.c:1339
msgid "fatal error: internal error: stack overflow"
msgstr "fatalny bd: wewntrzny bd: przepenienie stosu"
-#: main.c:1345
+#: main.c:1393
#, c-format
msgid "no pre-opened fd %d"
msgstr "brak ju髒 otwartego fd %d"
-#: main.c:1352
+#: main.c:1400
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "nie mo髒na otworzy zawczasu /dev/null dla fd %d"
-#: main.c:1375 main.c:1384
-#, c-format
-msgid "could not find groups: %s"
-msgstr "nie mo髒na znale驕 grup: %s"
-
-#: msg.c:63
+#: msg.c:61
#, c-format
msgid "cmd. line:"
msgstr "linia polece:"
-#: msg.c:107
+#: msg.c:121
msgid "error: "
msgstr "bd: "
-#: node.c:406
+#: node.c:436
msgid "backslash at end of string"
msgstr "backslash na kocu acucha"
-#: node.c:517
+#: node.c:520
#, c-format
msgid "old awk does not support the `\\%c' escape sequence"
msgstr "stary awk nie wspiera sekwencji ucieczki `\\%c'"
-#: node.c:568
+#: node.c:571
msgid "POSIX does not allow `\\x' escapes"
msgstr "POSIX nie zezwala na sekwencj ucieczki `\\x'"
-#: node.c:574
+#: node.c:577
msgid "no hex digits in `\\x' escape sequence"
msgstr "brak liczb szesnastkowych w sekwencji ucieczki `\\x'"
-#: node.c:596
+#: node.c:599
#, c-format
msgid ""
"hex escape \\x%.*s of %d characters probably not interpreted the way you "
@@ -2018,12 +1924,12 @@ msgstr ""
"szesnastkowa sekwencja ucieczki \\x%.*s %d znak籀w prawdopodobnie nie zostaa "
"zinterpretowana jak tego oczekujesz"
-#: node.c:611
+#: node.c:614
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr "sekwencja ucieczki `\\%c' potraktowana jako zwyke `%c'"
-#: node.c:750
+#: node.c:759
msgid ""
"Invalid multibyte data detected. There may be a mismatch between your data "
"and your locale."
@@ -2041,16 +1947,16 @@ msgstr "%s %s `%s': nie mo髒na uzyska flag fd: (fcntl F_GETFD: %s)"
msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
msgstr "%s %s `%s': nie mo髒na ustawi close-on-exec: (fcntl F_SETFD: %s)"
-#: profile.c:83
+#: profile.c:69
#, c-format
msgid "could not open `%s' for writing: %s"
msgstr "nie mo髒na otworzy `%s' do zapisu: %s"
-#: profile.c:85
+#: profile.c:71
msgid "sending profile to standard error"
msgstr "wysyanie profilu na standardowe wyjcie diagnostyczne"
-#: profile.c:203
+#: profile.c:187
#, c-format
msgid ""
"\t# %s block(s)\n"
@@ -2059,7 +1965,7 @@ msgstr ""
"\t# %s blok(i)\n"
"\n"
-#: profile.c:208
+#: profile.c:192
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -2068,17 +1974,22 @@ msgstr ""
"\t# Regua(i)\n"
"\n"
-#: profile.c:279
+#: profile.c:266
#, c-format
msgid "internal error: %s with null vname"
msgstr "wewntrzny bd: %s z zerowym vname"
-#: profile.c:952
+#: profile.c:528
+#, fuzzy
+msgid "internal error: builtin with null fname"
+msgstr "wewntrzny bd: %s z zerowym vname"
+
+#: profile.c:943
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# profil programu gawk, utworzony %s\n"
-#: profile.c:1331
+#: profile.c:1328
#, c-format
msgid ""
"\n"
@@ -2087,93 +1998,170 @@ msgstr ""
"\n"
"\t# Funkcje, spis alfabetyczny\n"
-#: profile.c:1370
+#: profile.c:1366
#, c-format
msgid "redir2str: unknown redirection type %d"
msgstr "redir2str: nieznany typ przekierowania %d"
-#: re.c:572
-#, fuzzy, c-format
+#: re.c:571
+#, c-format
msgid "range of the form `[%c-%c]' is locale dependent"
msgstr "zasig formy `[%c-%c]' jest zale髒ny od lokalizacji"
-#: re.c:599
+#: re.c:598
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
msgstr "komponent regexp `%.*s' powinien by prawdopodobnie `[%.*s]'"
-#: regcomp.c:132
+#: regcomp.c:131
msgid "Success"
msgstr "Sukces"
-#: regcomp.c:135
+#: regcomp.c:134
msgid "No match"
msgstr "Brak dopasowania"
-#: regcomp.c:138
+#: regcomp.c:137
msgid "Invalid regular expression"
msgstr "Nieprawidowe wyra髒enie regularne"
-#: regcomp.c:141
+#: regcomp.c:140
msgid "Invalid collation character"
msgstr "Nieprawidowy znak por籀wnania"
-#: regcomp.c:144
+#: regcomp.c:143
msgid "Invalid character class name"
msgstr "Nieprawidowa nazwa klasy znaku"
-#: regcomp.c:147
+#: regcomp.c:146
msgid "Trailing backslash"
msgstr "Kocowy znak backslash"
-#: regcomp.c:150
+#: regcomp.c:149
msgid "Invalid back reference"
msgstr "Nieprawidowe odwoanie wsteczne"
-#: regcomp.c:153
+#: regcomp.c:152
msgid "Unmatched [ or [^"
msgstr "Niedopasowany znak [ lub [^"
-#: regcomp.c:156
+#: regcomp.c:155
msgid "Unmatched ( or \\("
msgstr "Niedopasowany znak ( lub \\("
-#: regcomp.c:159
+#: regcomp.c:158
msgid "Unmatched \\{"
msgstr "Niedopasowany znak \\{"
-#: regcomp.c:162
+#: regcomp.c:161
msgid "Invalid content of \\{\\}"
msgstr "Nieprawidowa zawarto \\{\\}"
-#: regcomp.c:165
+#: regcomp.c:164
msgid "Invalid range end"
msgstr "Nieprawidowy koniec zakresu"
-#: regcomp.c:168
+#: regcomp.c:167
msgid "Memory exhausted"
msgstr "Pami wyczerpana"
-#: regcomp.c:171
+#: regcomp.c:170
msgid "Invalid preceding regular expression"
msgstr "Nieprawidowe poprzedzajce wyra髒enie regularne"
-#: regcomp.c:174
+#: regcomp.c:173
msgid "Premature end of regular expression"
msgstr "Przedwczesny koniec wyra髒enia regularnego"
-#: regcomp.c:177
+#: regcomp.c:176
msgid "Regular expression too big"
msgstr "Wyra髒enie regularne jest zbyt du髒e"
-#: regcomp.c:180
+#: regcomp.c:179
msgid "Unmatched ) or \\)"
msgstr "Niedopasowany znak ) lub \\)"
-#: regcomp.c:701
+#: regcomp.c:700
msgid "No previous regular expression"
msgstr "Brak poprzedniego wyra髒enia regularnego"
+#~ 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 "odwoanie do niezainicjowanego elementu `%s[\"%.*s\"]'"
+
+#~ msgid "subscript of array `%s' is null string"
+#~ msgstr "indeks tablicy `%s' jest zerowym acuchem"
+
+#~ msgid "%s: empty (null)\n"
+#~ msgstr "%s: pusty (null)\n"
+
+#~ msgid "%s: empty (zero)\n"
+#~ msgstr "%s: pusty (zero)\n"
+
+#~ msgid "%s: table_size = %d, array_size = %d\n"
+#~ msgstr "%s: table_size = %d, array_size = %d\n"
+
+#~ msgid "%s: is parameter\n"
+#~ msgstr "%s: jest parametrem\n"
+
+#~ msgid "%s: array_ref to %s\n"
+#~ msgstr "%s: array_ref do %s\n"
+
+#~ msgid "use of non-array as array"
+#~ msgstr "u髒ycie nie-tablicy jako tablicy"
+
+#~ msgid "can't use function name `%s' as variable or array"
+#~ msgstr "nie mo髒na u髒y nazwy funkcji `%s' jako zmiennej lub tablicy"
+
+#~ msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context"
+#~ msgstr "pr籀ba u髒ycia tablicy `%s[\"%.*s\"]' w kontekcie skalaru"
+
+#~ msgid "assignment used in conditional context"
+#~ msgstr "przypisanie u髒yte w kontekcie warunkowym"
+
+#~ msgid "statement has no effect"
+#~ msgstr "instrukcja nie ma 髒adnego efektu"
+
+#~ msgid ""
+#~ "for loop: array `%s' changed size from %ld to %ld during loop execution"
+#~ msgstr ""
+#~ "ptla for: tablica `%s' zmienia rozmiar z %ld do %ld podczas wykonywania "
+#~ "ptli"
+
+#~ msgid "function called indirectly through `%s' does not exist"
+#~ msgstr "porednio wywoana funkcja poprzez `%s' nie istnieje"
+
+#~ msgid "function `%s' not defined"
+#~ msgstr "funkcja `%s' nie zostaa zdefiniowana"
+
+#~ msgid "non-redirected `getline' invalid inside `%s' rule"
+#~ msgstr ""
+#~ "komenda `getline' bez przekierowania jest nieprawidowa wewntrz reguy `"
+#~ "%s'"
+
+#~ msgid "error reading input file `%s': %s"
+#~ msgstr "bd podczas czytania z pliku `%s': %s"
+
+#~ msgid "`nextfile' cannot be called from a `%s' rule"
+#~ msgstr "instrukcja `nextfile' nie mo髒e by wywoana z wntrza reguy `%s'"
+
+#~ msgid "`exit' cannot be called in the current context"
+#~ msgstr "instrukcja `exit' nie mo髒e by wywoana w tym kontekcie"
+
+#~ msgid "`next' cannot be called from a `%s' rule"
+#~ msgstr "instrukcja `next' nie mo髒e by wywoana z wntrza reguy `%s'"
+
+#~ msgid "Sorry, don't know how to interpret `%s'"
+#~ msgstr "Niestety nie wiem jak zinterpretowa `%s'"
+
+#~ msgid "\t-R file\t\t\t--command=file\n"
+#~ msgstr "\t-R plik\t\t\t--command=plik\n"
+
+#~ msgid "could not find groups: %s"
+#~ msgstr "nie mo髒na znale驕 grup: %s"
+
#~ msgid "assignment is not allowed to result of builtin function"
#~ msgstr "przypisanie do wyniku wbudowanej funkcji nie jest dozwolone"
diff --git a/po/sv.gmo b/po/sv.gmo
index 79e809be..4b08f753 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index 874798c8..84fbf74f 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,17 +1,17 @@
# Swedish translation of gawk
-# Copyright 2003, 2011 Free Software Foundation, Inc.
+# Copyright 2003, 2011, 2012 Free Software Foundation, Inc.
# This file is distributed under the same license as the gawk package.
# Martin Sj鐷ren <md9ms@mdstud.chalmers.se>, 2001-2002.
# Christer Andersson <klamm@comhem.se>, 2007.
-# G顤an Uddeborg <goeran@uddeborg.se>, 2011.
+# G顤an Uddeborg <goeran@uddeborg.se>, 2011, 2012.
#
-# $Id: gawk.po,v 1.5 2011-07-16 15:21:02+02 g繹ran Exp $
+# $Revision: 1.7 $
msgid ""
msgstr ""
-"Project-Id-Version: gawk 4.0.0\n"
+"Project-Id-Version: gawk 4.0.0h\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2011-11-14 21:46+0200\n"
-"PO-Revision-Date: 2011-07-16 15:20+0200\n"
+"POT-Creation-Date: 2012-04-27 10:06+0300\n"
+"PO-Revision-Date: 2012-01-30 12:07+0100\n"
"Last-Translator: G顤an Uddeborg <goeran@uddeborg.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
@@ -19,514 +19,471 @@ msgstr ""
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
-#: array.c:140
+#: array.c:266
#, c-format
msgid "from %s"
msgstr "fr幩 %s"
-#: array.c:248
+#: array.c:366
msgid "attempt to use a scalar value as array"
msgstr "f顤s闥 att anv鄚da ett skal酺t v酺de som vektor"
-#: array.c:251
-#, c-format
-msgid "attempt to use function `%s' as an array"
-msgstr "f顤s闥 att anv鄚da funktionen \"%s\" som vektor"
-
-#: array.c:254
+#: array.c:368
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
msgstr "f顤s闥 att anv鄚da skal酺parametern \"%s\" som en vektor"
-#: array.c:257
+#: array.c:371
#, c-format
msgid "attempt to use scalar `%s' as an array"
msgstr "f顤s闥 att anv鄚da skal酺en \"%s\" som en vektor"
-#: array.c:302 array.c:707 builtin.c:84 builtin.c:1384 builtin.c:1426
-#: builtin.c:1439 builtin.c:1858 builtin.c:1870 eval.c:1135 eval.c:1139
-#: eval.c:1495 eval.c:1812
+#: array.c:418 array.c:584 builtin.c:85 builtin.c:1560 builtin.c:1602
+#: builtin.c:1615 builtin.c:2041 builtin.c:2053 eval.c:1109 eval.c:1113
+#: eval.c:1508
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "f顤s闥 att anv鄚da vektorn \"%s\" i skal酺sammanhang"
-#: array.c:513
-#, c-format
-msgid "reference to uninitialized element `%s[\"%.*s\"]'"
-msgstr "referens till oinitierat element \"%s[\"%.*s\"]\""
-
-#: array.c:519
-#, c-format
-msgid "subscript of array `%s' is null string"
-msgstr "index i vektorn \"%s\" 酺 en tom str鄚g"
-
-#: array.c:723
+#: array.c:591
#, c-format
msgid "delete: index `%s' not in array `%s'"
msgstr "delete: index \"%s\" finns inte i vektorn \"%s\""
-#: array.c:734 eval.c:1865
+#: array.c:605
#, c-format
msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
msgstr "f顤s闥 att anv鄚da skal酺en \"%s[\"%.*s\"]\" som en vektor"
-#: array.c:910
-#, c-format
-msgid "%s: empty (null)\n"
-msgstr "%s: tom (null)\n"
-
-#: array.c:915
-#, c-format
-msgid "%s: empty (zero)\n"
-msgstr "%s: tom (noll)\n"
-
-#: array.c:919
-#, c-format
-msgid "%s: table_size = %d, array_size = %d\n"
-msgstr "%s: tabellstorlek = %d, vektorstorlek = %d\n"
-
-#: array.c:954
-#, c-format
-msgid "%s: is parameter\n"
-msgstr "%s: 酺 en parameter\n"
-
-#: array.c:958
-#, c-format
-msgid "%s: array_ref to %s\n"
-msgstr "%s: vektorreferens till %s\n"
-
-#: array.c:963
-msgid "adump: argument not an array"
+#: array.c:784
+#, fuzzy
+msgid "adump: first argument not an array"
msgstr "adump: argumentet 酺 inte en vektor"
-#: array.c:1086
+#: array.c:823
msgid "asort: second argument not an array"
msgstr "asort: andra argumentet 酺 inte en vektor"
-#: array.c:1087
+#: array.c:824
msgid "asorti: second argument not an array"
msgstr "asorti: andra argumentet 酺 inte en vektor"
-#: array.c:1094
+#: array.c:831
msgid "asort: first argument not an array"
msgstr "asort: f顤sta argumentet 酺 inte en vektor"
-#: array.c:1095
+#: array.c:832
msgid "asorti: first argument not an array"
msgstr "asorti: f顤sta argumentet 酺 inte en vektor"
-#: array.c:1102
+#: array.c:839
msgid "asort: cannot use a subarray of first arg for second arg"
msgstr ""
"asort: det g緳 inte att anv鄚da en delvektor av f顤sta argumentet som andra "
"argument"
-#: array.c:1103
+#: array.c:840
msgid "asorti: cannot use a subarray of first arg for second arg"
msgstr ""
"asorti: det g緳 inte att anv鄚da en delvektor av f顤sta argumentet som andra "
"argument"
-#: array.c:1108
+#: array.c:845
msgid "asort: cannot use a subarray of second arg for first arg"
msgstr ""
"asort: det g緳 inte att anv鄚da en delvektor av andra argumentet som f顤sta "
"argument"
-#: array.c:1109
+#: array.c:846
msgid "asorti: cannot use a subarray of second arg for first arg"
msgstr ""
"asorti: det g緳 inte att anv鄚da en delvektor av andra argumentet som f顤sta "
"argument"
-#: array.c:1659
+#: array.c:1314
#, c-format
msgid "`%s' is invalid as a function name"
msgstr "\"%s\" 酺 ogiltigt som ett funktionsnamn"
-#: array.c:1663
+#: array.c:1318
#, c-format
msgid "sort comparison function `%s' is not defined"
msgstr "j鄝f顤elsefunktionen \"%s\" f顤 sortering 酺 inte definierad"
-#: awkgram.y:249
+#: awkgram.y:223
#, c-format
msgid "%s blocks must have an action part"
msgstr "%s-block m廛te ha en 廞g酺dsdel"
-#: awkgram.y:252
+#: awkgram.y:226
msgid "each rule must have a pattern or an action part"
msgstr "varje regel m廛te ha ett m霵ster eller en 廞g酺dsdel"
-#: awkgram.y:323 awkgram.y:334
+#: awkgram.y:295 awkgram.y:306
msgid "old awk does not support multiple `BEGIN' or `END' rules"
msgstr "gamla awk st鐰er inte flera \"BEGIN\"- eller \"END\"-regler"
-#: awkgram.y:371
+#: awkgram.y:343
#, c-format
msgid "`%s' is a built-in function, it cannot be redefined"
msgstr "\"%s\" 酺 en inbyggd funktion, den kan inte definieras om"
-#: awkgram.y:432
+#: awkgram.y:389
msgid "regexp constant `//' looks like a C++ comment, but is not"
msgstr "regexp-konstanten \"//\" ser ut som en C++-kommentar men 酺 inte det"
-#: awkgram.y:436
+#: awkgram.y:393
#, 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 酺 inte det"
-#: awkgram.y:528
+#: awkgram.y:485
#, c-format
msgid "duplicate case values in switch body: %s"
msgstr "upprepade case-v酺den i switch-sats: %s"
-#: awkgram.y:549
+#: awkgram.y:506
msgid "duplicate `default' detected in switch body"
msgstr "flera \"default\" uppt踄ktes i switch-sats"
-#: awkgram.y:809
+#: awkgram.y:766
msgid "`break' is not allowed outside a loop or switch"
msgstr "\"break\" 酺 inte till廞et utanf顤 en slinga eller switch"
-#: awkgram.y:818
+#: awkgram.y:775
msgid "`continue' is not allowed outside a loop"
msgstr "\"continue\" 酺 inte till廞et utanf顤 en slinga"
-#: awkgram.y:828
+#: awkgram.y:785
#, c-format
msgid "`next' used in %s action"
msgstr "\"next\" anv鄚t i %s-廞g酺d"
-#: awkgram.y:836
+#: awkgram.y:793
msgid "`nextfile' is a gawk extension"
msgstr "\"nextfile\" 酺 en gawk-ut闥ning"
-#: awkgram.y:841
+#: awkgram.y:798
#, c-format
msgid "`nextfile' used in %s action"
msgstr "\"nextfile\" anv鄚t i %s-廞g酺d"
-#: awkgram.y:865
+#: awkgram.y:822
msgid "`return' used outside function context"
msgstr "\"return\" anv鄚d utanf顤 funktion"
-#: awkgram.y:925
+#: awkgram.y:896
msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
msgstr ""
"ensamt \"print\" i BEGIN eller END-regel b顤 troligen vara 'print \"\"'"
-#: awkgram.y:995 awkgram.y:999 awkgram.y:1023
+#: awkgram.y:966 awkgram.y:970 awkgram.y:994
msgid "`delete array' is a gawk extension"
msgstr "\"delete array\" 酺 en gawk-ut闥ning"
-#: awkgram.y:1019
+#: awkgram.y:990
msgid "`delete(array)' is a non-portable tawk extension"
msgstr "\"delete(array)\" 酺 en icke portabel tawk-ut闥ning"
-#: awkgram.y:1135
+#: awkgram.y:1108
msgid "multistage two-way pipelines don't work"
msgstr "flerstegs dubbelriktade r顤 fungerar inte"
-#: awkgram.y:1238
+#: awkgram.y:1211
msgid "regular expression on right of assignment"
msgstr "regulj酺t uttryck i h鐷erledet av en tilldelning"
-#: awkgram.y:1249
+#: awkgram.y:1222
msgid "regular expression on left of `~' or `!~' operator"
msgstr "regulj酺t uttryck p v鄚ster sida om en \"~\"- eller \"!~\"-operator"
-#: awkgram.y:1265 awkgram.y:1419
+#: awkgram.y:1238 awkgram.y:1389
msgid "old awk does not support the keyword `in' except after `for'"
msgstr "gamla awk st鐰er inte operatorn \"**\""
-#: awkgram.y:1275
+#: awkgram.y:1248
msgid "regular expression on right of comparison"
msgstr "regulj酺t uttryck i h鐷erledet av en j鄝f顤else"
-#: awkgram.y:1394
+#: awkgram.y:1364
#, c-format
msgid "`getline var' invalid inside `%s' rule"
msgstr "\"getline var\" 酺 ogiltigt inuti \"%s\"-regel"
-#: awkgram.y:1397 eval.c:2504
+#: awkgram.y:1367
#, c-format
msgid "`getline' invalid inside `%s' rule"
msgstr "\"getline 酺 ogiltigt inuti \"%s\"-regel"
-#: awkgram.y:1402
+#: awkgram.y:1372
msgid "non-redirected `getline' undefined inside END action"
msgstr "icke omdirigerad \"getline\" odefinierad inuti END-廞g酺d"
-#: awkgram.y:1421
+#: awkgram.y:1391
msgid "old awk does not support multidimensional arrays"
msgstr "gamla awk st鐰er inte flerdimensionella vektorer"
-#: awkgram.y:1517
+#: awkgram.y:1488
msgid "call of `length' without parentheses is not portable"
msgstr "anrop av \"length\" utan parenteser 酺 inte portabelt"
-#: awkgram.y:1580
+#: awkgram.y:1554
msgid "indirect function calls are a gawk extension"
msgstr "indirekta funktionsanrop 酺 en gawk-ut闥ning"
-#: awkgram.y:1593
+#: awkgram.y:1567
#, c-format
msgid "can not use special variable `%s' for indirect function call"
msgstr ""
"det g緳 inte att anv鄚da specialvariabeln \"%s\" f顤 indirekta fuktionsanrop"
-#: awkgram.y:1671
+#: awkgram.y:1645
msgid "invalid subscript expression"
msgstr "ogiltig indexuttryck"
-#: awkgram.y:1711
-msgid "use of non-array as array"
-msgstr "icke-vektor anv鄚ds som vektor"
-
-#: awkgram.y:1975 awkgram.y:1995 msg.c:98
+#: awkgram.y:1966 awkgram.y:1986 msg.c:112
msgid "warning: "
msgstr "varning: "
-#: awkgram.y:1993 msg.c:130
+#: awkgram.y:1984 msg.c:144
msgid "fatal: "
msgstr "鐰esdigert: "
-#: awkgram.y:2043
+#: awkgram.y:2034
msgid "unexpected newline or end of string"
msgstr "ov鄚tat nyradstecken eller slut p str鄚gen"
-#: awkgram.y:2300 awkgram.y:2358 awkgram.y:2542
+#: awkgram.y:2299 awkgram.y:2357 awkgram.y:2545
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "kan inte 鞿pna k鄟lfilen \"%s\" f顤 l酲ning (%s)"
-#: awkgram.y:2301 awkgram.y:2359 builtin.c:122
+#: awkgram.y:2300 awkgram.y:2358 builtin.c:124
msgid "reason unknown"
msgstr "ok鄚d anledning"
-#: awkgram.y:2317
+#: awkgram.y:2316
#, c-format
msgid "already included source file `%s'"
msgstr "inkluderade redan k鄟lfilen \"%s\""
-#: awkgram.y:2343
+#: awkgram.y:2342
msgid "@include is a gawk extension"
msgstr "@include 酺 en gawk-ut闥ning"
-#: awkgram.y:2349
+#: awkgram.y:2348
msgid "empty filename after @include"
msgstr "tomt filnamn efter @include"
-#: awkgram.y:2494
+#: awkgram.y:2497
msgid "empty program text on command line"
msgstr "tom programtext p kommandoraden"
-#: awkgram.y:2609
+#: awkgram.y:2612
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "kan inte l酲a k鄟lfilen \"%s\" (%s)"
-#: awkgram.y:2620
+#: awkgram.y:2623
#, c-format
msgid "source file `%s' is empty"
msgstr "k鄟lfilen \"%s\" 酺 tom"
-#: awkgram.y:2805
+#: awkgram.y:2800
msgid "source file does not end in newline"
msgstr "k鄟lfilen slutar inte med en ny rad"
-#: awkgram.y:2882
+#: awkgram.y:2905
msgid "unterminated regexp ends with `\\' at end of file"
msgstr "oavslutat regulj酺t uttryck slutar med \"\\\" i slutet av filen"
-#: awkgram.y:2906
+#: awkgram.y:2929
#, c-format
msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
"%s: %d: tawk-modifierare f顤 regulj酺a uttryck \"/.../%c\" fungerar inte i "
"gawk"
-#: awkgram.y:2910
+#: awkgram.y:2933
#, c-format
msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
"tawk-modifierare f顤 regulj酺a uttryck \"/.../%c\" fungerar inte i gawk"
-#: awkgram.y:2917
+#: awkgram.y:2940
msgid "unterminated regexp"
msgstr "oavslutat regulj酺t uttryck"
-#: awkgram.y:2921
+#: awkgram.y:2944
msgid "unterminated regexp at end of file"
msgstr "oavslutat regulj酺t uttryck i slutet av filen"
-#: awkgram.y:2980
+#: awkgram.y:3003
msgid "use of `\\ #...' line continuation is not portable"
msgstr "Anv鄚dning av \"\\ #...\" f顤 radforts酹tning 酺 inte portabelt"
-#: awkgram.y:2996
+#: awkgram.y:3019
msgid "backslash not last character on line"
msgstr "sista tecknet p raden 酺 inte ett omv鄚t snedstreck"
-#: awkgram.y:3057
+#: awkgram.y:3080
msgid "POSIX does not allow operator `**='"
msgstr "POSIX till廞er inte operatorn \"**=\""
-#: awkgram.y:3059
+#: awkgram.y:3082
msgid "old awk does not support operator `**='"
msgstr "gamla awk st鐰er inte operatorn \"**=\""
-#: awkgram.y:3068
+#: awkgram.y:3091
msgid "POSIX does not allow operator `**'"
msgstr "POSIX till廞er inte operatorn \"**\""
-#: awkgram.y:3070
+#: awkgram.y:3093
msgid "old awk does not support operator `**'"
msgstr "gamla awk st鐰er inte operatorn \"**\""
-#: awkgram.y:3105
+#: awkgram.y:3128
msgid "operator `^=' is not supported in old awk"
msgstr "operatorn \"^=\" st鐰s inte i gamla awk"
-#: awkgram.y:3113
+#: awkgram.y:3136
msgid "operator `^' is not supported in old awk"
msgstr "operatorn \"^\" st鐰s inte i gamla awk"
-#: awkgram.y:3206 awkgram.y:3222
+#: awkgram.y:3229 awkgram.y:3245
msgid "unterminated string"
msgstr "oavslutad str鄚g"
-#: awkgram.y:3418
+#: awkgram.y:3466
#, c-format
msgid "invalid char '%c' in expression"
msgstr "ogiltigt tecken \"%c\" i uttryck"
-#: awkgram.y:3465
+#: awkgram.y:3513
#, c-format
msgid "`%s' is a gawk extension"
msgstr "\"%s\" 酺 en gawk-ut闥ning"
-#: awkgram.y:3470
+#: awkgram.y:3518
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr "\"%s\" 酺 en Bell Labs-ut闥ning"
-#: awkgram.y:3475
+#: awkgram.y:3523
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX till廞er inte \"%s\""
-#: awkgram.y:3483
+#: awkgram.y:3531
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "\"%s\" st鐰s inte i gamla awk"
-#: awkgram.y:3550
+#: awkgram.y:3598
msgid "`goto' considered harmful!\n"
msgstr "\"goto\" anses skadlig!\n"
-#: awkgram.y:3601
+#: awkgram.y:3632
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d 酺 ett ogiltigt antal argument f顤 %s"
-#: awkgram.y:3636
+#: awkgram.y:3667
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr ""
"%s: bokstavlig str鄚g som sista argument till ers酹tning har ingen effekt"
-#: awkgram.y:3641
+#: awkgram.y:3672
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "%s: tredje argumentet 酺 inte ett 鄚dringsbart objekt"
-#: awkgram.y:3714 awkgram.y:3717
+#: awkgram.y:3751 awkgram.y:3754
msgid "match: third argument is a gawk extension"
msgstr "match: tredje argumentet 酺 en gawk-ut闥ning"
-#: awkgram.y:3771 awkgram.y:3774
+#: awkgram.y:3808 awkgram.y:3811
msgid "close: second argument is a gawk extension"
msgstr "close: andra argumentet 酺 en gawk-ut闥ning"
-#: awkgram.y:3786
+#: awkgram.y:3823
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"anv鄚dandet av dcgettext(_\"...\") 酺 felaktigt: ta bort det inledande "
"understrykningstecknet"
-#: awkgram.y:3801
+#: awkgram.y:3838
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"anv鄚dandet av dcngettext(_\"...\") 酺 felaktigt: ta bort det inledande "
"understrykningstecknet"
-#: awkgram.y:3893
-#, c-format
-msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
-msgstr "funktionen \"%s\": parameter %d, \"%s\", 酺 samma som parameter %d"
-
-#: awkgram.y:3935
+#: awkgram.y:3904
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "funktionen \"%s\": parametern \"%s\" 饘erskuggar en global variabel"
-#: awkgram.y:4093
+#: awkgram.y:3961
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "kunde inte 鞿pna \"%s\" f顤 skrivning (%s)"
-#: awkgram.y:4094
+#: awkgram.y:3962
msgid "sending variable list to standard error"
msgstr "skickar variabellista till standard fel"
-#: awkgram.y:4100
+#: awkgram.y:3970
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: misslyckades att st鄚ga (%s)"
-#: awkgram.y:4152
+#: awkgram.y:3995
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() anropad tv g幩ger!"
-#: awkgram.y:4158
+#: awkgram.y:4003
msgid "there were shadowed variables."
msgstr "det fanns 饘erskuggade variabler."
-#: awkgram.y:4188
+#: awkgram.y:4074
+#, c-format
+msgid "function name `%s' previously defined"
+msgstr "funktionsnamnet \"%s\" 酺 definierat sedan tidigare"
+
+#: awkgram.y:4120
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "funktionen \"%s\": kan inte anv鄚da funktionsnamn som parameternamn"
-#: awkgram.y:4192
+#: awkgram.y:4123
#, c-format
msgid "function `%s': can't use special variable `%s' as a function parameter"
msgstr ""
"funktionen \"%s\": det g緳 inte att anv鄚da specialvariabeln \"%s\" som en "
"funktionsparameter"
-#: awkgram.y:4208
+#: awkgram.y:4131
#, c-format
-msgid "function name `%s' previously defined"
-msgstr "funktionsnamnet \"%s\" 酺 definierat sedan tidigare"
+msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
+msgstr "funktionen \"%s\": parameter %d, \"%s\", 酺 samma som parameter %d"
-#: awkgram.y:4376 awkgram.y:4382
+#: awkgram.y:4210 awkgram.y:4216
#, c-format
msgid "function `%s' called but never defined"
msgstr "funktionen \"%s\" anropad men aldrig definierad"
-#: awkgram.y:4385
+#: awkgram.y:4219
#, c-format
msgid "function `%s' defined but never called directly"
msgstr "funktionen \"%s\" definierad men aldrig anropad direkt"
-#: awkgram.y:4417
+#: awkgram.y:4251
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr "konstant regulj酺t uttryck f顤 parameter %d ger ett booleskt v酺de"
-#: awkgram.y:4526
+#: awkgram.y:4297
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -535,229 +492,229 @@ msgstr ""
"funktionen \"%s\" anropad med blanktecken mellan namnet och \"(\",\n"
"eller anv鄚d som variabel eller vektor"
-#: awkgram.y:4773 eval.c:2056
+#: awkgram.y:4505
msgid "division by zero attempted"
msgstr "f顤s闥te dividera med noll"
-#: awkgram.y:4782 eval.c:2072
+#: awkgram.y:4514
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "f顤s闥te dividera med noll i \"%%\""
-#: builtin.c:120
+#: builtin.c:122
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s till \"%s\" misslyckades (%s)"
-#: builtin.c:121
+#: builtin.c:123
msgid "standard output"
msgstr "standard ut"
-#: builtin.c:135
+#: builtin.c:137
msgid "exp: received non-numeric argument"
msgstr "exp: fick ett ickenumeriskt argument"
-#: builtin.c:141
+#: builtin.c:143
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: argumentet %g 酺 inte inom till廞en gr鄚s"
-#: builtin.c:200
+#: builtin.c:202
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: kan inte spola: r顤et \"%s\" 鞿pnat f顤 l酲ning, inte skrivning"
-#: builtin.c:203
+#: builtin.c:205
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: kan inte spola: filen \"%s\" 鞿pnad f顤 l酲ning, inte skrivning"
-#: builtin.c:215
+#: builtin.c:217
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr "fflush: \"%s\" 酺 inte en 鞿pen fil, r顤 eller koprocess"
-#: builtin.c:333
+#: builtin.c:335
msgid "index: received non-string first argument"
msgstr "index: f顤sta argumentet 酺 inte en str鄚g"
-#: builtin.c:335
+#: builtin.c:337
msgid "index: received non-string second argument"
msgstr "index: andra argumentet 酺 inte en str鄚g"
-#: builtin.c:457
+#: builtin.c:461
msgid "int: received non-numeric argument"
msgstr "int: fick ett ickenumeriskt argument"
-#: builtin.c:493
+#: builtin.c:497
msgid "length: received array argument"
msgstr "length: fick ett vektorargument"
-#: builtin.c:496
+#: builtin.c:500
msgid "`length(array)' is a gawk extension"
msgstr "\"length(array)\" 酺 en gawk-ut闥ning"
-#: builtin.c:504
+#: builtin.c:508
msgid "length: received non-string argument"
msgstr "length: fick ett argument som inte 酺 en str鄚g"
-#: builtin.c:535
+#: builtin.c:539
msgid "log: received non-numeric argument"
msgstr "log: fick ett ickenumeriskt argument"
-#: builtin.c:538
+#: builtin.c:542
#, c-format
msgid "log: received negative argument %g"
msgstr "log: fick ett negativt argumentet %g"
-#: builtin.c:694 builtin.c:699
+#: builtin.c:740 builtin.c:745
msgid "fatal: must use `count$' on all formats or none"
msgstr "鐰esdigert: m廛te anv鄚da \"count$\" p alla eller inga format"
-#: builtin.c:761
+#: builtin.c:815
#, c-format
msgid "field width is ignored for `%%' specifier"
msgstr "f鄟tbredd ignoreras f顤 \"%%\"-specificerare"
-#: builtin.c:763
+#: builtin.c:817
#, c-format
msgid "precision is ignored for `%%' specifier"
msgstr "precision ignoreras f顤 \"%%\"-specificerare"
-#: builtin.c:765
+#: builtin.c:819
#, c-format
msgid "field width and precision are ignored for `%%' specifier"
msgstr "f鄟tbredd och precision ignoreras f顤 \"%%\"-specificerare"
-#: builtin.c:816
+#: builtin.c:870
msgid "fatal: `$' is not permitted in awk formats"
msgstr "鐰esdigert: \"$\" till廞s inte i awk-format"
-#: builtin.c:825
+#: builtin.c:879
msgid "fatal: arg count with `$' must be > 0"
msgstr "鐰esdigert: argumentantalet med \"$\" m廛te vara > 0"
-#: builtin.c:829
+#: builtin.c:883
#, c-format
msgid "fatal: arg count %ld greater than total number of supplied arguments"
msgstr "鐰esdigert: argumentantalet %ld 酺 st顤re 鄚 antalet givna argument"
-#: builtin.c:833
+#: builtin.c:887
msgid "fatal: `$' not permitted after period in format"
msgstr "鐰esdigert: \"$\" till廞s inte efter en punkt i formatet"
-#: builtin.c:849
+#: builtin.c:903
msgid "fatal: no `$' supplied for positional field width or precision"
msgstr ""
"鐰esdigert: inget \"$\" bifogat f顤 positionsangiven f鄟tbredd eller "
"precision"
-#: builtin.c:920
+#: builtin.c:975
msgid "`l' is meaningless in awk formats; ignored"
msgstr "\"l\" 酺 meningsl飉 i awk-format, ignorerad"
-#: builtin.c:924
+#: builtin.c:979
msgid "fatal: `l' is not permitted in POSIX awk formats"
msgstr "鐰esdigert: \"l\" till廞s inte i POSIX awk-format"
-#: builtin.c:937
+#: builtin.c:992
msgid "`L' is meaningless in awk formats; ignored"
msgstr "\"L\" 酺 meningsl飉 i awk-format, ignorerad"
-#: builtin.c:941
+#: builtin.c:996
msgid "fatal: `L' is not permitted in POSIX awk formats"
msgstr "鐰esdigert: \"L\" till廞s inte i POSIX awk-format"
-#: builtin.c:954
+#: builtin.c:1009
msgid "`h' is meaningless in awk formats; ignored"
msgstr "\"h\" 酺 meningsl飉 i awk-format, ignorerad"
-#: builtin.c:958
+#: builtin.c:1013
msgid "fatal: `h' is not permitted in POSIX awk formats"
msgstr "鐰esdigert: \"h\" till廞s inte i POSIX awk-format"
-#: builtin.c:1271
+#: builtin.c:1408
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr "[s]printf: v酺det %g 酺 utanf顤 \"%%%c\"-formatets giltiga intervall"
-#: builtin.c:1331
+#: builtin.c:1506
#, c-format
msgid "ignoring unknown format specifier character `%c': no argument converted"
msgstr ""
"ignorerar ok鄚t formatspecifikationstecken \"%c\": inget argument konverterat"
-#: builtin.c:1336
+#: builtin.c:1511
msgid "fatal: not enough arguments to satisfy format string"
msgstr "鐰esdigert: f顤 f argument f顤 formatstr鄚gen"
-#: builtin.c:1338
+#: builtin.c:1513
msgid "^ ran out for this one"
msgstr "^ tog slut h酺"
-#: builtin.c:1345
+#: builtin.c:1520
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: formatspecifieraren har ingen kommandobokstav"
-#: builtin.c:1348
+#: builtin.c:1523
msgid "too many arguments supplied for format string"
msgstr "f顤 m幩ga argument f顤 formatstr鄚gen"
-#: builtin.c:1422 builtin.c:1433
+#: builtin.c:1598 builtin.c:1609
msgid "printf: no arguments"
msgstr "printf: inga argument"
-#: builtin.c:1474
+#: builtin.c:1650
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: fick ickenumeriskt argument"
-#: builtin.c:1478
+#: builtin.c:1654
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: anropad med negativt argument %g"
-#: builtin.c:1502
+#: builtin.c:1685
#, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: l鄚gden %g 酺 inte >= 1"
-#: builtin.c:1504
+#: builtin.c:1687
#, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: l鄚gden %g 酺 inte >= 0"
-#: builtin.c:1511
+#: builtin.c:1694
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: l鄚gden %g som inte 酺 ett heltal kommer trunkeras"
-#: builtin.c:1516
+#: builtin.c:1699
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr "substr: l鄚gden %g 酺 f顤 stor f顤 str鄚gindexering, trunkeras till %g"
-#: builtin.c:1528
+#: builtin.c:1711
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: startindex %g 酺 ogiltigt, anv鄚der 1"
-#: builtin.c:1533
+#: builtin.c:1716
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: startindex %g som inte 酺 ett heltal kommer trunkeras"
-#: builtin.c:1558
+#: builtin.c:1741
msgid "substr: source string is zero length"
msgstr "substr: k鄟lstr鄚gen 酺 tom"
-#: builtin.c:1574
+#: builtin.c:1757
#, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: startindex %g 酺 bortom str鄚gens slut"
-#: builtin.c:1582
+#: builtin.c:1765
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -765,227 +722,222 @@ msgstr ""
"substr: l鄚gden %g vid startindex %g 饘erskrider det f顤sta argumentets "
"l鄚gd (%lu)"
-#: builtin.c:1656
+#: builtin.c:1839
msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
msgstr "strftime: formatv酺de i PROCINFO[\"strftime\"] har numerisk typ"
-#: builtin.c:1679
+#: builtin.c:1862
msgid "strftime: received non-numeric second argument"
msgstr "strftime: fick ett ickenumeriskt andra argument"
-#: builtin.c:1682
+#: builtin.c:1866
msgid "strftime: second argument less than 0 or too big for time_t"
-msgstr ""
+msgstr "strftime: andra argimentet mindre 鄚 0 eller f顤 stort f顤 time_t"
-#: builtin.c:1689
+#: builtin.c:1873
msgid "strftime: received non-string first argument"
msgstr "strftime: fick ett f顤sta argument som inte 酺 en str鄚g"
-#: builtin.c:1695
+#: builtin.c:1880
msgid "strftime: received empty format string"
msgstr "strftime: fick en tom formatstr鄚g"
-#: builtin.c:1761
+#: builtin.c:1946
msgid "mktime: received non-string argument"
msgstr "mktime: fick ett argument som inte 酺 en str鄚g"
-#: builtin.c:1778
+#: builtin.c:1963
msgid "mktime: at least one of the values is out of the default range"
msgstr "mktime: 廞minstone ett av v酺dena 酺 utanf顤 standardintervallet"
-#: builtin.c:1813
+#: builtin.c:1998
msgid "'system' function not allowed in sandbox mode"
msgstr "funktionen \"system\" 酺 inte till廞en i sandl嶟el輍e"
-#: builtin.c:1818
+#: builtin.c:2003
msgid "system: received non-string argument"
msgstr "system: fick ett argument som inte 酺 en str鄚g"
-#: builtin.c:1873 eval.c:1159 eval.c:1790 eval.c:1803
-#, c-format
-msgid "reference to uninitialized variable `%s'"
-msgstr "referens till icke initierad variabel \"%s\""
-
-#: builtin.c:1940
+#: builtin.c:2121
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "referens till icke initierat f鄟t \"$%d\""
-#: builtin.c:2027
+#: builtin.c:2208
msgid "tolower: received non-string argument"
msgstr "tolower: fick ett argument som inte 酺 en str鄚g"
-#: builtin.c:2061
+#: builtin.c:2242
msgid "toupper: received non-string argument"
msgstr "toupper: fick ett argument som inte 酺 en str鄚g"
-#: builtin.c:2097
+#: builtin.c:2278
msgid "atan2: received non-numeric first argument"
msgstr "atan2: fick ett ickenumeriskt f顤sta argument"
-#: builtin.c:2099
+#: builtin.c:2280
msgid "atan2: received non-numeric second argument"
msgstr "atan2: fick ett ickenumeriskt andra argument"
-#: builtin.c:2118
+#: builtin.c:2299
msgid "sin: received non-numeric argument"
msgstr "sin: fick ett ickenumeriskt argument"
-#: builtin.c:2134
+#: builtin.c:2315
msgid "cos: received non-numeric argument"
msgstr "cos: fick ett ickenumeriskt argument"
-#: builtin.c:2187
+#: builtin.c:2368
msgid "srand: received non-numeric argument"
msgstr "srand: fick ett ickenumeriskt argument"
-#: builtin.c:2218
+#: builtin.c:2399
msgid "match: third argument is not an array"
msgstr "match: tredje argumentet 酺 inte en vektor"
-#: builtin.c:2482
+#: builtin.c:2664
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: nollan i tredje argumentet behandlad som en etta"
-#: builtin.c:2775
+#: builtin.c:2957
msgid "lshift: received non-numeric first argument"
msgstr "lshift: fick ett ickenumeriskt f顤sta argument"
-#: builtin.c:2777
+#: builtin.c:2959
msgid "lshift: received non-numeric second argument"
msgstr "lshift: fick ett ickenumeriskt andra argument"
-#: builtin.c:2783
+#: builtin.c:2965
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr "lshift(%lf, %lf): negativa v酺den kommer ge konstiga resultat"
-#: builtin.c:2785
+#: builtin.c:2967
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr "lshift(%lf, %lf): flyttalsv酺den kommer trunkeras"
-#: builtin.c:2787
+#: builtin.c:2969
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr "lshift(%lf, %lf): f顤 stora skiftv酺den kommer ge konstiga resultat"
-#: builtin.c:2812
+#: builtin.c:2994
msgid "rshift: received non-numeric first argument"
msgstr "rshift: fick ett ickenumeriskt f顤sta argument"
-#: builtin.c:2814
+#: builtin.c:2996
msgid "rshift: received non-numeric second argument"
msgstr "rshift: fick ett ickenumeriskt andra argument"
-#: builtin.c:2820
+#: builtin.c:3002
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr "rshift(%lf, %lf): negativa v酺den kommer ge konstiga resultat"
-#: builtin.c:2822
+#: builtin.c:3004
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr "rshift(%lf, %lf): flyttalsv酺den kommer trunkeras"
-#: builtin.c:2824
+#: builtin.c:3006
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr "rshift(%lf, %lf): f顤 stora skiftv酺den kommer ge konstiga resultat"
-#: builtin.c:2849
+#: builtin.c:3031
msgid "and: received non-numeric first argument"
msgstr "and: fick ett ickenumeriskt f顤sta argument"
-#: builtin.c:2851
+#: builtin.c:3033
msgid "and: received non-numeric second argument"
msgstr "and: fick ett ickenumeriskt andra argument"
-#: builtin.c:2857
+#: builtin.c:3039
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr "and(%lf, %lf): negativa v酺den kommer ge konstiga resultat"
-#: builtin.c:2859
+#: builtin.c:3041
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr "and(%lf, %lf): flyttalsv酺den kommer trunkeras"
-#: builtin.c:2884
+#: builtin.c:3066
msgid "or: received non-numeric first argument"
msgstr "or: fick ett ickenumeriskt f顤sta argument"
-#: builtin.c:2886
+#: builtin.c:3068
msgid "or: received non-numeric second argument"
msgstr "or: fick ett ickenumeriskt andra argument"
-#: builtin.c:2892
+#: builtin.c:3074
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr "or(%lf, %lf): negativa v酺den kommer ge konstiga resultat"
-#: builtin.c:2894
+#: builtin.c:3076
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr "or(%lf, %lf): flyttalsv酺den kommer trunkeras"
-#: builtin.c:2922
+#: builtin.c:3102
msgid "xor: received non-numeric first argument"
msgstr "xor: fick ett ickenumeriskt f顤sta argument"
-#: builtin.c:2924
+#: builtin.c:3104
msgid "xor: received non-numeric second argument"
msgstr "xor: fick ett ickenumeriskt andra argument"
-#: builtin.c:2930
+#: builtin.c:3110
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr "xor(%lf, %lf): negativa v酺den kommer ge konstiga resultat"
-#: builtin.c:2932
+#: builtin.c:3112
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr "xor(%lf, %lf): flyttalsv酺den kommer trunkeras"
-#: builtin.c:2956 builtin.c:2962
+#: builtin.c:3136
msgid "compl: received non-numeric argument"
msgstr "compl: fick ett ickenumeriskt argument"
-#: builtin.c:2964
+#: builtin.c:3142
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr "compl(%lf): negativa v酺den kommer ge konstiga resultat"
-#: builtin.c:2966
+#: builtin.c:3144
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr "compl(%lf): flyttalsv酺den kommer trunkeras"
-#: builtin.c:3135
+#: builtin.c:3313
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: \"%s\" 酺 inte en giltig lokalkategori"
-#: eval.c:412
+#: eval.c:395
#, c-format
msgid "unknown nodetype %d"
msgstr "ok鄚d nodtyp %d"
-#: eval.c:423 eval.c:437
+#: eval.c:406 eval.c:420
#, c-format
msgid "unknown opcode %d"
msgstr "ok鄚d op-kod %d"
-#: eval.c:434
+#: eval.c:417
#, c-format
msgid "opcode %s not an operator or keyword"
msgstr "op-kod %s 酺 inte en operator eller ett nyckelord"
-#: eval.c:488
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr "buffert饘erfl鐰 i genflags2str"
-#: eval.c:698
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -996,812 +948,775 @@ msgstr ""
"\t# Funktionsanropsstack:\n"
"\n"
-#: eval.c:725
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
msgstr "\"IGNORECASE\" 酺 en gawk-ut闥ning"
-#: eval.c:754
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr "\"BINMODE\" 酺 en gawk-ut闥ning"
-#: eval.c:812
+#: eval.c:793
#, c-format
msgid "BINMODE value `%s' is invalid, treated as 3"
msgstr "BINMODE-v酺de \"%s\" 酺 ogiltigt, behandlas som 3"
-#: eval.c:902
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "felaktig \"%sFMT\"-specifikation \"%s\""
-#: eval.c:980
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "sl緳 av \"--lint\" p grund av en tilldelning till \"LINT\""
-#: eval.c:1127 eval.c:1777
-#, c-format
-msgid "can't use function name `%s' as variable or array"
-msgstr "kan inte anv鄚da funktionsnamnet \"%s\" som variabel eller vektor"
-
-#: eval.c:1158 eval.c:1789 eval.c:1802
+#: eval.c:1132
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "referens till icke initierat argument \"%s\""
-#: eval.c:1177
+#: eval.c:1133
+#, c-format
+msgid "reference to uninitialized variable `%s'"
+msgstr "referens till icke initierad variabel \"%s\""
+
+#: eval.c:1151
msgid "attempt to field reference from non-numeric value"
msgstr "f顤s闥 att f鄟treferera fr幩 ickenumeriskt v酺de"
-#: eval.c:1179
+#: eval.c:1153
msgid "attempt to field reference from null string"
msgstr "f顤s闥 till f鄟treferens fr幩 en tom str鄚g"
-#: eval.c:1185
+#: eval.c:1161
#, c-format
msgid "attempt to access field %ld"
msgstr "f顤s闥 att komma 廞 f鄟t nummer %ld"
-#: eval.c:1194
+#: eval.c:1170
#, c-format
msgid "reference to uninitialized field `$%ld'"
msgstr "referens till icke initierat f鄟t \"$%ld\""
-#: eval.c:1256
+#: eval.c:1257
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "funktionen \"%s\" anropad med fler argument 鄚 vad som deklarerats"
-#: eval.c:1437
+#: eval.c:1452
#, c-format
msgid "unwind_stack: unexpected type `%s'"
msgstr "unwind_stack: ov鄚tad typ \"%s\""
-#: eval.c:1532
+#: eval.c:1546
msgid "division by zero attempted in `/='"
msgstr "f顤s闥te dividera med noll i \"/=\""
-#: eval.c:1539
+#: eval.c:1553
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "f顤s闥te dividera med noll i \"%%=\""
-#: eval.c:1876 eval.c:2122
-#, c-format
-msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context"
-msgstr "f顤s闥 att anv鄚da vektorn \"%s[\"%.*s\"]\" i skal酺sammanhang"
-
-#: eval.c:1907
-msgid "assignment used in conditional context"
-msgstr "tilldelning anv鄚t i j鄝f顤elsesammanhang"
-
-#: eval.c:1911
-msgid "statement has no effect"
-msgstr "kommandot har ingen effekt"
-
-#: eval.c:2343
-#, c-format
-msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
-msgstr ""
-"forslinga: vektorn \"%s\" 鄚drade storlek fr幩 %ld till %ld under "
-"slingexekvering"
-
-#: eval.c:2458
-#, c-format
-msgid "function called indirectly through `%s' does not exist"
-msgstr "funktionen anropad indirekt genom \"%s\" finns inte"
-
-#: eval.c:2470
-#, c-format
-msgid "function `%s' not defined"
-msgstr "funktionen \"%s\" 酺 inte definierad"
-
-#: eval.c:2511
-#, c-format
-msgid "non-redirected `getline' invalid inside `%s' rule"
-msgstr "icke omdirigerad \"getline\" odefinierad inuti \"%s\"-regel"
-
-#: eval.c:2600
-#, c-format
-msgid "error reading input file `%s': %s"
-msgstr "fel vid l酲ning av indatafilen \"%s\": %s"
-
-#: eval.c:2614
-#, c-format
-msgid "`nextfile' cannot be called from a `%s' rule"
-msgstr "\"nextfile\" kan inte anropas fr幩 en \"%s\"-regel"
-
-#: eval.c:2694
-#, c-format
-msgid "`next' cannot be called from a `%s' rule"
-msgstr "\"next\" kan inte anropas fr幩 en \"%s\"-regel"
-
-#: eval.c:2760
-#, c-format
-msgid "Sorry, don't know how to interpret `%s'"
-msgstr "Tyv酺r, vet inte hur \"%s\" skall tolkas"
-
-#: ext.c:64
+#: ext.c:70
msgid "extensions are not allowed in sandbox mode"
msgstr "ut闥ningar 酺 inte till廞na i sandl嶟el輍e"
-#: ext.c:70 ext.c:75
+#: ext.c:73
msgid "`extension' is a gawk extension"
msgstr "\"extension\" 酺 en gawk-ut闥ning"
-#: ext.c:85
-#, c-format
-msgid "fatal: extension: cannot open `%s' (%s)\n"
+#: ext.c:80
+#, fuzzy, c-format
+msgid "extension: cannot open library `%s' (%s)\n"
msgstr "鐰esdigert: extension: kan inte 鞿pna \"%s\" (%s)\n"
-#: ext.c:94
-#, c-format
+#: ext.c:86
+#, fuzzy, c-format
msgid ""
-"fatal: extension: library `%s': does not define "
-"`plugin_is_GPL_compatible' (%s)\n"
+"extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n"
msgstr ""
"鐰esdigert: extension: biblioteket \"%s\": definierar inte "
"\"plugin_is_GPL_compatible\" (%s)\n"
-#: ext.c:103
-#, c-format
-msgid "fatal: extension: library `%s': cannot call function `%s' (%s)\n"
+#: ext.c:90
+#, fuzzy, c-format
+msgid "extension: library `%s': cannot call function `%s' (%s)\n"
msgstr ""
"鐰esdigert: extension: bibliotek \"%s\": kan inte anropa funktionen \"%s"
"\" (%s)\n"
-#: ext.c:137
+#: ext.c:118
msgid "extension: missing function name"
msgstr "extension: saknar funktionsnamn"
-#: ext.c:142
+#: ext.c:123
#, c-format
msgid "extension: illegal character `%c' in function name `%s'"
msgstr "extension: ogiltigt tecken \"%c\" i funktionsnamnet \"%s\""
-#: ext.c:151
+#: ext.c:131
#, c-format
msgid "extension: can't redefine function `%s'"
msgstr "extension: det g緳 inte att definiera om funktionen \"%s\""
-#: ext.c:155
+#: ext.c:135
#, c-format
msgid "extension: function `%s' already defined"
msgstr "extension: funktionen \"%s\" 酺 redan definierad"
-#: ext.c:160
+#: ext.c:139
#, c-format
msgid "extension: function name `%s' previously defined"
msgstr "extension: funktionsnamnet \"%s\" 酺 definierat sedan tidigare"
-#: ext.c:162
+#: ext.c:141
#, c-format
msgid "extension: can't use gawk built-in `%s' as function name"
msgstr ""
"extension: kan inte anv鄚da gawks inbyggda \"%s\" som ett funktionsnamn"
-#: ext.c:166
+#: ext.c:144
#, c-format
msgid "make_builtin: negative argument count for function `%s'"
msgstr "make_builtin: negativt argumentantal f顤 funktionen \"%s\""
-#: ext.c:269
+#: ext.c:206
#, c-format
msgid "function `%s' defined to take no more than %d argument(s)"
msgstr "funktionen \"%s\" definierades f顤 att ta maximalt %d argument"
-#: ext.c:272
+#: ext.c:209
#, c-format
msgid "function `%s': missing argument #%d"
msgstr "funktionen \"%s\": argument %d saknas"
-#: ext.c:289
+#: ext.c:226
#, c-format
msgid "function `%s': argument #%d: attempt to use scalar as an array"
msgstr "funktionen \"%s\": argument %d: f顤s闥 att anv鄚da skal酺 som vektor"
-#: ext.c:293
+#: ext.c:230
#, c-format
msgid "function `%s': argument #%d: attempt to use array as a scalar"
msgstr "funktionen \"%s\": argument %d: f顤s闥 att anv鄚da vektor som skal酺"
-#: ext.c:306
+#: ext.c:244
msgid "Operation Not Supported"
msgstr "Operationen st鐰s inte"
-#: field.c:328
+#: ext.c:256
+msgid "dynamic loading of library not supported"
+msgstr ""
+
+#: field.c:339
msgid "NF set to negative value"
msgstr "NF satt till ett negativt v酺de"
-#: field.c:951 field.c:958 field.c:962
+#: field.c:962 field.c:969 field.c:973
msgid "split: fourth argument is a gawk extension"
msgstr "split: fj酺de argumentet 酺 en gawk-ut闥ning"
-#: field.c:955
+#: field.c:966
msgid "split: fourth argument is not an array"
msgstr "split: fj酺de argumentet 酺 inte en vektor"
-#: field.c:969
+#: field.c:980
msgid "split: second argument is not an array"
msgstr "split: andra argumentet 酺 inte en vektor"
-#: field.c:973
+#: field.c:984
msgid "split: cannot use the same array for second and fourth args"
msgstr ""
"split: det g緳 inte att anv鄚da samma vektor som andra och fj酺de argument"
-#: field.c:978
+#: field.c:989
msgid "split: cannot use a subarray of second arg for fourth arg"
msgstr ""
"split: det g緳 inte att anv鄚da en delvektor av andra argumentet som fj酺de "
"argument"
-#: field.c:981
+#: field.c:992
msgid "split: cannot use a subarray of fourth arg for second arg"
msgstr ""
"split: det g緳 inte att anv鄚da en delvektor av fj酺de argumentet som andra "
"argument"
-#: field.c:1010
+#: field.c:1021
msgid "split: null string for third arg is a gawk extension"
msgstr "split: tom str鄚g som tredje argument 酺 en gawk-ut闥ning"
-#: field.c:1050
+#: field.c:1061
msgid "patsplit: fourth argument is not an array"
msgstr "patsplit: fj酺de argumentet 酺 inte en vektor"
-#: field.c:1055
+#: field.c:1066
msgid "patsplit: second argument is not an array"
msgstr "patsplit: andra argumentet 酺 inte en vektor"
-#: field.c:1061
+#: field.c:1072
msgid "patsplit: third argument must be non-null"
msgstr "patsplit: tredje argumentet f緳 inte vara tomt"
-#: field.c:1065
+#: field.c:1076
msgid "patsplit: cannot use the same array for second and fourth args"
msgstr ""
"patsplit: det g緳 inte att anv鄚da samma vektor som andra och fj酺de argument"
-#: field.c:1070
+#: field.c:1081
msgid "patsplit: cannot use a subarray of second arg for fourth arg"
msgstr ""
"patsplit: det g緳 inte att anv鄚da en delvektor av andra argumentet som "
"fj酺de argument"
-#: field.c:1073
+#: field.c:1084
msgid "patsplit: cannot use a subarray of fourth arg for second arg"
msgstr ""
"patsplit: det g緳 inte att anv鄚da en delvektor av fj酺de argumentet som "
"andra argument"
-#: field.c:1110
+#: field.c:1122
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "\"FIELDWIDTHS\" 酺 en gawk-ut闥ning"
-#: field.c:1173
+#: field.c:1186
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr "ogiltigt FIELDWITHS-v酺de i n酺heten av \"%s\""
-#: field.c:1246
+#: field.c:1259
msgid "null string for `FS' is a gawk extension"
msgstr "tom str鄚g som \"FS\" 酺 en gawk-ut闥ning"
-#: field.c:1250
+#: field.c:1263
msgid "old awk does not support regexps as value of `FS'"
msgstr "gamla awk st鐰er inte regulj酺a uttryck som v酺den p \"FS\""
-#: field.c:1369
+#: field.c:1382
msgid "`FPAT' is a gawk extension"
msgstr "\"FPAT\" 酺 en gawk-ut闥ning"
-#: getopt.c:574 getopt.c:590
-#, c-format
-msgid "%s: option '%s' is ambiguous\n"
+#: getopt.c:604 getopt.c:633
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
msgstr "%s: flaggan \"%s\" 酺 tvetydig\n"
-#: getopt.c:623 getopt.c:627
+#: getopt.c:679 getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: flaggan \"--%s\" till廞er inte n嶓ot argument\n"
-#: getopt.c:636 getopt.c:641
+#: getopt.c:692 getopt.c:697
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: flaggan \"%c%s\" till廞er inte n嶓ot argument\n"
-#: getopt.c:684 getopt.c:703
+#: getopt.c:740 getopt.c:759
#, c-format
msgid "%s: option '--%s' requires an argument\n"
msgstr "%s: flaggan \"%s\" kr銥er ett argument\n"
-#: getopt.c:741 getopt.c:744
+#: getopt.c:797 getopt.c:800
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: ok鄚d flagga \"--%s\"\n"
-#: getopt.c:752 getopt.c:755
+#: getopt.c:808 getopt.c:811
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: ok鄚d flagga \"%c%s\"\n"
-#: getopt.c:804 getopt.c:807
+#: getopt.c:860 getopt.c:863
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: ogiltig flagga -- \"%c\"\n"
-#: getopt.c:857 getopt.c:874 getopt.c:1082 getopt.c:1100
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s: flaggan kr銥er ett argument -- \"%c\"\n"
-#: getopt.c:930 getopt.c:946
+#: getopt.c:989 getopt.c:1005
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: flaggan \"-W %s\" 酺 tvetydig\n"
-#: getopt.c:970 getopt.c:988
+#: getopt.c:1029 getopt.c:1047
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: flaggan \"-W %s\" till廞er inte n嶓ot argument\n"
-#: getopt.c:1009 getopt.c:1027
+#: getopt.c:1068 getopt.c:1086
#, c-format
msgid "%s: option '-W %s' requires an argument\n"
msgstr "%s: flaggan \"-W %s\" kr銥er ett argument\n"
-#: io.c:280
+#: io.c:326
#, c-format
msgid "command line argument `%s' is a directory: skipped"
msgstr "kommandoradsargumentet \"%s\" 酺 en katalog: hoppas 饘er"
-#: io.c:283 io.c:385
+#: io.c:329 io.c:438
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "kan inte 鞿pna filen \"%s\" f顤 l酲ning (%s)"
-#: io.c:501
+#: io.c:568
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "st鄚gning av fd %d (\"%s\") misslyckades (%s)"
-#: io.c:578
+#: io.c:645
msgid "redirection not allowed in sandbox mode"
msgstr "omdirigering 酺 inte till廞en i sandl嶟el輍e"
-#: io.c:612
+#: io.c:679
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "uttrycket i \"%s\"-omdirigering har bara numeriskt v酺de"
-#: io.c:618
+#: io.c:685
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "uttrycket f顤 \"%s\"-omdirigering har en tom str鄚g som v酺de"
-#: io.c:624
+#: io.c:690
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"filnamnet \"%s\" f顤 \"%s\"-omdirigering kan vara resultatet av ett logiskt "
"uttryck"
-#: io.c:667
+#: io.c:733
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "on鐰ig blandning av \">\" och \">>\" f顤 filen \"%.*s\""
-#: io.c:720
+#: io.c:786
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "kan inte 鞿pna r顤et \"%s\" f顤 utmatning (%s)"
-#: io.c:730
+#: io.c:796
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "kan inte 鞿pna r顤et \"%s\" f顤 inmatning (%s)"
-#: io.c:753
+#: io.c:819
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr "kan inte 鞿pna tv彉輍sr顤et \"%s\" f顤 in-/utmatning (%s)"
-#: io.c:835
+#: io.c:900
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "kan inte dirigera om fr幩 \"%s\" (%s)"
-#: io.c:838
+#: io.c:903
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "kan inte dirigera om till \"%s\" (%s)"
-#: io.c:889
+#: io.c:954
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"n嶟de systembegr鄚sningen f顤 鞿pna filer: b顤jar multiplexa fildeskriptorer"
-#: io.c:905
+#: io.c:970
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "st鄚gning av \"%s\" misslyckades (%s)"
-#: io.c:913
+#: io.c:978
msgid "too many pipes or input files open"
msgstr "f顤 m幩ga r顤 eller indatafiler 鞿pna"
-#: io.c:935
+#: io.c:1000
msgid "close: second argument must be `to' or `from'"
msgstr "close: andra argumentet m廛te vara \"to\" eller \"from\""
-#: io.c:952
+#: io.c:1017
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr "close: \"%.*s\" 酺 inte en 鞿pen fil, r顤 eller koprocess"
-#: io.c:957
+#: io.c:1022
msgid "close of redirection that was never opened"
msgstr "st鄚gning av omdirigering som aldrig 鞿pnades"
-#: io.c:1054
+#: io.c:1120
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: omdirigeringen \"%s\" 鞿pnades inte med \"|&\", andra argumentet "
"ignorerat"
-#: io.c:1070
+#: io.c:1137
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "felstatus (%d) fr幩 r顤st鄚gning av \"%s\" (%s)"
-#: io.c:1073
+#: io.c:1140
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "felstatus (%d) fr幩 filst鄚gning av \"%s\" (%s)"
-#: io.c:1093
+#: io.c:1160
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "ingen explicit st鄚gning av uttaget \"%s\" tillhandah嶚len"
-#: io.c:1096
+#: io.c:1163
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "ingen explicit st鄚gning av koprocessen \"%s\" tillhandah嶚len"
-#: io.c:1099
+#: io.c:1166
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "ingen explicit st鄚gning av r顤et \"%s\" tillhandah嶚len"
-#: io.c:1102
+#: io.c:1169
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "ingen explicit st鄚gning av filen \"%s\" tillhandah嶚len"
-#: io.c:1130 io.c:1185 main.c:793 main.c:830
+#: io.c:1197 io.c:1252 main.c:825 main.c:862
#, c-format
msgid "error writing standard output (%s)"
msgstr "fel vid skrivning till standard ut (%s)"
-#: io.c:1134 io.c:1190
+#: io.c:1201 io.c:1257
#, c-format
msgid "error writing standard error (%s)"
msgstr "fel vid skrivning till standard fel (%s)"
-#: io.c:1142
+#: io.c:1209
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "r顤spolning av \"%s\" misslyckades (%s)"
-#: io.c:1145
+#: io.c:1212
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "koprocesspolning av r顤et till \"%s\" misslyckades (%s)"
-#: io.c:1148
+#: io.c:1215
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "filspolning av \"%s\" misslyckades (%s)"
-#: io.c:1263
+#: io.c:1329
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr "lokal port %s ogiltig i \"/inet\""
-#: io.c:1280
+#: io.c:1347
#, c-format
msgid "remote host and port information (%s, %s) invalid"
msgstr "ogiltig information (%s, %s) f顤 fj酺rv酺d och fj酺rport"
-#: io.c:1432
+#: io.c:1499
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr ""
"inget (k鄚t) protokoll tillhandah嶚let i det speciella filnamnet \"%s\""
-#: io.c:1446
+#: io.c:1513
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "speciellt filnamn \"%s\" 酺 ofullst鄚digt"
-#: io.c:1463
+#: io.c:1530
msgid "must supply a remote hostname to `/inet'"
msgstr "m廛te tillhandah嶚la ett fj酺rdatornamn till \"/inet\""
-#: io.c:1481
+#: io.c:1548
msgid "must supply a remote port to `/inet'"
msgstr "m廛te tillhandah嶚la en fj酺rport till \"/inet\""
-#: io.c:1527
+#: io.c:1594
msgid "TCP/IP communications are not supported"
msgstr "TCP/IP-kommunikation st鐰s inte"
-#: io.c:1694
+#: io.c:1764
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "kunde inte 鞿pna \"%s\", l輍e \"%s\""
-#: io.c:1748
+#: io.c:1814
#, c-format
msgid "close of master pty failed (%s)"
msgstr "st鄚gning av huvudpty misslyckades (%s)"
-#: io.c:1750 io.c:1918 io.c:2075
+#: io.c:1816 io.c:1984 io.c:2145
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "st鄚gning av standard ut i barnet misslyckades (%s)"
-#: io.c:1753
+#: io.c:1819
#, 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:1755 io.c:1923
+#: io.c:1821 io.c:1989
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "st鄚gning av standard in i barnet misslyckades (%s)"
-#: io.c:1758
+#: io.c:1824
#, 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:1760 io.c:1781
+#: io.c:1826 io.c:1847
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "st鄚gning av slavpty misslyckades (%s)"
-#: io.c:1859 io.c:1921 io.c:2053 io.c:2078
+#: io.c:1925 io.c:1987 io.c:2122 io.c:2148
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr "flyttande av r顤 till standard ut i barnet misslyckades (dup: %s)"
-#: io.c:1866 io.c:1926
+#: io.c:1932 io.c:1992
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr "flyttande av r顤 till standard in i barnet misslyckades (dup: %s)"
-#: io.c:1886 io.c:2068
+#: io.c:1952 io.c:2138
msgid "restoring stdout in parent process failed\n"
msgstr "廞erst鄟lande av standard ut i f顤鄟derprocessen misslyckades\n"
-#: io.c:1894
+#: io.c:1960
msgid "restoring stdin in parent process failed\n"
msgstr "廞erst鄟lande av standard in i f顤鄟derprocessen misslyckades\n"
-#: io.c:1929 io.c:2080 io.c:2094
+#: io.c:1995 io.c:2150 io.c:2164
#, c-format
msgid "close of pipe failed (%s)"
msgstr "st鄚gning av r顤et misslyckades (%s)"
-#: io.c:1974
+#: io.c:2040
msgid "`|&' not supported"
msgstr "\"|&\" st鐰s inte"
-#: io.c:2040
+#: io.c:2107
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "kan inte 鞿pna r顤et \"%s\" (%s)"
-#: io.c:2088
+#: io.c:2158
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "kan inte skapa barnprocess f顤 \"%s\" (fork: %s)"
-#: io.c:2521
+#: io.c:2637
#, c-format
msgid "data file `%s' is empty"
msgstr "datafilen \"%s\" 酺 tom"
-#: io.c:2562 io.c:2570
+#: io.c:2678 io.c:2686
msgid "could not allocate more input memory"
msgstr "kunde inte allokera mer indataminne"
-#: io.c:3128
+#: io.c:3236
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "flerteckensv酺det av \"RS\" 酺 en gawk-ut闥ning"
-#: io.c:3233
+#: io.c:3326
msgid "IPv6 communication is not supported"
msgstr "IPv6-kommunikation st鐰s inte"
-#: main.c:364
+#: main.c:355
msgid "`-m[fr]' option irrelevant in gawk"
msgstr "\"-m[fr]\"-flaggan 酺 irrelevant i gawk"
-#: main.c:366
+#: main.c:357
msgid "-m option usage: `-m[fr] nnn'"
msgstr "-m-flaggans anv鄚dning: \"-m[fr] nnn\""
-#: main.c:389
+#: main.c:386
msgid "empty argument to `-e/--source' ignored"
msgstr "tomt argument till \"-e/--source\" ignorerat"
-#: main.c:460
+#: main.c:472
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: flaggan \"-W %s\" ok鄚d, ignorerad\n"
-#: main.c:513
+#: main.c:518
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: flaggan kr銥er ett argument -- %c\n"
-#: main.c:534
+#: main.c:539
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr "milj饘ariabeln \"POSIXLY_CORRECT\" satt: sl緳 p \"--posix\""
-#: main.c:540
+#: main.c:545
msgid "`--posix' overrides `--traditional'"
msgstr "\"--posix\" 廛idos酹ter \"--traditional\""
-#: main.c:551
+#: main.c:556
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr "\"--posix\"/\"--traditional\" 廛idos酹ter \"--non-decimal-data\""
-#: main.c:555
+#: main.c:560
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr "att k顤a %s setuid root kan vara ett s鄢erhetsproblem"
-#: main.c:560
+#: main.c:565
msgid "`--posix' overrides `--binary'"
msgstr "\"--posix\" 廛idos酹ter \"--binary\""
-#: main.c:611
+#: main.c:623
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "kan inte s酹ta bin酺l輍e p standard in (%s)"
-#: main.c:614
+#: main.c:626
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "kan inte s酹ta bin酺l輍e p standard ut (%s)"
-#: main.c:616
+#: main.c:628
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "kan inte s酹ta bin酺l輍e p standard fel (%s)"
-#: main.c:655
+#: main.c:679
msgid "no program text at all!"
msgstr "ingen programtext alls!"
-#: main.c:733
+#: main.c:763
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr ""
"Anv鄚dning: %s [POSIX- eller GNU-stilsflaggor] -f progfil [--] fil ...\n"
-#: main.c:735
+#: main.c:765
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr "Anv鄚dning: %s [POSIX- eller GNU-stilsflaggor] %cprogram%c fil ...\n"
-#: main.c:740
+#: main.c:770
msgid "POSIX options:\t\tGNU long options: (standard)\n"
msgstr "POSIX-flaggor:\t\tGNU l幩ga flaggor: (standard)\n"
-#: main.c:741
+#: main.c:771
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f progfil\t\t--file=progfil\n"
-#: main.c:742
+#: main.c:772
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F fs\t\t\t--field-separator=fs\n"
-#: main.c:743
+#: main.c:773
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v var=v酺de\t\t--assign=var=v酺de\n"
-#: main.c:744
+#: main.c:774
msgid "Short options:\t\tGNU long options: (extensions)\n"
msgstr "Korta flaggor:\t\tGNU l幩ga flaggor: (ut闥ningar)\n"
-#: main.c:745
+#: main.c:775
msgid "\t-b\t\t\t--characters-as-bytes\n"
msgstr "\t-b\t\t\t--characters-as-bytes\n"
-#: main.c:746
+#: main.c:776
msgid "\t-c\t\t\t--traditional\n"
msgstr "\t-c\t\t\t--traditional\n"
-#: main.c:747
+#: main.c:777
msgid "\t-C\t\t\t--copyright\n"
msgstr "\t-C\t\t\t--copyright\n"
-#: main.c:748
+#: main.c:778
msgid "\t-d[file]\t\t--dump-variables[=file]\n"
msgstr "\t-d[fil]\t\t\t--dump-variables[=fil]\n"
-#: main.c:749
+#: main.c:779
+#, fuzzy
+msgid "\t-D[file]\t\t--debug[=file]\n"
+msgstr "\t-p[fil]\t\t\t--profile[=fil]\n"
+
+#: main.c:780
msgid "\t-e 'program-text'\t--source='program-text'\n"
msgstr "\t-e 'programtext'\t--source='programtext'\n"
-#: main.c:750
+#: main.c:781
msgid "\t-E file\t\t\t--exec=file\n"
msgstr "\t-E fil\t\t\t--exec=fil\n"
-#: main.c:751
+#: main.c:782
msgid "\t-g\t\t\t--gen-pot\n"
msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:752
+#: main.c:783
msgid "\t-h\t\t\t--help\n"
msgstr "\t-h\t\t\t--help\n"
-#: main.c:753
+#: main.c:784
+msgid "\t-l library\t\t--load=library\n"
+msgstr ""
+
+#: main.c:785
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
msgstr "\t-L [fatal]\t\t--lint[=fatal]\n"
-#: main.c:754
+#: main.c:786
msgid "\t-n\t\t\t--non-decimal-data\n"
msgstr "\t-n\t\t\t--non-decimal-data\n"
-#: main.c:755
+#: main.c:787
+#, fuzzy
+msgid "\t-M\t\t\t--bignum\n"
+msgstr "\t-g\t\t\t--gen-pot\n"
+
+#: main.c:788
msgid "\t-N\t\t\t--use-lc-numeric\n"
msgstr "\t-N\t\t\t--use-lc-numeric\n"
-#: main.c:756
+#: main.c:789
+#, fuzzy
+msgid "\t-o[file]\t\t--pretty-print[=file]\n"
+msgstr "\t-p[fil]\t\t\t--profile[=fil]\n"
+
+#: main.c:790
msgid "\t-O\t\t\t--optimize\n"
msgstr "\t-O\t\t\t--optimize\n"
-#: main.c:757
+#: main.c:791
msgid "\t-p[file]\t\t--profile[=file]\n"
msgstr "\t-p[fil]\t\t\t--profile[=fil]\n"
-#: main.c:758
+#: main.c:792
msgid "\t-P\t\t\t--posix\n"
msgstr "\t-P\t\t\t--posix\n"
-#: main.c:759
+#: main.c:793
msgid "\t-r\t\t\t--re-interval\n"
msgstr "\t-r\t\t\t--re-interval\n"
-#: main.c:761
-msgid "\t-R file\t\t\t--command=file\n"
-msgstr "\t-R file\t\t\t--command=file\n"
-
-#: main.c:762
+#: main.c:794
msgid "\t-S\t\t\t--sandbox\n"
msgstr "\t-S\t\t\t--sandbox\n"
-#: main.c:763
+#: main.c:795
msgid "\t-t\t\t\t--lint-old\n"
msgstr "\t-t\t\t\t--lint-old\n"
-#: main.c:764
+#: main.c:796
msgid "\t-V\t\t\t--version\n"
msgstr "\t-V\t\t\t--version\n"
-#: main.c:766
+#: main.c:798
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:769
+#: main.c:801
msgid "\t-Y\t\t--parsedebug\n"
msgstr "\t-Y\t\t--parsedebug\n"
@@ -1810,7 +1725,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:778
+#: main.c:810
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -1824,7 +1739,7 @@ msgstr ""
"Rapportera synpunkter p 饘ers酹tningen till <tp-sv@listor.tp-sv.se>.\n"
"\n"
-#: main.c:782
+#: main.c:814
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -1834,7 +1749,7 @@ msgstr ""
"Normalt l酲er det fr幩 standard in och skriver till standard ut.\n"
"\n"
-#: main.c:786
+#: main.c:818
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -1844,7 +1759,7 @@ msgstr ""
"\tgawk '{ sum += $1 }; END { print sum }' fil\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:806
+#: main.c:838
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1863,7 +1778,7 @@ msgstr ""
"n嶓on senare version.\n"
"\n"
-#: main.c:814
+#: main.c:846
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"
@@ -1877,7 +1792,7 @@ msgstr ""
"General Public License f顤 ytterligare information.\n"
"\n"
-#: main.c:820
+#: main.c:852
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"
@@ -1885,100 +1800,95 @@ msgstr ""
"Du b顤 ha f廞t en kopia av GNU General Public License tillsammans\n"
"med detta program. Om inte, se http//www.gnu.org/liceences/.\n"
-#: main.c:855
+#: main.c:887
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft s酹ter inte FS till tab i POSIX-awk"
-#: main.c:1089
+#: main.c:1133
#, c-format
msgid "unknown value for field spec: %d\n"
msgstr "ok鄚t v酺de till f鄟tspecifikation: %d\n"
-#: main.c:1170
+#: main.c:1214
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
"\n"
msgstr "%s: Argumentet \"%s\" till \"-v\" 酺 inte p formatet \"var=v酺de\"\n"
-#: main.c:1196
+#: main.c:1240
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "\"%s\" 酺 inte ett giltigt variabelnamn"
-#: main.c:1199
+#: main.c:1243
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr "\"%s\" 酺 inte ett variabelnamn, letar efter filen \"%s=%s\""
-#: main.c:1203
+#: main.c:1247
#, c-format
msgid "cannot use gawk builtin `%s' as variable name"
msgstr "kan inte anv鄚da gawks inbyggda \"%s\" som ett funktionsnamn"
-#: main.c:1208
+#: main.c:1252
#, c-format
msgid "cannot use function `%s' as variable name"
msgstr "kan inte anv鄚da funktionen \"%s\" som variabelnamn"
-#: main.c:1261
+#: main.c:1305
msgid "floating point exception"
msgstr "flyttalsundantag"
-#: main.c:1268
+#: main.c:1312
msgid "fatal error: internal error"
msgstr "鐰esdigert fel: internt fel"
-#: main.c:1283
+#: main.c:1327
msgid "fatal error: internal error: segfault"
msgstr "鐰esdigert fel: internt fel: segmenteringsfel"
-#: main.c:1295
+#: main.c:1339
msgid "fatal error: internal error: stack overflow"
msgstr "鐰esdigert fel: internt fel: stackspill"
-#: main.c:1345
+#: main.c:1393
#, c-format
msgid "no pre-opened fd %d"
msgstr "ingen f顤鞿pnad fd %d"
-#: main.c:1352
+#: main.c:1400
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "kunde inte f顤鞿pna /dev/null f顤 fd %d"
-#: main.c:1375 main.c:1384
-#, c-format
-msgid "could not find groups: %s"
-msgstr "kunde inte hitta grupper: %s"
-
-#: msg.c:63
+#: msg.c:61
#, c-format
msgid "cmd. line:"
msgstr "kommandorad:"
-#: msg.c:107
+#: msg.c:121
msgid "error: "
msgstr "fel: "
-#: node.c:406
+#: node.c:436
msgid "backslash at end of string"
msgstr "omv鄚t snedstreck i slutet av str鄚gen"
-#: node.c:517
+#: node.c:520
#, c-format
msgid "old awk does not support the `\\%c' escape sequence"
msgstr "gamla awk st鐰er inte kontrollsekvensen \"\\%c\""
-#: node.c:568
+#: node.c:571
msgid "POSIX does not allow `\\x' escapes"
msgstr "POSIX till廞er inte \"\\x\"-kontrollsekvenser"
-#: node.c:574
+#: node.c:577
msgid "no hex digits in `\\x' escape sequence"
msgstr "inga hexadecimala siffror i \"\\x\"-kontrollsekvenser"
-#: node.c:596
+#: node.c:599
#, c-format
msgid ""
"hex escape \\x%.*s of %d characters probably not interpreted the way you "
@@ -1987,12 +1897,12 @@ msgstr ""
"hexkod \\x%.*s med %d tecken tolkas f顤modligen inte p det s酹t du "
"f顤v鄚tar dig"
-#: node.c:611
+#: node.c:614
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr "kontrollsekvensen \"\\%c\" behandlad som bara \"%c\""
-#: node.c:750
+#: node.c:759
msgid ""
"Invalid multibyte data detected. There may be a mismatch between your data "
"and your locale."
@@ -2010,16 +1920,16 @@ msgstr "%s %s \"%s\": kunde inte h鄝ta fb-flaggor: (fcntl F_GETFD: %s)"
msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
msgstr "%s %s \"%s\": kunde inte s酹ta st鄚g-vid-exec (fcntl F_SETFD: %s)"
-#: profile.c:83
+#: profile.c:69
#, c-format
msgid "could not open `%s' for writing: %s"
msgstr "kunde inte 鞿pna \"%s\" f顤 skrivning: %s"
-#: profile.c:85
+#: profile.c:71
msgid "sending profile to standard error"
msgstr "skickar profilen till standard fel"
-#: profile.c:203
+#: profile.c:187
#, c-format
msgid ""
"\t# %s block(s)\n"
@@ -2028,7 +1938,7 @@ msgstr ""
"\t# %s-block\n"
"\n"
-#: profile.c:208
+#: profile.c:192
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -2037,17 +1947,22 @@ msgstr ""
"\t# Regel/regler\n"
"\n"
-#: profile.c:279
+#: profile.c:266
#, c-format
msgid "internal error: %s with null vname"
msgstr "internt fel: %s med null vname"
-#: profile.c:952
+#: profile.c:528
+#, fuzzy
+msgid "internal error: builtin with null fname"
+msgstr "internt fel: %s med null vname"
+
+#: profile.c:943
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# gawkprofil, skapad %s\n"
-#: profile.c:1331
+#: profile.c:1328
#, c-format
msgid ""
"\n"
@@ -2056,94 +1971,165 @@ msgstr ""
"\n"
"\t# Funktioner, listade alfabetiskt\n"
-#: profile.c:1370
+#: profile.c:1366
#, c-format
msgid "redir2str: unknown redirection type %d"
msgstr "redir2str: ok鄚d omdirigeringstyp %d"
-#: re.c:572
-#, fuzzy, c-format
+#: re.c:571
+#, c-format
msgid "range of the form `[%c-%c]' is locale dependent"
msgstr "intervall p formen \"[%c-%c]\" 酺 lokalberoende"
-#: re.c:599
+#: re.c:598
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
msgstr ""
"komponenten \"%.*s\" i regulj酺uttryck skall f顤modligen vara \"[%.*s]\""
-#: regcomp.c:132
+#: regcomp.c:131
msgid "Success"
msgstr "Lyckades"
-#: regcomp.c:135
+#: regcomp.c:134
msgid "No match"
msgstr "Misslyckades"
-#: regcomp.c:138
+#: regcomp.c:137
msgid "Invalid regular expression"
msgstr "Ogiltigt regulj酺t uttryck"
-#: regcomp.c:141
+#: regcomp.c:140
msgid "Invalid collation character"
msgstr "Ogiltigt kollationeringstecken"
-#: regcomp.c:144
+#: regcomp.c:143
msgid "Invalid character class name"
msgstr "Ogiltigt teckenklassnamn"
-#: regcomp.c:147
+#: regcomp.c:146
msgid "Trailing backslash"
msgstr "Eftersl鄡ande omv鄚t snedstreck"
-#: regcomp.c:150
+#: regcomp.c:149
msgid "Invalid back reference"
msgstr "Ogiltig bak廞rerefens"
-#: regcomp.c:153
+#: regcomp.c:152
msgid "Unmatched [ or [^"
msgstr "Obalanserad [ eller [^"
-#: regcomp.c:156
+#: regcomp.c:155
msgid "Unmatched ( or \\("
msgstr "Obalanserad ( eller \\("
-#: regcomp.c:159
+#: regcomp.c:158
msgid "Unmatched \\{"
msgstr "Obalanserad \\{"
-#: regcomp.c:162
+#: regcomp.c:161
msgid "Invalid content of \\{\\}"
msgstr "Ogiltigt inneh嶚l i \\{\\}"
-#: regcomp.c:165
+#: regcomp.c:164
msgid "Invalid range end"
msgstr "Ogiltigt omf幩gsslut"
-#: regcomp.c:168
+#: regcomp.c:167
msgid "Memory exhausted"
msgstr "Minnet slut"
-#: regcomp.c:171
+#: regcomp.c:170
msgid "Invalid preceding regular expression"
msgstr "Ogiltigt f顤eg嶒nde regulj酺t uttryck"
-#: regcomp.c:174
+#: regcomp.c:173
msgid "Premature end of regular expression"
msgstr "F顤 tidigt slut p regulj酺t uttryck"
-#: regcomp.c:177
+#: regcomp.c:176
msgid "Regular expression too big"
msgstr "Regulj酺t uttryck f顤 stort"
-#: regcomp.c:180
+#: regcomp.c:179
msgid "Unmatched ) or \\)"
msgstr "Obalanserad ) eller \\)"
-#: regcomp.c:701
+#: regcomp.c:700
msgid "No previous regular expression"
msgstr "Inget f顤eg嶒nde regulj酺t uttryck"
-#~ msgid "assignment is not allowed to result of builtin function"
+#~ msgid "attempt to use function `%s' as an array"
+#~ msgstr "f顤s闥 att anv鄚da funktionen \"%s\" som vektor"
+
+#~ msgid "reference to uninitialized element `%s[\"%.*s\"]'"
+#~ msgstr "referens till oinitierat element \"%s[\"%.*s\"]\""
+
+#~ msgid "subscript of array `%s' is null string"
+#~ msgstr "index i vektorn \"%s\" 酺 en tom str鄚g"
+
+#~ msgid "%s: empty (null)\n"
+#~ msgstr "%s: tom (null)\n"
+
+#~ msgid "%s: empty (zero)\n"
+#~ msgstr "%s: tom (noll)\n"
+
+#~ msgid "%s: table_size = %d, array_size = %d\n"
+#~ msgstr "%s: tabellstorlek = %d, vektorstorlek = %d\n"
+
+#~ msgid "%s: is parameter\n"
+#~ msgstr "%s: 酺 en parameter\n"
+
+#~ msgid "%s: array_ref to %s\n"
+#~ msgstr "%s: vektorreferens till %s\n"
+
+#~ msgid "use of non-array as array"
+#~ msgstr "icke-vektor anv鄚ds som vektor"
+
+#~ msgid "can't use function name `%s' as variable or array"
+#~ msgstr "kan inte anv鄚da funktionsnamnet \"%s\" som variabel eller vektor"
+
+#~ msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context"
+#~ msgstr "f顤s闥 att anv鄚da vektorn \"%s[\"%.*s\"]\" i skal酺sammanhang"
+
+#~ msgid "assignment used in conditional context"
+#~ msgstr "tilldelning anv鄚t i j鄝f顤elsesammanhang"
+
+#~ msgid "statement has no effect"
+#~ msgstr "kommandot har ingen effekt"
+
+#~ msgid ""
+#~ "for loop: array `%s' changed size from %ld to %ld during loop execution"
#~ msgstr ""
-#~ "det 酺 inte till廞et att tilldela resultatet fr幩 en inbyggd funktion"
+#~ "forslinga: vektorn \"%s\" 鄚drade storlek fr幩 %ld till %ld under "
+#~ "slingexekvering"
+
+#~ msgid "function called indirectly through `%s' does not exist"
+#~ msgstr "funktionen anropad indirekt genom \"%s\" finns inte"
+
+#~ msgid "function `%s' not defined"
+#~ msgstr "funktionen \"%s\" 酺 inte definierad"
+
+#~ msgid "non-redirected `getline' invalid inside `%s' rule"
+#~ msgstr "icke omdirigerad \"getline\" odefinierad inuti \"%s\"-regel"
+
+#~ msgid "error reading input file `%s': %s"
+#~ msgstr "fel vid l酲ning av indatafilen \"%s\": %s"
+
+#~ msgid "`nextfile' cannot be called from a `%s' rule"
+#~ msgstr "\"nextfile\" kan inte anropas fr幩 en \"%s\"-regel"
+
+#~ msgid "`exit' cannot be called in the current context"
+#~ msgstr "\"exit\" kan inte anropas i det aktuella sammanhanget"
+
+#~ msgid "`next' cannot be called from a `%s' rule"
+#~ msgstr "\"next\" kan inte anropas fr幩 en \"%s\"-regel"
+
+#~ msgid "Sorry, don't know how to interpret `%s'"
+#~ msgstr "Tyv酺r, vet inte hur \"%s\" skall tolkas"
+
+#~ msgid "\t-R file\t\t\t--command=file\n"
+#~ msgstr "\t-R file\t\t\t--command=file\n"
+
+#~ msgid "could not find groups: %s"
+#~ msgstr "kunde inte hitta grupper: %s"
diff --git a/po/vi.gmo b/po/vi.gmo
new file mode 100644
index 00000000..bf8cc497
--- /dev/null
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index 8b0cedb6..4cc35ef1 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -1,661 +1,733 @@
# Vietnamese translation for Gawk.
-# Copyright 穢 2007 Free Software Foundation, Inc.
-# Clytie Siddall <clytie@riverland.net.au>, 2005-2007.
+# Copyright 穢 2012 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gawk package.
+# Clytie Siddall <clytie@riverland.net.au>, 2005-2010.
+# Tr廕吵 Ng廙c Qu璽n <vnwildman@gmail.com>, 2012.
#
msgid ""
msgstr ""
-"Project-Id-Version: gawk 3.1.6\n"
+"Project-Id-Version: gawk-4.0.0h\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2011-03-18 12:00+0200\n"
-"PO-Revision-Date: 2007-11-30 22:29+1030\n"
-"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
+"POT-Creation-Date: 2012-04-27 10:06+0300\n"
+"PO-Revision-Date: 2012-04-04 08:01+0700\n"
+"Last-Translator: Tr廕吵 Ng廙c Qu璽n <vnwildman@gmail.com>\n"
"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
"Language: vi\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: LocFactoryEditor 1.7b1\n"
+"X-Generator: LocFactoryEditor 1.8\n"
+"X-Poedit-Language: Vietnamese\n"
+"X-Poedit-Country: VIET NAM\n"
+"X-Poedit-SourceCharset: utf-8\n"
-#: array.c:103
+#: array.c:266
#, c-format
msgid "from %s"
msgstr "t廙 %s"
-#: array.c:267
-#, fuzzy
+#: array.c:366
msgid "attempt to use a scalar value as array"
-msgstr "c廙 d羅ng i廙u c繫 hが廙ng 竄 %s 罈 l m廕τg"
-
-#: array.c:270
-#, c-format
-msgid "attempt to use function `%s' as an array"
-msgstr "c廙 g廕疸g d羅ng ch廙妾 nng 竄 %s 罈 nhが m廕τg"
+msgstr "c廙 s廙 d廙叩g gi獺 tr廙 v繫 hが廙ng nhが l m廙t m廕τg"
-#: array.c:273
+#: array.c:368
#, c-format
msgid "attempt to use scalar parameter `%s' as an array"
msgstr "c廙 g廕疸g d羅ng tham s廙 v繫 hが廙ng 竄 %s 罈 nhが l m廕τg"
-#: array.c:276 eval.c:2013
-#, fuzzy, c-format
+#: array.c:371
+#, c-format
msgid "attempt to use scalar `%s' as an array"
-msgstr "c廙 d羅ng i廙u c繫 hが廙ng 竄 %s 罈 l m廕τg"
+msgstr "c廙 d羅ng 竄%s罈 v繫 hが廙ng nhが l m廕τg"
-#: array.c:321 array.c:648 builtin.c:75 builtin.c:555 builtin.c:597
-#: builtin.c:610 builtin.c:1016 builtin.c:1028 eval.c:1381 eval.c:1385
-#: eval.c:1710 eval.c:1958 eval.c:2026 eval.c:2274
+#: array.c:418 array.c:584 builtin.c:85 builtin.c:1560 builtin.c:1602
+#: builtin.c:1615 builtin.c:2041 builtin.c:2053 eval.c:1109 eval.c:1113
+#: eval.c:1508
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "c廙 g廕疸g d羅ng m廕τg 竄 %s 罈 trong m廙t ng廙 c廕τh v繫 hが廙ng"
-#: array.c:570
-#, fuzzy, c-format
-msgid "reference to uninitialized element `%s[\"%.*s\"]'"
-msgstr "tham chi廕簑 廕積 ph廕吵 t廙 chがa s廙 kh廙i 竄 %s[\"%s\"] 罈"
-
-#: array.c:576
-#, c-format
-msgid "subscript of array `%s' is null string"
-msgstr "ch廙 in dが廙i m廕τg 竄%s罈 l chu廙i r廙ng"
-
-#: array.c:684
+#: array.c:591
#, c-format
msgid "delete: index `%s' not in array `%s'"
-msgstr "delete: (x籀a b廙) s廙 m觼 竄 %s 罈 kh繫ng ph廕ξ n廕彩 trong m廕τg 竄 %s 罈"
+msgstr "delete: (xo獺) s廙 m觼 竄 %s 罈 kh繫ng ph廕ξ n廕彩 trong m廕τg 竄 %s 罈"
-#: array.c:708
-#, fuzzy, c-format
+#: array.c:605
+#, c-format
msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
-msgstr "c廙 d羅ng i廙u c繫 hが廙ng 竄 %s 罈 l m廕τg"
+msgstr "c廙 d羅ng 竄%s[\"%.*s\"]罈 v繫 hが廙ng nhが l m廕τg"
-#: array.c:871
-#, c-format
-msgid "%s: empty (null)\n"
-msgstr "%s: r廙ng (v繫 gi獺 tr廙)\n"
+#: array.c:784
+#, fuzzy
+msgid "adump: first argument not an array"
+msgstr "adump: 廙i s廙 kh繫ng ph廕ξ l m廙t m廕τg"
-#: array.c:876
-#, c-format
-msgid "%s: empty (zero)\n"
-msgstr "%s: r廙ng (s廙 kh繫ng)\n"
+#: array.c:823
+msgid "asort: second argument not an array"
+msgstr "asort: 廙i s廙 th廙 hai kh繫ng ph廕ξ l m廙t m廕τg"
-#: array.c:880
-#, c-format
-msgid "%s: table_size = %d, array_size = %d\n"
-msgstr "%s: c廙︵b廕τg = %d, c廙︵m廕τg = %d\n"
+#: array.c:824
+msgid "asorti: second argument not an array"
+msgstr "asorti: 廙i s廙 th廙 hai kh繫ng ph廕ξ l m廙t m廕τg"
-#: array.c:915
-#, c-format
-msgid "%s: is parameter\n"
-msgstr "%s: l tham s廙\n"
+#: array.c:831
+msgid "asort: first argument not an array"
+msgstr "asort: 廙i s廙 th廙 nh廕另 kh繫ng ph廕ξ l m廙t m廕τg"
-#: array.c:919
-#, c-format
-msgid "%s: array_ref to %s\n"
-msgstr "%s: 竄 array_ref 罈 (m廕τg tham chi廕簑) 廕積 竄 %s 罈\n"
+#: array.c:832
+msgid "asorti: first argument not an array"
+msgstr "asorti: 廙i s廙 th廙 nh廕另 kh繫ng ph廕ξ l m廙t m廕τg"
-#: array.c:924
-#, fuzzy
-msgid "adump: argument not an array"
-msgstr "match: (kh廙p) 廙i s廙 th廙 ba kh繫ng ph廕ξ l m廕τg"
+#: array.c:839
+msgid "asort: cannot use a subarray of first arg for second arg"
+msgstr ""
+"asort (m廙t chがヾng tr穩nh x廕皰 x廕穆 th廙 t廙): kh繫ng th廙 s廙 d廙叩g m廕τg con c廙吧 tham "
+"s廙 th廙 nh廕另 cho tham s廙 th廙 hai"
-#: array.c:1142
-#, fuzzy
-msgid "attempt to use array in a scalar context"
-msgstr "c廙 g廕疸g d羅ng m廕τg 竄 %s 罈 trong m廙t ng廙 c廕τh v繫 hが廙ng"
+#: array.c:840
+msgid "asorti: cannot use a subarray of first arg for second arg"
+msgstr ""
+"asorti (m廙t chがヾng tr穩nh x廕皰 x廕穆 th廙 t廙): kh繫ng th廙 s廙 d廙叩g m廕τg con c廙吧 "
+"tham s廙 th廙 nh廕另 cho tham s廙 th廙 hai"
-#: array.c:1239
-#, fuzzy
-msgid "asort: second argument not an array"
-msgstr "split: (chia t獺ch) 廙i s廙 th廙 hai kh繫ng ph廕ξ l m廕τg"
+#: array.c:845
+msgid "asort: cannot use a subarray of second arg for first arg"
+msgstr ""
+"asort (m廙t chがヾng tr穩nh x廕皰 x廕穆 th廙 t廙): kh繫ng th廙 s廙 d廙叩g m廕τg con c廙吧 tham "
+"s廙 th廙 hai cho tham s廙 th廙 nh廕另"
-#: array.c:1240
-#, fuzzy
-msgid "asorti: second argument not an array"
-msgstr "split: (chia t獺ch) 廙i s廙 th廙 hai kh繫ng ph廕ξ l m廕τg"
+#: array.c:846
+msgid "asorti: cannot use a subarray of second arg for first arg"
+msgstr ""
+"asorti (m廙t chがヾng tr穩nh x廕皰 x廕穆 th廙 t廙): kh繫ng th廙 s廙 d廙叩g m廕τg con c廙吧 "
+"tham s廙 th廙 hai cho tham s廙 th廙 nh廕另"
-#: array.c:1247
-#, fuzzy
-msgid "asort: first argument not an array"
-msgstr "match: (kh廙p) 廙i s廙 th廙 ba kh繫ng ph廕ξ l m廕τg"
+#: array.c:1314
+#, c-format
+msgid "`%s' is invalid as a function name"
+msgstr "`%s' kh繫ng ph廕ξ l t礙n hm h廙φ l廙"
-#: array.c:1248
-#, fuzzy
-msgid "asorti: first argument not an array"
-msgstr "match: (kh廙p) 廙i s廙 th廙 ba kh繫ng ph廕ξ l m廕τg"
+#: array.c:1318
+#, c-format
+msgid "sort comparison function `%s' is not defined"
+msgstr "chがa 廙nh ngh藺a hm so s獺nh x廕皰 x廕穆 竄 %s 罈"
-#: awkgram.y:249
+#: awkgram.y:223
#, c-format
msgid "%s blocks must have an action part"
msgstr "M廙i kh廙i %s ph廕ξ c籀 m廙t ph廕吵 ki廙u hnh 廙ng"
-#: awkgram.y:252
+#: awkgram.y:226
msgid "each rule must have a pattern or an action part"
msgstr "M廙i quy t廕畚 ph廕ξ c籀 m廙t m廕哎 hay ph廕吵 ki廙u hnh 廙ng"
-#: awkgram.y:323 awkgram.y:334
+#: awkgram.y:295 awkgram.y:306
msgid "old awk does not support multiple `BEGIN' or `END' rules"
msgstr ""
"awk c觼 kh繫ng h廙 tr廙 nhi廙u quy t廕畚 ki廙u 竄 BEGIN 罈 (b廕眩 廕吟) hay 竄 END 罈 (k廕篙 "
"th繳c)"
-#: awkgram.y:371
+#: awkgram.y:343
#, c-format
msgid "`%s' is a built-in function, it cannot be redefined"
msgstr "竄 %s 罈 l m廙t hm c籀 s廕登 n礙n n籀 kh繫ng th廙 が廙θ 廙nh ngh藺a l獺i."
-#: awkgram.y:432
+#: awkgram.y:389
msgid "regexp constant `//' looks like a C++ comment, but is not"
msgstr ""
"h廕彫g bi廙u th廙妾 ch穩nh quy 竄 // 罈 h穫nh nhが m廙t ch繳 th穩ch C, nhがng m kh繫ng ph廕ξ"
-#: awkgram.y:436
+#: awkgram.y:393
#, c-format
msgid "regexp constant `/%s/' looks like a C comment, but is not"
msgstr ""
"h廕彫g bi廙u th廙妾 ch穩nh quy 竄 /%s/ 罈 h穫nh nhが m廙t ch繳 th穩ch C, nhがng m kh繫ng "
"ph廕ξ"
-#: awkgram.y:528
+#: awkgram.y:485
#, c-format
msgid "duplicate case values in switch body: %s"
msgstr "g廕搆 gi獺 tr廙 case tr羅ng trong th璽n chuy廙n 廙i (switch body): %s"
-#: awkgram.y:549
-#, fuzzy
+#: awkgram.y:506
msgid "duplicate `default' detected in switch body"
msgstr ""
-"Ph獺t hi廙n 竄 default 罈 (m廕搾 廙nh) trong th璽n chuy廙n 廙i (switch body): %s"
+"瓊 ph獺t hi廙n tr羅ng `default' trong th璽n c廕只 tr繳c i廙u khi廙n ch廙n l廙帶 (switch)"
-#: awkgram.y:811
-#, fuzzy
+#: awkgram.y:766
msgid "`break' is not allowed outside a loop or switch"
-msgstr "kh繫ng cho ph矇p 竄 break 罈 (ng廕眩) n廕彩 廙 ngo廕【 v簷ng l廕搆"
+msgstr ""
+"kh繫ng cho ph矇p 竄 break 罈 (ng廕眩) n廕彩 廙 ngo廕【 v簷ng l廕搆 hay c廕只 tr繳c ch廙n l廙帶"
-#: awkgram.y:820
-#, fuzzy
+#: awkgram.y:775
msgid "`continue' is not allowed outside a loop"
-msgstr "kh繫ng cho ph矇p 竄 continue 罈 (ti廕穆 t廙卉) n廕彩 廙 ngo廕【 v簷ng l廕搆"
+msgstr "kh繫ng cho ph矇p 竄continue罈 (ti廕穆 t廙卉) 廙 ngoi m廙t v簷ng l廕搆"
-#: awkgram.y:829
-#, fuzzy, c-format
+#: awkgram.y:785
+#, c-format
msgid "`next' used in %s action"
-msgstr "竄 %s 罈 が廙θ d羅ng trong hnh 廙ng %s"
+msgstr "竄 next 罈 (k廕 ti廕穆) が廙θ d羅ng trong hnh 廙ng %s"
-#: awkgram.y:837
+#: awkgram.y:793
msgid "`nextfile' is a gawk extension"
msgstr "竄 nextfile 罈 (t廕計 tin k廕 ti廕穆) l m廙t ph廕吵 m廙 r廙ng gawk"
-#: awkgram.y:840
-#, fuzzy, c-format
+#: awkgram.y:798
+#, c-format
msgid "`nextfile' used in %s action"
-msgstr "竄 %s 罈 が廙θ d羅ng trong hnh 廙ng %s"
+msgstr "竄 nextfile 罈 (t廙p tin k廕 ti廕穆) が廙θ d羅ng trong hnh 廙ng %s"
-#: awkgram.y:863
+#: awkgram.y:822
msgid "`return' used outside function context"
msgstr "竄 return 罈 (tr廙 v廙) が廙θ d羅ng 廙 ngo廕【 ng廙 c廕τh hm"
-#: awkgram.y:923
+#: awkgram.y:896
msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
msgstr ""
-"竄 print 罈 (in) chu廕姊 trong quy t廕畚 竄 BEGIN 罈 (b廕眩 廕吟) hay 竄 END 罈 (k廕篙 "
-"th繳c) r廕另 c籀 th廙 n礙n l 竄 print\"\" 罈"
+"竄 print 罈 (in) thが廙ng trong quy t廕畚 竄 BEGIN 罈 (b廕眩 廕吟) hay 竄 END 罈 (k廕篙 "
+"th繳c) h廕吟 nhが ch廕畚 ch廕疸 n礙n l 竄 print\"\" 罈"
-#: awkgram.y:993 awkgram.y:997 awkgram.y:1021
+#: awkgram.y:966 awkgram.y:970 awkgram.y:994
msgid "`delete array' is a gawk extension"
-msgstr "竄 delete array 罈 (x籀a b廙 m廕τg) l m廙t ph廕吵 m廙 r廙ng gawk"
+msgstr "竄 delete array 罈 (xo獺 m廕τg) l m廙t ph廕吵 m廙 r廙ng gawk"
-#: awkgram.y:1017
+#: awkgram.y:990
msgid "`delete(array)' is a non-portable tawk extension"
-msgstr ""
-"竄 delete array 罈 (x籀a b廙 m廕τg) l ph廕吵 m廙 r廙ng gawk kh繫ng th廙 mang theo"
+msgstr "竄 delete array 罈 (xo獺 m廕τg) l ph廕吵 m廙 r廙ng gawk kh繫ng kh廕 chuy廙n"
-#: awkgram.y:1133
+#: awkgram.y:1108
msgid "multistage two-way pipelines don't work"
msgstr "が廙ng 廙ng d廕南 hai chi廕簑 a giai o廕》 kh繫ng ph廕ξ ho廕﹀ 廙ng が廙θ"
-#: awkgram.y:1236
+#: awkgram.y:1211
msgid "regular expression on right of assignment"
msgstr "bi廙u th廙妾 ch穩nh quy n廕彩 b礙n ph廕ξ i廙u g獺n"
-#: awkgram.y:1247
+#: awkgram.y:1222
msgid "regular expression on left of `~' or `!~' operator"
msgstr "bi廙u th廙妾 ch穩nh quy n廕彩 b礙n tr獺i to獺n t廙 竄 ~ 罈 hay 竄 !~ 罈"
-#: awkgram.y:1263 awkgram.y:1417
+#: awkgram.y:1238 awkgram.y:1389
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廕彩 sau 竄 for 罈"
-#: awkgram.y:1273
+#: awkgram.y:1248
msgid "regular expression on right of comparison"
msgstr "bi廙u th廙妾 ch穩nh quy n廕彩 b礙n ph廕ξ s廙 so s獺nh"
-#: awkgram.y:1392
+#: awkgram.y:1364
#, c-format
msgid "`getline var' invalid inside `%s' rule"
-msgstr ""
+msgstr "`getline var' kh繫ng h廙φ l廙 b礙n trong quy t廕畚 `%s'"
-#: awkgram.y:1395 eval.c:2649
+#: awkgram.y:1367
#, c-format
msgid "`getline' invalid inside `%s' rule"
-msgstr ""
+msgstr "`getline' kh繫ng h廙φ l廙 trong quy t廕畚 `%s'"
-#: awkgram.y:1400
+#: awkgram.y:1372
msgid "non-redirected `getline' undefined inside END action"
msgstr ""
"trong hnh 廙ng 竄 END 罈 (k廕篙 th繳c) c籀 竄 getline 罈 (l廕句 d簷ng) kh繫ng が廙θ "
"chuy廙n hが廙ng l廕【 v chがa が廙θ x獺c 廙nh."
-#: awkgram.y:1419
+#: awkgram.y:1391
msgid "old awk does not support multidimensional arrays"
msgstr "awk c觼 kh繫ng h廙 tr廙 m廕τg a chi廙u"
-#: awkgram.y:1515
+#: awkgram.y:1488
msgid "call of `length' without parentheses is not portable"
msgstr "kh繫ng th廙 mang l廙i g廙i 竄 length 罈 (廙 di) kh繫ng c籀 d廕只 ngo廕搾"
-#: awkgram.y:1578
-#, fuzzy
+#: awkgram.y:1554
msgid "indirect function calls are a gawk extension"
-msgstr "竄 nextfile 罈 (t廕計 tin k廕 ti廕穆) l m廙t ph廕吵 m廙 r廙ng gawk"
+msgstr "cu廙c g廙i hm gi獺n ti廕穆 l m廙t ph廕吵 m廙 r廙ng gawk"
-#: awkgram.y:1591
-#, fuzzy, c-format
+#: awkgram.y:1567
+#, c-format
msgid "can not use special variable `%s' for indirect function call"
-msgstr "ch廙妾 nng 竄 %s 罈: kh繫ng th廙 d羅ng t礙n ch廙妾 nng nhが l t礙n tham s廙"
+msgstr "kh繫ng th廙 d羅ng bi廕積 廕搾 bi廙t 竄 %s 罈 cho c繳 g廙i hm gi獺n ti廕穆"
-#: awkgram.y:1669
+#: awkgram.y:1645
msgid "invalid subscript expression"
msgstr "bi廙u th廙妾 in th廕叼 kh繫ng h廙φ l廙"
-#: awkgram.y:1709
-msgid "use of non-array as array"
-msgstr "vi廙c d羅ng i廙u kh獺c m廕τg nhが l m廕τg"
-
-#: awkgram.y:1973 awkgram.y:1993 msg.c:98
+#: awkgram.y:1966 awkgram.y:1986 msg.c:112
msgid "warning: "
msgstr "c廕τh b獺o : "
-#: awkgram.y:1991 msg.c:130
+#: awkgram.y:1984 msg.c:144
msgid "fatal: "
msgstr "nghi礙m tr廙ng: "
-#: awkgram.y:2041
+#: awkgram.y:2034
msgid "unexpected newline or end of string"
msgstr "g廕搆 d簷ng m廙i b廕另 ng廙 hay k廕篙 th繳c c廙吧 chu廙i"
-#: awkgram.y:2297 awkgram.y:2355 awkgram.y:2539
+#: awkgram.y:2299 awkgram.y:2357 awkgram.y:2545
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "kh繫ng th廙 m廙 t廕計 tin ngu廙n 竄 %s 罈 廙 廙c (%s)"
-#: awkgram.y:2298 awkgram.y:2356 builtin.c:119
+#: awkgram.y:2300 awkgram.y:2358 builtin.c:124
msgid "reason unknown"
msgstr "kh繫ng bi廕篙 sao"
-#: awkgram.y:2314
-#, fuzzy, c-format
+#: awkgram.y:2316
+#, c-format
msgid "already included source file `%s'"
-msgstr "kh繫ng th廙 廙c t廕計 tin ngu廙n 竄 %s 罈 (%s)"
+msgstr "瓊 s廕登 bao g廙m t廕計 tin ngu廙n `%s'"
-#: awkgram.y:2340
-#, fuzzy
+#: awkgram.y:2342
msgid "@include is a gawk extension"
-msgstr "竄 nextfile 罈 (t廕計 tin k廕 ti廕穆) l m廙t ph廕吵 m廙 r廙ng gawk"
+msgstr "@include l ph廕吵 m廙 r廙ng c廙吧 gawk"
-#: awkgram.y:2346
+#: awkgram.y:2348
msgid "empty filename after @include"
-msgstr ""
+msgstr "t廙p tin r廙ng sau @include"
-#: awkgram.y:2491
+#: awkgram.y:2497
msgid "empty program text on command line"
msgstr "g廕搆 o廕》 ch廙 chがヾng tr穫nh r廙ng n廕彩 tr礙n d簷ng l廙nh"
-#: awkgram.y:2606
+#: awkgram.y:2612
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "kh繫ng th廙 廙c t廕計 tin ngu廙n 竄 %s 罈 (%s)"
-#: awkgram.y:2617
+#: awkgram.y:2623
#, c-format
msgid "source file `%s' is empty"
msgstr "t廕計 tin ngu廙n 竄 %s 罈 l r廙ng"
-#: awkgram.y:2802
+#: awkgram.y:2800
msgid "source file does not end in newline"
-msgstr "t廕計 tin ngu廙n kh繫ng k廕篙 th繳c v廙i d簷ng m廙i"
+msgstr "t廕計 tin ngu廙n kh繫ng k廕篙 th繳c v廙i m廙t d簷ng m廙i"
-#: awkgram.y:2879
+#: awkgram.y:2905
msgid "unterminated regexp ends with `\\' at end of file"
msgstr ""
"bi廙u th廙妾 ch穩nh quy chがa が廙θ ch廕叮 d廙孤 k廕篙 th繳c v廙i 竄 \\ 罈 t廕【 k廕篙 th繳c c廙吧 "
"t廕計 tin"
-#: awkgram.y:2903
+#: awkgram.y:2929
#, c-format
msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
"%s: %d: b廙 s廙苔 廙i bi廙u th廙妾 ch穩nh quy tawk 竄 /.../%c 罈 kh繫ng ho廕﹀ 廙ng が廙θ "
"trong gawk"
-#: awkgram.y:2907
+#: awkgram.y:2933
#, c-format
msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
msgstr ""
"b廙 s廙苔 廙i bi廙u th廙妾 ch穩nh quy tawk 竄 /.../%c 罈 kh繫ng ho廕﹀ 廙ng が廙θ trong "
"gawk"
-#: awkgram.y:2914
+#: awkgram.y:2940
msgid "unterminated regexp"
msgstr "bi廙u th廙妾 ch穩nh quy chがa が廙θ ch廕叮 d廙孤"
-#: awkgram.y:2918
+#: awkgram.y:2944
msgid "unterminated regexp at end of file"
msgstr "bi廙u th廙妾 ch穩nh quy chがa が廙θ ch廕叮 d廙孤 n廕彩 t廕【 k廕篙 th繳c c廙吧 t廕計 tin"
-#: awkgram.y:2977
+#: awkgram.y:3003
msgid "use of `\\ #...' line continuation is not portable"
msgstr "kh繫ng th廙 mang kh廕 nng d羅ng 竄 \\#... 罈 廙 ti廕穆 t廙卉 d簷ng"
-#: awkgram.y:2993
+#: awkgram.y:3019
msgid "backslash not last character on line"
msgstr "xuy廙c ngが廙θ kh繫ng ph廕ξ l k羸 t廙 cu廙i c羅ng n廕彩 tr礙n d簷ng"
-#: awkgram.y:3054
+#: awkgram.y:3080
msgid "POSIX does not allow operator `**='"
msgstr "POSIX kh繫ng cho ph矇p to獺n t廙 竄 **= 罈"
-#: awkgram.y:3056
+#: awkgram.y:3082
msgid "old awk does not support operator `**='"
msgstr "awk c觼 kh繫ng h廙 tr廙 to獺n t廙 竄 **= 罈"
-#: awkgram.y:3065
+#: awkgram.y:3091
msgid "POSIX does not allow operator `**'"
msgstr "POSIX kh繫ng cho ph矇p to獺n t廙 竄 ** 罈"
-#: awkgram.y:3067
+#: awkgram.y:3093
msgid "old awk does not support operator `**'"
msgstr "awk c觼 kh繫ng h廙 tr廙 to獺n t廙 竄 ** 罈"
-#: awkgram.y:3102
+#: awkgram.y:3128
msgid "operator `^=' is not supported in old awk"
msgstr "awk c觼 kh繫ng h廙 tr廙 to獺n t廙 竄 ^= 罈"
-#: awkgram.y:3110
+#: awkgram.y:3136
msgid "operator `^' is not supported in old awk"
msgstr "awk c觼 kh繫ng h廙 tr廙 to獺n t廙 竄 ^ 罈"
-#: awkgram.y:3203 awkgram.y:3219
+#: awkgram.y:3229 awkgram.y:3245
msgid "unterminated string"
msgstr "chu廙i kh繫ng が廙θ ch廕叮 d廙孤"
-#: awkgram.y:3415
+#: awkgram.y:3466
#, c-format
msgid "invalid char '%c' in expression"
msgstr "bi廙u th廙妾 m廙t k羸 t廙 kh繫ng h廙φ l廙 竄 %c 罈 n廕彩 trong bi廙u th廙妾"
-#: awkgram.y:3462
+#: awkgram.y:3513
#, c-format
msgid "`%s' is a gawk extension"
msgstr "竄 %s 罈 l m廙t ph廕吵 m廙 r廙ng gawk"
-#: awkgram.y:3467
+#: awkgram.y:3518
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr "竄 %s 罈 l m廙t ph廕吵 m廙 r廙ng c廙吧 Bell Labs (Ph簷ng th穩 nghi廙m Bell)"
-#: awkgram.y:3472
+#: awkgram.y:3523
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX kh繫ng cho ph矇p 竄 %s 罈"
-#: awkgram.y:3480
+#: awkgram.y:3531
#, c-format
msgid "`%s' is not supported in old awk"
-msgstr "awk c觼 kh繫ng h廙 tr廙 竄 %s 罈"
+msgstr "awk ki廙u c觼 kh繫ng h廙 tr廙 竄 %s 罈"
-#: awkgram.y:3550
+#: awkgram.y:3598
msgid "`goto' considered harmful!\n"
-msgstr "竄 goto 罈 が廙θ xem l g璽y tai h廕【\n"
+msgstr "竄 goto 罈 が廙θ xem l g璽y tai h廕【!\n"
-#: awkgram.y:3602
+#: awkgram.y:3632
#, c-format
msgid "%d is invalid as number of arguments for %s"
-msgstr "竄 %d 罈 kh繫ng h廙φ l廙 nhが l s廙 廙i s廙 cho 竄 %s 罈"
-
-#: awkgram.y:3637 awkgram.y:3640
-msgid "match: third argument is a gawk extension"
-msgstr "match: (kh廙p) 廙i s廙 th廙 ba l ph廕吵 m廙 r廙ng gawk"
+msgstr "竄 %d 罈 kh繫ng h廙φ l廙 khi l s廙 廙i s廙 cho 竄 %s 罈"
-#: awkgram.y:3668
+#: awkgram.y:3667
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr ""
"%s: khi 廙i s廙 cu廙i c羅ng c廙吧 s廙 thay th廕, h廕彫g m瓊 ngu廙n chu廙i kh繫ng c籀 t獺c "
"d廙叩g"
-#: awkgram.y:3673
+#: awkgram.y:3672
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "tham s廙 th廙 ba %s kh繫ng ph廕ξ l m廙t 廙i tが廙τg c籀 th廙 thay 廙i"
-#: awkgram.y:3759 awkgram.y:3762
+#: awkgram.y:3751 awkgram.y:3754
+msgid "match: third argument is a gawk extension"
+msgstr "match: (kh廙p) 廙i s廙 th廙 ba l ph廕吵 m廙 r廙ng gawk"
+
+#: awkgram.y:3808 awkgram.y:3811
msgid "close: second argument is a gawk extension"
msgstr "close: (籀ng) 廙i s廙 th廙 hai l ph廕吵 m廙 r廙ng gawk"
-#: awkgram.y:3774
+#: awkgram.y:3823
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr "d羅ng 竄 dcgettext(_\"...\") 罈 kh繫ng 繳ng: h瓊y g廙 b廙 g廕︷h dが廙i n廕彩 trが廙c"
-#: awkgram.y:3789
+#: awkgram.y:3838
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr "d羅ng 竄 dcgettext(_\"...\") 罈 kh繫ng 繳ng: h瓊y g廙 b廙 g廕︷h dが廙i n廕彩 trが廙c"
-#: awkgram.y:3881
-#, c-format
-msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
-msgstr "ch廙妾 nng 竄 %s 罈: tham s廙 竄 #%d 罈, 竄 %s 罈, nh璽n 繫i tham s廙 竄 #%d 罈"
-
-#: awkgram.y:3923
+#: awkgram.y:3904
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
-msgstr "ch廙妾 nng 竄 %s 罈: tham s廙 竄 %s 罈 che bi廕積 ton c廙卉"
+msgstr "hm 竄 %s 罈: tham s廙 竄 %s 罈 che bi廕積 ton c廙卉"
-#: awkgram.y:4081
+#: awkgram.y:3961
#, c-format
msgid "could not open `%s' for writing (%s)"
-msgstr "kh繫ng m廙 が廙θ 竄%s罈 廙 ghi (%s)"
+msgstr "kh繫ng m廙 が廙θ 竄 %s 罈 廙 ghi (%s)"
-#: awkgram.y:4082 profile.c:85
-msgid "sending profile to standard error"
-msgstr "ang g廙i h廙 sヾ cho thi廕篙 b廙 l廙i chu廕姊"
+#: awkgram.y:3962
+msgid "sending variable list to standard error"
+msgstr "ang g廙i danh s獺ch bi廕積 t廙i thi廕篙 b廙 l廙i chu廕姊"
-#: awkgram.y:4088
+#: awkgram.y:3970
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: l廙i 籀ng (%s)"
-#: awkgram.y:4140
+#: awkgram.y:3995
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() (hm b籀ng) が廙θ g廙i hai l廕吵 !"
-#: awkgram.y:4146
+#: awkgram.y:4003
msgid "there were shadowed variables."
msgstr "c籀 bi廕積 b廙 b籀ng."
-#: awkgram.y:4176
+#: awkgram.y:4074
+#, c-format
+msgid "function name `%s' previously defined"
+msgstr "t礙n hm 竄 %s 罈 trが廙c 璽y 瓊 が廙θ 廙nh ngh藺a r廙i"
+
+#: awkgram.y:4120
#, c-format
msgid "function `%s': can't use function name as parameter name"
-msgstr "ch廙妾 nng 竄 %s 罈: kh繫ng th廙 d羅ng t礙n ch廙妾 nng nhが l t礙n tham s廙"
+msgstr "hm 竄 %s 罈: kh繫ng th廙 d羅ng t礙n hm nhが l t礙n tham s廙"
-#: awkgram.y:4180
-#, fuzzy, c-format
+#: awkgram.y:4123
+#, c-format
msgid "function `%s': can't use special variable `%s' as a function parameter"
-msgstr "ch廙妾 nng 竄 %s 罈: kh繫ng th廙 d羅ng t礙n ch廙妾 nng nhが l t礙n tham s廙"
+msgstr "hm 竄 %s 罈: kh繫ng th廙 d羅ng bi廕積 廕搾 bi廙t 竄 %s 罈 nhが l tham s廙 hm"
-#: awkgram.y:4196
+#: awkgram.y:4131
#, c-format
-msgid "function name `%s' previously defined"
-msgstr "t礙n ch廙妾 nng 竄 %s 罈 が廙θ x獺c 廙nh trが廙c"
+msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
+msgstr "hm 竄 %s 罈: tham s廙 竄 #%d 罈, 竄 %s 罈, nh璽n 繫i tham s廙 竄 #%d 罈"
-#: awkgram.y:4364 awkgram.y:4370
+#: awkgram.y:4210 awkgram.y:4216
#, c-format
msgid "function `%s' called but never defined"
-msgstr "ch廙妾 nng 竄 %s 罈 が廙θ g廙i nhがng m chがa x獺c 廙nh"
+msgstr "hm 竄 %s 罈 が廙θ g廙i nhがng m chがa x獺c 廙nh"
-#: awkgram.y:4373
-#, fuzzy, c-format
+#: awkgram.y:4219
+#, c-format
msgid "function `%s' defined but never called directly"
-msgstr "ch廙妾 nng 竄 %s 罈 が廙θ x獺c 廙nh nhがng m chがa が廙θ g廙i"
+msgstr "hm 竄 %s 罈 が廙θ 廙nh ngh藺a nhがng m chがa が廙θ g廙i tr廙帷 ti廕穆 bao gi廙"
-#: awkgram.y:4405
+#: awkgram.y:4251
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr "h廕彫g bi廙u th廙妾 ch穩nh quy cho tham s廙 竄 #%d 罈 lm gi獺 tr廙 lu廕要 l羸 (bun)"
-#: awkgram.y:4514
+#: awkgram.y:4297
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
"or used as a variable or an array"
msgstr ""
-"ch廙妾 nng 竄 %s 罈 が廙θ g廙i v廙i d廕只 c獺ch n廕彩 gi廙畝 t礙n v 竄 ( 罈\n"
+"hm 竄 %s 罈 が廙θ g廙i v廙i d廕只 c獺ch n廕彩 gi廙畝 t礙n v 竄 ( 罈\n"
"ho廕搾 が廙θ d羅ng nhが l bi廕積 hay m廕τg"
-#: awkgram.y:4761 eval.c:2206
+#: awkgram.y:4505
msgid "division by zero attempted"
msgstr "c廙 g廕疸g chia cho s廙 kh繫ng"
-#: awkgram.y:4770 eval.c:2222
+#: awkgram.y:4514
#, c-format
msgid "division by zero attempted in `%%'"
-msgstr "c廙 g廕疸g chia cho s廙 kh繫ng trong 竄 %% 罈"
+msgstr "th廙 chia cho kh繫ng trong 竄 %% 罈"
-#: builtin.c:117
+#: builtin.c:122
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s t廙i 竄 %s 罈 b廙 l廙i (%s)"
-#: builtin.c:118
+#: builtin.c:123
msgid "standard output"
msgstr "thi廕篙 b廙 xu廕另 chu廕姊"
-#: builtin.c:132
+#: builtin.c:137
msgid "exp: received non-numeric argument"
msgstr "exp: 瓊 nh廕要 廙i s廙 kh繫ng ph廕ξ thu廙c s廙"
-#: builtin.c:138
+#: builtin.c:143
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: 廙i s廙 竄 %g 罈 廙 ngo廕【 ph廕《 v廙"
-#: builtin.c:197
+#: builtin.c:202
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
-"fflush: kh繫ng th廙 x籀a s廕︷h: 廙ng d廕南 竄 %s 罈 が廙θ m廙 廙 廙c, kh繫ng ph廕ξ 廙 ghi"
+"fflush: kh繫ng th廙 xo獺 s廕︷h: 廙ng d廕南 竄 %s 罈 が廙θ m廙 廙 廙c, kh繫ng ph廕ξ 廙 ghi"
-#: builtin.c:200
+#: builtin.c:205
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
-"fflush: kh繫ng th廙 x籀a s廕︷h: t廕計 tin 竄%s罈 が廙θ m廙 廙 廙c, kh繫ng ph廕ξ 廙 ghi"
+"fflush: kh繫ng th廙 xo獺 s廕︷h: t廕計 tin 竄 %s 罈 が廙θ m廙 廙 廙c, kh繫ng ph廕ξ 廙 ghi"
-#: builtin.c:212
+#: builtin.c:217
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr ""
"fflush: 竄 %s 罈 kh繫ng ph廕ξ l t廕計 tin 瓊 m廙, 廙ng d廕南 hay 廙ng ti廕積 tr穫nh"
-#: builtin.c:330
+#: builtin.c:335
msgid "index: received non-string first argument"
msgstr "index: (ch廙 m廙卉) 瓊 nh廕要 廙i s廙 th廙 nh廕另 kh繫ng ph廕ξ l chu廙i"
-#: builtin.c:332
+#: builtin.c:337
msgid "index: received non-string second argument"
msgstr "index: (ch廙 m廙卉) 瓊 nh廕要 廙i s廙 th廙 hai kh繫ng ph廕ξ l chu廙i"
-#: builtin.c:454
+#: builtin.c:461
msgid "int: received non-numeric argument"
msgstr "int: (s廙 nguy礙n?) 瓊 nh廕要 廙i s廙 kh繫ng ph廕ξ thu廙c s廙"
-#: builtin.c:490
-#, fuzzy
+#: builtin.c:497
msgid "length: received array argument"
-msgstr "length: (廙 di) 瓊 nh廕要 廙i s廙 kh繫ng ph廕ξ chu廙i"
+msgstr "length: (chi廙u di) 瓊 nh廕要 m廕τg 廙i s廙"
-#: builtin.c:493
-#, fuzzy
+#: builtin.c:500
msgid "`length(array)' is a gawk extension"
msgstr "竄 length(array) 罈 (廙 di m廕τg) l m廙t ph廕吵 m廙 r廙ng gawk"
-#: builtin.c:501
+#: builtin.c:508
msgid "length: received non-string argument"
-msgstr "length: (廙 di) 瓊 nh廕要 廙i s廙 kh繫ng ph廕ξ chu廙i"
+msgstr "length: (chi廙u di) 瓊 nh廕要 廙i s廙 kh繫ng ph廕ξ chu廙i"
-#: builtin.c:532
+#: builtin.c:539
msgid "log: received non-numeric argument"
msgstr "log: (b廕τ ghi) 瓊 nh廕要 廙i s廙 kh繫ng ph廕ξ thu廙c s廙"
-#: builtin.c:535
+#: builtin.c:542
#, c-format
msgid "log: received negative argument %g"
-msgstr "log: (b廕τ ghi) 瓊 nh廕要 廙i s廙 璽m 竄%g罈"
+msgstr "log: (b廕τ ghi) 瓊 nh廕要 廙i s廙 璽m 竄 %g 罈"
+
+#: builtin.c:740 builtin.c:745
+msgid "fatal: must use `count$' on all formats or none"
+msgstr "nghi礙m tr廙ng: ph廕ξ d羅ng 竄 count$ 罈 v廙i m廙i d廕》g th廙妾 hay kh繫ng g穫 c廕"
+
+#: builtin.c:815
+#, 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:817
+#, c-format
+msgid "precision is ignored for `%%' specifier"
+msgstr "廙 ch穩nh x獺c b廙 b廙 qua 廙i v廙i b廙 ch廙 廙nh `%%'"
+
+#: builtin.c:819
+#, 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:870
+msgid "fatal: `$' is not permitted in awk formats"
+msgstr "nghi礙m tr廙ng: kh繫ng cho ph矇p `$' trong 廙nh d廕》g awk"
+
+#: builtin.c:879
+msgid "fatal: arg count with `$' must be > 0"
+msgstr "nghi礙m tr廙ng: s廙 lが廙τg 廙i s廙 v廙i 竄 $ 罈 ph廕ξ >0"
+
+#: builtin.c:883
+#, c-format
+msgid "fatal: arg count %ld greater than total number of supplied arguments"
+msgstr "nghi礙m tr廙ng: s廙 lが廙τg 廙i s廙 %ld l廙n hヾn t廙ng s廙 廙i s廙 が廙θ cung c廕叼"
+
+#: builtin.c:887
+msgid "fatal: `$' not permitted after period in format"
+msgstr "nghi礙m tr廙ng: kh繫ng cho ph矇p 竄 $ 罈 n廕彩 sau d廕只 ch廕叮 trong 廙nh d廕》g"
+
+#: builtin.c:903
+msgid "fatal: no `$' supplied for positional field width or precision"
+msgstr ""
+"nghi礙m tr廙ng: chがa cung c廕叼 竄 $ 罈 cho 廙 r廙ng trが廙ng thu廙c v廙 tr穩 hay cho 廙 "
+"ch穩nh x獺c"
+
+#: builtin.c:975
+msgid "`l' is meaningless in awk formats; ignored"
+msgstr "ch廙 竄 l 罈 kh繫ng c籀 ngh藺a trong 廙nh d廕》g awk n礙n b廙 b廙 qua"
+
+#: builtin.c:979
+msgid "fatal: `l' is not permitted in POSIX awk formats"
+msgstr "nghi礙m tr廙ng: kh繫ng cho ph矇p ch廙 竄 l 罈 n廕彩 trong 廙nh d廕》g awk POSIX"
+
+#: builtin.c:992
+msgid "`L' is meaningless in awk formats; ignored"
+msgstr "ch廙 竄 L 罈 kh繫ng c籀 ngh藺a trong 廙nh d廕》g awk n礙n b廙 b廙 qua"
-#: builtin.c:593 builtin.c:604
+#: builtin.c:996
+msgid "fatal: `L' is not permitted in POSIX awk formats"
+msgstr "nghi礙m tr廙ng: kh繫ng cho ph矇p ch廙 竄 L 罈 n廕彩 trong 廙nh d廕》g awk POSIX"
+
+#: builtin.c:1009
+msgid "`h' is meaningless in awk formats; ignored"
+msgstr "ch廙 竄 h 罈 kh繫ng c籀 ngh藺a trong 廙nh d廕》g awk n礙n b廙 b廙 qua"
+
+#: builtin.c:1013
+msgid "fatal: `h' is not permitted in POSIX awk formats"
+msgstr "nghi礙m tr廙ng: kh繫ng cho ph矇p ch廙 竄 h 罈 n廕彩 trong 廙nh d廕》g awk POSIX"
+
+#: builtin.c:1408
+#, c-format
+msgid "[s]printf: value %g is out of range for `%%%c' format"
+msgstr "[s]printf: gi獺 tr廙 %g 廙 ngo廕【 ph廕《 v廙 cho d廕》g th廙妾 竄 %%%c 罈"
+
+#: builtin.c:1506
+#, c-format
+msgid "ignoring unknown format specifier character `%c': no argument converted"
+msgstr ""
+"ang b廙 qua k羸 t廙 ghi r繭 廙nh d廕》g kh繫ng r繭 竄 %c 罈: kh繫ng c籀 廙i s廙 が廙θ "
+"chuy廙n 廙i"
+
+#: builtin.c:1511
+msgid "fatal: not enough arguments to satisfy format string"
+msgstr "nghi礙m tr廙ng: chがa c籀 廙 廙i s廙 廙 獺p 廙姊g chu廙i 廙nh d廕》g"
+
+#: builtin.c:1513
+msgid "^ ran out for this one"
+msgstr "b廙 h廕篙 竄 ^ 罈 cho i廙u ny"
+
+#: builtin.c:1520
+msgid "[s]printf: format specifier does not have control letter"
+msgstr "[s]printf: i廙u ghi r繭 廙nh d廕》g kh繫ng c籀 ch廙 i廙u khi廙n"
+
+#: builtin.c:1523
+msgid "too many arguments supplied for format string"
+msgstr "qu獺 nhi廙u 廙i s廙 が廙θ cung c廕叼 cho chu廙i 廙nh d廕》g"
+
+#: builtin.c:1598 builtin.c:1609
msgid "printf: no arguments"
msgstr "printf: kh繫ng c籀 廙i s廙"
-#: builtin.c:645
+#: builtin.c:1650
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: (cn b廕苞 hai) 瓊 nh廕要 廙i s廙 kh繫ng ph廕ξ thu廙c s廙"
-#: builtin.c:649
+#: builtin.c:1654
#, c-format
msgid "sqrt: called with negative argument %g"
-msgstr "sqrt: (cn b廕苞 hai) 瓊 g廙i v廙i 廙i s廙 璽m 竄%g罈"
+msgstr "sqrt: (cn b廕苞 hai) 瓊 g廙i v廙i 廙i s廙 璽m 竄 %g 罈"
-#: builtin.c:673
+#: builtin.c:1685
#, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: (chu廙i ph廙) 廙 di %g kh繫ng ph廕ξ 1"
-#: builtin.c:675
+#: builtin.c:1687
#, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: (chu廙i ph廙) 廙 di %g kh繫ng ph廕ξ 0"
-#: builtin.c:682
+#: builtin.c:1694
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: (chu廙i ph廙) s廕 c廕眩 x矇n 廙 di kh繫ng ph廕ξ s廙 nguy礙n 竄 %g 罈"
-#: builtin.c:687
+#: builtin.c:1699
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr "substr: 廙 di %g qu獺 l廙n 廙 ch廙 m廙卉 chu廙i n礙n x矇n ng廕疸 thnh %g"
-#: builtin.c:699
+#: builtin.c:1711
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: (chu廙i ph廙) s廙 ch廙 m廙卉 廕吟 竄 %g 罈 kh繫ng h廙φ l廙 n礙n d羅ng 1"
-#: builtin.c:704
+#: builtin.c:1716
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr ""
"substr: (chu廙i ph廙) s廙 ch廙 m廙卉 廕吟 kh繫ng ph廕ξ s廙 nguy礙n 竄 %g 罈 s廕 b廙 c廕眩 ng廕疸"
-#: builtin.c:729
+#: builtin.c:1741
msgid "substr: source string is zero length"
msgstr "substr: (chu廙i con) chu廙i ngu廙n c籀 廙 di s廙 kh繫ng"
-#: builtin.c:745
+#: builtin.c:1757
#, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: (chu廙i ph廙) s廙 ch廙 m廙卉 廕吟 %g n廕彩 sau k廕篙 th繳c c廙吧 chu廙i"
-#: builtin.c:753
+#: builtin.c:1765
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -663,223 +735,223 @@ msgstr ""
"substr: (chu廙i ph廙) 廙 di %g t廕【 s廙 ch廙 m廙卉 廕吟 %g vが廙ㄅ qu獺 廙 di c廙吧 廙i "
"s廙 廕吟 (%lu)"
-#: builtin.c:826
+#: builtin.c:1839
msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
msgstr ""
+"strftime: gi獺 tr廙 廙nh d廕》g trong PROCINFO[\"strftime\"] ph廕ξ thu廙c ki廙u s廙"
-#: builtin.c:840
+#: builtin.c:1862
msgid "strftime: received non-numeric second argument"
msgstr "strftime: 瓊 nh廕要 廙i s廙 th廙 hai kh獺c thu廙c s廙"
-#: builtin.c:847
+#: builtin.c:1866
+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 dnh cho time_t"
+
+#: builtin.c:1873
msgid "strftime: received non-string first argument"
msgstr "strftime: 瓊 nh廕要 廙i s廙 th廙 nh廕另 kh獺c chu廙i"
-#: builtin.c:853
+#: builtin.c:1880
msgid "strftime: received empty format string"
msgstr "strftime: 瓊 nh廕要 chu廙i 廙nh d廕》g r廙ng"
-#: builtin.c:919
+#: builtin.c:1946
msgid "mktime: received non-string argument"
msgstr "mktime: 瓊 nh廕要 廙i s廙 kh獺c chu廙i"
-#: builtin.c:936
+#: builtin.c:1963
msgid "mktime: at least one of the values is out of the default range"
-msgstr ""
+msgstr "mktime: 穩t nh廕另 m廙t c廙吧 nh廙疸g gi獺 tr廙 n廕彩 廙 ngo廕【 ph廕《 vi m廕搾 廙nh"
-#: builtin.c:971
+#: builtin.c:1998
msgid "'system' function not allowed in sandbox mode"
-msgstr ""
+msgstr "hm 'system' kh繫ng cho ph矇p 廙 ch廕 廙 khu繫n 繳c"
-#: builtin.c:976
+#: builtin.c:2003
msgid "system: received non-string argument"
msgstr "system: (h廙 th廙ng) 瓊 nh廕要 廙i s廙 kh獺c chu廙i"
-#: builtin.c:1031 eval.c:1411 eval.c:1936 eval.c:1949
-#, c-format
-msgid "reference to uninitialized variable `%s'"
-msgstr "g廕搆 tham chi廕簑 廕積 bi廕積 chがa が廙θ s廙 kh廙i 竄 %s 罈"
-
-#: builtin.c:1098
+#: builtin.c:2121
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "g廕搆 tham chi廕簑 廕積 trが廙ng chがa が廙θ s廙 kh廙i 竄 $%d 罈"
-#: builtin.c:1185
+#: builtin.c:2208
msgid "tolower: received non-string argument"
msgstr "tolower: (廕積 th廕叼 hヾn) 瓊 nh廕要 廙i s廙 kh獺c chu廙i"
-#: builtin.c:1219
+#: builtin.c:2242
msgid "toupper: received non-string argument"
msgstr "toupper: (廕積 cao hヾn) 瓊 nh廕要 廙i s廙 kh獺c chu廙i"
-#: builtin.c:1255
+#: builtin.c:2278
msgid "atan2: received non-numeric first argument"
msgstr "atan2: 瓊 nh廕要 廙i s廙 th廙 nh廕另 kh獺c thu廙c s廙"
-#: builtin.c:1257
+#: builtin.c:2280
msgid "atan2: received non-numeric second argument"
msgstr "atan2: 瓊 nh廕要 廙i s廙 th廙 hai kh獺c thu廙c s廙"
-#: builtin.c:1276
+#: builtin.c:2299
msgid "sin: received non-numeric argument"
msgstr "sin: 瓊 nh廕要 廙i s廙 kh繫ng ph廕ξ thu廙c s廙"
-#: builtin.c:1292
+#: builtin.c:2315
msgid "cos: received non-numeric argument"
msgstr "cos: 瓊 nh廕要 廙i s廙 kh繫ng ph廕ξ thu廙c s廙"
-#: builtin.c:1345
+#: builtin.c:2368
msgid "srand: received non-numeric argument"
msgstr "srand: 瓊 nh廕要 廙i s廙 kh繫ng ph廕ξ thu廙c s廙"
-#: builtin.c:1376
+#: builtin.c:2399
msgid "match: third argument is not an array"
msgstr "match: (kh廙p) 廙i s廙 th廙 ba kh繫ng ph廕ξ l m廕τg"
-#: builtin.c:1883
+#: builtin.c:2664
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: 廙i s廙 th廙 ba 0 が廙θ x廙 l羸 nhが 1"
-#: builtin.c:1923
+#: builtin.c:2957
msgid "lshift: received non-numeric first argument"
msgstr "lshift: 瓊 nh廕要 廙i s廙 廕吟 kh繫ng ph廕ξ thu廙c s廙"
-#: builtin.c:1925
+#: builtin.c:2959
msgid "lshift: received non-numeric second argument"
msgstr "lshift: (d廙ch b礙n tr獺i) 瓊 nh廕要 廙i s廙 th廙 hai kh獺c thu廙c s廙"
-#: builtin.c:1931
+#: builtin.c:2965
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr "lshift(%lf, %lf): gi獺 tr廙 璽m s廕 g璽y ra k廕篙 qu廕 l廕"
-#: builtin.c:1933
+#: builtin.c:2967
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr "lshift(%lf, %lf): gi獺 tr廙 thu廙c ph璽n s廙 s廕 b廙 x矇n ng廕疸"
-#: builtin.c:1935
+#: builtin.c:2969
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr "lshift(%lf, %lf): gi獺 tr廙 d廙ch qu獺 l廙n s廕 g璽y ra k廕篙 qu廕 l廕"
-#: builtin.c:1960
+#: builtin.c:2994
msgid "rshift: received non-numeric first argument"
msgstr "rshift: 瓊 nh廕要 廙i s廙 th廙 nh廕另 kh獺c thu廙c s廙"
-#: builtin.c:1962
+#: builtin.c:2996
msgid "rshift: received non-numeric second argument"
msgstr "rshift: (d廙ch b礙n ph廕ξ) 瓊 nh廕要 廙i s廙 th廙 hai kh獺c thu廙c s廙"
-#: builtin.c:1968
+#: builtin.c:3002
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr "rshift(%lf, %lf): gi獺 tr廙 璽m s廕 g璽y ra k廕篙 qu廕 l廕"
-#: builtin.c:1970
+#: builtin.c:3004
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr "rshift(%lf, %lf): gi獺 tr廙 thu廙c ph璽n s廙 s廕 b廙 x矇n ng廕疸"
-#: builtin.c:1972
+#: builtin.c:3006
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr "rshift(%lf, %lf): gi獺 tr廙 d廙ch qu獺 l廙n s廕 g璽y ra k廕篙 qu廕 l廕"
-#: builtin.c:1997
+#: builtin.c:3031
msgid "and: received non-numeric first argument"
msgstr "and: (v) 瓊 nh廕要 廙i s廙 廕吟 kh繫ng ph廕ξ thu廙c s廙"
-#: builtin.c:1999
+#: builtin.c:3033
msgid "and: received non-numeric second argument"
msgstr "and: (v) 瓊 nh廕要 廙i s廙 th廙 hai kh獺c thu廙c s廙"
-#: builtin.c:2005
+#: builtin.c:3039
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr "and(%lf, %lf): (v) gi獺 tr廙 璽m s廕 g璽y ra k廕篙 qu廕 l廕"
-#: builtin.c:2007
+#: builtin.c:3041
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr "and(%lf, %lf): (v) gi獺 tr廙 thu廙c ph璽n s廙 s廕 b廙 x矇n ng廕疸"
-#: builtin.c:2032
+#: builtin.c:3066
msgid "or: received non-numeric first argument"
msgstr "or: (ho廕搾) 瓊 nh廕要 廙i s廙 廕吟 kh繫ng ph廕ξ thu廙c s廙"
-#: builtin.c:2034
+#: builtin.c:3068
msgid "or: received non-numeric second argument"
msgstr "or: (ho廕搾) 瓊 nh廕要 廙i s廙 th廙 hai kh獺c thu廙c s廙"
-#: builtin.c:2040
+#: builtin.c:3074
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr "or(%lf, %lf): (ho廕搾) gi獺 tr廙 璽m s廕 g璽y ra k廕篙 qu廕 l廕"
-#: builtin.c:2042
+#: builtin.c:3076
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr "or(%lf, %lf): (ho廕搾) gi獺 tr廙 thu廙c ph璽n s廙 s廕 b廙 x矇n ng廕疸"
-#: builtin.c:2070
+#: builtin.c:3102
msgid "xor: received non-numeric first argument"
msgstr "xor: (kh繫ng ho廕搾) 瓊 nh廕要 廙i s廙 th廙 nh廕另 kh獺c thu廙c s廙"
-#: builtin.c:2072
+#: builtin.c:3104
msgid "xor: received non-numeric second argument"
msgstr "xor: 瓊 nh廕要 廙i s廙 th廙 hai kh獺c thu廙c s廙"
-#: builtin.c:2078
+#: builtin.c:3110
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr "xor(%lf, %lf): (kh繫ng ho廕搾) gi獺 tr廙 璽m s廕 g璽y ra k廕篙 qu廕 l廕"
-#: builtin.c:2080
+#: builtin.c:3112
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr "xor(%lf, %lf): (kh繫ng ho廕搾) gi獺 tr廙 thu廙c ph璽n s廙 s廕 b廙 x矇n ng廕疸"
-#: builtin.c:2104 builtin.c:2110
+#: builtin.c:3136
msgid "compl: received non-numeric argument"
msgstr "compl: (bi礙n d廙ch) 瓊 nh廕要 廙i s廙 kh獺c thu廙c s廙"
-#: builtin.c:2112
+#: builtin.c:3142
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr "compl(%lf): (bi礙n d廙ch) gi獺 tr廙 璽m s廕 g璽y ra k廕篙 qu廕 l廕"
-#: builtin.c:2114
+#: builtin.c:3144
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr "compl(%lf): (bi礙n d廙ch) gi獺 tr廙 thu廙c ph璽n s廙 se b廙 x矇n ng廕疸"
-#: builtin.c:2283
+#: builtin.c:3313
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
-msgstr "dcgettext: 竄%s罈 kh繫ng ph廕ξ l m廙t ph璽n lo廕【 mi廙n 廙a phがヾng h廙φ l廙"
+msgstr "dcgettext: 竄 %s 罈 kh繫ng ph廕ξ l m廙t ph璽n lo廕【 mi廙n 廙a phがヾng h廙φ l廙"
-#: eval.c:410
+#: eval.c:395
#, c-format
msgid "unknown nodetype %d"
msgstr "kh繫ng bi廕篙 ki廙u n繳t %d"
-#: eval.c:421 eval.c:435
-#, fuzzy, c-format
+#: eval.c:406 eval.c:420
+#, c-format
msgid "unknown opcode %d"
-msgstr "kh繫ng bi廕篙 ki廙u n繳t %d"
+msgstr "g廕搆 opcode (m瓊 thao t獺c) kh繫ng r繭 %d"
-#: eval.c:432
+#: eval.c:417
#, c-format
msgid "opcode %s not an operator or keyword"
-msgstr ""
+msgstr "m瓊 l廙nh %s kh繫ng ph廕ξ l m廙t to獺n t廙 ho廕搾 t廙 kho獺"
-#: eval.c:485
+#: eval.c:472
msgid "buffer overflow in genflags2str"
msgstr "trn b廙 廙m trong 竄 genflags2str 罈 (t廕︽ ra c廙 廕積 chu廙i)"
-#: eval.c:696
+#: eval.c:675
#, c-format
msgid ""
"\n"
@@ -887,899 +959,814 @@ msgid ""
"\n"
msgstr ""
"\n"
-"\t# 廙ng g廙i ch廙妾 nng:\n"
+"\t# 廙ng g廙i hm:\n"
"\n"
-#: eval.c:723
+#: eval.c:704
msgid "`IGNORECASE' is a gawk extension"
msgstr "竄 IGNORECASE 罈 (b廙 qua ch廙 hoa/thが廙ng) l ph廕吵 m廙 r廙ng gawk"
-#: eval.c:752
+#: eval.c:736
msgid "`BINMODE' is a gawk extension"
msgstr "竄 BINMODE 罈 (ch廕 廙 nh廙 ph璽n) l ph廕吵 m廙 r廙ng gawk"
-#: eval.c:810
+#: eval.c:793
#, c-format
msgid "BINMODE value `%s' is invalid, treated as 3"
-msgstr ""
+msgstr "Gi獺 tr廙 BINMODE (ch廕 廙 nh廙 ph璽n) 竄 %s 罈 kh繫ng h廙φ l廙 n礙n th廕句 l 3"
-#: eval.c:900
+#: eval.c:885
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "廕搾 t廕 竄 %sFMT 罈 sai 竄 %s 罈"
-#: eval.c:978
+#: eval.c:969
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "ang t廕眩 竄 --lint 罈 do vi廙c g獺n cho 竄 LINT 罈"
-#: eval.c:1247
-#, fuzzy
-msgid "sorted array traversal is a gawk extension"
-msgstr "竄 delete array 罈 (x籀a b廙 m廕τg) l m廙t ph廕吵 m廙 r廙ng gawk"
-
-#: eval.c:1291
-msgid "`PROCINFO[\"sorted_in\"]' value is not recognized"
-msgstr ""
-
-#: eval.c:1373 eval.c:1923
-#, c-format
-msgid "can't use function name `%s' as variable or array"
-msgstr "kh繫ng th廙 d羅ng t礙n ch廙妾 nng 竄 %s 罈 nhが l bi廕積 hay m廕τg"
-
-#: eval.c:1401
-msgid "assignment is not allowed to result of builtin function"
-msgstr "kh繫ng cho ph矇p g獺n cho k廕篙 qu廕 c廙吧 ch廙妾 nng 竄 builtin 罈 (c籀 s廕登)"
-
-#: eval.c:1410 eval.c:1935 eval.c:1948
+#: eval.c:1132
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "g廕搆 tham chi廕簑 廕積 廙i s廙 chがa が廙θ s廙 kh廙i 竄 %s 罈"
-#: eval.c:1429
+#: eval.c:1133
+#, c-format
+msgid "reference to uninitialized variable `%s'"
+msgstr "g廕搆 tham chi廕簑 廕積 bi廕積 chがa が廙θ s廙 kh廙i 竄 %s 罈"
+
+#: eval.c:1151
msgid "attempt to field reference from non-numeric value"
msgstr "c廙 g廕疸g tham chi廕簑 trが廙ng t廙 gi獺 tr廙 kh獺c thu廙c s廙"
-#: eval.c:1431
-#, fuzzy
+#: eval.c:1153
msgid "attempt to field reference from null string"
-msgstr "c廙 tham chi廕簑 t廙 chu廙i v繫 gi獺 tr廙"
+msgstr "c廙 g廕疸g tham chi廕簑 trが廙ng t廙 ch廙i tr廙ng r廙ng"
-#: eval.c:1437
-#, fuzzy, c-format
+#: eval.c:1161
+#, c-format
msgid "attempt to access field %ld"
-msgstr "c廙 g廕疸g truy c廕計 trが廙ng %d"
+msgstr "c廙 g廕疸g 廙 truy c廕計 trが廙ng %ld"
-#: eval.c:1446
-#, fuzzy, c-format
+#: eval.c:1170
+#, c-format
msgid "reference to uninitialized field `$%ld'"
-msgstr "g廕搆 tham chi廕簑 廕積 trが廙ng chがa が廙θ s廙 kh廙i 竄 $%d 罈"
+msgstr "tham chi廕簑 廕積 trが廙ng chがa が廙θ kh廙i t廕︽ 竄 $%ld 罈"
-#: eval.c:1508
+#: eval.c:1257
#, c-format
msgid "function `%s' called with more arguments than declared"
-msgstr "ch廙妾 nng 竄 %s 罈 が廙θ g廙i v廙i s廙 廙i s廙 hヾn s廙 が廙θ tuy礙n b廙"
+msgstr "hm 竄 %s 罈 が廙θ g廙i v廙i s廙 廙i s廙 hヾn s廙 が廙θ tuy礙n b廙"
-#: eval.c:1663
+#: eval.c:1452
#, c-format
msgid "unwind_stack: unexpected type `%s'"
-msgstr ""
+msgstr "unwind_stack: kh繫ng mong 廙ξ ki廙u `%s'"
-#: eval.c:1747
+#: eval.c:1546
msgid "division by zero attempted in `/='"
msgstr "c廙 g廕疸g chia cho s廙 kh繫ng trong 竄 /= 罈"
-#: eval.c:1754
+#: eval.c:1553
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "c廙 g廕疸g chia cho s廙 kh繫ng trong 竄 %%= 罈"
-#: eval.c:2057
-msgid "assignment used in conditional context"
-msgstr "i廙u g獺n が廙θ d羅ng trong ng廙 c廕τh i廙u ki廙n"
-
-#: eval.c:2061
-msgid "statement has no effect"
-msgstr "c璽u kh繫ng c籀 t獺c d廙叩g"
-
-#: eval.c:2473
-#, c-format
-msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
-msgstr ""
-"cho loop: (cho v簷ng l廕搆) m廕τg 竄 %s 罈 瓊 thay 廙i k穩ch thが廙c t廙 %ld 廕積 %ld "
-"trong khi th廙帷 hi廙n v簷ng l廕搆"
-
-#: eval.c:2583
-#, c-format
-msgid "function called indirectly through `%s' does not exist"
-msgstr ""
-
-#: eval.c:2595
-#, c-format
-msgid "function `%s' not defined"
-msgstr "chがa x獺c 廙nh ch廙妾 nng 竄 %s 罈"
-
-#: eval.c:2656
-#, fuzzy, c-format
-msgid "non-redirected `getline' invalid inside `%s' rule"
-msgstr ""
-"trong hnh 廙ng 竄 END 罈 (k廕篙 th繳c) c籀 竄 getline 罈 (l廕句 d簷ng) kh繫ng が廙θ "
-"chuy廙n hが廙ng l廕【 v chがa が廙θ x獺c 廙nh."
-
-#: eval.c:2717
-#, fuzzy, c-format
-msgid "`nextfile' cannot be called from a `%s' rule"
-msgstr ""
-"kh繫ng th廙 g廙i 竄 nextfile 罈 (t廕計 tin k廕 ti廕穆) t廙 quy t廕畚 竄 END 罈 k廕篙 th繳c)"
-
-#: eval.c:2767
-#, fuzzy, c-format
-msgid "`next' cannot be called from a `%s' rule"
-msgstr "kh繫ng th廙 g廙i 竄 next 罈 (k廕 ti廕穆) t廙 quy t廕畚 竄 END 罈 k廕篙 th繳c)"
-
-#: eval.c:2834
-#, c-format
-msgid "Sorry, don't know how to interpret `%s'"
-msgstr ""
-
-#: ext.c:64
+#: ext.c:70
msgid "extensions are not allowed in sandbox mode"
-msgstr ""
+msgstr "ph廕吵 m廙 r廙ng kh繫ng cho ph矇p 廙 ch廕 廙 khu繫n 繳c"
-#: ext.c:70 ext.c:75
+#: ext.c:73
msgid "`extension' is a gawk extension"
msgstr "竄 extension 罈 l m廙t ph廕吵 m廙 r廙ng gawk"
-#: ext.c:85
+#: ext.c:80
#, fuzzy, c-format
-msgid "fatal: extension: cannot open `%s' (%s)\n"
-msgstr "extension: (ph廕吵 m廙 r廙ng) kh繫ng th廙 m廙 竄 %s 罈 (%s)\n"
+msgid "extension: cannot open library `%s' (%s)\n"
+msgstr "nghi礙m tr廙ng: ph廕吵 m廙 r廙ng: kh繫ng th廙 m廙 `%s' (%s)\n"
-#: ext.c:94
+#: ext.c:86
#, fuzzy, c-format
msgid ""
-"fatal: extension: library `%s': does not define "
-"`plugin_is_GPL_compatible' (%s)\n"
+"extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n"
msgstr ""
-"extension: (ph廕吵 m廙 r廙ng) thが vi廙n 竄 %s 罈: kh繫ng th廙 g廙i ch廙妾 nng 竄 %s "
-"罈 (%s)\n"
+"nghi礙m tr廙ng: extension (ph廕吵 m廙 r廙ng): thが vi廙n 竄 %s 罈: kh繫ng th廙 廙nh "
+"ngh藺a `plugin_is_GPL_compatible' (tがヾng th穩ch c廕痂 l d羅ng GPL) (%s)\n"
-#: ext.c:103
+#: ext.c:90
#, fuzzy, c-format
-msgid "fatal: extension: library `%s': cannot call function `%s' (%s)\n"
+msgid "extension: library `%s': cannot call function `%s' (%s)\n"
msgstr ""
-"extension: (ph廕吵 m廙 r廙ng) thが vi廙n 竄 %s 罈: kh繫ng th廙 g廙i ch廙妾 nng 竄 %s "
-"罈 (%s)\n"
+"nghi礙m tr廙ng: extension (ph廕吵 m廙 r廙ng): thが vi廙n 竄 %s 罈: kh繫ng th廙 g廙i hm 竄 "
+"%s 罈 (%s)\n"
-#: ext.c:137
+#: ext.c:118
msgid "extension: missing function name"
-msgstr "extension: (ph廕吵 m廙 r廙ng) t礙n ch廙妾 nng c簷n thi廕簑"
+msgstr "extension: (ph廕吵 m廙 r廙ng) t礙n hm c簷n thi廕簑"
-#: ext.c:142
+#: ext.c:123
#, c-format
msgid "extension: illegal character `%c' in function name `%s'"
msgstr ""
-"extension: (ph廕吵 m廙 r廙ng) g廕搆 k羸 t廙 c廕叮 竄 %c 罈 n廕彩 trong t礙n ch廙妾 nng 竄 %s 罈"
+"extension: (ph廕吵 m廙 r廙ng) g廕搆 k羸 t廙 c廕叮 竄 %c 罈 n廕彩 trong t礙n hm 竄 %s 罈"
-#: ext.c:151
+#: ext.c:131
#, c-format
msgid "extension: can't redefine function `%s'"
-msgstr "extension: (ph廕吵 m廙 r廙ng) kh繫ng th廙 x獺c 廙nh l廕【 ch廙妾 nng 竄 %s 罈"
+msgstr "extension: (ph廕吵 m廙 r廙ng) kh繫ng th廙 x獺c 廙nh l廕【 hm 竄 %s 罈"
-#: ext.c:155
+#: ext.c:135
#, c-format
msgid "extension: function `%s' already defined"
-msgstr "extension: (ph廕吵 m廙 r廙ng) ch廙妾 nng 竄 %s 罈 瓊 が廙θ x獺c 廙nh"
+msgstr "extension: (ph廕吵 m廙 r廙ng) hm 竄 %s 罈 瓊 が廙θ x獺c 廙nh"
-#: ext.c:160
+#: ext.c:139
#, c-format
msgid "extension: function name `%s' previously defined"
-msgstr "t礙n ch廙妾 nng 竄 %s 罈 瓊 が廙θ x獺c 廙nh trが廙c"
+msgstr "t礙n hm 竄 %s 罈 瓊 が廙θ x獺c 廙nh trが廙c"
-#: ext.c:162
+#: ext.c:141
#, c-format
msgid "extension: can't use gawk built-in `%s' as function name"
msgstr ""
"extension: (ph廕吵 m廙 r廙ng) kh繫ng th廙 d羅ng i廙u c籀 s廕登 c廙吧 gawk 竄 %s 罈 nhが l "
-"t礙n ch廙妾 nng"
+"t礙n hm"
-#: ext.c:166
+#: ext.c:144
#, c-format
msgid "make_builtin: negative argument count for function `%s'"
-msgstr ""
+msgstr "make_builtin: 廙i s廙 dnh cho s廙 廕禦 b廙 璽m cho hm `%s'"
-#: ext.c:269
-#, fuzzy, c-format
+#: ext.c:206
+#, c-format
msgid "function `%s' defined to take no more than %d argument(s)"
-msgstr "ch廙妾 nng 竄 %s 罈 が廙θ x獺c 廙nh 廙 ch廕叼 nh廕叩 %d 廙i s廙 t廙i a"
+msgstr "hm 竄 %s 罈 が廙θ x獺c 廙nh 廙 ch廕叼 nh廕叩 %d 廙i s廙 t廙i a"
-#: ext.c:272
+#: ext.c:209
#, c-format
msgid "function `%s': missing argument #%d"
-msgstr "ch廙妾 nng 竄 %s 罈 c簷n thi廕簑 廙i s廙 th廙 %d"
+msgstr "hm 竄 %s 罈 c簷n thi廕簑 廙i s廙 th廙 %d"
-#: ext.c:282
+#: ext.c:226
#, c-format
msgid "function `%s': argument #%d: attempt to use scalar as an array"
-msgstr ""
-"ch廙妾 nng 竄 %s 罈: 廙i s廙 th廙 %d: c廙 g廕疸g d羅ng i廙u v繫 hが廙ng nhが l m廕τg"
+msgstr "hm 竄 %s 罈: 廙i s廙 th廙 %d: c廙 g廕疸g d羅ng i廙u v繫 hが廙ng nhが l m廕τg"
-#: ext.c:286
+#: ext.c:230
#, c-format
msgid "function `%s': argument #%d: attempt to use array as a scalar"
-msgstr ""
-"ch廙妾 nng 竄 %s 罈: 廙i s廙 th廙 %d: c廙 g廕疸g d羅ng m廕τg nhが l i廙u v繫 hが廙ng"
+msgstr "hm 竄 %s 罈: 廙i s廙 th廙 %d: c廙 g廕疸g d羅ng m廕τg nhが l i廙u v繫 hが廙ng"
-#: ext.c:299
+#: ext.c:244
msgid "Operation Not Supported"
msgstr "Thao t獺c kh繫ng が廙θ h廙 tr廙"
-#: field.c:328
+#: ext.c:256
+msgid "dynamic loading of library not supported"
+msgstr ""
+
+#: field.c:339
msgid "NF set to negative value"
msgstr "竄 NF 罈 が廙θ 廕暗 thnh gi獺 tr廙 璽m"
-#: field.c:939 field.c:946 field.c:950
-#, fuzzy
+#: field.c:962 field.c:969 field.c:973
msgid "split: fourth argument is a gawk extension"
-msgstr "match: (kh廙p) 廙i s廙 th廙 ba l ph廕吵 m廙 r廙ng gawk"
+msgstr "split (chia t獺ch): 廙i s廙 th廙 tが l ph廕吵 m廙 r廙ng gawk"
-#: field.c:943
-#, fuzzy
+#: field.c:966
msgid "split: fourth argument is not an array"
-msgstr "split: (chia t獺ch) 廙i s廙 th廙 hai kh繫ng ph廕ξ l m廕τg"
+msgstr "split (chia t獺ch): 廙i s廙 th廙 tが kh繫ng ph廕ξ l m廕τg"
-#: field.c:957
+#: field.c:980
msgid "split: second argument is not an array"
msgstr "split: (chia t獺ch) 廙i s廙 th廙 hai kh繫ng ph廕ξ l m廕τg"
-#: field.c:962
-msgid "split: can not use the same array for second and fourth args"
+#: field.c:984
+msgid "split: cannot use the same array for second and fourth args"
msgstr ""
+"split (chia t獺ch): kh繫ng th廙 s廙 d廙叩g c羅ng m廙t m廕τg c籀 c廕 廙i s廙 th廙 hai v "
+"th廙 tが"
-#: field.c:990
+#: field.c:989
+msgid "split: cannot use a subarray of second arg for fourth arg"
+msgstr ""
+"split (ph璽n t獺ch): kh繫ng th廙 s廙 d廙叩g m廕τg con c廙吧 tham s廙 th廙 hai cho tham "
+"s廙 th廙 tが"
+
+#: field.c:992
+msgid "split: cannot use a subarray of fourth arg for second arg"
+msgstr ""
+"split (ph璽n t獺ch): kh繫ng th廙 s廙 d廙叩g m廕τg con c廙吧 tham s廙 th廙 tが cho tham s廙 "
+"th廙 hai"
+
+#: field.c:1021
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廕吵 m廙 r廙ng gawk"
-#: field.c:1031
-#, fuzzy
+#: field.c:1061
msgid "patsplit: fourth argument is not an array"
-msgstr "split: (chia t獺ch) 廙i s廙 th廙 hai kh繫ng ph廕ξ l m廕τg"
+msgstr "patsplit: 廙i s廙 th廙 tが kh繫ng ph廕ξ l m廕τg"
-#: field.c:1036
-#, fuzzy
+#: field.c:1066
msgid "patsplit: second argument is not an array"
-msgstr "split: (chia t獺ch) 廙i s廙 th廙 hai kh繫ng ph廕ξ l m廕τg"
+msgstr "patsplit: 廙i s廙 th廙 hai kh繫ng ph廕ξ l m廕τg"
-#: field.c:1054
-#, fuzzy
+#: field.c:1072
msgid "patsplit: third argument must be non-null"
-msgstr "match: (kh廙p) 廙i s廙 th廙 ba kh繫ng ph廕ξ l m廕τg"
+msgstr "patsplit: 廙i s廙 th廙 ba kh繫ng ph廕ξ kh繫ng r廙ng"
+
+#: field.c:1076
+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廙叩g c羅ng m廙t m廕τg cho c廕 "
+"hai 廙i s廙 th廙 hai v th廙 tが"
+
+#: field.c:1081
+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廙叩g m廕τg con c廙吧 tham s廙 "
+"th廙 hai cho tham s廙 th廙 tが"
-#: field.c:1059
-msgid "patsplit: can not use the same array for second and fourth args"
+#: field.c:1084
+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廙叩g m廕τg con c廙吧 tham s廙 "
+"th廙 tが cho tham s廙 th廙 hai"
-#: field.c:1089
+#: field.c:1122
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "竄 FIELDWIDTHS 罈 (廙 r廙ng trが廙ng) l ph廕吵 m廙 r廙ng gawk"
-#: field.c:1152
+#: field.c:1186
#, c-format
msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr "gi獺 tr廙 FIELDWIDTHS (廙 r廙ng trが廙ng) kh繫ng h廙φ l廙, g廕吵 竄 %s 罈"
-#: field.c:1225
+#: field.c:1259
msgid "null string for `FS' is a gawk extension"
msgstr "chu廙i v繫 gi獺 tr廙 cho 竄 FS 罈 l ph廕吵 m廙 r廙ng gawk"
-#: field.c:1229
+#: field.c:1263
msgid "old awk does not support regexps as value of `FS'"
msgstr "awk c觼 kh繫ng h廙 tr廙 bi廙u th廙妾 ch穩nh quy lm gi獺 tr廙 c廙吧 竄 FS 罈"
-#: field.c:1348
-#, fuzzy
+#: field.c:1382
msgid "`FPAT' is a gawk extension"
-msgstr "竄 %s 罈 l m廙t ph廕吵 m廙 r廙ng gawk"
+msgstr "`FPAT' l ph廕吵 m廙 r廙ng c廙吧 gawk"
-#: getopt.c:574 getopt.c:590
+#: getopt.c:604 getopt.c:633
#, fuzzy, c-format
-msgid "%s: option '%s' is ambiguous\n"
-msgstr "%s: t羅y ch廙n 竄 %s 罈 l mヾ h廙\n"
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr "%s: t羅y ch廙n 竄 %s 罈 v廕南 mヾ h廙\n"
-#: getopt.c:623 getopt.c:627
-#, fuzzy, c-format
+#: getopt.c:679 getopt.c:683
+#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: t羅y ch廙n 竄 --%s 罈 kh繫ng cho ph矇p 廙i s廙\n"
-#: getopt.c:636 getopt.c:641
-#, fuzzy, c-format
+#: getopt.c:692 getopt.c:697
+#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: t羅y ch廙n 竄 %c%s 罈 kh繫ng cho ph矇p 廙i s廙\n"
-#: getopt.c:684 getopt.c:703
-#, fuzzy, c-format
+#: getopt.c:740 getopt.c:759
+#, c-format
msgid "%s: option '--%s' requires an argument\n"
-msgstr "%s: t羅y ch廙n 竄%s罈 c廕吵 廕積 廙i s廙\n"
+msgstr "%s: t羅y ch廙n 竄 --%s 罈 y礙u c廕吟 m廙t 廙i s廙\n"
-#: getopt.c:741 getopt.c:744
-#, fuzzy, c-format
+#: getopt.c:797 getopt.c:800
+#, c-format
msgid "%s: unrecognized option '--%s'\n"
-msgstr "%s: kh繫ng nh廕要 di廙n t羅y ch廙n 竄 --%s 罈\n"
+msgstr "%s: kh繫ng nh廕要 ra t羅y ch廙n 竄 --%s 罈\n"
-#: getopt.c:752 getopt.c:755
-#, fuzzy, c-format
+#: getopt.c:808 getopt.c:811
+#, c-format
msgid "%s: unrecognized option '%c%s'\n"
-msgstr "%s: kh繫ng nh廕要 di廙n t羅y ch廙n 竄 %c%s 罈\n"
+msgstr "%s: kh繫ng nh廕要 ra t羅y ch廙n 竄 %c%s 罈\n"
-#: getopt.c:804 getopt.c:807
-#, fuzzy, c-format
+#: getopt.c:860 getopt.c:863
+#, c-format
msgid "%s: invalid option -- '%c'\n"
-msgstr "%s: t羅y ch廙n kh繫ng h廙φ l廙 竄 -- %c 罈\n"
+msgstr "%s: t羅y ch廙n kh繫ng h廙φ l廙 -- 竄 %c 罈\n"
-#: getopt.c:857 getopt.c:874 getopt.c:1082 getopt.c:1100
-#, fuzzy, c-format
+#: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161
+#, c-format
msgid "%s: option requires an argument -- '%c'\n"
-msgstr "%s: t羅y ch廙n c廕吵 廕積 廙i s廙 竄 -- %c 罈\n"
+msgstr "%s: t羅y ch廙n y礙u c廕吟 m廙t 廙i s廙 -- 竄 %c 罈\n"
-#: getopt.c:930 getopt.c:946
-#, fuzzy, c-format
+#: getopt.c:989 getopt.c:1005
+#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
-msgstr "%s: t羅y ch廙n 竄 -W %s 罈 l mヾ h廙\n"
+msgstr "%s: t羅y ch廙n 竄 -W %s 罈 v廕南 mヾ h廙\n"
-#: getopt.c:970 getopt.c:988
-#, fuzzy, c-format
+#: getopt.c:1029 getopt.c:1047
+#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
-msgstr "%s: t羅y ch廙n 竄-W %s罈 kh繫ng cho ph矇p 廙i s廙\n"
+msgstr "%s: t羅y ch廙n 竄 -W %s 罈 kh繫ng cho ph矇p 廙i s廙\n"
-#: getopt.c:1009 getopt.c:1027
-#, fuzzy, c-format
+#: getopt.c:1068 getopt.c:1086
+#, c-format
msgid "%s: option '-W %s' requires an argument\n"
-msgstr "%s: t羅y ch廙n 竄%s罈 c廕吵 廕積 廙i s廙\n"
+msgstr "%s: t羅y ch廙n 竄 -W %s 罈 y礙u c廕吟 m廙t 廙i s廙\n"
-#: io.c:282
+#: io.c:326
#, c-format
msgid "command line argument `%s' is a directory: skipped"
-msgstr ""
+msgstr "tham s廙 d簷ng l廙nh `%s' l m廙t thが m廙卉: 瓊 b廙 b廙 qua"
-#: io.c:285 io.c:382
+#: io.c:329 io.c:438
#, c-format
msgid "cannot open file `%s' for reading (%s)"
-msgstr "kh繫ng m廙 が廙θ t廕計 tin 竄%s罈 廙 ghi (%s)"
+msgstr "kh繫ng m廙 が廙θ t廕計 tin 竄 %s 罈 廙 廙c (%s)"
-#: io.c:429
-#, c-format
-msgid "error reading input file `%s': %s"
-msgstr "g廕搆 l廙i khi 廙c t廕計 tin nh廕計 竄 %s 罈: %s"
-
-#: io.c:498
+#: io.c:568
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
-msgstr "l廙i 籀ng 竄 fd %d 罈 (竄 %s 罈) (%s)"
+msgstr "l廙i 籀ng fd %d (竄 %s 罈) (%s)"
-#: io.c:575
+#: io.c:645
msgid "redirection not allowed in sandbox mode"
-msgstr ""
+msgstr "chuy廙n hが廙ng kh繫ng cho ph矇p 廙 ch廕 廙 khu繫n 繳c"
-#: io.c:609
+#: io.c:679
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "bi廙u th廙妾 trong i廙u chuy廙n hが廙ng 竄 %s 罈 ch廙 c籀 gi獺 tr廙 thu廙c s廙"
-#: io.c:615
+#: io.c:685
#, c-format
msgid "expression for `%s' redirection has null string value"
-msgstr "bi廙u th廙妾 cho i廙u chuy廙n hが廙ng 竄%s罈 c籀 gi獺 tr廙 chu廙i v繫 gi獺 tr廙"
+msgstr "bi廙u th廙妾 cho i廙u chuy廙n hが廙ng 竄 %s 罈 c籀 gi獺 tr廙 chu廙i v繫 gi獺 tr廙"
-#: io.c:621
+#: io.c:690
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
-"t礙n t廕計 tin 竄%s罈 cho i廙u chuy廙n hが廙ng 竄%s罈 c籀 l廕 l k廕篙 qu廕 c廙吧 bi廙u th廙妾 "
-"lu廕要 l羸"
+"t礙n t廕計 tin 竄 %s 罈 cho i廙u chuy廙n hが廙ng 竄 %s 罈 c籀 l廕 l k廕篙 qu廕 c廙吧 bi廙u "
+"th廙妾 lu廕要 l羸"
-#: io.c:664
+#: io.c:733
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "kh繫ng c廕吵 h廙φ 竄 > 罈 v 竄 >> 罈 cho t廕計 tin 竄 %.*s 罈"
-#: io.c:717
+#: io.c:786
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "kh繫ng th廙 m廙 廙ng d廕南 竄 %s 罈 廙 xu廕另 (%s)"
-#: io.c:727
+#: io.c:796
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "kh繫ng th廙 m廙 廙ng d廕南 竄 %s 罈 廙 nh廕計 (%s)"
-#: io.c:749
+#: io.c:819
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr "kh繫ng th廙 m廙 廙ng d廕南 hai chi廙u 竄 %s 罈 廙 nh廕計/xu廕另 (%s)"
-#: io.c:831
+#: io.c:900
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "kh繫ng th廙 chuy廙n hが廙ng t廙 竄 %s 罈 (%s)"
-#: io.c:834
+#: io.c:903
#, c-format
msgid "can't redirect to `%s' (%s)"
-msgstr "kh繫ng th廙 chuy廙n hが廙ng 廕積 竄%s罈 (%s)"
+msgstr "kh繫ng th廙 chuy廙n hが廙ng 廕積 竄 %s 罈 (%s)"
-#: io.c:883
+#: io.c:954
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"瓊 t廙i gi廙i h廕》 h廙 th廙ng v廙 t廕計 tin が廙θ m廙 n礙n b廕眩 廕吟 ph廙i h廙φ nhi廙u d簷ng "
"i廙u m繫 t廕 t廕計 tin"
-#: io.c:899
+#: io.c:970
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "l廙i 籀ng 竄 %s 罈 (%s)"
-#: io.c:907
+#: io.c:978
msgid "too many pipes or input files open"
msgstr "qu獺 nhi廙u 廙ng d廕南 hay t廕計 tin nh廕計 が廙θ m廙"
-#: io.c:929
+#: io.c:1000
msgid "close: second argument must be `to' or `from'"
msgstr "close: (籀ng) 廙i s廙 th廙 hai ph廕ξ l 竄 to 罈 (廕積) hay 竄 from 罈 (t廙)"
-#: io.c:946
+#: io.c:1017
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr ""
"close: (籀ng) 竄 %.*s 罈 kh繫ng ph廕ξ l t廕計 tin が廙θ m廙, 廙ng d廕南 hay ti廕積 tr穫nh "
"v廙i nhau"
-#: io.c:951
+#: io.c:1022
msgid "close of redirection that was never opened"
msgstr "vi廙c 籀ng i廙u chuy廙n hが廙ng chがa m廙"
-#: io.c:1048
+#: io.c:1120
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: (籀ng) i廙u chuy廙n hが廙ng 竄 %s 罈 kh繫ng が廙θ m廙 b廙i 竄 |& 罈 n礙n 廙i s廙 "
"th廙 hai b廙 b廙 qua"
-#: io.c:1064
+#: io.c:1137
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
-msgstr "tr廕》g th獺i th廕另 b廕【 (%d) khi 籀ng 廙ng d廕南 竄%s罈 (%s)"
+msgstr "tr廕》g th獺i th廕另 b廕【 (%d) khi 籀ng 廙ng d廕南 竄 %s 罈 (%s)"
-#: io.c:1067
+#: io.c:1140
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
-msgstr "tr廕》g th獺i th廕另 b廕【 (%d) khi 籀ng t廕計 tin 竄%s罈 (%s)"
+msgstr "tr廕》g th獺i th廕另 b廕【 (%d) khi 籀ng t廕計 tin 竄 %s 罈 (%s)"
-#: io.c:1087
+#: io.c:1160
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "kh繫ng c籀 vi廙c 籀ng d廙孤 kho獺t 廙 c廕痂 竄 %s 罈 が廙θ cung c廕叼"
-#: io.c:1090
+#: io.c:1163
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "kh繫ng c籀 vi廙c 籀ng d廙孤 kho獺t 廙ng ti廕積 tr穫nh 竄 %s 罈 が廙θ cung c廕叼"
-#: io.c:1093
+#: io.c:1166
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "kh繫ng c籀 vi廙c 籀ng d廙孤 kho獺t 廙ng d廕南 竄 %s 罈 が廙θ cung c廕叼"
-#: io.c:1096
+#: io.c:1169
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "kh繫ng c籀 vi廙c 籀ng d廙孤 kho獺t t廕計 tin 竄 %s 罈 が廙θ cung c廕叼"
-#: io.c:1124 io.c:1179 main.c:809 main.c:851
+#: io.c:1197 io.c:1252 main.c:825 main.c:862
#, c-format
msgid "error writing standard output (%s)"
msgstr "g廕搆 l廙i khi ghi thi廕篙 b廙 x廙丟漸t chu廕姊 (%s)"
-#: io.c:1128 io.c:1184
+#: io.c:1201 io.c:1257
#, c-format
msgid "error writing standard error (%s)"
msgstr "g廕搆 l廙i khi ghi thi廕篙 b廙 l廙i chu廕姊 (%s)"
-#: io.c:1136
+#: io.c:1209
#, c-format
msgid "pipe flush of `%s' failed (%s)."
-msgstr "l廙i x籀a s廕︷h 廙ng d廕南 竄 %s 罈 (%s)"
+msgstr "l廙i xo獺 s廕︷h 廙ng d廕南 竄 %s 罈 (%s)"
-#: io.c:1139
+#: io.c:1212
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
-msgstr "l廙i x籀a s廕︷h 廙ng d廕南 廙ng ti廕積 tr穫nh 廕積 竄 %s 罈 (%s)"
+msgstr "l廙i xo獺 s廕︷h 廙ng d廕南 廙ng ti廕積 tr穫nh 廕積 竄 %s 罈 (%s)"
-#: io.c:1142
+#: io.c:1215
#, c-format
msgid "file flush of `%s' failed (%s)."
-msgstr "l廙i x籀a s廕︷h t廕計 tin 竄 %s 罈 (%s)"
+msgstr "l廙i xo獺 s廕︷h t廕計 tin 竄 %s 罈 (%s)"
-#: io.c:1257
+#: io.c:1329
#, c-format
msgid "local port %s invalid in `/inet'"
msgstr "c廙ng c廙卉 b廙 %s kh繫ng h廙φ l廙 trong 竄 /inet 罈"
-#: io.c:1274
+#: io.c:1347
#, 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廕ξ h廙φ l廙"
-#: io.c:1426
+#: io.c:1499
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr ""
"trong t礙n t廕計 tin 廕搾 bi廙t 竄 %s 罈 kh繫ng cung c廕叼 giao th廙妾 (瓊 bi廕篙) no"
-#: io.c:1440
+#: io.c:1513
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "t礙n t廕計 tin 廕搾 bi廙t 竄 %s 罈 chがa xong"
-#: io.c:1457
+#: io.c:1530
msgid "must supply a remote hostname to `/inet'"
msgstr "ph廕ξ cung c廕叼 m廙t t礙n m獺y t廙 xa cho </inet>"
-#: io.c:1475
+#: io.c:1548
msgid "must supply a remote port to `/inet'"
msgstr "ph廕ξ cung c廕叼 m廙t c廙ng t廙 xa cho </inet>"
-#: io.c:1521
+#: io.c:1594
msgid "TCP/IP communications are not supported"
msgstr "truy廙n th繫ng TCP/IP kh繫ng が廙θ h廙 tr廙"
-#: io.c:1688
+#: io.c:1764
#, c-format
msgid "could not open `%s', mode `%s'"
-msgstr "kh繫ng m廙 が廙θ 竄%s罈, ch廕 廙 竄%s罈"
+msgstr "kh繫ng m廙 が廙θ 竄 %s 罈, ch廕 廙 竄 %s 罈"
-#: io.c:1739
+#: io.c:1814
#, c-format
msgid "close of master pty failed (%s)"
msgstr "l廙i 籀ng pty (ti s廕τ?) ch穩nh (%s)"
-#: io.c:1741 io.c:1909 io.c:2066
+#: io.c:1816 io.c:1984 io.c:2145
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "l廙i 籀ng thi廕篙 b廙 xu廕另 chu廕姊 trong ti廕積 tr穫nh con (%s)"
-#: io.c:1744
+#: io.c:1819
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr ""
"l廙i di chuy廙n pty (ti s廕τ?) ph廙 t廙i thi廕篙 b廙 xu廕另 chu廕姊 trong i廙u con "
"(nh璽n 繫i: %s)"
-#: io.c:1746 io.c:1914
+#: io.c:1821 io.c:1989
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "l廙i 籀ng thi廕篙 b廙 nh廕計 chu廕姊 trong ti廕積 tr穫nh con (%s)"
-#: io.c:1749
+#: io.c:1824
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr ""
"l廙i di chuy廙n pty (ti s廕τ?) ph廙 t廙i thi廕篙 b廙 nh廕計 chu廕姊 trong i廙u con "
"(nh璽n 繫i: %s)"
-#: io.c:1751 io.c:1772
+#: io.c:1826 io.c:1847
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "l廙i 籀ng pty (ti s廕τ?) ph廙 (%s)"
-#: io.c:1850 io.c:1912 io.c:2044 io.c:2069
+#: io.c:1925 io.c:1987 io.c:2122 io.c:2148
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr ""
"l廙i di chuy廙n 廙ng d廕南 廕積 thi廕篙 b廙 xu廕另 chu廕姊 trong ti廕積 tr穫nh con (dup: %s) "
"(nh璽n 繫i)"
-#: io.c:1857 io.c:1917
+#: io.c:1932 io.c:1992
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr ""
"l廙i di chuy廙n 廙ng d廕南 廕積 thi廕篙 b廙 nh廕計 chu廕姊 trong ti廕積 tr穫nh con (dup: %s) "
"(nh璽n 繫i)"
-#: io.c:1877 io.c:2059
+#: io.c:1952 io.c:2138
msgid "restoring stdout in parent process failed\n"
msgstr "l廙i ph廙卉 h廙i thi廕篙 b廙 xu廕另 chu廕姊 trong ti廕積 tr穫nh m廕鈾n"
-#: io.c:1885
+#: io.c:1960
msgid "restoring stdin in parent process failed\n"
msgstr "l廙i ph廙卉 h廙i thi廕篙 b廙 nh廕計 chu廕姊 trong ti廕積 tr穫nh m廕鈾n"
-#: io.c:1920 io.c:2071 io.c:2085
+#: io.c:1995 io.c:2150 io.c:2164
#, c-format
msgid "close of pipe failed (%s)"
msgstr "l廙i 籀ng 廙ng d廕南 (%s)"
-#: io.c:1965
+#: io.c:2040
msgid "`|&' not supported"
msgstr "竄 |& 罈 kh繫ng が廙θ h廙 tr廙"
-#: io.c:2031
+#: io.c:2107
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "kh繫ng th廙 m廙 廙ng d廕南 竄 %s 罈 (%s)"
-#: io.c:2079
+#: io.c:2158
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "kh繫ng th廙 t廕︽ ti廕積 tr穫nh con cho 竄 %s 罈 (fork: %s)"
-#: io.c:2569
+#: io.c:2637
#, c-format
msgid "data file `%s' is empty"
msgstr "t廕計 tin d廙 li廙u 竄 %s 罈 l r廙ng"
-#: io.c:2610 io.c:2618
+#: io.c:2678 io.c:2686
msgid "could not allocate more input memory"
msgstr "kh繫ng th廙 c廕叼 ph獺t b廙 nh廙 nh廕計 th礙m n廙畝"
-#: io.c:3171
+#: io.c:3236
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "gi獺 tr廙 a k羸 t廙 c廙吧 竄 RS 罈 l ph廕吵 m廙 r廙ng gawk"
-#: io.c:3276
-#, fuzzy
+#: io.c:3326
msgid "IPv6 communication is not supported"
-msgstr "truy廙n th繫ng TCP/IP kh繫ng が廙θ h廙 tr廙"
-
-#: main.c:307
-msgid "out of memory"
-msgstr ""
+msgstr "Truy廙n th繫ng tr礙n IPv6 kh繫ng が廙θ h廙 tr廙"
-#: main.c:384
+#: main.c:355
msgid "`-m[fr]' option irrelevant in gawk"
msgstr "t羅y ch廙n 竄 -m[fr] 罈 kh繫ng th穩ch ang trong gawk"
-#: main.c:386
+#: main.c:357
msgid "-m option usage: `-m[fr] nnn'"
-msgstr "c獺ch s廙 d廙叩g t羅y ch廙n 竄-m罈: 竄 -m[fr] nnn 罈"
+msgstr "c獺ch s廙 d廙叩g t羅y ch廙n 竄 -m 罈: 竄 -m[fr] nnn 罈"
-#: main.c:409
-#, fuzzy
+#: main.c:386
msgid "empty argument to `-e/--source' ignored"
-msgstr "廙i s廙 r廙ng t廙i 竄 --source 罈 (ngu廙n) b廙 b廙 qua"
+msgstr "廙i s廙 r廙ng cho tu廙 ch廙n `-e/--source' b廙 b廙 qua"
-#: main.c:475
+#: main.c:472
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: t羅y ch廙n 竄 -W %s 罈 kh繫ng が廙θ nh廕要 di廙n n礙n b廙 b廙 qua\n"
-#: main.c:528
+#: main.c:518
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: t羅y ch廙n c廕吵 廕積 廙i s廙 竄 -- %c 罈\n"
-#: main.c:549
+#: main.c:539
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
"bi廕積 m繫i trが廙ng 竄 POSIXLY_CORRECT 罈 (繳ng ki廙u POSIX) 瓊 が廙θ 廕暗; ang b廕負 "
"t羅y ch廙n 竄 --posix 罈"
-#: main.c:555
+#: main.c:545
msgid "`--posix' overrides `--traditional'"
msgstr "t羅y ch廙n 竄 --posix 罈 c籀 quy廙n cao hヾn 竄 --traditional 罈 (truy廙n th廙ng)"
-#: main.c:566
+#: main.c:556
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr ""
"竄 --posix 罈/竄 --traditional 罈 (truy廙n th廙ng) c籀 quy廙n cao hヾn 竄 --non-"
"decimal-data 罈 (d廙 li廙u kh獺c th廕計 ph璽n)"
-#: main.c:570
+#: main.c:560
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr "vi廙c ch廕『 %s v廙i tが c獺ch 竄 setuid root 罈 c籀 th廙 r廙告 r廙 b廕υ m廕負"
-#: main.c:575
-#, fuzzy
+#: main.c:565
msgid "`--posix' overrides `--binary'"
-msgstr "t羅y ch廙n 竄 --posix 罈 c籀 quy廙n cao hヾn 竄 --traditional 罈 (truy廙n th廙ng)"
+msgstr "`--posix' 癡 l礙n `--binary'"
-#: main.c:626
+#: main.c:623
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "kh繫ng th廙 廕暗 ch廕 廙 nh廙 ph璽n tr礙n thi廕篙 b廙 nh廕計 chu廕姊 (%s)"
-#: main.c:629
+#: main.c:626
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "kh繫ng th廙 廕暗 ch廕 廙 nh廙 ph璽n tr礙n thi廕篙 b廙 xu廕另 chu廕姊 (%s)"
-#: main.c:631
+#: main.c:628
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "kh繫ng th廙 廕暗 ch廕 廙 nh廙 ph璽n tr礙n thi廕篙 b廙 l廙i chu廕姊 (%s)"
-#: main.c:670
+#: main.c:679
msgid "no program text at all!"
msgstr "kh繫ng c籀 o廕》 ch廙 chがヾng tr穫nh no c廕 !"
-#: main.c:749
+#: main.c:763
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr ""
"C獺ch s廙 d廙叩g: %s [t羅y ch廙n ki廙u POSIX hay GNU] -f t廕計_tin_chがヾng_tr穫nh [--] "
"t廕計_tin ...\n"
-#: main.c:751
+#: main.c:765
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr ""
"C獺ch s廙 d廙叩g: %s [t羅y ch廙n ki廙u POSIX hay GNU] [--] %cchがヾng_tr穫nh%c "
"t廕計_tin ...\n"
-#: main.c:756
-#, fuzzy
+#: main.c:770
msgid "POSIX options:\t\tGNU long options: (standard)\n"
-msgstr "t羅y ch廙n POSIX:\t\tt羅y ch廙n di GNU:\n"
+msgstr "T羅y ch廙n POSIX:\t\tT羅y ch廙n di GNU: (theo ti礙u chu廕姊)\n"
-#: main.c:757
+#: main.c:771
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f t廕計_tin_chがヾng_tr穫nh\t\t--file=t廕計_tin_chがヾng_tr穫nh\n"
-#: main.c:758
+#: main.c:772
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F fs\t\t\t--field-separator=i廙u ph璽n c獺ch trが廙ng\n"
-#: main.c:759
+#: main.c:773
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr ""
"\t-v var=gi獺 tr廙\t\t--assign=bi廕積=gi獺_tr廙\n"
-"(assign: g獺n, var: bi廕積)\n"
+"(assign: g獺n)\n"
-#: main.c:760
-#, fuzzy
+#: main.c:774
msgid "Short options:\t\tGNU long options: (extensions)\n"
-msgstr "t羅y ch廙n POSIX:\t\tt羅y ch廙n di GNU:\n"
+msgstr "Tu廙 ch廙n ng廕疸:\t\tTu廙 ch廙n GNU d廕》g di: (ph廕吵 m廙 r廙ng)\n"
-#: main.c:761
+#: main.c:775
msgid "\t-b\t\t\t--characters-as-bytes\n"
-msgstr ""
+msgstr "\t-b\t\t\t--characters-as-bytes\n"
-#: main.c:762
-#, fuzzy
+#: main.c:776
msgid "\t-c\t\t\t--traditional\n"
-msgstr ""
-"\t-W traditional\t\t--traditional\n"
-"(truy廙n th廙ng)\n"
+msgstr "\t-c\t\t\t--traditional\n"
-#: main.c:763
-#, fuzzy
+#: main.c:777
msgid "\t-C\t\t\t--copyright\n"
-msgstr ""
-"\t-W copyright\t\t--copyright\n"
-"(t獺c quy廙n)\n"
+msgstr "\t-C\t\t\t--copyright\n"
-#: main.c:764
-#, fuzzy
-msgid "\t-d [file]\t\t--dump-variables[=file]\n"
-msgstr ""
-"\t-W dump-variables[=t廕計_tin]\t--dump-variables[=t廕計_tin]\n"
-"(廙 c獺c bi廕積)\n"
+#: main.c:778
+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:765
+#: main.c:779
#, fuzzy
+msgid "\t-D[file]\t\t--debug[=file]\n"
+msgstr "\t-p[file]\t\t--profile[=file]\n"
+
+#: main.c:780
msgid "\t-e 'program-text'\t--source='program-text'\n"
-msgstr ""
-"\t-W source=program-text\t--source=program-text\n"
-"(source: ngu廙n\n"
-"program-text: o廕》 ch廙 c廙吧 chがヾng tr穫nh)\n"
+msgstr "\t-e 'program-text'\t--source='program-text'\n"
-#: main.c:766
-#, fuzzy
+#: main.c:781
msgid "\t-E file\t\t\t--exec=file\n"
-msgstr "\t-W exec=t廕計_tin\t\t--exec=t廕計_tin\n"
+msgstr "\t-E file\t\t\t--exec=t廙p_tin\n"
-#: main.c:767
-#, fuzzy
+#: main.c:782
msgid "\t-g\t\t\t--gen-pot\n"
-msgstr ""
-"\t-W gen-po\t\t--gen-po\n"
-"(gen l vi廕篙 t廕眩 cho generate: t廕︽ ra)\n"
+msgstr "\t-g\t\t\t--gen-pot\n"
-#: main.c:768
-#, fuzzy
+#: main.c:783
msgid "\t-h\t\t\t--help\n"
+msgstr "\t-h\t\t\t--help\n"
+
+#: main.c:784
+msgid "\t-l library\t\t--load=library\n"
msgstr ""
-"\t-W help\t\t\t--help\n"
-"(tr廙 gi繳p)\n"
-#: main.c:769
-#, fuzzy
+#: main.c:785
msgid "\t-L [fatal]\t\t--lint[=fatal]\n"
-msgstr ""
-"\t-W lint[=fatal]\t\t--lint[=fatal]\n"
-"(l? int l vi廕篙 t廕眩 cho integer: s廙 nguy礙n\n"
-"fatal: nghi礙m tr廙ng)\n"
+msgstr "\t-L [fatal]\t\t--lint[=fatal]\n"
-#: main.c:770
-#, fuzzy
+#: main.c:786
msgid "\t-n\t\t\t--non-decimal-data\n"
-msgstr ""
-"\t-W non-decimal-data\t--non-decimal-data\n"
-"(d廙 li廙u kh獺c th廕計 ph璽n)\n"
+msgstr "\t-n\t\t\t--non-decimal-data\n"
-#: main.c:771
+#: main.c:787
#, fuzzy
+msgid "\t-M\t\t\t--bignum\n"
+msgstr "\t-g\t\t\t--gen-pot\n"
+
+#: main.c:788
msgid "\t-N\t\t\t--use-lc-numeric\n"
-msgstr "\t-W use-lc-numeric\t--use-lc-numeric\n"
+msgstr "\t-N\t\t\t--use-lc-numeric\n"
-#: main.c:772
+#: main.c:789
+#, fuzzy
+msgid "\t-o[file]\t\t--pretty-print[=file]\n"
+msgstr "\t-p[file]\t\t--profile[=file]\n"
+
+#: main.c:790
msgid "\t-O\t\t\t--optimize\n"
-msgstr ""
+msgstr "\t-O\t\t\t--optimize\tt廙i がu ho獺\n"
-#: main.c:773
-#, fuzzy
-msgid "\t-p [file]\t\t--profile[=file]\n"
-msgstr ""
-"\t-W profile[=t廕計_tin]\t--profile[=t廕計_tin]\n"
-"(profile: h廙 sヾ)\n"
+#: main.c:791
+msgid "\t-p[file]\t\t--profile[=file]\n"
+msgstr "\t-p[file]\t\t--profile[=file]\n"
-#: main.c:774
-#, fuzzy
+#: main.c:792
msgid "\t-P\t\t\t--posix\n"
-msgstr "\t-W posix\t\t--posix\n"
+msgstr "\t-P\t\t\t--posix\n"
-#: main.c:775
-#, fuzzy
+#: main.c:793
msgid "\t-r\t\t\t--re-interval\n"
-msgstr ""
-"\t-W re-interval\t\t--re-interval\n"
-"(re-[廙ng t廙侷: [lm] l廕【\n"
-"interval: th廙i gian gi廙畝 hai l繳c)\n"
-
-#: main.c:777
-#, fuzzy
-msgid "\t-R file\t\t\t--command=file\n"
-msgstr "\t-W exec=t廕計_tin\t\t--exec=t廕計_tin\n"
+msgstr "\t-r\t\t\t--re-interval\n"
-#: main.c:778
+#: main.c:794
msgid "\t-S\t\t\t--sandbox\n"
-msgstr ""
+msgstr "\t-S\t\t\t--sandbox\n"
-#: main.c:779
-#, fuzzy
+#: main.c:795
msgid "\t-t\t\t\t--lint-old\n"
-msgstr ""
-"\t-W lint-old\t\t--lint-old\n"
-"(old: c觼)\n"
+msgstr "\t-t\t\t\t--lint-old\n"
-#: main.c:780
-#, fuzzy
+#: main.c:796
msgid "\t-V\t\t\t--version\n"
-msgstr ""
-"\t-W version\t\t--version\n"
-"(phi礙n b廕τ)\n"
+msgstr "\t-V\t\t\t--version\n"
-#: main.c:782
+#: main.c:798
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr ""
"\t-W nostalgia\t\t--nostalgia\n"
"(n廙i luy廕積 ti廕盧 qu獺 kh廙)\n"
-#: main.c:785
-#, fuzzy
+#: main.c:801
msgid "\t-Y\t\t--parsedebug\n"
-msgstr ""
-"\t-W parsedebug\t\t--parsedebug\n"
-"(parse: ph璽n t獺ch\n"
-"debug: g廙 l廙i)\n"
+msgstr "\t-Y\t\t--parsedebug\n"
#. TRANSLATORS: --help output 5 (end)
#. TRANSLATORS: the placeholder indicates the bug-reporting address
#. for this application. Please add _another line_ with the
#. address for translation bugs.
#. no-wrap
-#: main.c:794
+#: main.c:810
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -1793,7 +1780,7 @@ msgstr ""
"trong b廕τ in.\n"
"\n"
-#: main.c:798
+#: main.c:814
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -1803,7 +1790,7 @@ msgstr ""
"M廕搾 廙nh l n籀 廙c thi廕篙 b廙 nh廕計 chu廕姊 v ghi ra thi廕篙 b廙 xu廕另 chu廕姊.\n"
"\n"
-#: main.c:802
+#: main.c:818
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -1813,7 +1800,7 @@ msgstr ""
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:822
+#: main.c:838
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1832,7 +1819,7 @@ msgstr ""
"k廙 phi礙n b廕τ sau no.\n"
"\n"
-#: main.c:830
+#: main.c:846
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"
@@ -1846,7 +1833,7 @@ msgstr ""
"H瓊y xem B廕τ Quy廙n C繫ng Chung GNU (GPL) 廙 t穫m chi ti廕篙.\n"
"\n"
-#: main.c:841
+#: main.c:852
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"
@@ -1855,16 +1842,16 @@ msgstr ""
"c羅ng v廙i chがヾng tr穫nh ny. Kh繫ng th穫 xem 廙a ch廙 竄 http://www.gnu.org/"
"licenses/ 罈.\n"
-#: main.c:876
+#: main.c:887
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft kh繫ng 廕暗 FS (h廙 th廙ng t廕計 tin?) l tab trong awk POSIX"
-#: main.c:1110
+#: main.c:1133
#, c-format
msgid "unknown value for field spec: %d\n"
-msgstr ""
+msgstr "kh繫ng hi廙u gi獺 tr廙 dnh cho 廕搾 t穩nh trが廙ng: %d\n"
-#: main.c:1170
+#: main.c:1214
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
@@ -1873,123 +1860,132 @@ msgstr ""
"%s: 廙i s廙 竄 %s 罈 廙i v廙i 竄 -v 罈 kh繫ng ph廕ξ c籀 d廕》g 竄 bi廕積=gi獺_tr廙 罈\n"
"\n"
-#: main.c:1190
+#: main.c:1240
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "竄 %s 罈 kh繫ng ph廕ξ l t礙n bi廕積 h廙φ l廙"
-#: main.c:1193
+#: main.c:1243
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr "竄 %s 罈 kh繫ng ph廕ξ l t礙n bi廕積; ang t穫m t廕計 tin 竄 %s=%s 罈"
-#: main.c:1246
+#: main.c:1247
+#, c-format
+msgid "cannot use gawk builtin `%s' as variable name"
+msgstr "kh繫ng th廙 d羅ng builtin (d廙彫g s廕登) c廙吧 gawk 竄 %s 罈 nhが l t礙n bi廕積"
+
+#: main.c:1252
+#, c-format
+msgid "cannot use function `%s' as variable name"
+msgstr "kh繫ng th廙 d羅ng hm 竄 %s 罈 nhが l t礙n bi廕積"
+
+#: main.c:1305
msgid "floating point exception"
msgstr "ngo廕【 l廙 i廙m ph羅 廙ng"
-#: main.c:1253
+#: main.c:1312
msgid "fatal error: internal error"
msgstr "l廙i nghi礙m tr廙ng: l廙i n廙i b廙"
-#: main.c:1268
-#, fuzzy
+#: main.c:1327
msgid "fatal error: internal error: segfault"
-msgstr "l廙i nghi礙m tr廙ng: l廙i n廙i b廙"
+msgstr "l廙i nghi礙m tr廙ng: l廙i n廙i b廙 : l廙i chia ra t廙南g o廕》"
-#: main.c:1280
-#, fuzzy
+#: main.c:1339
msgid "fatal error: internal error: stack overflow"
-msgstr "l廙i nghi礙m tr廙ng: l廙i n廙i b廙"
+msgstr "l廙i nghi礙m tr廙ng: l廙i n廙i b廙 : trn 廙ng"
-#: main.c:1330
+#: main.c:1393
#, c-format
msgid "no pre-opened fd %d"
msgstr "kh繫ng c籀 fd (ch廙 th廙 t廕計 tin?) %d 瓊 m廙 trが廙c"
-#: main.c:1337
+#: main.c:1400
#, c-format
msgid "could not pre-open /dev/null for fd %d"
-msgstr "kh繫ng th廙 m廙 </dev/null> trが廙c cho fd (ch廙 th廙 t廕計 tin?) %d"
+msgstr "kh繫ng th廙 m廙 s廕登 竄 /dev/null 罈 cho fd %d"
-#: main.c:1360 main.c:1369
-#, c-format
-msgid "could not find groups: %s"
-msgstr "kh繫ng t穫m th廕句 nh籀m: %s"
-
-#: msg.c:63
+#: msg.c:61
#, c-format
msgid "cmd. line:"
msgstr "d簷ng l廙nh:"
-#: msg.c:107
+#: msg.c:121
msgid "error: "
msgstr "l廙i: "
-#: node.c:401
+#: node.c:436
msgid "backslash at end of string"
msgstr "g廕搆 xuy廙c ngo廕搾 t廕【 k廕篙 th繳c c廙吧 chu廙i"
-#: node.c:502
+#: node.c:520
#, c-format
msgid "old awk does not support the `\\%c' escape sequence"
msgstr "awk c觼 kh繫ng h廙 tr廙 d瓊y tho獺t 竄 \\%c 罈"
-#: node.c:553
+#: node.c:571
msgid "POSIX does not allow `\\x' escapes"
msgstr "POSIX kh繫ng cho ph矇p i廙u tho獺t 竄 \\x 罈"
-#: node.c:559
+#: node.c:577
msgid "no hex digits in `\\x' escape sequence"
msgstr "kh繫ng c籀 s廙 th廕計 l繳c n廕彩 trong d璽y tho獺t 竄 \\x 罈"
-#: node.c:581
+#: node.c:599
#, c-format
msgid ""
"hex escape \\x%.*s of %d characters probably not interpreted the way you "
"expect"
msgstr ""
+"d璽y tho獺t th廕計 l廙卉 \\x%.*s ch廙奄 %d k羸 t廙 m r廕另 c籀 th廙 kh繫ng ph廕ξ が廙θ 廙c "
+"b廕彫g c獺ch d廙 廙nh"
-#: node.c:596
+#: node.c:614
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr "d璽y tho獺t 竄 \\%c 罈 が廙θ x廙 l羸 nhが l 竄 %c 罈 chu廕姊"
-#: node.c:735
+#: node.c:759
msgid ""
"Invalid multibyte data detected. There may be a mismatch between your data "
"and your locale."
msgstr ""
+"D廙 li廙u d廕》g a byte (multibyte) kh繫ng h廙φ l廙 が廙θ t穫m th廕句. T廕【 籀 c籀 l廕 "
+"kh繫ng kh廙p gi廙畝 d廙 li廙u c廙吧 b廕》 v nヾi x廕ㄊ ra."
-#: posix/gawkmisc.c:175
-#, fuzzy, c-format
+#: posix/gawkmisc.c:176
+#, c-format
msgid "%s %s `%s': could not get fd flags: (fcntl F_GETFD: %s)"
-msgstr ""
-"%s %s 竄 %s 罈: kh繫ng th廙 廕暗 竄 close-on-exec 罈 (籀ng m廙t khi th廙帷 hi廙n) "
-"(fcntl: %s)"
+msgstr "%s %s `%s': kh繫ng th廙 l廕句 c廙 m繫 t廕 (fd): (fcntl F_GETFD: %s)"
-#: posix/gawkmisc.c:187
-#, fuzzy, c-format
+#: posix/gawkmisc.c:188
+#, c-format
msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
msgstr ""
-"%s %s 竄 %s 罈: kh繫ng th廙 廕暗 竄 close-on-exec 罈 (籀ng m廙t khi th廙帷 hi廙n) "
-"(fcntl: %s)"
+"%s %s 竄 %s 罈: kh繫ng th廙 廕暗 竄 close-on-exec 罈 (籀ng m廙t khi th廙帷 hi廙n): "
+"(fcntl F_SETFD: %s)"
-#: profile.c:83
+#: profile.c:69
#, c-format
msgid "could not open `%s' for writing: %s"
msgstr "kh繫ng th廙 m廙 竄 %s 罈 廙 ghi: %s"
-#: profile.c:203
-#, fuzzy, c-format
+#: profile.c:71
+msgid "sending profile to standard error"
+msgstr "ang g廙i h廙 sヾ cho thi廕篙 b廙 l廙i chu廕姊"
+
+#: profile.c:187
+#, c-format
msgid ""
"\t# %s block(s)\n"
"\n"
msgstr ""
-"\t# kh廙i END (k廕篙 th繳c)\n"
+"\t# %s kh廙i\n"
"\n"
-#: profile.c:208
-#, fuzzy, c-format
+#: profile.c:192
+#, c-format
msgid ""
"\t# Rule(s)\n"
"\n"
@@ -1997,257 +1993,225 @@ msgstr ""
"\t# Quy t廕畚\n"
"\n"
-#: profile.c:279
+#: profile.c:266
#, c-format
msgid "internal error: %s with null vname"
msgstr "l廙i n廙i b廙: %s v廙i vname (t礙n bi廕積?) v繫 gi獺 tr廙"
-#: profile.c:938
+#: profile.c:528
+#, fuzzy
+msgid "internal error: builtin with null fname"
+msgstr "l廙i n廙i b廙: %s v廙i vname (t礙n bi廕積?) v繫 gi獺 tr廙"
+
+#: profile.c:943
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# h廙 sヾ gawk, が廙θ t廕︽ %s\n"
-#: profile.c:1317
+#: profile.c:1328
#, c-format
msgid ""
"\n"
"\t# Functions, listed alphabetically\n"
msgstr ""
"\n"
-"\t# Danh s獺ch c獺c ch廙妾 nng theo th廙 t廙 abc\n"
+"\t# Danh s獺ch c獺c hm theo th廙 t廙 abc\n"
-#: profile.c:1356
+#: profile.c:1366
#, c-format
msgid "redir2str: unknown redirection type %d"
-msgstr ""
+msgstr "redir2str: kh繫ng hi廙u ki廙u chuy廙n hが廙ng %d"
-#: re.c:589
+#: re.c:571
#, c-format
-msgid "range of the form `[%c-%c]' is locale dependant"
-msgstr ""
+msgid "range of the form `[%c-%c]' is locale dependent"
+msgstr "d廕》g th廙妾 v羅ng `[%c-%c]' th穫 ph廙 thu廙c v廙 tr穩"
-#: re.c:611
+#: re.c:598
#, c-format
msgid "regexp component `%.*s' should probably be `[%.*s]'"
msgstr ""
+"thnh ph廕吵 c廙吧 bi廙u th廙妾 ch穩nh qui (regexp) `%.*s' h廕吟 nhが ch廕畚 ch廕疸 n礙n l `"
+"[%.*s]'"
-#: regcomp.c:132
+#: regcomp.c:131
msgid "Success"
msgstr "Thnh c繫ng"
-#: regcomp.c:135
+#: regcomp.c:134
msgid "No match"
msgstr "Kh繫ng kh廙p"
-#: regcomp.c:138
+#: regcomp.c:137
msgid "Invalid regular expression"
msgstr "Bi廙u th廙妾 ch穩nh quy kh繫ng h廙φ l廙"
-#: regcomp.c:141
+#: regcomp.c:140
msgid "Invalid collation character"
msgstr "K羸 t廙 廙i chi廕簑 kh繫ng h廙φ l廙"
-#: regcomp.c:144
+#: regcomp.c:143
msgid "Invalid character class name"
msgstr "T礙n h廕》g k羸 t廙 kh繫ng h廙φ l廙"
-#: regcomp.c:147
+#: regcomp.c:146
msgid "Trailing backslash"
msgstr "G廕搆 xuy廙c ngが廙θ n廕彩 theo"
-#: regcomp.c:150
+#: regcomp.c:149
msgid "Invalid back reference"
msgstr "Tham chi廕簑 tr廙 l廕【 kh繫ng h廙φ l廙"
-#: regcomp.c:153
+#: regcomp.c:152
msgid "Unmatched [ or [^"
msgstr "Chがa kh廙p 竄 [ 罈 hay 竄 [^ 罈"
-#: regcomp.c:156
+#: regcomp.c:155
msgid "Unmatched ( or \\("
msgstr "Chがa kh廙p 竄 ( 罈 hay 竄 \\( 罈"
-#: regcomp.c:159
+#: regcomp.c:158
msgid "Unmatched \\{"
msgstr "Chがa kh廙p 竄 \\{ 罈"
-#: regcomp.c:162
+#: regcomp.c:161
msgid "Invalid content of \\{\\}"
msgstr "N廙i d廙叩g 竄 \\{\\} 罈 kh繫ng h廙φ l廙"
-#: regcomp.c:165
+#: regcomp.c:164
msgid "Invalid range end"
msgstr "K廕篙 th繳c ph廕《 v廙 kh繫ng h廙φ l廙"
-#: regcomp.c:168
+#: regcomp.c:167
msgid "Memory exhausted"
msgstr "H廕篙 b廙 nh廙 r廙i"
-#: regcomp.c:171
+#: regcomp.c:170
msgid "Invalid preceding regular expression"
msgstr "Bi廙u th廙妾 ch穩nh quy n廕彩 trが廙c kh繫ng h廙φ l廙"
-#: regcomp.c:174
+#: regcomp.c:173
msgid "Premature end of regular expression"
msgstr "K廕篙 th繳c qu獺 s廙m c廙吧 bi廙u th廙妾 ch穩nh quy"
-#: regcomp.c:177
+#: regcomp.c:176
msgid "Regular expression too big"
msgstr "Bi廙u th廙妾 ch穩nh quy qu獺 l廙n"
-#: regcomp.c:180
+#: regcomp.c:179
msgid "Unmatched ) or \\)"
msgstr "Chがa kh廙p 竄 ) 罈 hay 竄 \\) 罈"
-#: regcomp.c:701
+#: regcomp.c:700
msgid "No previous regular expression"
msgstr "Kh繫ng c籀 bi廙u th廙妾 ch穩nh quy n廕彩 trが廙c"
-#~ msgid "statement may have no effect"
-#~ msgstr "c璽u c籀 l廕 s廕 kh繫ng c籀 t獺c d廙叩g"
-
-#~ msgid "attempt to use scalar `%s' as array"
-#~ msgstr "c廙 d羅ng i廙u c繫 hが廙ng 竄 %s 罈 l m廕τg"
-
-#, fuzzy
-#~ msgid "attempt to use array `%s' in scalar context"
-#~ msgstr "c廙 g廕疸g d羅ng m廕τg 竄 %s 罈 trong m廙t ng廙 c廕τh v繫 hが廙ng"
-
-#~ msgid "`continue' outside a loop is not allowed"
-#~ msgstr "kh繫ng cho ph矇p 竄 continue 罈 (ti廕穆 t廙卉) n廕彩 廙 ngo廕【 v簷ng l廕搆"
+#~ msgid "attempt to use function `%s' as an array"
+#~ msgstr "c廙 g廕疸g d羅ng hm 竄 %s 罈 nhが m廕τg"
-#, fuzzy
-#~ msgid "`break' outside a loop is not allowed"
-#~ msgstr "kh繫ng cho ph矇p 竄 break 罈 (ng廕眩) n廕彩 廙 ngo廕【 v簷ng l廕搆"
+#~ msgid "reference to uninitialized element `%s[\"%.*s\"]'"
+#~ msgstr "tham chi廕簑 廕積 ph廕吵 t廙 chがa s廙 kh廙i 竄 %s[\"%.*s\"] 罈"
-#~ msgid "/inet/raw client not ready yet, sorry"
-#~ msgstr "ti廕盧 l 廙姊g d廙叩g kh獺ch <inet/raw> chがa s廕登 sng"
+#~ msgid "subscript of array `%s' is null string"
+#~ msgstr "ch廙 in dが廙i m廕τg 竄 %s 罈 l chu廙i r廙ng"
-#~ msgid "only root may use `/inet/raw'."
-#~ msgstr "ch廙 ngが廙i ch廙 (root) c籀 th廙 d羅ng </inet/raw> th繫i"
+#~ msgid "%s: empty (null)\n"
+#~ msgstr "%s: r廙ng (v繫 gi獺 tr廙)\n"
-#~ msgid "/inet/raw server not ready yet, sorry"
-#~ msgstr "ti廕盧 l tr穫nh ph廙卉 v廙 </inet/raw> chがa s廕登 sng"
+#~ msgid "%s: empty (zero)\n"
+#~ msgstr "%s: r廙ng (s廙 kh繫ng)\n"
-#~ msgid "\t-m[fr] val\n"
-#~ msgstr "\t-m[fr] gi獺_tr廙\n"
+#~ msgid "%s: table_size = %d, array_size = %d\n"
+#~ msgstr "%s: c廙︵b廕τg = %d, c廙︵m廕τg = %d\n"
-#~ msgid "call of `length' without parentheses is deprecated by POSIX"
-#~ msgstr "POSIX ph廕τ 廙i l廙i g廙i 竄 length 罈 (廙 di) kh繫ng c籀 d廕只 ngo廕搾"
+#~ msgid "%s: is parameter\n"
+#~ msgstr "%s: l tham s廙\n"
-#, fuzzy
-#~ msgid "reference to uninitialized field `$%s'"
-#~ msgstr "g廕搆 tham chi廕簑 廕積 trが廙ng chがa が廙θ s廙 kh廙i 竄 $%d 罈"
+#~ msgid "%s: array_ref to %s\n"
+#~ msgstr "%s: 竄 array_ref 罈 (m廕τg tham chi廕簑) 廕積 竄 %s 罈\n"
-#~ msgid "can't convert string to float"
-#~ msgstr "kh繫ng th廙 chuy廙n 廙i chu廙i sang i廙u lヾ l廙要g"
+#~ msgid "use of non-array as array"
+#~ msgstr "vi廙c d羅ng c獺i kh獺c m廕τg nhが l m廕τg"
-#~ msgid "`continue' outside a loop is not portable"
-#~ msgstr ""
-#~ "kh繫ng th廙 mang kh廕 nng 竄 continue 罈 (ti廕穆 t廙卉) n廕彩 廙 ngo廕【 v簷ng l廕搆"
+#~ msgid "can't use function name `%s' as variable or array"
+#~ msgstr "kh繫ng th廙 d羅ng t礙n hm 竄 %s 罈 nhが l bi廕積 hay m廕τg"
-#~ msgid "`break' outside a loop is not portable"
-#~ msgstr "kh繫ng th廙 mang kh廕 nng 竄 break 罈 (ng廕眩) n廕彩 廙 ngo廕【 v簷ng l廕搆"
-
-#~ msgid "`nextfile' cannot be called from a BEGIN rule"
-#~ msgstr ""
-#~ "kh繫ng th廙 g廙i 竄 nextfile 罈 (t廕計 tin k廕 ti廕穆) t廙 quy t廕畚 竄 BEGIN 罈 (b廕眩 "
-#~ "廕吟)"
+#~ msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context"
+#~ msgstr "c廙 g廕疸g d羅ng m廕τg `%s[\"%.*s\"]' trong m廙t ng廙 c廕τh v繫 hが廙ng"
-#~ msgid "`next' cannot be called from a BEGIN rule"
-#~ msgstr "kh繫ng th廙 g廙i 竄 next 罈 (k廕 ti廕穆) t廙 quy t廕畚 竄 BEGIN 罈 (b廕眩 廕吟)"
+#~ msgid "assignment used in conditional context"
+#~ msgstr "i廙u g獺n が廙θ d羅ng trong ng廙 c廕τh i廙u ki廙n"
-#~ msgid "file `%s' is a directory"
-#~ msgstr "t廕計 tin 竄 %s 罈 l thが m廙卉"
-
-#~ msgid "use `PROCINFO[\"%s\"]' instead of `%s'"
-#~ msgstr ""
-#~ "h瓊y d羅ng 竄 PROCINFO[\"%s\"] 罈 (th繫ng tin ti廕積 tr穫nh) thay cho 竄 %s 罈"
-
-#~ msgid "use `PROCINFO[...]' instead of `/dev/user'"
-#~ msgstr ""
-#~ "h瓊y d羅ng 竄 PROCINFO[...] 罈 (th繫ng tin ti廕積 tr穫nh) thay cho </dev/user>"
-
-#~ msgid "\t-W compat\t\t--compat\n"
-#~ msgstr ""
-#~ "\t-W compat\t\t--compat\n"
-#~ "(compat l vi廕篙 t廕眩 cho compatible: tがヾng th穩ch)\n"
-
-#~ msgid "\t-W copyleft\t\t--copyleft\n"
-#~ msgstr ""
-#~ "\t-W copyleft\t\t--copyleft\n"
-#~ "(t廕畚 quy廙n ngが廙θ)\n"
-
-#~ msgid "\t-W usage\t\t--usage\n"
-#~ msgstr ""
-#~ "\t-W usage\t\t--usage\n"
-#~ "(c獺ch s廙 d廙叩g)\n"
+#~ msgid "statement has no effect"
+#~ msgstr "c璽u kh繫ng c籀 t獺c d廙叩g"
#~ msgid ""
-#~ "\t# BEGIN block(s)\n"
-#~ "\n"
+#~ "for loop: array `%s' changed size from %ld to %ld during loop execution"
#~ msgstr ""
-#~ "\t# kh廙i BEGIN (b廕眩 廕吟)\n"
-#~ "\n"
+#~ "cho loop: (cho v簷ng l廕搆) m廕τg 竄 %s 罈 瓊 thay 廙i k穩ch thが廙c t廙 %ld 廕積 "
+#~ "%ld trong khi th廙帷 hi廙n v簷ng l廕搆"
-#~ msgid "must use `count$' on all formats or none"
-#~ msgstr "ph廕ξ d羅ng 竄 count$ 罈 v廙i m廙i d廕》g th廙妾 hay kh繫ng d羅ng c廕"
+#~ msgid "function called indirectly through `%s' does not exist"
+#~ msgstr "hm が廙θ g廙i gi獺n ti廕穆 th繫ng qua `%s' kh繫ng t廙n t廕【"
-#~ msgid "`$' is not permitted in awk formats"
-#~ msgstr "kh繫ng cho ph矇p 竄 $ 罈 trong 廙nh d廕》g awk"
+#~ msgid "function `%s' not defined"
+#~ msgstr "chがa x獺c 廙nh hm 竄 %s 罈"
-#~ msgid "arg count with `$' must be > 0"
-#~ msgstr "s廙 廕禦 廙i s廙 v廙i 竄 $ 罈 ph廕ξ l >0"
+#~ msgid "non-redirected `getline' invalid inside `%s' rule"
+#~ msgstr "`getline' kh繫ng-g廙虹-l廕【 kh繫ng h廙φ l廙 b礙n trong quy t廕畚 `%s'"
-#~ msgid "arg count %ld greater than total number of supplied arguments"
-#~ msgstr "s廙 廕禦 廙i s廙 %ld l廙n hヾn t廙ng s廙 廙i s廙 が廙θ cung c廕叼"
+#~ msgid "error reading input file `%s': %s"
+#~ msgstr "g廕搆 l廙i khi 廙c t廕計 tin nh廕計 竄 %s 罈: %s"
-#~ msgid "`$' not permitted after period in format"
-#~ msgstr "kh繫ng cho ph矇p 竄 $ 罈 n廕彩 sau d廕只 ch廕叮 trong 廙nh d廕》g"
+#~ msgid "`nextfile' cannot be called from a `%s' rule"
+#~ msgstr "竄nextfile罈 (t廕計 tin k廕 ti廕穆) kh繫ng th廙 が廙θ g廙i t廙 m廙t quy t廕畚 `%s'"
-#~ msgid "no `$' supplied for positional field width or precision"
-#~ msgstr ""
-#~ "chがa cung c廕叼 竄 $ 罈 cho 廙 r廙ng trが廙ng thu廙c v廙 tr穩 hay cho 廙 ch穩nh x獺c"
+#~ msgid "`exit' cannot be called in the current context"
+#~ msgstr "`exit' (tho獺t) kh繫ng th廙 が廙θ g廙i trong ng廙 c廕τh hi廙n hnh"
-#~ msgid "`l' is meaningless in awk formats; ignored"
-#~ msgstr "ch廙 竄 l 罈 kh繫ng c籀 ngh藺a trong 廙nh d廕》g awk n礙n b廙 b廙 qua"
+#~ msgid "`next' cannot be called from a `%s' rule"
+#~ msgstr "竄next罈 (k廕 ti廕穆) kh繫ng th廙 が廙θ g廙i t廙 m廙t quy t廕畚 `%s'"
-#~ msgid "`l' is not permitted in POSIX awk formats"
-#~ msgstr "kh繫ng cho ph矇p ch廙 竄 l 罈 n廕彩 trong 廙nh d廕》g awk POSIX"
+#~ msgid "Sorry, don't know how to interpret `%s'"
+#~ msgstr "R廕另 ti廕盧, kh繫ng bi廕篙 lm c獺ch no 廙 phi礙n d廙ch が廙θ `%s'"
-#~ msgid "`L' is meaningless in awk formats; ignored"
-#~ msgstr "ch廙 竄 L 罈 kh繫ng c籀 ngh藺a trong 廙nh d廕》g awk n礙n b廙 b廙 qua"
+#~ msgid "\t-R file\t\t\t--command=file\n"
+#~ msgstr "\t-R file\t\t\t--command=t廙p_tin\n"
-#~ msgid "`L' is not permitted in POSIX awk formats"
-#~ msgstr "kh繫ng cho ph矇p ch廙 竄 L 罈 n廕彩 trong 廙nh d廕》g awk POSIX"
+#~ msgid "could not find groups: %s"
+#~ msgstr "kh繫ng t穫m th廕句 nh籀m: %s"
-#~ msgid "`h' is meaningless in awk formats; ignored"
-#~ msgstr "ch廙 竄 h 罈 kh繫ng c籀 ngh藺a trong 廙nh d廕》g awk n礙n b廙 b廙 qua"
+#~ msgid "statement may have no effect"
+#~ msgstr "c璽u c籀 l廕 s廕 kh繫ng c籀 t獺c d廙叩g"
-#~ msgid "`h' is not permitted in POSIX awk formats"
-#~ msgstr "kh繫ng cho ph矇p ch廙 竄 h 罈 n廕彩 trong 廙nh d廕》g awk POSIX"
+#~ msgid "call of `length' without parentheses is deprecated by POSIX"
+#~ msgstr "POSIX ph廕τ 廙i l廙i g廙i 竄 length 罈 (廙 di) kh繫ng c籀 d廕只 ngo廕搾"
-#~ msgid "[s]printf: value %g is out of range for `%%%c' format"
-#~ msgstr "[s]printf: gi獺 tr廙 %g 廙 ngo廕【 ph廕《 v廙 cho d廕》g th廙妾 竄 %%%c 罈"
+#~ msgid "division by zero attempted in `/'"
+#~ msgstr "th廙 chia cho kh繫ng trong 竄 / 罈"
-#~ msgid "not enough arguments to satisfy format string"
-#~ msgstr "chがa c籀 廙 廙i s廙 廙 獺p 廙姊g chu廙i 廙nh d廕》g"
+#~ msgid "length: untyped parameter argument will be forced to scalar"
+#~ msgstr ""
+#~ "length: (chi廙u di) tham s廙 kh繫ng c籀 lo廕【 th穫 b廙 矇p bu廙c thnh v繫 hが廙ng"
-#~ msgid "^ ran out for this one"
-#~ msgstr "h廕篙 竄 ^ 罈 cho i廙u ny"
+#~ msgid "length: untyped argument will be forced to scalar"
+#~ msgstr ""
+#~ "length: (chi廙u di) 廙i s廙 kh繫ng c籀 lo廕【 th穫 b廙 矇p bu廙c thnh v繫 hが廙ng"
-#~ msgid "[s]printf: format specifier does not have control letter"
-#~ msgstr "[s]printf: i廙u ghi r繭 廙nh d廕》g kh繫ng c籀 ch廙 i廙u khi廙n"
+#~ msgid "`break' outside a loop is not portable"
+#~ msgstr "kh繫ng th廙 mang kh廕 nng 竄 break 罈 (ng廕眩) n廕彩 廙 ngo廕【 v簷ng l廕搆"
-#~ msgid "too many arguments supplied for format string"
-#~ msgstr "qu獺 nhi廙u 廙i s廙 が廙θ cung c廕叼 cho chu廙i 廙nh d廕》g"
+#~ msgid "`continue' outside a loop is not portable"
+#~ msgstr ""
+#~ "kh繫ng th廙 mang kh廕 nng 竄 continue 罈 (ti廕穆 t廙卉) n廕彩 廙 ngo廕【 v簷ng l廕搆"
-#, fuzzy
-#~ msgid "attempt to use array parameter `%s' in a scalar context"
-#~ msgstr "c廙 g廕疸g d羅ng m廕τg 竄 %s 罈 trong m廙t ng廙 c廕τh v繫 hが廙ng"
+#~ msgid "`next' cannot be called from a BEGIN rule"
+#~ msgstr "kh繫ng th廙 g廙i 竄 next 罈 (k廕 ti廕穆) t廙 quy t廕畚 竄 BEGIN 罈 (b廕眩 廕吟)"
-#~ msgid "can't open two way socket `%s' for input/output (%s)"
-#~ msgstr "kh繫ng th廙 m廙 廙 c廕痂 hai chi廙u 竄 %s 罈 廙 nh廕計/xu廕另 (%s)"
+#~ msgid "`nextfile' cannot be called from a BEGIN rule"
+#~ msgstr ""
+#~ "kh繫ng th廙 g廙i 竄 nextfile 罈 (t廕計 tin k廕 ti廕穆) t廙 quy t廕畚 竄 BEGIN 罈 (b廕眩 "
+#~ "廕吟)"
#~ msgid ""
#~ "concatenation: side effects in one expression have changed the length of "
@@ -2264,22 +2228,65 @@ msgstr "Kh繫ng c籀 bi廙u th廙妾 ch穩nh quy n廕彩 trが廙c"
#~ "\t# -- main --\n"
#~ "(ch穩nh)\n"
+#~ msgid "assignment is not allowed to result of builtin function"
+#~ msgstr "kh繫ng cho ph矇p g獺n cho k廕篙 qu廕 c廙吧 hm 竄 builtin 罈 (c籀 s廕登)"
+
#~ msgid "invalid tree type %s in redirect()"
#~ msgstr "ki廙u c璽y kh繫ng h廙φ l廙 竄 %s 罈 trong 竄 redirect() 罈"
-#, fuzzy
+#~ msgid "/inet/raw client not ready yet, sorry"
+#~ msgstr "ti廕盧 l 廙姊g d廙叩g kh獺ch <inet/raw> chがa s廕登 sng"
+
+#~ msgid "only root may use `/inet/raw'."
+#~ msgstr "ch廙 ngが廙i ch廙 (root) c籀 th廙 d羅ng </inet/raw> th繫i"
+
+#~ msgid "/inet/raw server not ready yet, sorry"
+#~ msgstr "ti廕盧 l tr穫nh ph廙卉 v廙 </inet/raw> chがa s廕登 sng"
+
+#~ msgid "file `%s' is a directory"
+#~ msgstr "t廕計 tin 竄 %s 罈 l thが m廙卉"
+
+#~ msgid "use `PROCINFO[\"%s\"]' instead of `%s'"
+#~ msgstr ""
+#~ "h瓊y d羅ng 竄 PROCINFO[\"%s\"] 罈 (th繫ng tin ti廕積 tr穫nh) thay cho 竄 %s 罈"
+
+#~ msgid "use `PROCINFO[...]' instead of `/dev/user'"
+#~ msgstr ""
+#~ "h瓊y d羅ng 竄 PROCINFO[...] 罈 (th繫ng tin ti廕積 tr穫nh) thay cho </dev/user>"
+
+#~ msgid "out of memory"
+#~ msgstr "kh繫ng 廙 b廙 nh廙"
+
+#~ msgid "\t-m[fr] val\n"
+#~ msgstr "\t-m[fr] gi獺_tr廙\n"
+
+#~ msgid "\t-W compat\t\t--compat\n"
+#~ msgstr "\t-W compat\t\t--compat\ttがヾng th穩ch\n"
+
+#~ msgid "\t-W copyleft\t\t--copyleft\n"
+#~ msgstr "\t-W copyleft\t\t--copyleft\tt獺c quy廙n ngが廙θ\n"
+
+#~ msgid "\t-W usage\t\t--usage\n"
+#~ msgstr "\t-W usage\t\t--usage\tc獺ch s廙 d廙叩g\n"
+
+#~ msgid "can't convert string to float"
+#~ msgstr "kh繫ng th廙 chuy廙n 廙i chu廙i sang i廙u lヾ l廙要g"
+
#~ msgid "# treated internally as `delete'"
-#~ msgstr "# が廙θ x廙 l羸 n廙i b廙 l 竄 delete 罈 (xo獺 b廙)"
+#~ msgstr "# が廙θ x廙 l羸 n廙i b廙 l 竄 delete 罈 (xo獺)"
#~ msgid "# this is a dynamically loaded extension function"
-#~ msgstr "# 璽y l m廙t ch廙妾 nng m廙 r廙ng が廙θ t廕ξ 廙ng"
+#~ msgstr "# 璽y l m廙t hm m廙 r廙ng が廙θ n廕︾ 廙ng"
+
+#~ msgid ""
+#~ "\t# BEGIN block(s)\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\t# kh廙i BEGIN (b廕眩 廕吟)\n"
+#~ "\n"
#~ msgid "unexpected type %s in prec_level"
#~ msgstr "g廕搆 ki廙u b廕另 ng廙 竄 %s 罈 trong 竄 prec_level 罈 (c廕叼 n廕彩 trが廙c?)"
-#, fuzzy
#~ msgid "Unknown node type %s in pp_var"
-#~ msgstr "kh繫ng bi廕篙 ki廙u n繳t %d"
-
-#~ msgid "%s: illegal option -- %c\n"
-#~ msgstr "%s: kh繫ng cho ph矇p t羅y ch廙n 竄 -- %c 罈\n"
+#~ msgstr "Kh繫ng r繭 lo廕【 n繳t %s trong pp_var"
diff --git a/posix/ChangeLog b/posix/ChangeLog
index e899a6cd..425f1c91 100644
--- a/posix/ChangeLog
+++ b/posix/ChangeLog
@@ -2,6 +2,10 @@
* gawkmisc.c (deflibpath): New global variable.
+2012-03-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.0.1: Release tar ball made.
+
2011-06-23 Arnold D. Robbins <arnold@skeeve.com>
* ChangeLog.0: Rotated ChangeLog into this file.
diff --git a/profile.c b/profile.c
index 6d9db06e..181395d9 100644
--- a/profile.c
+++ b/profile.c
@@ -228,7 +228,7 @@ pprint(INSTRUCTION *startp, INSTRUCTION *endp, int in_for_header)
if (m == Nnull_string) /* optional return or exit value; don't print 0 or "" */
pp_push(pc->opcode, m->stptr, DONT_FREE);
else if ((m->flags & NUMBER) != 0)
- pp_push(pc->opcode, pp_number(m->numbr), CAN_FREE);
+ pp_push(pc->opcode, pp_number(m), CAN_FREE);
else {
str = pp_string(m->stptr, m->stlen, '"');
if ((m->flags & INTLSTR) != 0) {
@@ -341,7 +341,7 @@ cleanup:
&& is_binary(t1->type)) /* (a - b) * 1 */
pp_parenthesize(t1);
if ((m->flags & NUMBER) != 0)
- tmp = pp_number(m->numbr);
+ tmp = pp_number(m);
else
tmp = pp_string(m->stptr, m->stlen, '"');
str = pp_concat(t1->pp_str, op2str(pc->opcode), tmp);
@@ -1202,13 +1202,20 @@ pp_string(const char *in_str, size_t len, int delim)
/* pp_number --- pretty format a number */
char *
-pp_number(AWKNUM d)
+pp_number(NODE *n)
{
#define PP_PRECISION 6
char *str;
emalloc(str, char *, PP_PRECISION + 10, "pp_number");
- sprintf(str, "%0.*g", PP_PRECISION, d);
+#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))
+ mpfr_sprintf(str, "%Zd", n->mpg_i);
+ else
+#endif
+ sprintf(str, "%0.*g", PP_PRECISION, n->numbr);
return str;
#undef PP_PRECISION
}
@@ -1219,7 +1226,7 @@ char *
pp_node(NODE *n)
{
if ((n->flags & NUMBER) != 0)
- return pp_number(n->numbr);
+ return pp_number(n);
return pp_string(n->stptr, n->stlen, '"');
}
diff --git a/re.c b/re.c
index cec95dac..f3256a1c 100644
--- a/re.c
+++ b/re.c
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1991-2011 the Free Software Foundation, Inc.
+ * Copyright (C) 1991-2012 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -33,6 +33,7 @@ static void check_bracket_exp(char *s, size_t len);
Regexp *
make_regexp(const char *s, size_t len, int ignorecase, int dfa, int canfatal)
{
+ static char metas[] = ".*+(){}[]|?^$\\";
Regexp *rp;
const char *rerr;
const char *src = s;
@@ -46,6 +47,7 @@ make_regexp(const char *s, size_t len, int ignorecase, int dfa, int canfatal)
int has_anchor = FALSE;
int may_have_range = 0;
reg_syntax_t dfa_syn;
+ int i;
/*
* The number of bytes in the current multibyte character.
@@ -90,11 +92,11 @@ make_regexp(const char *s, size_t len, int ignorecase, int dfa, int canfatal)
/* The previous byte is a singlebyte character, or last byte
of a multibyte character. We check the next character. */
is_multibyte = mbrlen(src, end - src, &mbs);
- if ( (is_multibyte == 1)
- || (is_multibyte == (size_t) -1)
- || (is_multibyte == (size_t) -2
- || (is_multibyte == 0))) {
- /* We treat it as a singlebyte character. */
+ if ( is_multibyte == 1
+ || is_multibyte == (size_t) -1
+ || is_multibyte == (size_t) -2
+ || is_multibyte == 0) {
+ /* We treat it as a single-byte character. */
is_multibyte = 0;
}
}
@@ -233,6 +235,21 @@ make_regexp(const char *s, size_t len, int ignorecase, int dfa, int canfatal)
} else
rp->dfa = FALSE;
rp->has_anchor = has_anchor;
+
+ /* Additional flags that help with RS as regexp. */
+ for (i = 0; i < len; i++) {
+ if (strchr(metas, buf[i]) != NULL) {
+ rp->has_meta = TRUE;
+ break;
+ }
+ }
+
+ for (i = len - 1; i >= 0; i--) {
+ if (strchr("*+|?", buf[i]) != NULL) {
+ rp->maybe_long = TRUE;
+ break;
+ }
+ }
return rp;
}
@@ -268,7 +285,7 @@ research(Regexp *rp, char *str, int start,
*/
if (rp->dfa && ! no_bol && ! need_start) {
char save;
- int count = 0;
+ size_t count = 0;
/*
* dfa likes to stick a '\n' right after the matched
* text. So we just save and restore the character.
@@ -322,6 +339,7 @@ void
dfaerror(const char *s)
{
fatal("%s", s);
+ exit(EXIT_FATAL); /* for DJGPP */
}
/* re_update --- recompile a dynamic regexp */
@@ -421,17 +439,12 @@ avoid_dfa(NODE *re, char *str, size_t len)
int
reisstring(const char *text, size_t len, Regexp *re, const char *buf)
{
- static char metas[] = ".*+(){}[]|?^$\\";
- int i;
int res;
const char *matched;
- /* simple checking for has meta characters in re */
- for (i = 0; i < len; i++) {
- if (strchr(metas, text[i]) != NULL) {
- return FALSE; /* give up early, can't be string match */
- }
- }
+ /* simple checking for meta characters in re */
+ if (re->has_meta)
+ return FALSE; /* give up early, can't be string match */
/* make accessable to gdb */
matched = &buf[RESTART(re, buf)];
@@ -441,20 +454,6 @@ reisstring(const char *text, size_t len, Regexp *re, const char *buf)
return res;
}
-/* remaybelong --- return TRUE if the RE contains * ? | + */
-
-int
-remaybelong(const char *text, size_t len)
-{
- while (len--) {
- if (strchr("*+|?", *text++) != NULL) {
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
/* reflags2str --- make a regex flags value readable */
const char *
diff --git a/regcomp.c b/regcomp.c
index a181d63f..f83e454d 100644
--- a/regcomp.c
+++ b/regcomp.c
@@ -1,5 +1,5 @@
/* Extended regular expression matching and search library.
- Copyright (C) 2002-2007,2009,2010,2011 Free Software Foundation, Inc.
+ Copyright (C) 2002-2007,2009,2010,2011,2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
@@ -14,9 +14,8 @@
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- 02110-1301 USA. */
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
static reg_errcode_t re_compile_internal (regex_t *preg, const char * pattern,
size_t length, reg_syntax_t syntax);
@@ -974,6 +973,35 @@ init_word_char (re_dfa_t *dfa)
{
int i, j, ch;
dfa->word_ops_used = 1;
+#ifndef GAWK
+ if (BE (dfa->map_notascii == 0, 1))
+ {
+ if (sizeof (dfa->word_char[0]) == 8)
+ {
+ dfa->word_char[0] = UINT64_C (0x03ff000000000000);
+ dfa->word_char[1] = UINT64_C (0x07fffffe87fffffe);
+ i = 2;
+ }
+ else if (sizeof (dfa->word_char[0]) == 4)
+ {
+ dfa->word_char[0] = UINT32_C (0x00000000);
+ dfa->word_char[1] = UINT32_C (0x03ff0000);
+ dfa->word_char[2] = UINT32_C (0x87fffffe);
+ dfa->word_char[3] = UINT32_C (0x07fffffe);
+ i = 4;
+ }
+ else
+ abort ();
+ ch = 128;
+
+ if (BE (dfa->is_utf8, 1))
+ {
+ memset (&dfa->word_char[i], '\0', (SBC_MAX - ch) / 8);
+ return;
+ }
+ }
+#endif
+
for (i = 0, ch = 0; i < BITSET_WORDS; ++i)
for (j = 0; j < BITSET_WORD_BITS; ++j, ++ch)
if (isalnum (ch) || ch == '_')
@@ -3470,8 +3498,8 @@ 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);
- if (BE (idx1 == 0 || cp < name + strlen ((const char *) name), 0))
+ idx1 = findidx (&cp, -1);
+ if (BE (idx1 == 0 || *cp != '\0', 0))
/* This isn't a valid character. */
return REG_ECOLLATE;
@@ -3482,7 +3510,7 @@ build_equiv_class (bitset_t sbcset, const unsigned char *name)
{
char_buf[0] = ch;
cp = char_buf;
- idx2 = findidx (&cp);
+ idx2 = findidx (&cp, 1);
/*
idx2 = table[ch];
*/
diff --git a/regex.c b/regex.c
index 09b51944..3abc7585 100644
--- a/regex.c
+++ b/regex.c
@@ -14,9 +14,8 @@
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- 02110-1301 USA. */
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -65,10 +64,8 @@
#include "regex_internal.h"
#include "regex_internal.c"
-#ifdef GAWK
-#define bool int
-#define true (1)
-#define false (0)
+#ifndef HAVE_STDBOOL_H
+#include "missing_d/gawkbool.h"
#endif
#include "regcomp.c"
#include "regexec.c"
diff --git a/regex.h b/regex.h
index 6bc503b2..ca619ae5 100644
--- a/regex.h
+++ b/regex.h
@@ -15,9 +15,8 @@
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- 02110-1301 USA. */
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
#ifndef _REGEX_H
#define _REGEX_H 1
@@ -349,9 +348,9 @@ typedef enum
/* This data structure represents a compiled pattern. Before calling
the pattern compiler, the fields `buffer', `allocated', `fastmap',
- `translate', and `no_sub' can be set. After the pattern has been
- compiled, the `re_nsub' field is available. All other fields are
- private to the regex routines. */
+ and `translate' can be set. After the pattern has been compiled,
+ the fields `re_nsub', `not_bol' and `not_eol' are available. All
+ other fields are private to the regex routines. */
#ifndef RE_TRANSLATE_TYPE
# define __RE_TRANSLATE_TYPE unsigned char *
@@ -476,7 +475,12 @@ extern reg_syntax_t re_set_syntax (reg_syntax_t __syntax);
/* Compile the regular expression PATTERN, with length LENGTH
and syntax given by the global `re_syntax_options', into the buffer
- BUFFER. Return NULL if successful, and an error string if not. */
+ BUFFER. Return NULL if successful, and an error string if not.
+
+ To free the allocated storage, you must call `regfree' on BUFFER.
+ Note that the translate table must either have been initialised by
+ `regcomp', with a malloc'ed value, or set to NULL before calling
+ `regfree'. */
extern const char *re_compile_pattern (const char *__pattern, size_t __length,
struct re_pattern_buffer *__buffer);
diff --git a/regex_internal.c b/regex_internal.c
index 0c4f8f80..80991613 100644
--- a/regex_internal.c
+++ b/regex_internal.c
@@ -1,5 +1,5 @@
/* Extended regular expression matching and search library.
- Copyright (C) 2002-2006, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2002-2006, 2010, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
@@ -14,9 +14,8 @@
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- 02110-1301 USA. */
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
static void re_string_construct_common (const char *str, int len,
re_string_t *pstr,
@@ -246,13 +245,8 @@ build_wcs_buffer (re_string_t *pstr)
else
p = (const char *) pstr->raw_mbs + pstr->raw_mbs_idx + byte_idx;
mbclen = __mbrtowc (&wc, p, remain_len, &pstr->cur_state);
- if (BE (mbclen == (size_t) -2, 0))
- {
- /* The buffer doesn't have enough space, finish to build. */
- pstr->cur_state = prev_st;
- break;
- }
- else if (BE (mbclen == (size_t) -1 || mbclen == 0, 0))
+ if (BE (mbclen == (size_t) -1 || mbclen == 0
+ || (mbclen == (size_t) -2 && pstr->bufs_len >= pstr->len), 0))
{
/* We treat these cases as a singlebyte character. */
mbclen = 1;
@@ -261,6 +255,12 @@ build_wcs_buffer (re_string_t *pstr)
wc = pstr->trans[wc];
pstr->cur_state = prev_st;
}
+ else if (BE (mbclen == (size_t) -2, 0))
+ {
+ /* The buffer doesn't have enough space, finish to build. */
+ pstr->cur_state = prev_st;
+ break;
+ }
/* Write wide character and padding. */
pstr->wcs[byte_idx++] = wc;
@@ -343,9 +343,11 @@ build_wcs_upper_buffer (re_string_t *pstr)
for (remain_len = byte_idx + mbclen - 1; byte_idx < remain_len ;)
pstr->wcs[byte_idx++] = WEOF;
}
- else if (mbclen == (size_t) -1 || mbclen == 0)
+ else if (mbclen == (size_t) -1 || mbclen == 0
+ || (mbclen == (size_t) -2 && pstr->bufs_len >= pstr->len))
{
- /* It is an invalid character or '\0'. Just use the byte. */
+ /* It is an invalid character, an incomplete character
+ at the end of the string, or '\0'. Just use the byte. */
int ch = pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx];
pstr->mbs[byte_idx] = ch;
/* And also cast it to wide char. */
@@ -458,7 +460,8 @@ build_wcs_upper_buffer (re_string_t *pstr)
for (remain_len = byte_idx + mbclen - 1; byte_idx < remain_len ;)
pstr->wcs[byte_idx++] = WEOF;
}
- else if (mbclen == (size_t) -1 || mbclen == 0)
+ else if (mbclen == (size_t) -1 || mbclen == 0
+ || (mbclen == (size_t) -2 && pstr->bufs_len >= pstr->len))
{
/* It is an invalid character or '\0'. Just use the byte. */
int ch = pstr->raw_mbs[pstr->raw_mbs_idx + src_idx];
@@ -505,7 +508,7 @@ re_string_skip_chars (re_string_t *pstr, int new_raw_idx, wint_t *last_wc)
rawbuf_idx < new_raw_idx;)
{
wchar_t wc2;
- int remain_len = pstr->len - rawbuf_idx;
+ int remain_len = pstr->raw_len - rawbuf_idx;
prev_st = pstr->cur_state;
mbclen = __mbrtowc (&wc2, (const char *) pstr->raw_mbs + rawbuf_idx,
remain_len, &pstr->cur_state);
@@ -741,16 +744,18 @@ re_string_reconstruct (re_string_t *pstr, int idx, int eflags)
unsigned char buf[6];
size_t mbclen;
+ const unsigned char *pp = p;
if (BE (pstr->trans != NULL, 0))
{
int i = mlen < 6 ? mlen : 6;
while (--i >= 0)
buf[i] = pstr->trans[p[i]];
+ pp = buf;
}
/* XXX Don't use mbrtowc, we know which conversion
to use (UTF-8 -> UCS4). */
memset (&cur_state, 0, sizeof (cur_state));
- mbclen = __mbrtowc (&wc2, (const char *) p, mlen,
+ mbclen = __mbrtowc (&wc2, (const char *) pp, mlen,
&cur_state);
if (raw + offset - p <= mbclen
&& mbclen < (size_t) -2)
diff --git a/regex_internal.h b/regex_internal.h
index 5fcab48a..f38a13b0 100644
--- a/regex_internal.h
+++ b/regex_internal.h
@@ -1,5 +1,5 @@
/* Extended regular expression matching and search library.
- Copyright (C) 2002-2005, 2007, 2008, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2002-2005, 2007, 2008, 2010, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
@@ -14,9 +14,8 @@
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
#ifndef _REGEX_INTERNAL_H
#define _REGEX_INTERNAL_H 1
@@ -783,7 +782,6 @@ re_string_elem_size_at (const re_string_t *pstr, int idx)
# ifdef _LIBC
const unsigned char *p, *extra;
const int32_t *table, *indirect;
- int32_t tmp;
# include <locale/weight.h>
uint_fast32_t nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
@@ -795,7 +793,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;
- tmp = findidx (&p);
+ findidx (&p, pstr->len - idx);
return p - pstr->mbs - idx;
}
else
diff --git a/regexec.c b/regexec.c
index dcd325c4..ea4a02f7 100644
--- a/regexec.c
+++ b/regexec.c
@@ -1,5 +1,5 @@
/* Extended regular expression matching and search library.
- Copyright (C) 2002-2005, 2007, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2002-2005,2007,2009,2010,2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
@@ -14,9 +14,8 @@
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- 02110-1301 USA. */
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
static reg_errcode_t match_ctx_init (re_match_context_t *cache, int eflags,
int n) internal_function;
@@ -200,6 +199,15 @@ static int check_node_accept (const re_match_context_t *mctx,
internal_function;
static reg_errcode_t extend_buffers (re_match_context_t *mctx)
internal_function;
+
+#ifdef GAWK
+#undef MIN /* safety */
+static int
+MIN(size_t a, size_t b)
+{
+ return (a < b ? a : b);
+}
+#endif
/* Entry point for POSIX code. */
@@ -1156,7 +1164,8 @@ check_matching (re_match_context_t *mctx, int fl_longest_match,
re_dfastate_t *old_state = cur_state;
int next_char_idx = re_string_cur_idx (&mctx->input) + 1;
- if (BE (next_char_idx >= mctx->input.bufs_len, 0)
+ if ((BE (next_char_idx >= mctx->input.bufs_len, 0)
+ && mctx->input.bufs_len < mctx->input.len)
|| (BE (next_char_idx >= mctx->input.valid_len, 0)
&& mctx->input.valid_len < mctx->input.len))
{
@@ -1734,7 +1743,8 @@ clean_state_log_if_needed (re_match_context_t *mctx, int next_state_log_idx)
{
int top = mctx->state_log_top;
- if (next_state_log_idx >= mctx->input.bufs_len
+ if ((next_state_log_idx >= mctx->input.bufs_len
+ && mctx->input.bufs_len < mctx->input.len)
|| (next_state_log_idx >= mctx->input.valid_len
&& mctx->input.valid_len < mctx->input.len))
{
@@ -3924,6 +3934,7 @@ check_node_accept_bytes (const re_dfa_t *dfa, int node_idx,
if (cset->nequiv_classes)
{
const unsigned char *cp = pin;
+ int32_t idx;
table = (const int32_t *)
_NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEMB);
weights = (const unsigned char *)
@@ -3932,7 +3943,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);
+ idx = findidx (&cp, elem_len);
if (idx > 0)
for (i = 0; i < cset->nequiv_classes; ++i)
{
@@ -4113,7 +4124,7 @@ extend_buffers (re_match_context_t *mctx)
return REG_ESPACE;
/* Double the lengthes of the buffers. */
- ret = re_string_realloc_buffers (pstr, pstr->bufs_len * 2);
+ ret = re_string_realloc_buffers (pstr, MIN (pstr->len, pstr->bufs_len * 2));
if (BE (ret != REG_NOERROR, 0))
return ret;
diff --git a/replace.c b/replace.c
index d1c05ad6..4259aafa 100644
--- a/replace.c
+++ b/replace.c
@@ -27,8 +27,7 @@
* Do all necessary includes here, so that we don't have to worry about
* overlapping includes in the files in missing.d.
*/
-#include "config.h"
-#include "awk.h"
+#include "awk.h" /* includes config.h for us */
#ifndef HAVE_SYSTEM
diff --git a/str_array.c b/str_array.c
index 7ce617ed..1b3a33f1 100644
--- a/str_array.c
+++ b/str_array.c
@@ -55,11 +55,6 @@ static NODE **str_list(NODE *symbol, NODE *subs);
static NODE **str_copy(NODE *symbol, NODE *newsymb);
static NODE **str_dump(NODE *symbol, NODE *ndump);
-#ifdef ARRAYDEBUG
-static NODE **str_option(NODE *opt, NODE *val);
-#endif
-
-
array_ptr str_array_func[] = {
str_array_init,
(array_ptr) 0,
@@ -70,9 +65,6 @@ array_ptr str_array_func[] = {
str_list,
str_copy,
str_dump,
-#ifdef ARRAYDEBUG
- str_option
-#endif
};
static inline NODE **str_find(NODE *symbol, NODE *s1, size_t code1, unsigned long hash1);
@@ -158,7 +150,7 @@ str_lookup(NODE *symbol, NODE *subs)
* never be used.
*/
- if (subs->flags & NUMCUR) {
+ if ((subs->flags & (MPFN|MPZN|NUMCUR)) == NUMCUR) {
tmp->numbr = subs->numbr;
tmp->flags |= NUMCUR;
}
@@ -187,7 +179,6 @@ str_lookup(NODE *symbol, NODE *subs)
static NODE **
str_exists(NODE *symbol, NODE *subs)
{
- NODE **lhs;
unsigned long hash1;
size_t code1;
@@ -196,8 +187,7 @@ str_exists(NODE *symbol, NODE *subs)
subs = force_string(subs);
hash1 = hash(subs->stptr, subs->stlen, (unsigned long) symbol->array_size, & code1);
- lhs = str_find(symbol, subs, code1, hash1);
- return lhs;
+ return str_find(symbol, subs, code1, hash1);
}
/* str_clear --- flush all the values in symbol[] */
@@ -673,27 +663,6 @@ grow_table(NODE *symbol)
}
-#ifdef ARRAYDEBUG
-
-static NODE **
-str_option(NODE *opt, NODE *val)
-{
- int newval;
- NODE *tmp;
- NODE **ret = (NODE **) ! NULL;
-
- tmp = force_string(opt);
- (void) force_number(val);
- if (strcmp(tmp->stptr, "STR_CHAIN_MAX") == 0) {
- newval = (int) val->numbr;
- if (newval > 0)
- STR_CHAIN_MAX = newval;
- } else
- ret = NULL;
- return ret;
-}
-#endif
-
/*
From bonzini@gnu.org Mon Oct 28 16:05:26 2002
diff --git a/test/ChangeLog b/test/ChangeLog
index 59f9117f..45920dce 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -31,10 +31,50 @@
* Makefile.am (valgrind-scan): Update to match modern valgrind output.
+2012-05-09 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (jarebug): New test.
+ * jarebug.awk, jarebug.in, jarebug.ok: New files.
+
+2012-04-01 John Haque <j.eh@mchsi.com>
+
+ * Makefile.am (mpfr-test): Add target for manual testing of MPFR
+ and GMP numbers.
+ * mpfrbigint.awk, mpfrexprange.awk, mpfrieee.awk, mpfrnr.awk,
+ mpfrrnd.awk, mpfrsort.awk: New tests.
+ (MPFR_TESTS): Add the new tests.
+ * mpfrnr.in, mpfrbigint.ok, mpfrexprange.ok, mpfrieee.ok, mpfrnr.ok,
+ mpfrrnd.ok, mpfrsort.ok: New files.
+ (AWK): Add AWKFLAGS; useful for testing with 'gawk -M' invocation.
+
+2012-02-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * fmtspcl-mpfr.ok, fnarydel-mpfr.ok, fnparydl-mpfr.ok,
+ rand-mpfr.ok: New files.
+ * Makefile.am (EXTRA_DIST): Add them.
+ (CHECK_MPFR): New list of files that have MPFR variant .ok file.
+ * Gentests: Deal with MPFR files by modifying the generated
+ comparison command.
+
2011-12-26 John Haque <j.eh@mchsi.com>
* badargs.ok: Adjust for new and changed command line options.
+2012-03-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.0.1: Release tar ball made.
+
+2012-03-20 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (printfbad3): New test.
+ * printfbad3.awk, printfbad3.ok: New files.
+
+2012-02-22 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (beginfile2, next): Set LC_ALL=C so that error
+ messages will be in English for comparison with .ok files.
+ Thanks to Jeroen Schot <schot@a-eskwadraat.nl>.
+
2011-12-26 Arnold D. Robbins <arnold@skeeve.com>
* Makefile.am (rri1): New test.
diff --git a/test/Gentests b/test/Gentests
index fc779f00..ae56b8cc 100755
--- a/test/Gentests
+++ b/test/Gentests
@@ -45,6 +45,13 @@ BEGIN {
next
}
+/^CHECK_MPFR *=/,/[^\\]$/ {
+ gsub(/(^CHECK_MPFR *=|\\$)/,"")
+ for (i = 1; i <= NF; i++)
+ mpfr[$i]
+ next
+}
+
/^[[:alpha:]_][[:alnum:]_]*:/ {
# remember all targets from Makefile.am
sub(/:.*/,"")
@@ -91,9 +98,17 @@ function generate(x, s)
delete files[x".in"]
}
- printf "\t@echo %s\n", x
+ printf "\t@echo $@\n"
printf "\t@AWKPATH=$(srcdir) $(AWK) -f $@.awk %s >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@\n", s
- printf "\t@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@\n\n"
+
+ if (x in mpfr) {
+ delete mpfr[x]
+ printf "\t@-if test -z \"$$AWKFLAGS\" ; then $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ ; else \\\n"
+ printf "\t$(CMP) $(srcdir)/$@-mpfr.ok _$@ && rm -f _$@ ; \\\n"
+ printf "\tfi\n\n"
+ } else {
+ printf "\t@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@\n\n"
+ }
}
END {
diff --git a/test/Makefile.am b/test/Makefile.am
index 2fe14c4a..05b19a7a 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -1,7 +1,7 @@
#
# test/Makefile.am --- automake input file for gawk
#
-# Copyright (C) 1988-2011 the Free Software Foundation, Inc.
+# Copyright (C) 1988-2012 the Free Software Foundation, Inc.
#
# This file is part of GAWK, the GNU implementation of the
# AWK Programming Language.
@@ -211,6 +211,7 @@ EXTRA_DIST = \
fldchgnf.ok \
fmtspcl.awk \
fmtspcl.tok \
+ fmtspcl-mpfr.ok \
fmttest.awk \
fmttest.ok \
fnamedat.awk \
@@ -223,6 +224,7 @@ EXTRA_DIST = \
fnarray2.ok \
fnarydel.awk \
fnarydel.ok \
+ fnarydel-mpfr.ok \
fnaryscl.awk \
fnaryscl.ok \
fnasgnm.awk \
@@ -232,6 +234,7 @@ EXTRA_DIST = \
fnmisc.ok \
fnparydl.awk \
fnparydl.ok \
+ fnparydl-mpfr.ok \
fork.awk \
fork.ok \
fork2.awk \
@@ -379,6 +382,9 @@ EXTRA_DIST = \
intprec.ok \
iobug1.awk \
iobug1.ok \
+ jarebug.awk \
+ jarebug.in \
+ jarebug.ok \
lc_num1.awk \
lc_num1.ok \
leaddig.awk \
@@ -583,6 +589,8 @@ EXTRA_DIST = \
printfbad2.awk \
printfbad2.in \
printfbad2.ok \
+ printfbad3.awk \
+ printfbad3.ok \
printfloat.awk \
printlang.awk \
prmarscl.awk \
@@ -599,6 +607,7 @@ EXTRA_DIST = \
pty1.ok \
rand.awk \
rand.ok \
+ rand-mpfr.ok \
range1.awk \
range1.in \
range1.ok \
@@ -792,38 +801,44 @@ TESTS_WE_ARE_NOT_DOING_YET_FIXME_ONE_DAY = longdbl
# Get rid of core files when cleaning and generated .ok file
CLEANFILES = core core.* fmtspcl.ok
-# try to keep these sorted
+# try to keep these sorted. each letter starts a new line
BASIC_TESTS = \
addcomma anchgsub argarray arrayparm arrayprm2 arrayprm3 \
arrayref arrymem1 arryref2 arryref3 arryref4 arryref5 arynasty \
arynocls aryprm1 aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 \
- aryprm8 arysubnm asgext awkpath back89 backgsub childin clobber \
- closebad clsflnam compare compare2 concat1 concat2 concat3 \
- concat4 convfmt datanonl defref delargv delarpm2 delarprm delfunc \
- dfastress dynlj eofsplit exitval1 exitval2 fcall_exit fcall_exit2 \
- fldchg fldchgnf fnamedat fnarray fnarray2 fnaryscl fnasgnm fnmisc \
- fordel forref forsimp fsbs fsrs fsspcoln fstabplus funsemnl funsmnam \
- funstack getline getline2 getline3 getline4 \
- getlnbuf getnr2tb getnr2tm \
+ aryprm8 arysubnm asgext awkpath \
+ back89 backgsub \
+ childin clobber closebad clsflnam compare compare2 concat1 concat2 \
+ concat3 concat4 convfmt \
+ datanonl defref delargv delarpm2 delarprm delfunc dfastress dynlj \
+ eofsplit exitval1 exitval2 \
+ fcall_exit fcall_exit2 fldchg fldchgnf fnamedat fnarray fnarray2 \
+ fnaryscl fnasgnm fnmisc fordel forref forsimp fsbs fsrs fsspcoln \
+ fstabplus funsemnl funsmnam funstack \
+ getline getline2 getline3 getline4 getlnbuf getnr2tb getnr2tm \
gsubasgn gsubtest gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 \
gsubtst7 gsubtst8 \
- hex hsprint inputred intest intprec iobug1 leaddig leadnl litoct \
- longsub longwrds manglprm math membug1 messages minusstr mmap8k \
- mtchi18n nasty nasty2 negexp negrange nested nfldstr nfneg \
- nfset nlfldsep nlinstr nlstrina noeffect nofile nofmtch noloop1 \
- noloop2 nonl noparms nors nulrsend numindex numsubstr octsub ofmt \
- ofmta ofmtbig ofmtfidl ofmts onlynl opasnidx opasnslf paramdup \
- paramres paramtyp parse1 parsefld parseme pcntplus posix2008sub \
- prdupval prec printf0 printf1 prmarscl prmreuse prt1eval prtoeval \
- rand range1 rebt8b1 redfilnm regeq regrange reindops reparse resplit \
- rri1 \
- rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 rstest3 rstest4 \
- rstest5 rswhite scalar sclforin sclifin sortempty splitargv \
- splitarr splitdef splitvar splitwht strcat1 strnum1 strtod subamp \
- subi18n subsepnm subslash substr swaplns synerr1 synerr2 tradanch \
- tweakfld uninit2 uninit3 uninit4 uninit5 uninitialized unterm \
- uparrfs wideidx wideidx2 widesub widesub2 widesub3 widesub4 \
- wjposer1 zero2 zeroe0 zeroflag
+ jarebug \
+ hex hsprint \
+ inputred intest intprec iobug1 \
+ leaddig leadnl litoct longsub longwrds \
+ manglprm math membug1 messages minusstr mmap8k mtchi18n \
+ nasty nasty2 negexp negrange nested nfldstr nfneg nfset nlfldsep \
+ nlinstr nlstrina noeffect nofile nofmtch noloop1 noloop2 nonl \
+ noparms nors nulrsend numindex numsubstr \
+ octsub ofmt ofmta ofmtbig ofmtfidl ofmts onlynl opasnidx opasnslf \
+ paramdup paramres paramtyp parse1 parsefld parseme pcntplus \
+ posix2008sub prdupval prec printf0 printf1 prmarscl prmreuse \
+ prt1eval prtoeval \
+ rand range1 rebt8b1 redfilnm regeq regrange reindops reparse \
+ resplit rri1 rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 \
+ rstest3 rstest4 rstest5 rswhite \
+ scalar sclforin sclifin sortempty splitargv splitarr splitdef \
+ splitvar splitwht strcat1 strnum1 strtod subamp subi18n \
+ subsepnm subslash substr swaplns synerr1 synerr2 tradanch tweakfld \
+ uninit2 uninit3 uninit4 uninit5 uninitialized unterm uparrfs \
+ wideidx wideidx2 widesub widesub2 widesub3 widesub4 wjposer1 \
+ zero2 zeroe0 zeroflag
UNIX_TESTS = \
fflush getlnhd localenl pid pipeio1 pipeio2 poundbang rtlen rtlen01 \
@@ -831,15 +846,16 @@ UNIX_TESTS = \
GAWK_EXT_TESTS = \
aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \
- backw badargs beginfile1 beginfile2 \
- binmode1 clos1way delsub devfd devfd1 \
- devfd2 dumpvars exit fieldwdth fpat1 fpat2 fpat3 \
- fpatnull fsfwfs funlen \
+ backw badargs beginfile1 beginfile2 binmode1 \
+ clos1way delsub devfd devfd1 devfd2 dumpvars exit \
+ fieldwdth fpat1 fpat2 fpat3 fpatnull fsfwfs funlen \
fwtest fwtest2 fwtest3 \
gensub gensub2 getlndir gnuops2 gnuops3 gnureops \
- icasefs icasers igncdym igncfs ignrcas2 ignrcase indirectcall lint \
- lintold lintwarn manyfiles match1 match2 match3 mbstr1 nastyparm \
- next nondec nondec2 patsplit posix printfbad1 printfbad2 procinfs \
+ icasefs icasers igncdym igncfs ignrcas2 ignrcase indirectcall \
+ lint lintold lintwarn \
+ manyfiles match1 match2 match3 mbstr1 \
+ nastyparm next nondec nondec2 \
+ patsplit posix printfbad1 printfbad2 printfbad3 procinfs \
profile1 profile2 profile3 pty1 \
rebuf regx8bit reint reint2 rsstart1 \
rsstart2 rsstart3 rstest6 shadow sortfor sortu splitarg4 strftime \
@@ -851,6 +867,8 @@ INET_TESTS = inetdayu inetdayt inetechu inetecht
MACHINE_TESTS = double1 double2 fmtspcl intformat
+MPFR_TESTS = mpfrnr mpfrrnd mpfrieee mpfrexprange mpfrsort mpfrbigint
+
LOCALE_CHARSET_TESTS = \
asort asorti fmttest fnarydel fnparydl lc_num1 mbfw1 \
mbprintf1 mbprintf2 mbprintf3 rebt8b2 rtlenmb sort1 sprintfc
@@ -869,12 +887,15 @@ NEED_LINT_OLD = lintold
FAIL_CODE1 = \
fnarray2 fnmisc gsubasgn mixed1 noparms paramdup synerr1 synerr2 unterm
+# List of files which have .ok versions for MPFR
+CHECK_MPFR = \
+ rand fnarydel fnparydl
+
# List of the files that appear in manual tests or are for reserve testing:
GENTESTS_UNUSED = Makefile.in gtlnbufv.awk printfloat.awk
CMP = cmp
AWKPROG = ../gawk$(EXEEXT)
-PGAWKPROG = ../pgawk$(EXEEXT)
# Default for VALGRIND is empty unless overridden by a command-line argument.
# This protects against cruft in the environment.
@@ -885,10 +906,8 @@ VALGRIND =
#
# This can also be done in individual tests where we wish to
# check things specifically not in the C locale.
-#
-# And we set AWKLIBPATH to find the extension libraries we built.
-AWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} AWKLIBPATH=../extension/.libs $(VALGRIND) $(AWKPROG)
-PGAWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} AWKLIBPATH=../extension/.libs $(VALGRIND) $(PGAWKPROG)
+
+AWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} $(AWKPROG) $(AWKFLAGS)
# Message stuff is to make it a little easier to follow.
# Make the pass-fail last and dependent on others to avoid
@@ -917,6 +936,8 @@ inet: inetmesg $(INET_TESTS)
machine-tests: $(MACHINE_TESTS)
+mpfr-tests: $(MPFR_TESTS)
+
shlib-tests: $(SHLIB_TESTS)
msg::
@@ -1125,9 +1146,11 @@ fmtspcl.ok: fmtspcl.tok Makefile
@$(AWK) -v "sd=$(srcdir)" 'BEGIN {pnan = sprintf("%g",sqrt(-1)); nnan = sprintf("%g",-sqrt(-1)); pinf = sprintf("%g",-log(0)); ninf = sprintf("%g",log(0))} {sub(/positive_nan/,pnan); sub(/negative_nan/,nnan); sub(/positive_infinity/,pinf); sub(/negative_infinity/,ninf); sub(/fmtspcl/,(sd"/fmtspcl")); print}' < $(srcdir)/fmtspcl.tok > $@ 2>/dev/null
fmtspcl: fmtspcl.ok
- @echo fmtspcl
+ @echo $@
@$(AWK) -f $(srcdir)/fmtspcl.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $@.ok _$@ && rm -f _$@
+ @-if test -z "$$AWKFLAGS" ; then $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ ; else \
+ $(CMP) $(srcdir)/$@-mpfr.ok _$@ && rm -f _$@ ; \
+ fi
reint::
@echo $@
@@ -1422,7 +1445,7 @@ beginfile1::
beginfile2:
@echo $@
- @-( cd $(srcdir) && AWK="$(abs_builddir)/$(AWKPROG)" $(srcdir)/$@.sh $(srcdir)/$@.in ) > _$@ 2>&1
+ @-( cd $(srcdir) && LC_ALL=C AWK="$(abs_builddir)/$(AWKPROG)" $(srcdir)/$@.sh $(srcdir)/$@.in ) > _$@ 2>&1
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
dumpvars::
@@ -1457,7 +1480,7 @@ posix2008sub:
next:
@echo $@
@-AWK="$(AWKPROG)" $(srcdir)/$@.sh > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-LC_ALL=C $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
exit:
@echo $@
@@ -1470,6 +1493,49 @@ rri1::
AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+rand:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-if test -z "$$AWKFLAGS" ; then $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ ; else \
+ ($(CMP) $(srcdir)/$@-mpfr.ok _$@ || $(CMP) $(srcdir)/$@-mpfr1.ok _$@) && rm -f _$@ ; \
+ fi
+
+mpfrieee:
+ @echo $@
+ @$(AWK) -M -vPREC=double -f $(srcdir)/$@.awk > _$@ 2>&1
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+mpfrexprange:
+ @echo $@
+ @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+mpfrrnd:
+ @echo $@
+ @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+mpfrnr:
+ @echo $@
+ @$(AWK) -M -vPREC=113 -f $(srcdir)/$@.awk $(srcdir)/$@.in > _$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+mpfrsort:
+ @echo $@
+ @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+mpfrbigint:
+ @echo $@
+ @$(AWK) -M -f $(srcdir)/$@.awk > _$@ 2>&1
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+jarebug::
+ @echo $@
+ @GAWKLOCALE=ja_JP.EUC-JP ; export GAWKLOCALE ; \
+ $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
ordchr2::
@echo $@
@$(AWK) -l ordchr 'BEGIN {print chr(ord("z"))}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/Makefile.in b/test/Makefile.in
index a389929a..8a290cb4 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -1,9 +1,9 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -18,7 +18,7 @@
#
# test/Makefile.am --- automake input file for gawk
#
-# Copyright (C) 1988-2011 the Free Software Foundation, Inc.
+# Copyright (C) 1988-2012 the Free Software Foundation, Inc.
#
# This file is part of GAWK, the GNU implementation of the
# AWK Programming Language.
@@ -38,6 +38,23 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -57,20 +74,19 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(srcdir)/Maketests ChangeLog
+ $(srcdir)/Maketests $(top_srcdir)/mkinstalldirs ChangeLog
subdir = test
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/arch.m4 \
$(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/gettext.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/intmax_t.m4 $(top_srcdir)/m4/inttypes_h.m4 \
$(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lcmessage.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libsigsegv.m4 \
- $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/mpfr.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/noreturn.m4 \
$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
$(top_srcdir)/m4/readline.m4 $(top_srcdir)/m4/socket.m4 \
- $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/uintmax_t.m4 \
$(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
@@ -80,6 +96,11 @@ CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -92,7 +113,7 @@ AUTOMAKE = @AUTOMAKE@
#
# This can also be done in individual tests where we wish to
# check things specifically not in the C locale.
-AWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} $(AWKPROG)
+AWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} $(AWKPROG) $(AWKFLAGS)
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -121,6 +142,7 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
LDFLAGS = @LDFLAGS@
LIBICONV = @LIBICONV@
LIBINTL = @LIBINTL@
+LIBMPFR = @LIBMPFR@
LIBOBJS = @LIBOBJS@
LIBREADLINE = @LIBREADLINE@
LIBS = @LIBS@
@@ -393,6 +415,7 @@ EXTRA_DIST = \
fldchgnf.ok \
fmtspcl.awk \
fmtspcl.tok \
+ fmtspcl-mpfr.ok \
fmttest.awk \
fmttest.ok \
fnamedat.awk \
@@ -405,6 +428,7 @@ EXTRA_DIST = \
fnarray2.ok \
fnarydel.awk \
fnarydel.ok \
+ fnarydel-mpfr.ok \
fnaryscl.awk \
fnaryscl.ok \
fnasgnm.awk \
@@ -414,6 +438,7 @@ EXTRA_DIST = \
fnmisc.ok \
fnparydl.awk \
fnparydl.ok \
+ fnparydl-mpfr.ok \
fpat1.awk \
fpat1.in \
fpat1.ok \
@@ -557,6 +582,9 @@ EXTRA_DIST = \
intprec.ok \
iobug1.awk \
iobug1.ok \
+ jarebug.awk \
+ jarebug.in \
+ jarebug.ok \
lc_num1.awk \
lc_num1.ok \
leaddig.awk \
@@ -758,6 +786,8 @@ EXTRA_DIST = \
printfbad2.awk \
printfbad2.in \
printfbad2.ok \
+ printfbad3.awk \
+ printfbad3.ok \
printfloat.awk \
printlang.awk \
prmarscl.awk \
@@ -774,6 +804,7 @@ EXTRA_DIST = \
pty1.ok \
rand.awk \
rand.ok \
+ rand-mpfr.ok \
range1.awk \
range1.in \
range1.ok \
@@ -967,38 +998,44 @@ TESTS_WE_ARE_NOT_DOING_YET_FIXME_ONE_DAY = longdbl
# Get rid of core files when cleaning and generated .ok file
CLEANFILES = core core.* fmtspcl.ok
-# try to keep these sorted
+# try to keep these sorted. each letter starts a new line
BASIC_TESTS = \
addcomma anchgsub argarray arrayparm arrayprm2 arrayprm3 \
arrayref arrymem1 arryref2 arryref3 arryref4 arryref5 arynasty \
arynocls aryprm1 aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 \
- aryprm8 arysubnm asgext awkpath back89 backgsub childin clobber \
- closebad clsflnam compare compare2 concat1 concat2 concat3 \
- concat4 convfmt datanonl defref delargv delarpm2 delarprm delfunc \
- dfastress dynlj eofsplit exitval1 exitval2 fcall_exit fcall_exit2 \
- fldchg fldchgnf fnamedat fnarray fnarray2 fnaryscl fnasgnm fnmisc \
- fordel forref forsimp fsbs fsrs fsspcoln fstabplus funsemnl funsmnam \
- funstack getline getline2 getline3 getline4 \
- getlnbuf getnr2tb getnr2tm \
+ aryprm8 arysubnm asgext awkpath \
+ back89 backgsub \
+ childin clobber closebad clsflnam compare compare2 concat1 concat2 \
+ concat3 concat4 convfmt \
+ datanonl defref delargv delarpm2 delarprm delfunc dfastress dynlj \
+ eofsplit exitval1 exitval2 \
+ fcall_exit fcall_exit2 fldchg fldchgnf fnamedat fnarray fnarray2 \
+ fnaryscl fnasgnm fnmisc fordel forref forsimp fsbs fsrs fsspcoln \
+ fstabplus funsemnl funsmnam funstack \
+ getline getline2 getline3 getline4 getlnbuf getnr2tb getnr2tm \
gsubasgn gsubtest gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 \
gsubtst7 gsubtst8 \
- hex hsprint inputred intest intprec iobug1 leaddig leadnl litoct \
- longsub longwrds manglprm math membug1 messages minusstr mmap8k \
- mtchi18n nasty nasty2 negexp negrange nested nfldstr nfneg \
- nfset nlfldsep nlinstr nlstrina noeffect nofile nofmtch noloop1 \
- noloop2 nonl noparms nors nulrsend numindex numsubstr octsub ofmt \
- ofmta ofmtbig ofmtfidl ofmts onlynl opasnidx opasnslf paramdup \
- paramres paramtyp parse1 parsefld parseme pcntplus posix2008sub \
- prdupval prec printf0 printf1 prmarscl prmreuse prt1eval prtoeval \
- rand range1 rebt8b1 redfilnm regeq regrange reindops reparse resplit \
- rri1 \
- rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 rstest3 rstest4 \
- rstest5 rswhite scalar sclforin sclifin sortempty splitargv \
- splitarr splitdef splitvar splitwht strcat1 strnum1 strtod subamp \
- subi18n subsepnm subslash substr swaplns synerr1 synerr2 tradanch \
- tweakfld uninit2 uninit3 uninit4 uninit5 uninitialized unterm \
- uparrfs wideidx wideidx2 widesub widesub2 widesub3 widesub4 \
- wjposer1 zero2 zeroe0 zeroflag
+ jarebug \
+ hex hsprint \
+ inputred intest intprec iobug1 \
+ leaddig leadnl litoct longsub longwrds \
+ manglprm math membug1 messages minusstr mmap8k mtchi18n \
+ nasty nasty2 negexp negrange nested nfldstr nfneg nfset nlfldsep \
+ nlinstr nlstrina noeffect nofile nofmtch noloop1 noloop2 nonl \
+ noparms nors nulrsend numindex numsubstr \
+ octsub ofmt ofmta ofmtbig ofmtfidl ofmts onlynl opasnidx opasnslf \
+ paramdup paramres paramtyp parse1 parsefld parseme pcntplus \
+ posix2008sub prdupval prec printf0 printf1 prmarscl prmreuse \
+ prt1eval prtoeval \
+ rand range1 rebt8b1 redfilnm regeq regrange reindops reparse \
+ resplit rri1 rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 \
+ rstest3 rstest4 rstest5 rswhite \
+ scalar sclforin sclifin sortempty splitargv splitarr splitdef \
+ splitvar splitwht strcat1 strnum1 strtod subamp subi18n \
+ subsepnm subslash substr swaplns synerr1 synerr2 tradanch tweakfld \
+ uninit2 uninit3 uninit4 uninit5 uninitialized unterm uparrfs \
+ wideidx wideidx2 widesub widesub2 widesub3 widesub4 wjposer1 \
+ zero2 zeroe0 zeroflag
UNIX_TESTS = \
fflush getlnhd localenl pid pipeio1 pipeio2 poundbang rtlen rtlen01 \
@@ -1006,15 +1043,16 @@ UNIX_TESTS = \
GAWK_EXT_TESTS = \
aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \
- backw badargs beginfile1 beginfile2 \
- binmode1 clos1way delsub devfd devfd1 \
- devfd2 dumpvars exit fieldwdth fpat1 fpat2 fpat3 \
- fpatnull fsfwfs funlen \
+ backw badargs beginfile1 beginfile2 binmode1 \
+ clos1way delsub devfd devfd1 devfd2 dumpvars exit \
+ fieldwdth fpat1 fpat2 fpat3 fpatnull fsfwfs funlen \
fwtest fwtest2 fwtest3 \
gensub gensub2 getlndir gnuops2 gnuops3 gnureops \
- icasefs icasers igncdym igncfs ignrcas2 ignrcase indirectcall lint \
- lintold lintwarn manyfiles match1 match2 match3 mbstr1 nastyparm \
- next nondec nondec2 patsplit posix printfbad1 printfbad2 procinfs \
+ icasefs icasers igncdym igncfs ignrcas2 ignrcase indirectcall \
+ lint lintold lintwarn \
+ manyfiles match1 match2 match3 mbstr1 \
+ nastyparm next nondec nondec2 \
+ patsplit posix printfbad1 printfbad2 printfbad3 procinfs \
profile1 profile2 profile3 pty1 \
rebuf regx8bit reint reint2 rsstart1 \
rsstart2 rsstart3 rstest6 shadow sortfor sortu splitarg4 strftime \
@@ -1023,6 +1061,7 @@ GAWK_EXT_TESTS = \
EXTRA_TESTS = inftest regtest
INET_TESTS = inetdayu inetdayt inetechu inetecht
MACHINE_TESTS = double1 double2 fmtspcl intformat
+MPFR_TESTS = mpfrnr mpfrrnd mpfrieee mpfrexprange mpfrsort mpfrbigint
LOCALE_CHARSET_TESTS = \
asort asorti fmttest fnarydel fnparydl lc_num1 mbfw1 \
mbprintf1 mbprintf2 mbprintf3 rebt8b2 rtlenmb sort1 sprintfc
@@ -1042,12 +1081,15 @@ FAIL_CODE1 = \
fnarray2 fnmisc gsubasgn mixed1 noparms paramdup synerr1 synerr2 unterm
+# List of files which have .ok versions for MPFR
+CHECK_MPFR = \
+ rand fnarydel fnparydl
+
+
# List of the files that appear in manual tests or are for reserve testing:
GENTESTS_UNUSED = Makefile.in gtlnbufv.awk printfloat.awk
CMP = cmp
AWKPROG = ../gawk$(EXEEXT)
-PGAWKPROG = ../pgawk$(EXEEXT)
-PGAWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} $(PGAWKPROG)
all: all-am
.SUFFIXES:
@@ -1087,6 +1129,8 @@ TAGS:
ctags: CTAGS
CTAGS:
+cscope cscopelist:
+
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -1132,10 +1176,15 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
@@ -1251,6 +1300,8 @@ inet: inetmesg $(INET_TESTS)
machine-tests: $(MACHINE_TESTS)
+mpfr-tests: $(MPFR_TESTS)
+
msg::
@echo ''
@echo 'Any output from "cmp" is bad news, although some differences'
@@ -1449,9 +1500,11 @@ fmtspcl.ok: fmtspcl.tok Makefile
@$(AWK) -v "sd=$(srcdir)" 'BEGIN {pnan = sprintf("%g",sqrt(-1)); nnan = sprintf("%g",-sqrt(-1)); pinf = sprintf("%g",-log(0)); ninf = sprintf("%g",log(0))} {sub(/positive_nan/,pnan); sub(/negative_nan/,nnan); sub(/positive_infinity/,pinf); sub(/negative_infinity/,ninf); sub(/fmtspcl/,(sd"/fmtspcl")); print}' < $(srcdir)/fmtspcl.tok > $@ 2>/dev/null
fmtspcl: fmtspcl.ok
- @echo fmtspcl
+ @echo $@
@$(AWK) -f $(srcdir)/fmtspcl.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $@.ok _$@ && rm -f _$@
+ @-if test -z "$$AWKFLAGS" ; then $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ ; else \
+ $(CMP) $(srcdir)/$@-mpfr.ok _$@ && rm -f _$@ ; \
+ fi
reint::
@echo $@
@@ -1746,7 +1799,7 @@ beginfile1::
beginfile2:
@echo $@
- @-( cd $(srcdir) && AWK="$(abs_builddir)/$(AWKPROG)" $(srcdir)/$@.sh $(srcdir)/$@.in ) > _$@ 2>&1
+ @-( cd $(srcdir) && LC_ALL=C AWK="$(abs_builddir)/$(AWKPROG)" $(srcdir)/$@.sh $(srcdir)/$@.in ) > _$@ 2>&1
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
dumpvars::
@@ -1781,7 +1834,7 @@ posix2008sub:
next:
@echo $@
@-AWK="$(AWKPROG)" $(srcdir)/$@.sh > _$@ 2>&1
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-LC_ALL=C $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
exit:
@echo $@
@@ -1793,1195 +1846,1242 @@ rri1::
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rand:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-if test -z "$$AWKFLAGS" ; then $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ ; else \
+ ($(CMP) $(srcdir)/$@-mpfr.ok _$@ || $(CMP) $(srcdir)/$@-mpfr1.ok _$@) && rm -f _$@ ; \
+ fi
+
+mpfrieee:
+ @echo $@
+ @$(AWK) -M -vPREC=double -f $(srcdir)/$@.awk > _$@ 2>&1
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+mpfrexprange:
+ @echo $@
+ @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+mpfrrnd:
+ @echo $@
+ @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+mpfrnr:
+ @echo $@
+ @$(AWK) -M -vPREC=113 -f $(srcdir)/$@.awk $(srcdir)/$@.in > _$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+mpfrsort:
+ @echo $@
+ @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+mpfrbigint:
+ @echo $@
+ @$(AWK) -M -f $(srcdir)/$@.awk > _$@ 2>&1
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+jarebug::
+ @echo $@
+ @GAWKLOCALE=ja_JP.EUC-JP ; export GAWKLOCALE ; \
+ $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
Gt-dummy:
# file Maketests, generated from Makefile.am by the Gentests program
addcomma:
- @echo addcomma
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
anchgsub:
- @echo anchgsub
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
arrayparm:
- @echo arrayparm
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
arrayprm2:
- @echo arrayprm2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
arrayprm3:
- @echo arrayprm3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
arrayref:
- @echo arrayref
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
arrymem1:
- @echo arrymem1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
arryref2:
- @echo arryref2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
arryref3:
- @echo arryref3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
arryref4:
- @echo arryref4
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
arryref5:
- @echo arryref5
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
arynasty:
- @echo arynasty
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aryprm1:
- @echo aryprm1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aryprm2:
- @echo aryprm2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aryprm3:
- @echo aryprm3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aryprm4:
- @echo aryprm4
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aryprm5:
- @echo aryprm5
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aryprm6:
- @echo aryprm6
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aryprm7:
- @echo aryprm7
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aryprm8:
- @echo aryprm8
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
arysubnm:
- @echo arysubnm
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
asgext:
- @echo asgext
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
back89:
- @echo back89
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
backgsub:
- @echo backgsub
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
childin:
- @echo childin
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
closebad:
- @echo closebad
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
clsflnam:
- @echo clsflnam
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
compare2:
- @echo compare2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
concat1:
- @echo concat1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
concat2:
- @echo concat2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
concat3:
- @echo concat3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
convfmt:
- @echo convfmt
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
datanonl:
- @echo datanonl
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
defref:
- @echo defref
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
delargv:
- @echo delargv
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
delarpm2:
- @echo delarpm2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
delarprm:
- @echo delarprm
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
delfunc:
- @echo delfunc
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
dfastress:
- @echo dfastress
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
dynlj:
- @echo dynlj
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
eofsplit:
- @echo eofsplit
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
exitval2:
- @echo exitval2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fcall_exit:
- @echo fcall_exit
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fcall_exit2:
- @echo fcall_exit2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fldchg:
- @echo fldchg
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fldchgnf:
- @echo fldchgnf
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fnamedat:
- @echo fnamedat
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fnarray:
- @echo fnarray
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fnarray2:
- @echo fnarray2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fnaryscl:
- @echo fnaryscl
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fnasgnm:
- @echo fnasgnm
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fnmisc:
- @echo fnmisc
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fordel:
- @echo fordel
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
forref:
- @echo forref
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
forsimp:
- @echo forsimp
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fsbs:
- @echo fsbs
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fsrs:
- @echo fsrs
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fstabplus:
- @echo fstabplus
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
funsemnl:
- @echo funsemnl
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
funsmnam:
- @echo funsmnam
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
funstack:
- @echo funstack
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
getline:
- @echo getline
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
getline3:
- @echo getline3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
getline4:
- @echo getline4
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
getnr2tb:
- @echo getnr2tb
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
getnr2tm:
- @echo getnr2tm
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
gsubasgn:
- @echo gsubasgn
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
gsubtest:
- @echo gsubtest
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
gsubtst2:
- @echo gsubtst2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
gsubtst4:
- @echo gsubtst4
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
gsubtst5:
- @echo gsubtst5
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
gsubtst7:
- @echo gsubtst7
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
gsubtst8:
- @echo gsubtst8
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
hex:
- @echo hex
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
hsprint:
- @echo hsprint
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
inputred:
- @echo inputred
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
intest:
- @echo intest
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
intprec:
- @echo intprec
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
iobug1:
- @echo iobug1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
leadnl:
- @echo leadnl
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
longsub:
- @echo longsub
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
longwrds:
- @echo longwrds
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
manglprm:
- @echo manglprm
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
math:
- @echo math
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
membug1:
- @echo membug1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
minusstr:
- @echo minusstr
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nasty:
- @echo nasty
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nasty2:
- @echo nasty2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
negexp:
- @echo negexp
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
negrange:
- @echo negrange
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nested:
- @echo nested
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nfldstr:
- @echo nfldstr
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nfneg:
- @echo nfneg
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nfset:
- @echo nfset
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nlfldsep:
- @echo nlfldsep
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nlinstr:
- @echo nlinstr
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nlstrina:
- @echo nlstrina
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
noeffect:
- @echo noeffect
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nofmtch:
- @echo nofmtch
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
noloop1:
- @echo noloop1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
noloop2:
- @echo noloop2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
noparms:
- @echo noparms
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nulrsend:
- @echo nulrsend
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
numindex:
- @echo numindex
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
numsubstr:
- @echo numsubstr
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
octsub:
- @echo octsub
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
ofmt:
- @echo ofmt
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
ofmta:
- @echo ofmta
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
ofmtbig:
- @echo ofmtbig
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
ofmtfidl:
- @echo ofmtfidl
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
ofmts:
- @echo ofmts
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
onlynl:
- @echo onlynl
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
opasnidx:
- @echo opasnidx
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
opasnslf:
- @echo opasnslf
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
paramdup:
- @echo paramdup
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
paramres:
- @echo paramres
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
paramtyp:
- @echo paramtyp
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
parse1:
- @echo parse1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
parsefld:
- @echo parsefld
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
parseme:
- @echo parseme
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
pcntplus:
- @echo pcntplus
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
prdupval:
- @echo prdupval
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
prec:
- @echo prec
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
printf1:
- @echo printf1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
prmarscl:
- @echo prmarscl
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
prmreuse:
- @echo prmreuse
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
prt1eval:
- @echo prt1eval
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
prtoeval:
- @echo prtoeval
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-rand:
- @echo rand
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
range1:
- @echo range1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
rebt8b1:
- @echo rebt8b1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
regeq:
- @echo regeq
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
regrange:
- @echo regrange
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
reindops:
- @echo reindops
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
reparse:
- @echo reparse
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
resplit:
- @echo resplit
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
rs:
- @echo rs
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
rsnul1nl:
- @echo rsnul1nl
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
rstest1:
- @echo rstest1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
rstest2:
- @echo rstest2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
rstest3:
- @echo rstest3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
rstest4:
- @echo rstest4
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
rstest5:
- @echo rstest5
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
rswhite:
- @echo rswhite
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
scalar:
- @echo scalar
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
sclforin:
- @echo sclforin
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
sclifin:
- @echo sclifin
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
sortempty:
- @echo sortempty
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
splitargv:
- @echo splitargv
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
splitarr:
- @echo splitarr
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
splitdef:
- @echo splitdef
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
splitvar:
- @echo splitvar
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
splitwht:
- @echo splitwht
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
strcat1:
- @echo strcat1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
strnum1:
- @echo strnum1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
strtod:
- @echo strtod
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
subsepnm:
- @echo subsepnm
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
subslash:
- @echo subslash
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
substr:
- @echo substr
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
swaplns:
- @echo swaplns
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
synerr1:
- @echo synerr1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
synerr2:
- @echo synerr2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
uninit2:
- @echo uninit2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
uninit3:
- @echo uninit3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
uninit4:
- @echo uninit4
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
uninit5:
- @echo uninit5
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
uninitialized:
- @echo uninitialized
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
unterm:
- @echo unterm
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
uparrfs:
- @echo uparrfs
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
wjposer1:
- @echo wjposer1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
zero2:
- @echo zero2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
zeroe0:
- @echo zeroe0
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
zeroflag:
- @echo zeroflag
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
getlnhd:
- @echo getlnhd
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aadelete1:
- @echo aadelete1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aadelete2:
- @echo aadelete2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aarray1:
- @echo aarray1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aasort:
- @echo aasort
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aasorti:
- @echo aasorti
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
arraysort:
- @echo arraysort
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
backw:
- @echo backw
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
clos1way:
- @echo clos1way
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
delsub:
- @echo delsub
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fieldwdth:
- @echo fieldwdth
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fpat1:
- @echo fpat1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fpat2:
- @echo fpat2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fpat3:
- @echo fpat3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fpatnull:
- @echo fpatnull
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fsfwfs:
- @echo fsfwfs
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
funlen:
- @echo funlen
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fwtest:
- @echo fwtest
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fwtest2:
- @echo fwtest2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fwtest3:
- @echo fwtest3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
gensub:
- @echo gensub
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
gensub2:
- @echo gensub2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
getlndir:
- @echo getlndir
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
gnuops2:
- @echo gnuops2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
gnuops3:
- @echo gnuops3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
gnureops:
- @echo gnureops
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
icasefs:
- @echo icasefs
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
icasers:
- @echo icasers
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
igncdym:
- @echo igncdym
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
igncfs:
- @echo igncfs
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
ignrcase:
- @echo ignrcase
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
indirectcall:
- @echo indirectcall
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
lint:
- @echo lint
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
lintold:
- @echo lintold
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint-old < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
lintwarn:
- @echo lintwarn
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
match1:
- @echo match1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
match2:
- @echo match2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
match3:
- @echo match3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nastyparm:
- @echo nastyparm
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nondec:
- @echo nondec
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
patsplit:
- @echo patsplit
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
posix:
- @echo posix
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
printfbad1:
- @echo printfbad1
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+printfbad3:
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
procinfs:
- @echo procinfs
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
pty1:
- @echo pty1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
rebuf:
- @echo rebuf
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
regx8bit:
- @echo regx8bit
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
rstest6:
- @echo rstest6
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
shadow:
- @echo shadow
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
sortfor:
- @echo sortfor
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
sortu:
- @echo sortu
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
splitarg4:
- @echo splitarg4
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
strtonum:
- @echo strtonum
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
switch2:
- @echo switch2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
double1:
- @echo double1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
double2:
- @echo double2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
intformat:
- @echo intformat
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
asort:
- @echo asort
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
asorti:
- @echo asorti
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fmttest:
- @echo fmttest
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fnarydel:
- @echo fnarydel
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-if test -z "$$AWKFLAGS" ; then $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ ; else \
+ $(CMP) $(srcdir)/$@-mpfr.ok _$@ && rm -f _$@ ; \
+ fi
fnparydl:
- @echo fnparydl
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-if test -z "$$AWKFLAGS" ; then $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ ; else \
+ $(CMP) $(srcdir)/$@-mpfr.ok _$@ && rm -f _$@ ; \
+ fi
rebt8b2:
- @echo rebt8b2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
sort1:
- @echo sort1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
sprintfc:
- @echo sprintfc
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
diff --git a/test/Maketests b/test/Maketests
index 5c1a6b38..f179ab73 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -1,1192 +1,1196 @@
Gt-dummy:
# file Maketests, generated from Makefile.am by the Gentests program
addcomma:
- @echo addcomma
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
anchgsub:
- @echo anchgsub
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
arrayparm:
- @echo arrayparm
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
arrayprm2:
- @echo arrayprm2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
arrayprm3:
- @echo arrayprm3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
arrayref:
- @echo arrayref
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
arrymem1:
- @echo arrymem1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
arryref2:
- @echo arryref2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
arryref3:
- @echo arryref3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
arryref4:
- @echo arryref4
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
arryref5:
- @echo arryref5
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
arynasty:
- @echo arynasty
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aryprm1:
- @echo aryprm1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aryprm2:
- @echo aryprm2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aryprm3:
- @echo aryprm3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aryprm4:
- @echo aryprm4
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aryprm5:
- @echo aryprm5
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aryprm6:
- @echo aryprm6
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aryprm7:
- @echo aryprm7
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aryprm8:
- @echo aryprm8
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
arysubnm:
- @echo arysubnm
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
asgext:
- @echo asgext
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
back89:
- @echo back89
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
backgsub:
- @echo backgsub
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
childin:
- @echo childin
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
closebad:
- @echo closebad
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
clsflnam:
- @echo clsflnam
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
compare2:
- @echo compare2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
concat1:
- @echo concat1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
concat2:
- @echo concat2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
concat3:
- @echo concat3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
convfmt:
- @echo convfmt
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
datanonl:
- @echo datanonl
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
defref:
- @echo defref
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
delargv:
- @echo delargv
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
delarpm2:
- @echo delarpm2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
delarprm:
- @echo delarprm
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
delfunc:
- @echo delfunc
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
dfastress:
- @echo dfastress
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
dynlj:
- @echo dynlj
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
eofsplit:
- @echo eofsplit
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
exitval2:
- @echo exitval2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fcall_exit:
- @echo fcall_exit
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fcall_exit2:
- @echo fcall_exit2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fldchg:
- @echo fldchg
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fldchgnf:
- @echo fldchgnf
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fnamedat:
- @echo fnamedat
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fnarray:
- @echo fnarray
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fnarray2:
- @echo fnarray2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fnaryscl:
- @echo fnaryscl
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fnasgnm:
- @echo fnasgnm
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fnmisc:
- @echo fnmisc
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fordel:
- @echo fordel
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
forref:
- @echo forref
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
forsimp:
- @echo forsimp
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fsbs:
- @echo fsbs
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fsrs:
- @echo fsrs
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fstabplus:
- @echo fstabplus
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
funsemnl:
- @echo funsemnl
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
funsmnam:
- @echo funsmnam
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
funstack:
- @echo funstack
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
getline:
- @echo getline
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
getline3:
- @echo getline3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
getline4:
- @echo getline4
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
getnr2tb:
- @echo getnr2tb
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
getnr2tm:
- @echo getnr2tm
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
gsubasgn:
- @echo gsubasgn
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
gsubtest:
- @echo gsubtest
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
gsubtst2:
- @echo gsubtst2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
gsubtst4:
- @echo gsubtst4
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
gsubtst5:
- @echo gsubtst5
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
gsubtst7:
- @echo gsubtst7
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
gsubtst8:
- @echo gsubtst8
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
hex:
- @echo hex
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
hsprint:
- @echo hsprint
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
inputred:
- @echo inputred
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
intest:
- @echo intest
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
intprec:
- @echo intprec
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
iobug1:
- @echo iobug1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
leadnl:
- @echo leadnl
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
longsub:
- @echo longsub
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
longwrds:
- @echo longwrds
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
manglprm:
- @echo manglprm
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
math:
- @echo math
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
membug1:
- @echo membug1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
minusstr:
- @echo minusstr
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nasty:
- @echo nasty
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nasty2:
- @echo nasty2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
negexp:
- @echo negexp
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
negrange:
- @echo negrange
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nested:
- @echo nested
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nfldstr:
- @echo nfldstr
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nfneg:
- @echo nfneg
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nfset:
- @echo nfset
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nlfldsep:
- @echo nlfldsep
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nlinstr:
- @echo nlinstr
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nlstrina:
- @echo nlstrina
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
noeffect:
- @echo noeffect
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nofmtch:
- @echo nofmtch
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
noloop1:
- @echo noloop1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
noloop2:
- @echo noloop2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
noparms:
- @echo noparms
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nulrsend:
- @echo nulrsend
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
numindex:
- @echo numindex
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
numsubstr:
- @echo numsubstr
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
octsub:
- @echo octsub
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
ofmt:
- @echo ofmt
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
ofmta:
- @echo ofmta
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
ofmtbig:
- @echo ofmtbig
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
ofmtfidl:
- @echo ofmtfidl
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
ofmts:
- @echo ofmts
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
onlynl:
- @echo onlynl
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
opasnidx:
- @echo opasnidx
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
opasnslf:
- @echo opasnslf
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
paramdup:
- @echo paramdup
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
paramres:
- @echo paramres
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
paramtyp:
- @echo paramtyp
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
parse1:
- @echo parse1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
parsefld:
- @echo parsefld
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
parseme:
- @echo parseme
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
pcntplus:
- @echo pcntplus
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
prdupval:
- @echo prdupval
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
prec:
- @echo prec
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
printf1:
- @echo printf1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
prmarscl:
- @echo prmarscl
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
prmreuse:
- @echo prmreuse
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
prt1eval:
- @echo prt1eval
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
prtoeval:
- @echo prtoeval
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-rand:
- @echo rand
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
range1:
- @echo range1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
rebt8b1:
- @echo rebt8b1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
regeq:
- @echo regeq
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
regrange:
- @echo regrange
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
reindops:
- @echo reindops
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
reparse:
- @echo reparse
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
resplit:
- @echo resplit
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
rs:
- @echo rs
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
rsnul1nl:
- @echo rsnul1nl
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
rstest1:
- @echo rstest1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
rstest2:
- @echo rstest2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
rstest3:
- @echo rstest3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
rstest4:
- @echo rstest4
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
rstest5:
- @echo rstest5
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
rswhite:
- @echo rswhite
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
scalar:
- @echo scalar
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
sclforin:
- @echo sclforin
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
sclifin:
- @echo sclifin
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
sortempty:
- @echo sortempty
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
splitargv:
- @echo splitargv
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
splitarr:
- @echo splitarr
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
splitdef:
- @echo splitdef
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
splitvar:
- @echo splitvar
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
splitwht:
- @echo splitwht
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
strcat1:
- @echo strcat1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
strnum1:
- @echo strnum1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
strtod:
- @echo strtod
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
subsepnm:
- @echo subsepnm
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
subslash:
- @echo subslash
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
substr:
- @echo substr
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
swaplns:
- @echo swaplns
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
synerr1:
- @echo synerr1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
synerr2:
- @echo synerr2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
uninit2:
- @echo uninit2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
uninit3:
- @echo uninit3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
uninit4:
- @echo uninit4
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
uninit5:
- @echo uninit5
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
uninitialized:
- @echo uninitialized
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
unterm:
- @echo unterm
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
uparrfs:
- @echo uparrfs
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
wjposer1:
- @echo wjposer1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
zero2:
- @echo zero2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
zeroe0:
- @echo zeroe0
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
zeroflag:
- @echo zeroflag
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
getlnhd:
- @echo getlnhd
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aadelete1:
- @echo aadelete1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aadelete2:
- @echo aadelete2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aarray1:
- @echo aarray1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aasort:
- @echo aasort
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
aasorti:
- @echo aasorti
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
arraysort:
- @echo arraysort
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
backw:
- @echo backw
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
clos1way:
- @echo clos1way
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
delsub:
- @echo delsub
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fieldwdth:
- @echo fieldwdth
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fpat1:
- @echo fpat1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fpat2:
- @echo fpat2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fpat3:
- @echo fpat3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fpatnull:
- @echo fpatnull
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fsfwfs:
- @echo fsfwfs
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
funlen:
- @echo funlen
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fwtest:
- @echo fwtest
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fwtest2:
- @echo fwtest2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fwtest3:
- @echo fwtest3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
gensub:
- @echo gensub
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
gensub2:
- @echo gensub2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
getlndir:
- @echo getlndir
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
gnuops2:
- @echo gnuops2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
gnuops3:
- @echo gnuops3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
gnureops:
- @echo gnureops
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
icasefs:
- @echo icasefs
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
icasers:
- @echo icasers
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
igncdym:
- @echo igncdym
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
igncfs:
- @echo igncfs
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
ignrcase:
- @echo ignrcase
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
indirectcall:
- @echo indirectcall
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
lint:
- @echo lint
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
lintold:
- @echo lintold
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint-old < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
lintwarn:
- @echo lintwarn
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
match1:
- @echo match1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
match2:
- @echo match2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
match3:
- @echo match3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nastyparm:
- @echo nastyparm
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
nondec:
- @echo nondec
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
patsplit:
- @echo patsplit
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
posix:
- @echo posix
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
printfbad1:
- @echo printfbad1
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+printfbad3:
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
procinfs:
- @echo procinfs
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
pty1:
- @echo pty1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
rebuf:
- @echo rebuf
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
regx8bit:
- @echo regx8bit
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
rstest6:
- @echo rstest6
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
shadow:
- @echo shadow
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
sortfor:
- @echo sortfor
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
sortu:
- @echo sortu
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
splitarg4:
- @echo splitarg4
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
strtonum:
- @echo strtonum
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
switch2:
- @echo switch2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
double1:
- @echo double1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
double2:
- @echo double2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
intformat:
- @echo intformat
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
asort:
- @echo asort
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
asorti:
- @echo asorti
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fmttest:
- @echo fmttest
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fnarydel:
- @echo fnarydel
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-if test -z "$$AWKFLAGS" ; then $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ ; else \
+ $(CMP) $(srcdir)/$@-mpfr.ok _$@ && rm -f _$@ ; \
+ fi
fnparydl:
- @echo fnparydl
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ @-if test -z "$$AWKFLAGS" ; then $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ ; else \
+ $(CMP) $(srcdir)/$@-mpfr.ok _$@ && rm -f _$@ ; \
+ fi
rebt8b2:
- @echo rebt8b2
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
sort1:
- @echo sort1
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
sprintfc:
- @echo sprintfc
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
diff --git a/test/badargs.ok b/test/badargs.ok
index cb140161..35c7d027 100644
--- a/test/badargs.ok
+++ b/test/badargs.ok
@@ -18,6 +18,7 @@ Short options: GNU long options: (extensions)
-l library --load=library
-L [fatal] --lint[=fatal]
-n --non-decimal-data
+ -M --bignum
-N --use-lc-numeric
-o[file] --pretty-print[=file]
-O --optimize
diff --git a/test/dumpvars.ok b/test/dumpvars.ok
index 01d5fb78..73d3d306 100644
--- a/test/dumpvars.ok
+++ b/test/dumpvars.ok
@@ -16,7 +16,9 @@ NR: 3
OFMT: "%.6g"
OFS: " "
ORS: "\n"
+PREC: 53
RLENGTH: 0
+ROUNDMODE: "N"
RS: "\n"
RSTART: 0
RT: "\n"
diff --git a/test/fmtspcl-mpfr.ok b/test/fmtspcl-mpfr.ok
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/test/fmtspcl-mpfr.ok
diff --git a/test/fnarydel-mpfr.ok b/test/fnarydel-mpfr.ok
new file mode 100644
index 00000000..7f3e4531
--- /dev/null
+++ b/test/fnarydel-mpfr.ok
@@ -0,0 +1,27 @@
+first loop
+4
+5
+6
+7
+8
+9
+1
+2
+3
+second loop
+third loop
+4
+5
+6
+7
+8
+9
+1
+2
+3
+call func
+fourth loop
+You should just see: 4 4
+4 4
+You should see nothing between this line
+And this one
diff --git a/test/fnparydl-mpfr.ok b/test/fnparydl-mpfr.ok
new file mode 100644
index 00000000..26a5c390
--- /dev/null
+++ b/test/fnparydl-mpfr.ok
@@ -0,0 +1,10 @@
+BEFORE LOOP
+DELETING KEY 4
+DELETING KEY 5
+DELETING KEY 6
+DELETING KEY 7
+DELETING KEY 1
+DELETING KEY 2
+DELETING KEY 3
+AFTER LOOP
+0 elements still in q[]
diff --git a/test/jarebug.awk b/test/jarebug.awk
new file mode 100644
index 00000000..906d1846
--- /dev/null
+++ b/test/jarebug.awk
@@ -0,0 +1 @@
+/.*/ { gsub ("源", "ERROR"); print; }
diff --git a/test/jarebug.in b/test/jarebug.in
new file mode 100644
index 00000000..6ce66826
--- /dev/null
+++ b/test/jarebug.in
@@ -0,0 +1,4 @@
+aa瘀a蕙質
+aaa瘀a蕙質
+aaaa瘀a蕙質
+aaaaa瘀a蕙質
diff --git a/test/jarebug.ok b/test/jarebug.ok
new file mode 100644
index 00000000..6ce66826
--- /dev/null
+++ b/test/jarebug.ok
@@ -0,0 +1,4 @@
+aa瘀a蕙質
+aaa瘀a蕙質
+aaaa瘀a蕙質
+aaaaa瘀a蕙質
diff --git a/test/mpfrbigint.awk b/test/mpfrbigint.awk
new file mode 100644
index 00000000..bfdd871a
--- /dev/null
+++ b/test/mpfrbigint.awk
@@ -0,0 +1,11 @@
+BEGIN {
+ x = 5^4^3^2
+ print "# of digits =", length(x)
+ print substr(x, 1, 20), "...", substr(x, length(x) - 19, 20)
+
+ PREC = 1 + 3.321928095 * length(x); # 1 + digits * log2(10)
+ print "floating-point computation with precision =", PREC
+ y = 5.0^4.0^3.0^2.0
+ print "# of digits =", length(y)
+ print substr(y, 1, 20), "...", substr(y, length(y) - 19, 20)
+}
diff --git a/test/mpfrbigint.ok b/test/mpfrbigint.ok
new file mode 100644
index 00000000..670d4e07
--- /dev/null
+++ b/test/mpfrbigint.ok
@@ -0,0 +1,5 @@
+# of digits = 183231
+62060698786608744707 ... 92256259918212890625
+floating-point computation with precision = 608681
+# of digits = 183231
+62060698786608744707 ... 92256259918212890625
diff --git a/test/mpfrexprange.awk b/test/mpfrexprange.awk
new file mode 100644
index 00000000..68e95a39
--- /dev/null
+++ b/test/mpfrexprange.awk
@@ -0,0 +1,7 @@
+# test change of allowed exponent range
+BEGIN {
+ x=1.0e-10000
+ print x+0
+ PREC="double"
+ print x+0
+}
diff --git a/test/mpfrexprange.ok b/test/mpfrexprange.ok
new file mode 100644
index 00000000..4700ee22
--- /dev/null
+++ b/test/mpfrexprange.ok
@@ -0,0 +1,2 @@
+1e-10000
+0
diff --git a/test/mpfrieee.awk b/test/mpfrieee.awk
new file mode 100644
index 00000000..dc6e120d
--- /dev/null
+++ b/test/mpfrieee.awk
@@ -0,0 +1,13 @@
+# Test IEEE-754 binary double format
+BEGIN {
+ x = 1.0e-320
+ i = 0
+ while (x > 0) {
+ printf("%.15e\n", x)
+ x /= 2
+
+ # terminate early when the test is going to fail.
+ if (++i > 50)
+ break
+ }
+}
diff --git a/test/mpfrieee.ok b/test/mpfrieee.ok
new file mode 100644
index 00000000..e88f5c79
--- /dev/null
+++ b/test/mpfrieee.ok
@@ -0,0 +1,12 @@
+9.999888671826830e-321
+4.999944335913415e-321
+2.499972167956708e-321
+1.249986083978354e-321
+6.225227137599706e-322
+3.112613568799853e-322
+1.581010066691989e-322
+7.905050333459945e-323
+3.952525166729972e-323
+1.976262583364986e-323
+9.881312916824931e-324
+4.940656458412465e-324
diff --git a/test/mpfrnr.awk b/test/mpfrnr.awk
new file mode 100644
index 00000000..1a3b753a
--- /dev/null
+++ b/test/mpfrnr.awk
@@ -0,0 +1,10 @@
+# Test NR and FNR for file(s) with records > LONG_MAX
+BEGIN {
+ NR = 0x7FFFFFFF
+}
+BEGINFILE {
+ FNR = 0x7fffffffffffffff
+}
+END {
+ print NR, NR-0x7FFFFFFF, FNR, FNR-0x7fffffffffffffff
+}
diff --git a/test/mpfrnr.in b/test/mpfrnr.in
new file mode 100644
index 00000000..6ad36e52
--- /dev/null
+++ b/test/mpfrnr.in
@@ -0,0 +1,3 @@
+Line 1
+Line 2
+Line 3
diff --git a/test/mpfrnr.ok b/test/mpfrnr.ok
new file mode 100644
index 00000000..e472f8bf
--- /dev/null
+++ b/test/mpfrnr.ok
@@ -0,0 +1 @@
+2147483650 3 9223372036854775810 3
diff --git a/test/mpfrrnd.awk b/test/mpfrrnd.awk
new file mode 100644
index 00000000..508ac26b
--- /dev/null
+++ b/test/mpfrrnd.awk
@@ -0,0 +1,15 @@
+BEGIN {
+ N = 22/7
+ printf(" %.15f\n", N)
+
+ printf("* %.10f\n", N) # default
+ ROUNDMODE="N"; printf("N %.10f\n", N)
+ ROUNDMODE="U"; printf("U %.10f\n", N)
+ ROUNDMODE="D"; printf("D %.10f\n", N)
+ ROUNDMODE="Z"; printf("Z %.10f\n", N)
+ N = -N
+ ROUNDMODE="N"; printf("N %.10f\n", N)
+ ROUNDMODE="U"; printf("U %.10f\n", N)
+ ROUNDMODE="D"; printf("D %.10f\n", N)
+ ROUNDMODE="Z"; printf("Z %.10f\n", N)
+}
diff --git a/test/mpfrrnd.ok b/test/mpfrrnd.ok
new file mode 100644
index 00000000..fceb937b
--- /dev/null
+++ b/test/mpfrrnd.ok
@@ -0,0 +1,10 @@
+ 3.142857142857143
+* 3.1428571429
+N 3.1428571429
+U 3.1428571429
+D 3.1428571428
+Z 3.1428571428
+N -3.1428571429
+U -3.1428571428
+D -3.1428571429
+Z -3.1428571428
diff --git a/test/mpfrsort.awk b/test/mpfrsort.awk
new file mode 100644
index 00000000..6f7fa65c
--- /dev/null
+++ b/test/mpfrsort.awk
@@ -0,0 +1,8 @@
+BEGIN {
+# s = "1.0 +nan 0.0 -1 +inf -0.0 1 nan 1.0 -nan -inf 2.0"
+ s = "1.0 +nan 0.0 -1 +inf -0.0 1 1.0 -nan -inf 2.0"
+ split(s, a)
+ PROCINFO["sorted_in"] = "@val_num_asc"
+ for (i in a)
+ print a[i]
+}
diff --git a/test/mpfrsort.ok b/test/mpfrsort.ok
new file mode 100644
index 00000000..77a51ecf
--- /dev/null
+++ b/test/mpfrsort.ok
@@ -0,0 +1,11 @@
+-inf
+-1
+-0.0
+0.0
+1
+1.0
+1.0
+2.0
++inf
++nan
+-nan
diff --git a/test/printfbad3.awk b/test/printfbad3.awk
new file mode 100644
index 00000000..1cabdd76
--- /dev/null
+++ b/test/printfbad3.awk
@@ -0,0 +1,22 @@
+# Date: Wed, 14 Mar 2012 08:10:48 -0500
+# From: John Haque <j.eh@mchsi.com>
+# To: arnold@skeeve.com
+# Subject: gawk printf format bug
+#
+# Hi.
+#
+# I think this is a bug:
+#
+# $ gawk 'BEGIN { printf("%.0x%#x%#x\n", 0, 167, 167)}'
+# 570xa7
+#
+# It should print 0xa70xa7.
+#
+# The solution is to initialize base to 0 in the beginning
+# of the while loop along with other stuff (format_tree).
+#
+# Thanks.
+#
+# John
+
+BEGIN { printf(">>%.0x<< >>%#x<< >>%#x<<\n", 0, 167, 167) }
diff --git a/test/printfbad3.ok b/test/printfbad3.ok
new file mode 100644
index 00000000..a87b0192
--- /dev/null
+++ b/test/printfbad3.ok
@@ -0,0 +1 @@
+>><< >>0xa7<< >>0xa7<<
diff --git a/test/rand-mpfr.ok b/test/rand-mpfr.ok
new file mode 100644
index 00000000..76ab51b4
--- /dev/null
+++ b/test/rand-mpfr.ok
@@ -0,0 +1 @@
+ 27 89 11 47 77 49 13 34 78 93 76 96 91 53 3 94 25 51 10
diff --git a/test/rand-mpfr1.ok b/test/rand-mpfr1.ok
new file mode 100644
index 00000000..448f4032
--- /dev/null
+++ b/test/rand-mpfr1.ok
@@ -0,0 +1 @@
+ 25 42 47 49 80 5 4 92 59 96 8 63 92 28 41 37 80 51 48
diff --git a/vms/ChangeLog b/vms/ChangeLog
index 90a6e75e..9988d34b 100644
--- a/vms/ChangeLog
+++ b/vms/ChangeLog
@@ -1,7 +1,31 @@
+2012-03-29 Arnold D. Robbins <arnold@skeeve.com>
+
+ * config.h: Add definition for _Noreturn.
+
2012-03-20 Andrew J. Schorr <aschorr@telemetry-investments.com>
* gawkmisc.vms (deflibpath): New global variable.
+2012-03-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 4.0.1: Release tar ball made.
+
+2012-03-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * vms-conf.h: Update copyright year.
+
+2012-03-21 Anders Wallin <anders_s_wallin@yahoo.se>
+
+ * vmstest.com: Make printfbad3 test work.
+
+2012-03-20 Arnold D. Robbins <arnold@skeeve.com>
+
+ * vmstest.com: Add printfbad3 test.
+
+2012-02-10 Arnold D. Robbins <arnold@skeeve.com>
+
+ * vmsbuild.com, descrip.mms, vms-conf.h: Update patch level.
+
2011-12-31 Arnold D. Robbins <arnold@skeeve.com>
* vms_misc.c: [STREQ, STREQN]: Change use of macros to call
diff --git a/vms/descrip.mms b/vms/descrip.mms
index 40b97eb1..f00921ea 100644
--- a/vms/descrip.mms
+++ b/vms/descrip.mms
@@ -140,7 +140,7 @@ DOCS= $(DOCDIR)gawk.1,$(DOCDIR)gawk.texi,$(DOCDIR)texinfo.tex
# Release of gawk
REL=4.0
-PATCHLVL=0
+PATCHLVL=1
# generic target
all : gawk,pgawk,dgawk
diff --git a/vms/vms-conf.h b/vms/vms-conf.h
index c42118ff..59abd5de 100644
--- a/vms/vms-conf.h
+++ b/vms/vms-conf.h
@@ -7,8 +7,8 @@
*/
/*
- * Copyright (C) 1991-1992, 1995-1996, 1999, 2001-2003, 2005, 2009, 2010, 2011
- * the Free Software Foundation, Inc.
+ * Copyright (C) 1991-1992, 1995-1996, 1999, 2001-2003, 2005, 2009, 2010, 2011,
+ * 2012, the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -408,7 +408,7 @@
#undef PACKAGE_URL
/* Define to the version of this package. */
-#define PACKAGE_VERSION "4.0.0"
+#define PACKAGE_VERSION "4.0.1"
/* Define to 1 if *printf supports %F format */
#undef PRINTF_HAS_F_FORMAT
@@ -438,7 +438,7 @@
#define USE_INCLUDED_STRFTIME 1
/* Version number of package */
-#define VERSION "4.0.0"
+#define VERSION "4.0.1"
/* Define to 1 if on AIX 3.
System headers sometimes define this.
@@ -461,6 +461,18 @@
/* Define to 1 if on MINIX. */
#undef _MINIX
+/* The _Noreturn keyword of C11. */
+#ifndef _Noreturn
+# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \
+ || 0x5110 <= __SUNPRO_C)
+# define _Noreturn __attribute__ ((__noreturn__))
+# elif defined _MSC_VER && 1200 <= _MSC_VER
+# define _Noreturn __declspec (noreturn)
+# else
+# define _Noreturn
+# endif
+#endif
+
/* Define to 2 if the system does not provide POSIX.1 features except with
this defined. */
#undef _POSIX_1_SOURCE
diff --git a/vms/vmsbuild.com b/vms/vmsbuild.com
index 0ad0d3d0..047e49a2 100644
--- a/vms/vmsbuild.com
+++ b/vms/vmsbuild.com
@@ -12,7 +12,7 @@ $! gawk-bytecode revd, Jan'10
$! gawk 4.0.0 revd, May'11
$!
$ REL = "4.0" !release version number
-$ PATCHLVL = "0"
+$ PATCHLVL = "1"
$!
$!
$ CCFLAGS = "/noList" ! "/noOpt/Debug"
diff --git a/vms/vmstest.com b/vms/vmstest.com
index 146053e1..ccea8717 100644
--- a/vms/vmstest.com
+++ b/vms/vmstest.com
@@ -107,9 +107,9 @@ $ list = "indirectcall lint lintold lintwarn match1" -
+ " match2 match3 manyfiles mbprintf3 mbstr1" -
+ " nastyparm next nondec" -
+ " nondec2 patsplit posix profile1 procinfs printfbad1" -
- + " printfbad2 pty1 regx8bit rebuf reint reint2 rsstart1" -
- + " rsstart2 rsstart3 rstest6 shadow sortfor sortu" -
- + " splitarg4 strtonum strftime switch2"
+ + " printfbad2 printfbad3 pty1 regx8bit rebuf reint" -
+ + " reint2 rsstart1 rsstart2 rsstart3 rstest6 shadow" -
+ + " sortfor sortu splitarg4 strtonum strftime switch2"
$ gosub list_of_tests
$ return
$
@@ -1400,12 +1400,14 @@ $ cmp mbstr1.ok _mbstr1.tmp
$ if $status then rm _mbstr1.tmp;
$ return
$
-$printfbad2: echo "printfbad2"
+$printfbad2:
+$printfbad3:
+$ echo "''test'"
$ set noOn
-$ gawk --lint -f printfbad2.awk printfbad2.in >_printfbad2.tmp 2>&1
+$ gawk --lint -f 'test'.awk 'test'.in >_'test'.tmp 2>&1
$ set On
-$ cmp printfbad2.ok _printfbad2.tmp
-$ if $status then rm _printfbad2.tmp;
+$ cmp 'test'.ok _'test'.tmp
+$ if $status then rm _'test'.tmp;
$ return
$
$fmtspcl: echo "fmtspcl: not supported"
diff --git a/xalloc.h b/xalloc.h
index 5810fc55..eb0ef1a0 100644
--- a/xalloc.h
+++ b/xalloc.h
@@ -169,6 +169,16 @@ xalloc_die (void)
r_fatal(_("xalloc: malloc failed: %s"), strerror(errno));
}
+
+/* Clone an object P of size S, with error checking. There's no need
+ for xnmemdup (P, N, S), since xmemdup (P, N * S) works without any
+ need for an arithmetic overflow check. */
+
+void *
+xmemdup (void const *p, size_t s)
+{
+ return memcpy (xmalloc (s), p, s);
+}
#endif
/* Change the size of an allocated block of memory P to an array of N
diff --git a/ylwrap b/ylwrap
index 102bd893..36543daa 100644..100755
--- a/ylwrap
+++ b/ylwrap
@@ -1,10 +1,9 @@
#! /bin/sh
# ylwrap - wrapper for lex/yacc invocations.
-scriptversion=2005-05-14.22
+scriptversion=2011-08-25.18; # UTC
-# Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005
-# Free Software Foundation, Inc.
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
#
# Written by Tom Tromey <tromey@cygnus.com>.
#
@@ -19,9 +18,7 @@ scriptversion=2005-05-14.22
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -34,7 +31,7 @@ scriptversion=2005-05-14.22
case "$1" in
'')
- echo "$0: No files given. Try \`$0 --help' for more information." 1>&2
+ echo "$0: No files given. Try '$0 --help' for more information." 1>&2
exit 1
;;
--basedir)
@@ -101,14 +98,18 @@ esac
# FIXME: add hostname here for parallel makes that run commands on
# other machines. But that might take us over the 14-char limit.
dirname=ylwrap$$
-trap "cd `pwd`; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15
+do_exit="cd '`pwd`' && rm -rf $dirname > /dev/null 2>&1;"' (exit $ret); exit $ret'
+trap "ret=129; $do_exit" 1
+trap "ret=130; $do_exit" 2
+trap "ret=141; $do_exit" 13
+trap "ret=143; $do_exit" 15
mkdir $dirname || exit 1
cd $dirname
case $# in
- 0) $prog "$input" ;;
- *) $prog "$@" "$input" ;;
+ 0) "$prog" "$input" ;;
+ *) "$prog" "$@" "$input" ;;
esac
ret=$?
@@ -127,7 +128,7 @@ if test $ret -eq 0; then
# The directory holding the input.
input_dir=`echo "$input" | sed -e 's,\([\\/]\)[^\\/]*$,\1,'`
# Quote $INPUT_DIR so we can use it in a regexp.
- # FIXME: really we should care about more than `.' and `\'.
+ # FIXME: really we should care about more than '.' and '\'.
input_rx=`echo "$input_dir" | sed 's,\\\\,\\\\\\\\,g;s,\\.,\\\\.,g'`
while test "$#" -ne 0; do
@@ -135,19 +136,19 @@ if test $ret -eq 0; then
# Handle y_tab.c and y_tab.h output by DOS
if test $y_tab_nodot = "yes"; then
if test $from = "y.tab.c"; then
- from="y_tab.c"
+ from="y_tab.c"
else
- if test $from = "y.tab.h"; then
- from="y_tab.h"
- fi
+ if test $from = "y.tab.h"; then
+ from="y_tab.h"
+ fi
fi
fi
if test -f "$from"; then
# If $2 is an absolute path name, then just use that,
- # otherwise prepend `../'.
+ # otherwise prepend '../'.
case "$2" in
- [\\/]* | ?:[\\/]*) target="$2";;
- *) target="../$2";;
+ [\\/]* | ?:[\\/]*) target="$2";;
+ *) target="../$2";;
esac
# We do not want to overwrite a header file if it hasn't
@@ -157,10 +158,10 @@ if test $ret -eq 0; then
# Makefile. Divert the output of all other files to a temporary
# file so we can compare them to existing versions.
if test $first = no; then
- realtarget="$target"
- target="tmp-`echo $target | sed s/.*[\\/]//g`"
+ realtarget="$target"
+ target="tmp-`echo $target | sed s/.*[\\/]//g`"
fi
- # Edit out `#line' or `#' directives.
+ # Edit out '#line' or '#' directives.
#
# We don't want the resulting debug information to point at
# an absolute srcdir; it is better for it to just mention the
@@ -182,10 +183,10 @@ if test $ret -eq 0; then
# Check whether header files must be updated.
if test $first = no; then
- if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then
- echo "$2" is unchanged
- rm -f "$target"
- else
+ if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then
+ echo "$2" is unchanged
+ rm -f "$target"
+ else
echo updating "$2"
mv -f "$target" "$realtarget"
fi
@@ -219,5 +220,6 @@ exit $ret
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
# End: