diff options
-rw-r--r-- | ChangeLog | 279 | ||||
-rw-r--r-- | FUTURES | 2 | ||||
-rw-r--r-- | INSTALL | 212 | ||||
-rw-r--r-- | Makefile.am | 3 | ||||
-rw-r--r-- | Makefile.in | 244 | ||||
-rw-r--r-- | NEWS | 13 | ||||
-rw-r--r-- | README | 6 | ||||
-rw-r--r-- | README.git | 57 | ||||
-rw-r--r-- | README_d/ChangeLog | 12 | ||||
-rw-r--r-- | README_d/README.hacking | 11 | ||||
-rw-r--r-- | README_d/README.mpfr | 25 | ||||
-rw-r--r-- | TODO | 2 | ||||
-rw-r--r-- | aclocal.m4 | 309 | ||||
-rw-r--r-- | array.c | 157 | ||||
-rw-r--r-- | awk.h | 187 | ||||
-rw-r--r-- | awkgram.c | 591 | ||||
-rw-r--r-- | awkgram.y | 330 | ||||
-rw-r--r-- | awklib/ChangeLog | 4 | ||||
-rw-r--r-- | awklib/Makefile.in | 100 | ||||
-rw-r--r-- | builtin.c | 326 | ||||
-rw-r--r-- | cint_array.c | 20 | ||||
-rw-r--r-- | cmd.h | 13 | ||||
-rw-r--r-- | command.c | 212 | ||||
-rw-r--r-- | command.y | 46 | ||||
-rwxr-xr-x | config.guess | 528 | ||||
-rwxr-xr-x | config.sub | 313 | ||||
-rw-r--r-- | configh.in | 52 | ||||
-rwxr-xr-x | configure | 789 | ||||
-rw-r--r-- | configure.ac | 23 | ||||
-rw-r--r-- | debug.c | 105 | ||||
-rwxr-xr-x | depcomp | 289 | ||||
-rw-r--r-- | dfa.c | 2290 | ||||
-rw-r--r-- | dfa.h | 19 | ||||
-rw-r--r-- | doc/ChangeLog | 41 | ||||
-rw-r--r-- | doc/Makefile.in | 133 | ||||
-rw-r--r-- | doc/awkcard.in | 28 | ||||
-rw-r--r-- | doc/gawk.1 | 43 | ||||
-rw-r--r-- | doc/gawk.info | 2176 | ||||
-rw-r--r-- | doc/gawk.texi | 944 | ||||
-rw-r--r-- | doc/texinfo.tex | 1302 | ||||
-rw-r--r-- | eval.c | 222 | ||||
-rw-r--r-- | ext.c | 15 | ||||
-rw-r--r-- | extension/ChangeLog | 9 | ||||
-rw-r--r-- | field.c | 29 | ||||
-rw-r--r-- | getopt.c | 133 | ||||
-rw-r--r-- | getopt.h | 11 | ||||
-rw-r--r-- | getopt1.c | 10 | ||||
-rw-r--r-- | getopt_int.h | 5 | ||||
-rwxr-xr-x | install-sh | 258 | ||||
-rw-r--r-- | int_array.c | 31 | ||||
-rw-r--r-- | interpret.h | 237 | ||||
-rw-r--r-- | io.c | 547 | ||||
-rw-r--r-- | m4/ChangeLog | 23 | ||||
-rw-r--r-- | m4/codeset.m4 | 12 | ||||
-rw-r--r-- | m4/glibc2.m4 | 18 | ||||
-rw-r--r-- | m4/glibc21.m4 | 18 | ||||
-rw-r--r-- | m4/intdiv0.m4 | 50 | ||||
-rw-r--r-- | m4/intl.m4 | 119 | ||||
-rw-r--r-- | m4/intldir.m4 | 6 | ||||
-rw-r--r-- | m4/intlmacosx.m4 | 12 | ||||
-rw-r--r-- | m4/intmax.m4 | 12 | ||||
-rw-r--r-- | m4/inttypes-pri.m4 | 12 | ||||
-rw-r--r-- | m4/inttypes_h.m4 | 29 | ||||
-rw-r--r-- | m4/lcmessage.m4 | 11 | ||||
-rw-r--r-- | m4/lock.m4 | 308 | ||||
-rw-r--r-- | m4/longlong.m4 | 106 | ||||
-rw-r--r-- | m4/mpfr.m4 | 62 | ||||
-rw-r--r-- | m4/noreturn.m4 | 38 | ||||
-rw-r--r-- | m4/printf-posix.m4 | 15 | ||||
-rw-r--r-- | m4/size_max.m4 | 37 | ||||
-rw-r--r-- | m4/stdint_h.m4 | 29 | ||||
-rw-r--r-- | m4/uintmax_t.m4 | 14 | ||||
-rw-r--r-- | m4/visibility.m4 | 34 | ||||
-rw-r--r-- | m4/wchar_t.m4 | 10 | ||||
-rw-r--r-- | m4/wint_t.m4 | 20 | ||||
-rw-r--r-- | m4/xsize.m4 | 6 | ||||
-rw-r--r-- | main.c | 117 | ||||
-rw-r--r-- | mbsupport.h | 8 | ||||
-rwxr-xr-x | missing | 183 | ||||
-rw-r--r-- | missing_d/ChangeLog | 8 | ||||
-rw-r--r-- | missing_d/gawkbool.h | 40 | ||||
-rw-r--r-- | missing_d/snprintf.c | 4 | ||||
-rwxr-xr-x | mkinstalldirs | 9 | ||||
-rw-r--r-- | mpfr.c | 1620 | ||||
-rw-r--r-- | msg.c | 16 | ||||
-rw-r--r-- | node.c | 93 | ||||
-rw-r--r-- | pc/ChangeLog | 96 | ||||
-rw-r--r-- | pc/Makefile | 107 | ||||
-rw-r--r-- | pc/Makefile.tst | 153 | ||||
-rw-r--r-- | pc/config.h | 58 | ||||
-rw-r--r-- | pc/config.sed | 26 | ||||
-rw-r--r-- | pc/gawkmisc.pc | 23 | ||||
-rw-r--r-- | pc/testoutcmp.awk | 19 | ||||
-rw-r--r-- | po/ChangeLog | 4 | ||||
-rw-r--r-- | po/LINGUAS | 1 | ||||
-rw-r--r-- | po/da.gmo | bin | 48739 -> 46123 bytes | |||
-rw-r--r-- | po/da.po | 1494 | ||||
-rw-r--r-- | po/de.gmo | bin | 52166 -> 49358 bytes | |||
-rw-r--r-- | po/de.po | 1109 | ||||
-rw-r--r-- | po/es.gmo | bin | 51471 -> 48746 bytes | |||
-rw-r--r-- | po/es.po | 1112 | ||||
-rw-r--r-- | po/fi.gmo | bin | 51684 -> 48930 bytes | |||
-rw-r--r-- | po/fi.po | 1108 | ||||
-rw-r--r-- | po/fr.gmo | bin | 53311 -> 50390 bytes | |||
-rw-r--r-- | po/fr.po | 1109 | ||||
-rw-r--r-- | po/gawk.pot | 1002 | ||||
-rw-r--r-- | po/it.gmo | bin | 44316 -> 41479 bytes | |||
-rw-r--r-- | po/it.po | 1146 | ||||
-rw-r--r-- | po/ja.gmo | bin | 55596 -> 52218 bytes | |||
-rw-r--r-- | po/ja.po | 1097 | ||||
-rw-r--r-- | po/nl.gmo | bin | 49267 -> 46629 bytes | |||
-rw-r--r-- | po/nl.po | 1110 | ||||
-rw-r--r-- | po/pl.gmo | bin | 50946 -> 48745 bytes | |||
-rw-r--r-- | po/pl.po | 1128 | ||||
-rw-r--r-- | po/sv.gmo | bin | 48752 -> 46113 bytes | |||
-rw-r--r-- | po/sv.po | 1110 | ||||
-rw-r--r-- | po/vi.gmo | bin | 0 -> 55101 bytes | |||
-rw-r--r-- | po/vi.po | 1827 | ||||
-rw-r--r-- | posix/ChangeLog | 4 | ||||
-rw-r--r-- | profile.c | 17 | ||||
-rw-r--r-- | re.c | 57 | ||||
-rw-r--r-- | regcomp.c | 42 | ||||
-rw-r--r-- | regex.c | 11 | ||||
-rw-r--r-- | regex.h | 18 | ||||
-rw-r--r-- | regex_internal.c | 37 | ||||
-rw-r--r-- | regex_internal.h | 10 | ||||
-rw-r--r-- | regexec.c | 27 | ||||
-rw-r--r-- | replace.c | 3 | ||||
-rw-r--r-- | str_array.c | 35 | ||||
-rw-r--r-- | test/ChangeLog | 40 | ||||
-rwxr-xr-x | test/Gentests | 19 | ||||
-rw-r--r-- | test/Makefile.am | 152 | ||||
-rw-r--r-- | test/Makefile.in | 692 | ||||
-rw-r--r-- | test/Maketests | 492 | ||||
-rw-r--r-- | test/badargs.ok | 1 | ||||
-rw-r--r-- | test/dumpvars.ok | 2 | ||||
-rw-r--r-- | test/fmtspcl-mpfr.ok | 0 | ||||
-rw-r--r-- | test/fnarydel-mpfr.ok | 27 | ||||
-rw-r--r-- | test/fnparydl-mpfr.ok | 10 | ||||
-rw-r--r-- | test/jarebug.awk | 1 | ||||
-rw-r--r-- | test/jarebug.in | 4 | ||||
-rw-r--r-- | test/jarebug.ok | 4 | ||||
-rw-r--r-- | test/mpfrbigint.awk | 11 | ||||
-rw-r--r-- | test/mpfrbigint.ok | 5 | ||||
-rw-r--r-- | test/mpfrexprange.awk | 7 | ||||
-rw-r--r-- | test/mpfrexprange.ok | 2 | ||||
-rw-r--r-- | test/mpfrieee.awk | 13 | ||||
-rw-r--r-- | test/mpfrieee.ok | 12 | ||||
-rw-r--r-- | test/mpfrnr.awk | 10 | ||||
-rw-r--r-- | test/mpfrnr.in | 3 | ||||
-rw-r--r-- | test/mpfrnr.ok | 1 | ||||
-rw-r--r-- | test/mpfrrnd.awk | 15 | ||||
-rw-r--r-- | test/mpfrrnd.ok | 10 | ||||
-rw-r--r-- | test/mpfrsort.awk | 8 | ||||
-rw-r--r-- | test/mpfrsort.ok | 11 | ||||
-rw-r--r-- | test/printfbad3.awk | 22 | ||||
-rw-r--r-- | test/printfbad3.ok | 1 | ||||
-rw-r--r-- | test/rand-mpfr.ok | 1 | ||||
-rw-r--r-- | test/rand-mpfr1.ok | 1 | ||||
-rw-r--r-- | vms/ChangeLog | 24 | ||||
-rw-r--r-- | vms/descrip.mms | 2 | ||||
-rw-r--r-- | vms/vms-conf.h | 20 | ||||
-rw-r--r-- | vms/vmsbuild.com | 2 | ||||
-rw-r--r-- | vms/vmstest.com | 16 | ||||
-rw-r--r-- | xalloc.h | 10 | ||||
-rwxr-xr-x[-rw-r--r--] | ylwrap | 54 |
166 files changed, 20194 insertions, 13453 deletions
@@ -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): @@ -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 @@ -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. @@ -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 @@ -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. @@ -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 @@ -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: @@ -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]) @@ -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; } @@ -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); @@ -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) } + @@ -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 \ @@ -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 @@ -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); @@ -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; } @@ -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 @@ -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*) @@ -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" @@ -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 @@ -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 */ @@ -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: @@ -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; @@ -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. @@ -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 @@ -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 - @@ -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> @@ -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; @@ -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, _("\ @@ -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; @@ -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 @@ -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 } - @@ -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.]) ]) @@ -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 ]) @@ -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]) ]) @@ -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 @@ -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: @@ -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 @@ -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"); @@ -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 @@ -8,3 +8,4 @@ ja nl pl sv +vi Binary files differ@@ -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" Binary files differ@@ -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" Binary files differ@@ -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" @@ -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" @@ -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 "" Binary files differ@@ -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" Binary files differ@@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.0.0\n" "Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 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啜格颯扎詻桐誨乓航迂胯艾整" Binary files differ@@ -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" Binary files differ@@ -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" @@ -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 Binary files differnew file mode 100644 index 00000000..bf8cc497 --- /dev/null +++ b/po/vi.gmo @@ -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. @@ -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, '"'); } @@ -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 * @@ -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]; */ @@ -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" @@ -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 @@ -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; @@ -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" @@ -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 @@ -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: |