#! /bin/sh # # This is patch #1 to gawk 4.0. cd to gawk-4.0.0 and sh this file. # Then remove all the .orig files and rename the directory gawk-4.0.1 # Changes to files that are automatically recreated have been omitted. # They will be recreated the first time you run make. # This includes all the extracted example files in awklib. # First, slight rearranging # Now, apply the patch patch -p1 << \EOF diff -urN gawk-4.0.0/ChangeLog gawk-4.0.1/ChangeLog --- gawk-4.0.0/ChangeLog 2011-06-24 11:11:54.000000000 +0300 +++ gawk-4.0.1/ChangeLog 2012-03-28 22:02:44.000000000 +0200 @@ -1,3 +1,417 @@ +2012-03-28 Arnold D. Robbins + + * 4.0.1: Release tar ball made. + +2012-03-28 Arnold D. Robbins + + * getopt.c: Add DJGPP to list of platforms where it's ok + to include . + * awkgram.y, builtin.c, ext.c, mbsupport.h, re.c: Update + copyright year. + +2012-03-21 Corinna Vinschen + + * getopt.c: Add Cygwin to list of platforms where it's ok + to include . + +2012-03-20 Arnold D. Robbins + + 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 + + * 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 + + * mbsupport.h (btowc): Change for non-DJGPP. + * re.c (dfaerror): Add call to exit for DJGPP. + +2012-03-14 Arnold D. Robbins + + * regex_internal.c (re_string_skip_chars): Fix calculation of + remain_len with m.b. chars. Thanks to Stanislav Brabec + . + +2012-02-28 Arnold D. Robbins + + * 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 + + * 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 + + 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 + + * dfa.c: Sync with GNU grep. + +2012-02-07 Arnold D. Robbins + + * 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 . + +2012-01-13 Arnold D. Robbins + + * 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 + + * dfa.c: Sync with GNU grep. + +2011-12-31 Arnold D. Robbins + + * awk.h [STREQ, STREQN]: Remove macros. + * awkgram.y, builtin.c, command.y, debug.c, eval.c, + io.c, msg.c: Change all uses to call strcmp, strncmp. + +2011-12-26 Arnold D. Robbins + + Finish Rational Range Interpretation (!) + + * dfa.c (match_mb_charset): Compare wide characters directly + instead of using wcscoll(). + * regexec.c (check_node_accept_byte): Ditto. + + Thanks to Paolo Bonzini for pointing these out. + +2011-12-06 John Haque + + * debug.c (source_find): Fix misplaced call to efree. + * profile.c (redir2str): Add a missing comma in the redirtab array. + * eval.c (r_interpret): Disallow call to exit if currule is undefined. + This avoids the possiblity of running END blocks more than once when + used in a user-defined sorted-in comparision function. + * array.c (sort_user_func): Adjust appropriately. + +2011-12-06 Arnold D. Robbins + + * awk.h, mbsupport.h: Changes for MBS support on DJGPP + and z/OS. + * io.c: Disable pty support on z/OS. + +2011-11-27 Arnold D. Robbins + + * dfa.c: Sync with GNU grep. + * dfa.h: Add _GL_ATTRIBUTE_PURE macro. Bleah. + +2011-11-14 John Haque + + * debug.c (set_breakpoint_at): Fix problem with setting + breakpoints in a switch statement. Thanks to Giorgio Palandri + for the bug report. + +2011-11-14 Arnold D. Robbins + + * mbsupport.h: Add check for HAVE_BTOWC, per Pat Rankin. + +2011-11-12 Eli Zaretskii + + * mbsupport.h: Additional glop for dfa.c in Windows environment. + +2011-11-01 Arnold D. Robbins + + * dfa.c: Move glop for ! MBS_SUPPORT to ... + * mbsupport.h: ... here. + * replace.c: Include missing_d/wcmisc.c if ! MBS_SUPPORT. + * regex_internal.h: Move include of mbsupport.h up and add + additional checks to avoid inclusion of wctype.h and wchar.h. + +2011-10-27 Arnold D. Robbins + + * builtin.c (do_strftime): Per Pat Rankin, instead of casting + fclock, use a long variable and check for negative or overflow. + +2011-10-25 Arnold D. Robbins + + * Makefile.am (dist-hook): Use `cd $(srcdir)/pc' so that + `make distcheck' works completely. + * builtin.c (do_strftime): Add cast to long int in check + for fclock < 0 for systems where time_t is unsigned (e.g., VMS). + +2011-10-25 Stefano Lattarini + + dist: generated file `version.c' is not removed by "make distclean" + + * Makefile.am (distcleancheck_listfiles): Define to ignore the + generated `version.c' file. + +2011-10-24 Arnold D. Robbins + + * dfa.c (wcscoll): Create for VMS. + * Makefile.am (dist-hook): Run sed scripts to make pc/config.h. + +2011-10-24 Eli Zaretskii + + * builtin.c [HAVE_POPEN_H]: Include "popen.h". + * README.git: Update for pc/ systems. + +2011-10-21 Arnold D. Robbins + + * Makefile.am (distcleancheck_listfiles): Added, per advice from + Stefano Lattarini . + * dfa.c: Additional faking of mbsupport for systems without it; + mainly VMS. + +2011-10-21 Stefano Lattarini + + * configure.ac (AM_C_PROTOTYPES): Remove call to this macro. + The comments in configure.ac said that the call to AM_C_PROTOTYPES + was needed for dfa.h, synced from GNU grep; but this statement is + not true anymore in grep since commit v2.5.4-24-g9b5e7d4 "replace + AC_CHECK_* with gnulib modules", dating back to 2009-11-26. Also, + the support for automatic de-ANSI-fication has been deprecated in + automake 1.11.2, and will be removed altogether in automake 1.12. + * vms/vms-conf.h (PROTOTYPES, __PROTOTYPES): Remove these #define, + they are not used anymore. + * pc/config.h (PROTOTYPES): Likewise. + +2011-10-18 Dave Pitts + + * dfa.c: Move some decls to the top of their functions for + C90 compilers. + +2011-10-18 Arnold D. Robbins + + * builtin.c (do_strftime): Add check for negative / overflowed + time_t value with fatal error. Thanks to Hermann Peifer + for the bug report. + * dfa.c (setbit_wc): Non-MBS version. Add a return false + since VMS compiler doesn't understand that abort doesn't return. + +2011-10-10 Arnold D. Robbins + + * builtin.c (do_sub): Init textlen to zero to avoid "may be + used unitialized" warning. Thanks to Corinna Vinschen for + pointing this out. + * eval.c (unwind_stack): Add parentheses around condition in while + to avoid overzealous warning from GCC. + +2011-09-30 Eli Zaretskii + + * io.c (remap_std_file): Fix non-portable code that caused + redirected "print" to fail if a previous read from standard input + returned EOF. Reported by David Millis . + (remap_std_file): Per Eli's suggestion, removed the leading close + of oldfd and will let dup2 do the close for us. + +2011-10-09 Arnold D. Robbins + + * dfa.c: Sync with GNU grep. + +2011-10-04 Arnold D. Robbins + + * awk.h, main.c (gawk_mb_cur_max): Make it a constant 1 when + MBS_SUPPORT isn't available to allow GCC dead code constant + expression computation and dead code elimination to help out. + +2011-10-02 Arnold D. Robbins + + * io.c (rsnullscan, get_a_record): Fix the cases where terminators + are incomplete when RS == "". Also fix the case where the new value + is shorter than the old one. Based on patch from Rogier + as submitted by Jeroen Schot + . + +2011-09-24 Arnold D. Robbins + + * eval.c, io.c, re.c: Fix some spelling errors. Thanks to + Jeroen Schot . + +2011-09-21 Arnold D. Robbins + + * dfa.c, mbsupport.h: Sync with GNU grep. Large amount of changes + that remove many ifdefs, moving many conditions for multibyte + support into regular C code and relying GCC's dead code optimization + to elimnate code that won't be needed. + * dfa.c: For gawk, add a number of additional defines so that things + will compile if MBS_SUPPORT is 0. + * array.c, awk.h, awkgram.y, builtin.c, eval.c, field.c, main.c, + node.c, re.c: Change `#ifdef MBS_SUPPORT' to `#if MBS_SUPPORT'. + * awk.h, regex_internal.h: Move NO_MBSUPPORT handling to ... + * mbsupport.h: ...here. + +2011-09-16 Arnold D. Robbins + + * dfa.c: Sync with GNU grep. + +2011-09-03 Arnold D. Robbins + + * dfa.c: Sync with GNU grep. + +2011-08-24 Arnold D. Robbins + + Fix pty co-process communication on Ubuntu GNU/Linux. + + * io.c: Add include of to get definition of TIOCSCTTY. + (two_way_open): Move call for this ioctl to after setsid() call. + +2011-08-23 Arnold D. Robbins + + * regex_internal.c (re_string_fetch_byte_case ): Remove + __attribute((pure)) since it causes failures with gcc -O2 + -fno-inline. Thanks to Neil Cahill + for reporting the bug. + +2011-08-10 John Haque + + BEGINFILE/ENDFILE related code redone. + + * awk.h (prev_frame_size, has_endfile, target_get_record, + target_newfile): New defines. + * awkgram.y (mk_program): Initialize has_endfile appropriately for + Op_get_record. + (parse_program): Initialize new jump targets for + Op_get_record and Op_newfile. + * eval.c (unwind_stack): Change argument to number of + items to be left in the stack. Adjust code. + (pop_fcall, pop_stack): New defines. + (setup_frame): Initialize prev_frame_size. + (exec_state, EXEC_STATE): New structure and typedef. + (exec_state_stack): New variable. + (push_exec_state, pop_exec_state): New functions to save and + later retrieve an execution state. + (r_interpret): Use the new functions and the defines in + cases Op_K_getline, Op_after_beginfile, Op_after_endfile, + Op_newfile and Op_K_exit. + * io.c (after_beginfile): When skipping a file using nextfile, + return zero in case there was an error opening the file. + (has_endfile): Nuke global variable. + (inrec): Add a second argument to pass errno to the calling + routine. + * debug.c (print_instruction): Update cases. + +2011-08-10 Arnold D. Robbins + + Fix (apparently long-standing) problem with FIELDWIDTHS. + Thanks to Johannes Meixner . + + * field.c (set_FIELDWIDTHS): Adjust calculations. + + Fix problem with FPAT, reported by "T. X. G." + + * awk.h (Regexp): Add new member 'non_empty'. + * field.c (fpat_parse_field): Save/restore local variable non_empty + from member in Regexp struct. + +2011-08-09 Arnold D. Robbins + + Fix pty issue reported by "T. X. G." + + * configure.ac: Check for setsid. + * awk.h: If not HAVE_SETSID define it as an empty macro. + * io.c (two_way_open): Call setsid if using pty's. + +2011-07-29 Eli Zaretskii + + * builtin.c (format_tree): Rename small -> small_flag, + big -> big_flag, bigbig -> bigbig_flag. Solves compilation errors + when building Gawk with libsigsegv on MS-Windows, see + https://lists.gnu.org/archive/html/bug-gawk/2011-07/msg00029.html. + +2011-07-28 Arnold D. Robbins + + * builtin.c (do_sub): Revert to gawk 3.1 behavior for backslash + handling. It was stupid to think I could break compatibility. + Thanks to John Ellson for raising + the issue. + +2011-07-26 John Haque + + * eval.c (r_interpret): In cases Op_var_assign and Op_field_assign, + include Op_K_getline_redir in the test for skipping the routine. + +2011-07-26 John Haque + + Fix handling of assign routines for 'getline var'. + Rework the previous fix for (g)sub. + + * awk.h: New define assign_ctxt for use in Op_var_assign + and Op_field_assign opcodes. Remove define AFTER_ASSIGN. + * awkgram.y (snode, mk_getline): Initialize assign_ctxt. + * builtin.c (do_sub): Adjust to take only the first two + arguments. + * eval.c (r_interpret): In cases Op_var_assign and Op_field_assign, + skip the routine as appropriate. Adjust case Op_sub_builtin. + * main.c (get_spec_varname): New function. + * debug.c (print_instruction): Use the new function to get + special variable name. + +2011-07-17 Arnold D. Robbins + + * main.c (varinit): Mark FPAT as NON_STANDARD. Thanks to + Wolfgang Seeberg for the report. + * Makefile.am (EXTRA_DIST): Add po/README, per advice from + Bruno Haible. + * dfa.c: Sync with GNU grep. + * xalloc.h (xzalloc): New function, from GNU grep, for dfa.c. + * README: Note that bug list is really a real mailing list. + +2011-07-16 Arnold D. Robbins + + * Makefile.am (AUTOMAKE_OPTIONS): Removed. + * configure.ac (AM_INIT_AUTOMAKE): Removed dist-bzip2 option, on + advice from Karl Berry. + +2011-07-15 John Haque + + * awk.h (Op_sub_builtin): New opcode. + (GSUB, GENSUB, AFTER_ASSIGN, LITERAL): New flags for + Op_sub_builtin. + * awkgram.y (struct tokentab): Change opcode to Op_sub_builtin + for sub, gsub and gensub. + (snode): Update processing of sub, gsub and gensub. + * builtin.c (do_sub, do_gsub, do_gensub): Nuke. + (sub_common): Renamed to do_sub. Relocate gensub argument + handling code from do_gensub to here; Simplify the code a + little bit. + * eval.c (r_interpret): Handle Op_sub_builtin. Avoid field + re-splitting or $0 rebuilding if (g)sub target string is + a field and no substitutions were done. + * pprint (profile.c): Add case for the new opcode. + * print_instruction (debug.c): Ditto. + +2011-07-15 Arnold D. Robbins + + * awk.h: Typo fix: "loner" --> longer. Thanks to Nelson Beebe. + * builtin.c (efwrite): Fix flushing test back to what it was + in 3.1.8. Thanks to Strefil for the problem + report. + * configure.ac: Bump version to 4.0.0a for stable branch. + 2011-06-24 Arnold D. Robbins * Makefile.am (EXTRA_DIST): Add ChangeLog.0. diff -urN gawk-4.0.0/FUTURES gawk-4.0.1/FUTURES --- gawk-4.0.0/FUTURES 2011-05-02 23:50:17.000000000 +0300 +++ gawk-4.0.1/FUTURES 2012-03-28 21:47:53.000000000 +0200 @@ -22,8 +22,13 @@ Merge xmlgawk XML extensions + Integrate MPFR to provide high precision arithmetic. + Continue code reviews / code cleanup + Consider making gawk output +nan for NaN values so that it + will accept its own output as input. + For 4.2 ======= Implement designed API for loadable modules diff -urN gawk-4.0.0/Makefile.am gawk-4.0.1/Makefile.am --- gawk-4.0.0/Makefile.am 2011-06-24 11:11:16.000000000 +0300 +++ gawk-4.0.1/Makefile.am 2012-03-28 21:47:53.000000000 +0200 @@ -23,9 +23,6 @@ ## process this file with automake to produce Makefile.in -# Make .bz2 files also. -AUTOMAKE_OPTIONS = dist-bzip2 - # This variable insures that aclocal runs # correctly after changing configure.ac ACLOCAL_AMFLAGS = -I m4 @@ -55,6 +52,7 @@ m4 \ missing \ missing_d \ + po/README \ pc \ posix \ regcomp.c \ @@ -65,6 +63,11 @@ vms \ ylwrap +# It's OK for the generated file `version.c' not to be removed by +# "make distclean". +distcleancheck_listfiles = \ + find . -type f -print | grep -v '^\./version\.c$$' + # The order to do things in. # Build explicitly in "." in order to build gawk first, so # that `make check' without a prior `make' works. @@ -162,8 +165,14 @@ check-local: gawk$(EXEEXT) pgawk$(EXEEXT) # A little extra clean up when making distributions. +# And additional set up for the pc directory. dist-hook: cd $(distdir)/extension ; rm -f *.o *.so + cd $(srcdir)/pc ; \ + sed -n -f configpk.sed < ../configure.ac > tmp.sed ; \ + sed -f config.sed < ../configh.in > config.tmp ; \ + sed -f tmp.sed < config.tmp > config.h ; \ + $(RM) tmp.sed config.tmp # Special rules for individual files # Use of awk instead of $(AWK) is deliberate, in case gawk doesn't build diff -urN gawk-4.0.0/Makefile.in gawk-4.0.1/Makefile.in --- gawk-4.0.0/Makefile.in 2011-06-24 11:16:13.000000000 +0300 +++ gawk-4.0.1/Makefile.in 2012-03-28 22:03:23.000000000 +0200 @@ -170,10 +170,9 @@ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" -DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 $(distdir).tar.xz +DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.xz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print -distcleancheck_listfiles = find . -type f -print # Directory for gawk's data files. Automake supplies datadir. pkgdatadir = $(datadir)/awk @@ -240,7 +239,6 @@ SHELL = @SHELL@ SOCKET_LIBS = @SOCKET_LIBS@ STRIP = @STRIP@ -U = @U@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ @@ -299,9 +297,6 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -# Make .bz2 files also. -AUTOMAKE_OPTIONS = dist-bzip2 - # This variable insures that aclocal runs # correctly after changing configure.ac ACLOCAL_AMFLAGS = -I m4 @@ -331,6 +326,7 @@ m4 \ missing \ missing_d \ + po/README \ pc \ posix \ regcomp.c \ @@ -342,6 +338,12 @@ ylwrap +# It's OK for the generated file `version.c' not to be removed by +# "make distclean". +distcleancheck_listfiles = \ + find . -type f -print | grep -v '^\./version\.c$$' + + # The order to do things in. # Build explicitly in "." in order to build gawk first, so # that `make check' without a prior `make' works. @@ -765,6 +767,7 @@ dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) + dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) @@ -791,7 +794,6 @@ dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz $(am__remove_distdir) @@ -1030,8 +1032,14 @@ check-local: gawk$(EXEEXT) pgawk$(EXEEXT) # A little extra clean up when making distributions. +# And additional set up for the pc directory. dist-hook: cd $(distdir)/extension ; rm -f *.o *.so + cd $(srcdir)/pc ; \ + sed -n -f configpk.sed < ../configure.ac > tmp.sed ; \ + sed -f config.sed < ../configh.in > config.tmp ; \ + sed -f tmp.sed < config.tmp > config.h ; \ + $(RM) tmp.sed config.tmp # Special rules for individual files # Use of awk instead of $(AWK) is deliberate, in case gawk doesn't build diff -urN gawk-4.0.0/NEWS gawk-4.0.1/NEWS --- gawk-4.0.0/NEWS 2011-06-20 20:25:12.000000000 +0300 +++ gawk-4.0.1/NEWS 2012-03-28 21:47:53.000000000 +0200 @@ -1,9 +1,23 @@ - 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 notice and this notice are preserved. +Changes from 4.0.0 to 4.0.1 +--------------------------- + +1. The default handling of backslash in sub() and gsub() has been reverted to + the behavior of 3.1. It was silly to think I could break compatibility that + way, even for standards compliance. + +2. Completed the implementation of Rational Range Interpretation. + +3. Failure to get the group set is no longer a fatal error. + +4. Lots of minor bugs fixed and portability clean-ups along the way. See + the ChangeLog for details. + Changes from 3.1.8 to 4.0.0 --------------------------- diff -urN gawk-4.0.0/README gawk-4.0.1/README --- gawk-4.0.0/README 2011-06-23 17:03:02.000000000 +0300 +++ gawk-4.0.1/README 2012-03-28 21:47:53.000000000 +0200 @@ -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. @@ -65,9 +65,9 @@ is about the worst place to post a gawk bug report. Please, use the mechanisms outlined in the manual. -Email should be sent to bug-gawk@gnu.org. This address sends mail to -Arnold Robbins and the general GNU utilities bug list. The advantage -to using this address is that bug reports are archived at GNU Central. +Email should be sent to bug-gawk@gnu.org. This is now a separate mailing +list at GNU Central. The advantage to using this address is that bug +reports are archived at GNU Central. Arnold Robbins @@ -87,7 +87,7 @@ VMS: Pat Rankin - rankin@pactechdata.com + r.pat.rankin@gmail.com z/OS (OS/390): Dave Pitts diff -urN gawk-4.0.0/README_d/ChangeLog gawk-4.0.1/README_d/ChangeLog --- gawk-4.0.0/README_d/ChangeLog 2011-06-23 09:44:35.000000000 +0300 +++ gawk-4.0.1/README_d/ChangeLog 2012-03-28 22:02:12.000000000 +0200 @@ -1,3 +1,15 @@ +2012-03-28 Arnold D. Robbins + + * 4.0.1: Release tar ball made. + +2011-07-29 Arnold D. Robbins + + * README.pc: Add download location info for DJGPP version. + +2011-07-15 Arnold D. Robbins + + * README.solaris: Info added on using the Solaris C compiler. + 2011-06-23 Arnold D. Robbins * ChangeLog.0: Rotated ChangeLog into this file. diff -urN gawk-4.0.0/README_d/README.bootstrap gawk-4.0.1/README_d/README.bootstrap --- gawk-4.0.0/README_d/README.bootstrap 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/README_d/README.bootstrap 2011-12-08 21:12:16.000000000 +0200 @@ -0,0 +1,32 @@ +Tue Dec 6 21:33:19 IST 2011 +============================ + +As documented in the mail below, if you are using a system without any +version of awk installed, you will have bootstrapping problems (i.e., running +configure). The solution is to install mawk or Brian Kernighan's awk +first. + +Arnold Robbins +------------------------------------ +From: Simon Josefsson +To: bug-gawk@gnu.org +Date: Sat, 19 Nov 2011 15:24:22 +0100 +Message-ID: <87r514faw9.fsf@latte.josefsson.org> +Subject: [bug-gawk] building gawk requires an awk? + +Hello, + +I was not able to build gawk 4.0.0 on a GNU/Hurd machine that didn't +have any awk, the ./configure script failed at the end: + +config.status: creating Makefile +./config.status: line 1169: awk: command not found +config.status: error: could not create Makefile + +Is this a known bootstrapping issue? Same happened for 3.1.8. I looked +in README but didn't find anything obvious. + +Btw, building 'mawk' first and then gawk 4.0.0 works. Running self +checks didn't work because there is no 'cmp' on the system either... + +/Simon diff -urN gawk-4.0.0/README_d/README.pc gawk-4.0.1/README_d/README.pc --- gawk-4.0.0/README_d/README.pc 2010-12-18 20:31:40.000000000 +0200 +++ gawk-4.0.1/README_d/README.pc 2011-11-01 22:09:44.000000000 +0200 @@ -92,3 +92,30 @@ andreas.buening@nexgo.de (OS/2 version) Support for Windows32 started in gawk-3.0.3. + +---- +From: Eric Pement +Newsgroups: comp.lang.awk +Subject: djgpp Gawk ver. 4.0 available +Date: Tue, 26 Jul 2011 06:42:00 -0700 (PDT) +MS Windows users: + +The DJGPP compilation of GNU awk v4.0.0 is now available here: + + ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/gwk400b.zip + +For those who don't know the difference between the DGJPP compile and +other versions compiled for Windows, the most noticeable to me is that +it supports Unix-style use of 'single' and "double" quoting. Example: + + [c:\tmp]> :: normal Windows awk requires complex quoting + [c:\tmp]> gawk "BEGIN{ print \"hello, world\" }" + hello, world + [c:\tmp]> :: DJGPP compile of awk permits Unix quoting in CMD + [c:\tmp]> djgawk 'BEGIN{ print "hello, world" }' + hello, world + +Syntactic sugar? Sure. But it makes life easier in a Windows +environment, and without installing Cygwin ... + +Eric P. diff -urN gawk-4.0.0/README_d/README.solaris gawk-4.0.1/README_d/README.solaris --- gawk-4.0.0/README_d/README.solaris 2010-11-17 08:45:00.000000000 +0200 +++ gawk-4.0.1/README_d/README.solaris 2011-11-01 22:09:44.000000000 +0200 @@ -1,3 +1,16 @@ +Fri Jul 15 14:24:00 IDT 2011 +============================ +It looks like you need to use + + -Xc -D_XPG4_2 + +on Solaris 10 with the Sun C compiler when compiling gawk in order for +libsigsegv to be found correctly, and + + -Xc -D_XPG4_2 -Duint64_t=upad64_t + +on Solaris 9. + Tue Apr 20 11:33:20 IDT 2010 ============================ The lc_num1 test fails on Solaris 10 systems. This is a bug with Solaris, diff -urN gawk-4.0.0/aclocal.m4 gawk-4.0.1/aclocal.m4 --- gawk-4.0.0/aclocal.m4 2011-06-23 09:39:34.000000000 +0300 +++ gawk-4.0.1/aclocal.m4 2012-03-28 22:03:22.000000000 +0200 @@ -741,32 +741,6 @@ AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2005, 2006 -# 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 - -AC_DEFUN([AM_C_PROTOTYPES], -[AC_REQUIRE([AC_C_PROTOTYPES]) -if test "$ac_cv_prog_cc_stdc" != no; then - U= ANSI2KNR= -else - U=_ ANSI2KNR=./ansi2knr -fi -# Ensure some checks needed by ansi2knr itself. -AC_REQUIRE([AC_HEADER_STDC]) -AC_CHECK_HEADERS([string.h]) -AC_SUBST([U])dnl -AC_SUBST([ANSI2KNR])dnl -_AM_SUBST_NOTMAKE([ANSI2KNR])dnl -]) - -AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES]) - # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 diff -urN gawk-4.0.0/array.c gawk-4.0.1/array.c --- gawk-4.0.0/array.c 2011-06-05 22:10:59.000000000 +0300 +++ gawk-4.0.1/array.c 2012-03-28 21:47:53.000000000 +0200 @@ -1266,7 +1266,7 @@ const unsigned char *cp1 = (const unsigned char *) s1; const unsigned char *cp2 = (const unsigned char *) s2; -#ifdef MBS_SUPPORT +#if MBS_SUPPORT if (gawk_mb_cur_max > 1) { ret = strncasecmpmbs((const unsigned char *) cp1, (const unsigned char *) cp2, lmin); @@ -1509,7 +1509,6 @@ NODE *idx1, *idx2, *val1, *val2; AWKNUM ret; INSTRUCTION *code; - extern int exiting; t1 = *((const NODE *const *) p1); t2 = *((const NODE *const *) p2); @@ -1534,9 +1533,6 @@ /* execute the comparison function */ (void) interpret(code); - if (exiting) /* do not assume anything about the user-defined function! */ - gawk_exit(exit_val); - /* return value of the comparison function */ POP_NUMBER(ret); @@ -1672,9 +1668,9 @@ (code + 1)->expr_count = 4; /* function takes 4 arguments */ code->nexti = bcalloc(Op_stop, 1, 0); - /* make non-local jumps `next' and `nextfile' fatal in + /* make non-redirected getline, exit, `next' and `nextfile' fatal in * callback function by setting currule in interpret() - * to undefined (0). `exit' is handled in sort_user_func. + * to undefined (0). */ (code + 1)->inrule = currule; /* save current rule */ diff -urN gawk-4.0.0/awk.h gawk-4.0.1/awk.h --- gawk-4.0.0/awk.h 2011-05-09 15:07:24.000000000 +0300 +++ gawk-4.0.1/awk.h 2012-03-28 21:47:53.000000000 +0200 @@ -67,7 +67,7 @@ #if defined(HAVE_STDARG_H) #include #else -#error "gawk no loner supports . Please update your compiler and runtime" +#error "gawk no longer supports . Please update your compiler and runtime" #endif #include #include @@ -76,11 +76,13 @@ extern int errno; #endif -#ifndef NO_MBSUPPORT +#ifdef STDC_HEADERS +#include +#endif /* not STDC_HEADERS */ + #include "mbsupport.h" /* defines MBS_SUPPORT */ -#endif -#if defined(MBS_SUPPORT) +#if MBS_SUPPORT /* We can handle multibyte strings. */ #include #include @@ -133,10 +135,6 @@ #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) #endif -#ifdef STDC_HEADERS -#include -#endif /* not STDC_HEADERS */ - #include "protos.h" #ifdef HAVE_STRING_H @@ -171,6 +169,10 @@ #define setlocale(locale, val) /* nothing */ #endif /* HAVE_SETLOCALE */ +#ifndef HAVE_SETSID +#define setsid() /* nothing */ +#endif /* HAVE_SETSID */ + #if HAVE_MEMCPY_ULONG extern char *memcpy_ulong(char *dest, const char *src, unsigned long l); #define memcpy memcpy_ulong @@ -201,6 +203,7 @@ struct dfa *dfareg; short dfa; short has_anchor; /* speed up of avoid_dfa kludge, temporary */ + short non_empty; /* for use in fpat_parse_field */ } Regexp; #define RESTART(rp,s) (rp)->regs.start[0] #define REEND(rp,s) (rp)->regs.end[0] @@ -300,6 +303,7 @@ struct { union { struct exp_node *lptr; + struct exp_instruction *li; long ll; } l; union { @@ -307,7 +311,7 @@ Regexp *preg; struct exp_node **av; void (*uptr)(void); - struct exp_instruction *iptr; + struct exp_instruction *ri; } r; union { struct exp_node *extra; @@ -330,7 +334,7 @@ size_t slen; long sref; int idx; -#ifdef MBS_SUPPORT +#if MBS_SUPPORT wchar_t *wsp; size_t wslen; #endif @@ -387,7 +391,7 @@ #define param vname #define parmlist sub.nodep.x.param_list -#define code_ptr sub.nodep.r.iptr +#define code_ptr sub.nodep.r.ri #define re_reg sub.nodep.r.preg #define re_flags sub.nodep.reflags @@ -408,12 +412,13 @@ /* Node_frame: */ #define stack sub.nodep.r.av #define func_node sub.nodep.x.extra -#define reti sub.nodep.reflags +#define prev_frame_size sub.nodep.reflags +#define reti sub.nodep.l.li /* Node_var: */ #define var_value lnode #define var_update sub.nodep.r.uptr -#define var_assign sub.nodep.x.aptr +#define var_assign sub.nodep.x.aptr /* Node_var_array: */ #define var_array sub.nodep.r.av @@ -521,6 +526,7 @@ Op_K_nextfile, Op_builtin, + Op_sub_builtin, /* sub, gsub and gensub */ Op_in_array, /* boolean test of membership in array */ /* function call instruction */ @@ -626,16 +632,32 @@ #define target_jmp d.di #define target_break x.xi +/* Op_sub_builtin */ +#define sub_flags d.dl +#define GSUB 0x01 /* builtin is gsub */ +#define GENSUB 0x02 /* builtin is gensub */ +#define LITERAL 0x04 /* target is a literal string */ + + /* Op_K_exit */ #define target_end d.di #define target_atexit x.xi -/* Op_newfile, Op_K_getline */ +/* Op_newfile, Op_K_getline, Op_nextfile */ #define target_endfile x.xi +/* Op_newfile */ +#define target_get_record x.xi + +/* Op_get_record, Op_K_nextfile */ +#define target_newfile d.di + /* Op_K_getline */ #define target_beginfile d.di +/* Op_get_record */ +#define has_endfile x.xl + /* Op_token */ #define lextok d.name @@ -675,7 +697,7 @@ #define func_body x.xn /* Op_func_call */ -#define inrule d.dl +#define inrule d.dl /* Op_subscript */ #define sub_count d.dl @@ -706,6 +728,9 @@ /* Op_field_assign */ #define field_assign x.aptr +/* Op_field_assign, Op_var_assign */ +#define assign_ctxt d.dl + /* Op_concat */ #define concat_flag d.dl #define CSUBSEP 1 @@ -907,10 +932,10 @@ extern int do_lint; extern int do_lint_old; #endif -#ifdef MBS_SUPPORT +#if MBS_SUPPORT extern int gawk_mb_cur_max; #else -extern const int gawk_mb_cur_max; +#define gawk_mb_cur_max (1) #endif #if defined (HAVE_GETGROUPS) && defined(NGROUPS_MAX) && NGROUPS_MAX > 0 @@ -1085,13 +1110,8 @@ #endif /* __GNUC__ */ #endif /* GAWKDEBUG */ -#define STREQ(a,b) (*(a) == *(b) && strcmp((a), (b)) == 0) -#define STREQN(a,b,n) ((n) && *(a)== *(b) && \ - strncmp((a), (b), (size_t) (n)) == 0) - #define fatal set_loc(__FILE__, __LINE__), r_fatal - extern jmp_buf fatal_tag; extern int fatal_tag_valid; @@ -1181,9 +1201,7 @@ extern NODE *do_rand(int nargs); extern NODE *do_srand(int nargs); extern NODE *do_match(int nargs); -extern NODE *do_gsub(int nargs); -extern NODE *do_sub(int nargs); -extern NODE *do_gensub(int nargs); +extern NODE *do_sub(int nargs, unsigned int flags); extern NODE *format_tree(const char *, size_t, NODE **, long); extern NODE *do_lshift(int nargs); extern NODE *do_rshift(int nargs); @@ -1196,7 +1214,7 @@ extern NODE *do_dcgettext(int nargs); extern NODE *do_dcngettext(int nargs); extern NODE *do_bindtextdomain(int nargs); -#ifdef MBS_SUPPORT +#if MBS_SUPPORT extern int strncasecmpmbs(const unsigned char *, const unsigned char *, size_t); #endif @@ -1293,7 +1311,7 @@ extern NODE *do_getline_redir(int intovar, int redirtype); extern NODE *do_getline(int intovar, IOBUF *iop); extern struct redirect *getredirect(const char *str, int len); -extern int inrec(IOBUF *iop); +extern int inrec(IOBUF *iop, int *errcode); extern int nextfile(IOBUF **curfile, int skipping); /* main.c */ extern int arg_assign(char *arg, int initing); @@ -1334,7 +1352,7 @@ extern NODE *more_nodes(void); extern void unref(NODE *tmp); extern int parse_escape(const char **string_ptr); -#ifdef MBS_SUPPORT +#if MBS_SUPPORT extern NODE *str2wstr(NODE *n, size_t **ptr); extern NODE *wstr2str(NODE *n); #define force_wstring(n) str2wstr(n, NULL) diff -urN gawk-4.0.0/awkgram.y gawk-4.0.1/awkgram.y --- gawk-4.0.0/awkgram.y 2011-05-31 23:02:29.000000000 +0300 +++ gawk-4.0.1/awkgram.y 2012-03-28 21:52:40.000000000 +0200 @@ -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. @@ -750,7 +750,6 @@ /* add update_FOO instruction if necessary */ if ($4->array_var->type == Node_var && $4->array_var->var_update) { (void) list_append(ip, instruction(Op_var_update)); - ip->lasti->memory = $4->array_var; ip->lasti->update_var = $4->array_var->var_update; } (void) list_append(ip, $4); @@ -758,7 +757,6 @@ /* add set_FOO instruction if necessary */ if ($4->array_var->type == Node_var && $4->array_var->var_assign) { (void) list_append(ip, instruction(Op_var_assign)); - ip->lasti->memory = $4->array_var; ip->lasti->assign_var = $4->array_var->var_assign; } @@ -842,7 +840,7 @@ error_ln($1->source_line, _("`nextfile' used in %s action"), ruletab[rule]); - $1->target_jmp = ip_newfile; + $1->target_newfile = ip_newfile; $1->target_endfile = ip_endfile; $$ = list_create($1); } @@ -1726,7 +1724,6 @@ && ip->memory->var_update ) { $$ = list_prepend($1, instruction(Op_var_update)); - $$->nexti->memory = ip->memory; $$->nexti->update_var = ip->memory->var_update; } else $$ = $1; @@ -1795,6 +1792,7 @@ # define RESX 0x0800 /* Bell Labs Research extension */ # define BREAK 0x1000 /* break allowed inside */ # define CONTINUE 0x2000 /* continue allowed inside */ + NODE *(*ptr)(int); /* function that implements this keyword */ }; @@ -1852,9 +1850,9 @@ {"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_builtin, LEX_BUILTIN, GAWKX|A(3)|A(4), do_gensub}, +{"gensub", Op_sub_builtin, LEX_BUILTIN, GAWKX|A(3)|A(4), 0}, {"getline", Op_K_getline_redir, LEX_GETLINE, NOT_OLD, 0}, -{"gsub", Op_builtin, LEX_BUILTIN, NOT_OLD|A(2)|A(3), do_gsub}, +{"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}, @@ -1885,7 +1883,7 @@ #endif {"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_builtin, LEX_BUILTIN, NOT_OLD|A(2)|A(3), do_sub}, +{"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}, @@ -1896,7 +1894,7 @@ {"xor", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_xor}, }; -#ifdef MBS_SUPPORT +#if MBS_SUPPORT /* Variable containing the current shift state. */ static mbstate_t cur_mbstate; /* Ring buffer containing current characters. */ @@ -2133,8 +2131,7 @@ if (endfile_block == NULL) endfile_block = list_create(ip_endfile); else { - extern int has_endfile; /* kludge for use in inrec (io.c) */ - has_endfile = TRUE; + ip_rec->has_endfile = TRUE; (void) list_prepend(endfile_block, ip_endfile); } @@ -2226,10 +2223,12 @@ else { ip_endfile = instruction(Op_no_op); ip_beginfile = instruction(Op_no_op); - ip_newfile = instruction(Op_newfile); /* target for `nextfile' */ + ip_rec = instruction(Op_get_record); /* target for `next', also ip_newfile */ + ip_newfile = bcalloc(Op_newfile, 2, 0); /* target for `nextfile' */ ip_newfile->target_jmp = ip_end; ip_newfile->target_endfile = ip_endfile; - ip_rec = instruction(Op_get_record); /* target for `next' */ + (ip_newfile + 1)->target_get_record = ip_rec; + ip_rec->target_newfile = ip_newfile; ip_atexit = instruction(Op_atexit); /* target for `exit' in END block */ } @@ -2654,7 +2653,7 @@ /* nextc --- get the next input character */ -#ifdef MBS_SUPPORT +#if MBS_SUPPORT static int nextc(void) @@ -2742,7 +2741,7 @@ static inline void pushback(void) { -#ifdef MBS_SUPPORT +#if MBS_SUPPORT if (gawk_mb_cur_max > 1) cur_ring_idx = (cur_ring_idx == 0)? RING_BUFFER_SIZE - 1 : cur_ring_idx - 1; @@ -2781,6 +2780,32 @@ } } +/* 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 @@ -2798,15 +2823,7 @@ #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) { @@ -2935,7 +2952,7 @@ thisline = NULL; tok = tokstart; -#ifdef MBS_SUPPORT +#if MBS_SUPPORT if (gawk_mb_cur_max == 1 || nextc_is_1stbyte) #endif switch (c) { @@ -3596,8 +3613,6 @@ assert(nexp > 0); } - r->builtin = tokentab[idx].ptr; - /* check against how many args. are allowed for this builtin */ args_allowed = tokentab[idx].flags & ARGS; if (args_allowed && (args_allowed & A(nexp)) == 0) { @@ -3606,7 +3621,85 @@ return NULL; } + /* special processing for sub, gsub and gensub */ + + if (tokentab[idx].value == Op_sub_builtin) { + const char *operator = tokentab[idx].operator; + + r->sub_flags = 0; + + arg = subn->nexti; /* first arg list */ + (void) mk_rexp(arg); + + if (strcmp(operator, "gensub") != 0) { + /* sub and gsub */ + + if (strcmp(operator, "gsub") == 0) + r->sub_flags |= GSUB; + + arg = arg->lasti->nexti; /* 2nd arg list */ + if (nexp == 2) { + INSTRUCTION *expr; + + expr = list_create(instruction(Op_push_i)); + expr->nexti->memory = mk_number((AWKNUM) 0.0, (PERM|NUMCUR|NUMBER)); + (void) mk_expression_list(subn, + list_append(expr, instruction(Op_field_spec))); + } + + arg = arg->lasti->nexti; /* third arg list */ + ip = arg->lasti; + if (ip->opcode == Op_push_i) { + if (do_lint) + lintwarn(_("%s: string literal as last arg of substitute has no effect"), + operator); + r->sub_flags |= LITERAL; + } else { + if (make_assignable(ip) == NULL) + yyerror(_("%s third parameter is not a changeable object"), + operator); + else + ip->do_reference = TRUE; + } + + r->expr_count = count_expressions(&subn, FALSE); + ip = subn->lasti; + + (void) list_append(subn, r); + + /* add after_assign code */ + if (ip->opcode == Op_push_lhs && ip->memory->type == Node_var && ip->memory->var_assign) { + (void) list_append(subn, instruction(Op_var_assign)); + subn->lasti->assign_ctxt = Op_sub_builtin; + subn->lasti->assign_var = ip->memory->var_assign; + } else if (ip->opcode == Op_field_spec_lhs) { + (void) list_append(subn, instruction(Op_field_assign)); + subn->lasti->assign_ctxt = Op_sub_builtin; + subn->lasti->field_assign = (Func_ptr) 0; + ip->target_assign = subn->lasti; + } + return subn; + + } else { + /* gensub */ + + r->sub_flags |= GENSUB; + if (nexp == 3) { + ip = instruction(Op_push_i); + ip->memory = mk_number((AWKNUM) 0.0, (PERM|NUMCUR|NUMBER)); + (void) mk_expression_list(subn, + list_append(list_create(ip), instruction(Op_field_spec))); + } + + r->expr_count = count_expressions(&subn, FALSE); + return list_append(subn, r); + } + } + + r->builtin = tokentab[idx].ptr; + /* special case processing for a few builtins */ + if (r->builtin == do_length) { if (nexp == 0) { /* no args. Use $0 */ @@ -3648,71 +3741,6 @@ if (/*ip == arg->nexti && */ ip->opcode == Op_push) ip->opcode = Op_push_array; } - } else if (r->builtin == do_sub || r->builtin == do_gsub) { - int literal = FALSE; - - arg = subn->nexti; /* first arg list */ - (void) mk_rexp(arg); - - arg = arg->lasti->nexti; /* 2nd arg list */ - if (nexp == 2) { - INSTRUCTION *expr; - expr = list_create(instruction(Op_push_i)); - expr->nexti->memory = mk_number((AWKNUM) 0.0, (PERM|NUMCUR|NUMBER)); - (void) mk_expression_list(subn, - list_append(expr, instruction(Op_field_spec))); - } - - arg = arg->lasti->nexti; /* third arg list */ - ip = arg->lasti; - if (ip->opcode == Op_push_i) { - if (do_lint) - lintwarn(_("%s: string literal as last arg of substitute has no effect"), - (r->builtin == do_sub) ? "sub" : "gsub"); - literal = TRUE; - } else { - if (make_assignable(ip) == NULL) - yyerror(_("%s third parameter is not a changeable object"), - (r->builtin == do_sub) ? "sub" : "gsub"); - else - ip->do_reference = TRUE; - } - - /* kludge: This is one of the few cases - * when we need to know the type of item on stack. - * In case of string literal as the last argument, - * pass 4 as # of args (See sub_common code in builtin.c). - * Other cases like length(array or scalar) seem - * to work out ok. - */ - - r->expr_count = count_expressions(&subn, FALSE) + !!literal; - ip = subn->lasti; - - (void) list_append(subn, r); - - /* add after_assign bytecode(s) */ - if (ip->opcode == Op_push_lhs && ip->memory->type == Node_var && ip->memory->var_assign) { - (void) list_append(subn, instruction(Op_var_assign)); - subn->lasti->memory = ip->memory; - subn->lasti->assign_var = ip->memory->var_assign; - } else if (ip->opcode == Op_field_spec_lhs) { - (void) list_append(subn, instruction(Op_field_assign)); - subn->lasti->field_assign = (Func_ptr) 0; - ip->target_assign = subn->lasti; - } - return subn; - } else if (r->builtin == do_gensub) { - if (nexp == 3) { - arg = subn->nexti->lasti->nexti->lasti->nexti; /* 3rd arg list */ - ip = instruction(Op_push_i); - ip->memory = mk_number((AWKNUM) 0.0, (PERM|NUMCUR|NUMBER)); - (void) mk_expression_list(subn, - list_append(list_create(ip), - instruction(Op_field_spec))); - } - arg = subn->nexti; /* first arg list */ - (void) mk_rexp(arg); } else if (r->builtin == do_split) { arg = subn->nexti->lasti->nexti; /* 2nd arg list */ ip = arg->lasti; @@ -3975,7 +4003,7 @@ len = strlen(name); for (bucket = variables[hash(name, len, (unsigned long) HASHSIZE, NULL)]; bucket != NULL; bucket = bucket->hnext) - if (bucket->hlength == len && STREQN(bucket->hname, name, len)) + if (bucket->hlength == len && strncmp(bucket->hname, name, len) == 0) return bucket->hvalue; return NULL; } @@ -4261,7 +4289,7 @@ len = strlen(name); save = &(variables[hash(name, len, (unsigned long) HASHSIZE, NULL)]); for (bucket = *save; bucket != NULL; bucket = bucket->hnext) { - if (len == bucket->hlength && STREQN(bucket->hname, name, len)) { + if (len == bucket->hlength && strncmp(bucket->hname, name, len) == 0) { var_count--; *save = bucket->hnext; return bucket; @@ -4533,7 +4561,7 @@ r = mk_symbol(type, (NODE *) NULL); return install_symbol(name, r); } - if (STREQ(name, dv->name)) { + if (strcmp(name, dv->name) == 0) { r = (*dv->load_func)(); break; } @@ -5113,7 +5141,6 @@ * for a special variable. */ (void) list_append(ip, instruction(Op_var_assign)); - ip->lasti->memory = tp->memory; ip->lasti->assign_var = tp->memory->var_assign; } else if (tp->opcode == Op_field_spec_lhs) { (void) list_append(ip, instruction(Op_field_assign)); @@ -5310,10 +5337,11 @@ && tp->memory->var_assign ) { asgn = instruction(Op_var_assign); - asgn->memory = tp->memory; + asgn->assign_ctxt = op->opcode; asgn->assign_var = tp->memory->var_assign; } else if (tp->opcode == Op_field_spec_lhs) { asgn = instruction(Op_field_assign); + asgn->assign_ctxt = op->opcode; asgn->field_assign = (Func_ptr) 0; /* determined at run time */ tp->target_assign = asgn; } diff -urN gawk-4.0.0/awklib/ChangeLog gawk-4.0.1/awklib/ChangeLog --- gawk-4.0.0/awklib/ChangeLog 2011-06-24 11:13:29.000000000 +0300 +++ gawk-4.0.1/awklib/ChangeLog 2012-03-28 22:01:53.000000000 +0200 @@ -1,3 +1,7 @@ +2012-03-28 Arnold D. Robbins + + * 4.0.1: Release tar ball made. + 2011-06-24 Arnold D. Robbins * Makefile.am (EXTRA_DIST): Add ChangeLog.0. diff -urN gawk-4.0.0/awklib/Makefile.in gawk-4.0.1/awklib/Makefile.in --- gawk-4.0.0/awklib/Makefile.in 2011-06-24 11:16:14.000000000 +0300 +++ gawk-4.0.1/awklib/Makefile.in 2012-03-28 22:03:22.000000000 +0200 @@ -186,7 +186,6 @@ SHELL = @SHELL@ SOCKET_LIBS = @SOCKET_LIBS@ STRIP = @STRIP@ -U = @U@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ diff -urN gawk-4.0.0/awklib/eg/lib/quicksort.awk gawk-4.0.1/awklib/eg/lib/quicksort.awk --- gawk-4.0.0/awklib/eg/lib/quicksort.awk 2011-06-13 22:29:10.000000000 +0300 +++ gawk-4.0.1/awklib/eg/lib/quicksort.awk 2012-03-28 22:03:37.000000000 +0200 @@ -7,7 +7,6 @@ # or almost any algorithms or computer science text # # Adapted from K&R-II, page 110 -end ignore function quicksort(data, left, right, less_than, i, last) { diff -urN gawk-4.0.0/builtin.c gawk-4.0.1/builtin.c --- gawk-4.0.0/builtin.c 2011-04-29 11:50:40.000000000 +0300 +++ gawk-4.0.1/builtin.c 2012-03-28 21:54:55.000000000 +0200 @@ -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. @@ -32,6 +32,10 @@ #include "random.h" #include "floatmagic.h" +#if defined(HAVE_POPEN_H) +#include "popen.h" +#endif + #ifndef CHAR_BIT # define CHAR_BIT 8 #endif @@ -72,7 +76,6 @@ extern int output_is_tty; extern FILE *output_fp; -static NODE *sub_common(int nargs, long how_many, int backdigs); #define POP_TWO_SCALARS(s1, s2) \ s2 = POP_SCALAR(); \ @@ -105,7 +108,7 @@ if (fwrite(ptr, size, count, fp) != count) goto wrerror; if (flush - && (output_is_tty + && ((fp == stdout && output_is_tty) || (rp != NULL && (rp->flag & RED_NOBUF)))) { fflush(fp); if (ferror(fp)) @@ -151,9 +154,9 @@ stdfile(const char *name, size_t len) { if (len == 11) { - if (STREQN(name, "/dev/stderr", 11)) + if (strncmp(name, "/dev/stderr", 11) == 0) return stderr; - else if (STREQN(name, "/dev/stdout", 11)) + else if (strncmp(name, "/dev/stdout", 11) == 0) return stdout; } @@ -215,7 +218,7 @@ return make_number((AWKNUM) status); } -#ifdef MBS_SUPPORT +#if MBS_SUPPORT /* strncasecmpmbs --- like strncasecmp (multibyte string version) */ int @@ -313,7 +316,7 @@ const char *p1, *p2; size_t l1, l2; long ret; -#ifdef MBS_SUPPORT +#if MBS_SUPPORT int do_single_byte = FALSE; mbstate_t mbs1, mbs2; @@ -349,7 +352,7 @@ goto out; } -#ifdef MBS_SUPPORT +#if MBS_SUPPORT if (gawk_mb_cur_max > 1) { s1 = force_wstring(s1); s2 = force_wstring(s2); @@ -367,7 +370,7 @@ while (l1 > 0) { if (l2 > l1) break; -#ifdef MBS_SUPPORT +#if MBS_SUPPORT if (! do_single_byte && gawk_mb_cur_max > 1) { const wchar_t *pos; @@ -390,7 +393,7 @@ } l1--; p1++; -#ifdef MBS_SUPPORT +#if MBS_SUPPORT } #endif } @@ -403,7 +406,7 @@ ret = 1 + s1->stlen - l1; break; } -#ifdef MBS_SUPPORT +#if MBS_SUPPORT if (! do_single_byte && gawk_mb_cur_max > 1) { const wchar_t *pos; @@ -501,7 +504,7 @@ lintwarn(_("length: received non-string argument")); (void) force_string(tmp); -#ifdef MBS_SUPPORT +#if MBS_SUPPORT if (gawk_mb_cur_max > 1) { tmp = force_wstring(tmp); len = tmp->wstlen; @@ -606,11 +609,11 @@ NODE *arg; long fw, prec, argnum; int used_dollar; - int lj, alt, big, bigbig, small, have_prec, need_format; + int lj, alt, big_flag, bigbig_flag, small_flag, have_prec, need_format; 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 @@ -721,12 +724,13 @@ cur = &fw; fw = 0; prec = 0; + base = 0; argnum = 0; have_prec = FALSE; signchar = FALSE; zero_flag = FALSE; quote_flag = FALSE; - lj = alt = big = bigbig = small = FALSE; + lj = alt = big_flag = bigbig_flag = small_flag = FALSE; fill = sp; cp = cend; chbuf = lchbuf; @@ -908,7 +912,7 @@ goto retry; #endif case 'l': - if (big) + if (big_flag) break; else { static short warned = FALSE; @@ -922,10 +926,10 @@ goto out; } } - big = TRUE; + big_flag = TRUE; goto retry; case 'L': - if (bigbig) + if (bigbig_flag) break; else { static short warned = FALSE; @@ -939,10 +943,10 @@ goto out; } } - bigbig = TRUE; + bigbig_flag = TRUE; goto retry; case 'h': - if (small) + if (small_flag) break; else { static short warned = FALSE; @@ -956,7 +960,7 @@ goto out; } } - small = TRUE; + small_flag = TRUE; goto retry; case 'c': need_format = FALSE; @@ -1008,7 +1012,7 @@ * used to work? 6/2003.) */ cp = arg->stptr; -#ifdef MBS_SUPPORT +#if MBS_SUPPORT /* * First character can be multiple bytes if * it's a multibyte character. Grr. @@ -1539,7 +1543,7 @@ if (nargs == 2) { /* third arg. missing */ /* use remainder of string */ length = t1->stlen - indx; /* default to bytes */ -#ifdef MBS_SUPPORT +#if MBS_SUPPORT if (gawk_mb_cur_max > 1) { t1 = force_wstring(t1); if (t1->wstlen > 0) /* use length of wide char string if we have one */ @@ -1558,7 +1562,7 @@ } /* get total len of input string, for following checks */ -#ifdef MBS_SUPPORT +#if MBS_SUPPORT if (gawk_mb_cur_max > 1) { t1 = force_wstring(t1); src_len = t1->wstlen; @@ -1581,7 +1585,7 @@ length = src_len - indx; } -#ifdef MBS_SUPPORT +#if MBS_SUPPORT /* force_wstring() already called */ if (gawk_mb_cur_max == 1 || t1->wstlen == t1->stlen) /* single byte case */ @@ -1627,6 +1631,7 @@ NODE *t1, *t2, *t3, *ret; struct tm *tm; time_t fclock; + long clock_val; char *bufp; size_t buflen, bufsize; char buf[BUFSIZ]; @@ -1673,7 +1678,10 @@ t2 = POP_SCALAR(); if (do_lint && (t2->flags & (NUMCUR|NUMBER)) == 0) lintwarn(_("strftime: received non-numeric second argument")); - fclock = (time_t) force_number(t2); + clock_val = (long) force_number(t2); + if (clock_val < 0) + fatal(_("strftime: second argument less than 0 or too big for time_t")); + fclock = (time_t) clock_val; DEREF(t2); } @@ -1941,7 +1949,7 @@ fflush(rp->fp); } -#ifdef MBS_SUPPORT +#if MBS_SUPPORT /* is_wupper --- function version of iswupper for passing function pointers */ @@ -2030,7 +2038,7 @@ if (isupper(*cp)) *cp = tolower(*cp); } -#ifdef MBS_SUPPORT +#if MBS_SUPPORT else { force_wstring(t2); wide_tolower(t2->wstptr, t2->wstlen); @@ -2064,7 +2072,7 @@ if (islower(*cp)) *cp = toupper(*cp); } -#ifdef MBS_SUPPORT +#if MBS_SUPPORT else { force_wstring(t2); wide_toupper(t2->wstptr, t2->wstlen); @@ -2220,7 +2228,7 @@ size_t *wc_indices = NULL; rlength = REEND(rp, t1->stptr) - RESTART(rp, t1->stptr); /* byte length */ -#ifdef MBS_SUPPORT +#if MBS_SUPPORT if (rlength > 0 && gawk_mb_cur_max > 1) { t1 = str2wstr(t1, & wc_indices); rlength = wc_indices[rstart + rlength - 1] - wc_indices[rstart] + 1; @@ -2248,7 +2256,7 @@ start = t1->stptr + s; subpat_start = s; subpat_len = len = SUBPATEND(rp, t1->stptr, ii) - s; -#ifdef MBS_SUPPORT +#if MBS_SUPPORT if (len > 0 && gawk_mb_cur_max > 1) { subpat_start = wc_indices[s]; subpat_len = wc_indices[s + len - 1] - subpat_start + 1; @@ -2319,7 +2327,7 @@ return make_number((AWKNUM) rstart); } -/* sub_common --- the common code (does the work) for sub, gsub, and gensub */ +/* do_sub --- do the work for sub, gsub, and gensub */ /* * Gsub can be tricksy; particularly when handling the case of null strings. @@ -2412,18 +2420,18 @@ * NB: `howmany' conflicts with a SunOS 4.x macro in . */ -static NODE * -sub_common(int nargs, long how_many, int backdigs) +NODE * +do_sub(int nargs, unsigned int flags) { char *scan; char *bp, *cp; - char *buf; + char *buf = NULL; size_t buflen; char *matchend; size_t len; char *matchstart; char *text; - size_t textlen; + size_t textlen = 0; char *repl; char *replend; size_t repllen; @@ -2434,38 +2442,77 @@ NODE *s; /* subst. pattern */ NODE *t; /* string to make sub. in; $0 if none given */ NODE *tmp; - NODE **lhs; - int global = (how_many == -1); + NODE **lhs = NULL; + long how_many = 1; /* one substitution for sub, also gensub default */ + int global; long current; int lastmatchnonzero; char *mb_indices = NULL; - - tmp = PEEK(2); /* take care of regexp early, in case re_update is fatal */ - rp = re_update(tmp); - /* original string */ - if (nargs == 4) { /* kludge: no of items on stack is really 3, - * See snode(..) in awkgram.y - */ - lhs = NULL; - t = POP_STRING(); + if ((flags & GENSUB) != 0) { + double d; + NODE *t1; + + tmp = PEEK(3); + rp = re_update(tmp); + + t = POP_STRING(); /* original string */ + + t1 = POP_SCALAR(); /* value of global flag */ + if ((t1->flags & (STRCUR|STRING)) != 0) { + if (t1->stlen > 0 && (t1->stptr[0] == 'g' || t1->stptr[0] == 'G')) + how_many = -1; + else { + d = force_number(t1); + + if ((t1->flags & NUMCUR) != 0) + goto set_how_many; + + how_many = 1; + } + } else { + d = force_number(t1); +set_how_many: + if (d < 1) + how_many = 1; + else if (d < LONG_MAX) + how_many = d; + else + how_many = LONG_MAX; + if (d == 0) + warning(_("gensub: third argument of 0 treated as 1")); + } + DEREF(t1); + } else { - lhs = POP_ADDRESS(); - t = force_string(*lhs); + + /* take care of regexp early, in case re_update is fatal */ + + tmp = PEEK(2); + rp = re_update(tmp); + + if ((flags & GSUB) != 0) + how_many = -1; + + /* original string */ + + if ((flags & LITERAL) != 0) + t = POP_STRING(); + else { + lhs = POP_ADDRESS(); + t = force_string(*lhs); + } } + global = (how_many == -1); - s = POP_STRING(); /* replacement text */ + s = POP_STRING(); /* replacement text */ decr_sp(); /* regexp, already updated above */ /* do the search early to avoid work on non-match */ if (research(rp, t->stptr, 0, t->stlen, RE_NEED_START) == -1 || - RESTART(rp, t->stptr) > t->stlen) { - if (lhs == NULL) - DEREF(t); - DEREF(s); - return make_number((AWKNUM) 0.0); - } + RESTART(rp, t->stptr) > t->stlen) + goto done; t->flags |= STRING; @@ -2476,7 +2523,7 @@ repl = s->stptr; replend = repl + s->stlen; repllen = replend - repl; - emalloc(buf, char *, buflen + 2, "sub_common"); + emalloc(buf, char *, buflen + 2, "do_sub"); buf[buflen] = '\0'; buf[buflen + 1] = '\0'; ampersands = 0; @@ -2490,7 +2537,7 @@ * for example. */ if (gawk_mb_cur_max > 1 && repllen > 0) { - emalloc(mb_indices, char *, repllen * sizeof(char), "sub_common"); + emalloc(mb_indices, char *, repllen * sizeof(char), "do_sub"); index_multibyte_buffer(repl, mb_indices, repllen); } @@ -2500,7 +2547,7 @@ repllen--; ampersands++; } else if (*scan == '\\') { - if (backdigs) { /* gensub, behave sanely */ + if (flags & GENSUB) { /* gensub, behave sanely */ if (isdigit((unsigned char) scan[1])) { ampersands++; scan++; @@ -2508,13 +2555,30 @@ repllen--; scan++; } - } else { + } else if (do_posix) { /* \& --> &, \\ --> \ */ if (scan[1] == '&' || scan[1] == '\\') { repllen--; scan++; } /* else leave alone, it goes into the output */ + } else { + /* gawk default behavior since 1996 */ + if (strncmp(scan, "\\\\\\&", 4) == 0) { + /* \\\& --> \& */ + repllen -= 2; + scan += 3; + } else if (strncmp(scan, "\\\\&", 3) == 0) { + /* \\& --> \ */ + ampersands++; + repllen--; + scan += 2; + } else if (scan[1] == '&') { + /* \& --> & */ + repllen--; + scan++; + } /* else + leave alone, it goes into the output */ } } } @@ -2575,7 +2639,7 @@ && (gawk_mb_cur_max == 1 || (repllen > 0 && mb_indices[scan - repl] == 1)) ) { - if (backdigs) { /* gensub, behave sanely */ + if (flags & GENSUB) { /* gensub, behave sanely */ if (isdigit((unsigned char) scan[1])) { int dig = scan[1] - '0'; if (dig < NUMSUBPATS(rp, t->stptr) && SUBPATSTART(rp, tp->stptr, dig) != -1) { @@ -2592,11 +2656,30 @@ scan++; } else /* \q for any q --> q */ *bp++ = *++scan; - } else { + } else if (do_posix) { /* \& --> &, \\ --> \ */ if (scan[1] == '&' || scan[1] == '\\') scan++; *bp++ = *scan; + } else { + /* gawk default behavior since 1996 */ + if (strncmp(scan, "\\\\\\&", 4) == 0) { + /* \\\& --> \& */ + *bp++ = '\\'; + *bp++ = '&'; + scan += 3; + } else if (strncmp(scan, "\\\\&", 3) == 0) { + /* \\& --> \ */ + *bp++ = '\\'; + for (cp = matchstart; cp < matchend; cp++) + *bp++ = *cp; + scan += 2; + } else if (scan[1] == '&') { + /* \& --> & */ + *bp++ = '&'; + scan++; + } else + *bp++ = *scan; } } else *bp++ = *scan; @@ -2619,7 +2702,7 @@ textlen = text + textlen - matchend; text = matchend; - if ((current >= how_many && !global) + if ((current >= how_many && ! global) || ((long) textlen <= 0 && matchstart == matchend) || research(rp, t->stptr, text - t->stptr, textlen, RE_NEED_START) == -1) break; @@ -2628,7 +2711,7 @@ sofar = bp - buf; if (buflen - sofar - textlen - 1) { buflen = sofar + textlen + 2; - erealloc(buf, char *, buflen, "sub_common"); + erealloc(buf, char *, buflen, "do_sub"); bp = buf + sofar; } for (scan = matchend; scan < text + textlen; scan++) @@ -2636,102 +2719,38 @@ *bp = '\0'; textlen = bp - buf; - DEREF(s); - - if (lhs != NULL) { - if (matches > 0) { - unref(*lhs); - *lhs = make_str_node(buf, textlen, ALREADY_MALLOCED); - } else - efree(buf); - } else { - efree(buf); - DEREF(t); - } - if (mb_indices != NULL) efree(mb_indices); - return make_number((AWKNUM) matches); -} - -/* do_gsub --- global substitution */ - -NODE * -do_gsub(int nargs) -{ - return sub_common(nargs, -1, FALSE); -} - -/* do_sub --- single substitution */ - -NODE * -do_sub(int nargs) -{ - return sub_common(nargs, 1, FALSE); -} - -/* do_gensub --- fix up the tree for sub_common for the gensub function */ - -NODE * -do_gensub(int nargs) -{ - NODE *t, *tmp, *target, *ret; - long how_many = 1; /* default is one substitution */ - double d; - - tmp = POP_STRING(); /* target */ - t = POP_SCALAR(); /* value of global flag */ - - /* - * We make copy of the original target string, and pass that - * in to sub_common() as the target to make the substitution in. - * We will then return the result string as the return value of - * this function. - */ - - target = make_string(tmp->stptr, tmp->stlen); - DEREF(tmp); - PUSH_ADDRESS(& target); - - if ((t->flags & (STRCUR|STRING)) != 0) { - if (t->stlen > 0 && (t->stptr[0] == 'g' || t->stptr[0] == 'G')) - how_many = -1; - else { - d = force_number(t); +done: + DEREF(s); - if ((t->flags & NUMCUR) != 0) - goto set_how_many; + if ((matches == 0 || (flags & LITERAL) != 0) && buf != NULL) + efree(buf); - how_many = 1; + if (flags & GENSUB) { + if (matches > 0) { + /* return the result string */ + DEREF(t); + return make_str_node(buf, textlen, ALREADY_MALLOCED); } - } else { - d = force_number(t); -set_how_many: - if (d < 1) - how_many = 1; - else if (d < LONG_MAX) - how_many = d; - else - how_many = LONG_MAX; - if (d == 0) - warning(_("gensub: third argument of 0 treated as 1")); - } - - DEREF(t); - ret = sub_common(3, how_many, TRUE); - unref(ret); + /* return the original string */ + return t; + } - /* - * Note that we don't care what sub_common() returns, since the - * easiest thing for the programmer is to return the string, even - * if no substitutions were done. - */ + /* For a string literal, must not change the original string. */ + if (flags & LITERAL) + DEREF(t); + else if (matches > 0) { + unref(*lhs); + *lhs = make_str_node(buf, textlen, ALREADY_MALLOCED); + } - return target; + return make_number((AWKNUM) matches); } + /* make_integer - Convert an integer to a number node. */ static NODE * @@ -3285,7 +3304,7 @@ static size_t mbc_byte_count(const char *ptr, size_t numchars) { -#ifdef MBS_SUPPORT +#if MBS_SUPPORT mbstate_t cur_state; size_t sum = 0; int mb_len; @@ -3316,7 +3335,7 @@ static size_t mbc_char_count(const char *ptr, size_t numbytes) { -#ifdef MBS_SUPPORT +#if MBS_SUPPORT mbstate_t cur_state; size_t sum = 0; int mb_len; diff -urN gawk-4.0.0/command.y gawk-4.0.1/command.y --- gawk-4.0.0/command.y 2011-05-04 22:59:51.000000000 +0300 +++ gawk-4.0.1/command.y 2012-03-28 21:53:55.000000000 +0200 @@ -1431,7 +1431,7 @@ i = find_command(name, strlen(name)); if (i >= 0) { fprintf(out_fp, "%s\n", cmdtab[i].help_txt); - if (STREQ(cmdtab[i].name, "option")) + if (strcmp(cmdtab[i].name, "option") == 0) option_help(); } else fprintf(out_fp, _("undefined command: %s\n"), name); diff -urN gawk-4.0.0/configh.in gawk-4.0.1/configh.in --- gawk-4.0.0/configh.in 2011-06-23 09:39:46.000000000 +0300 +++ gawk-4.0.1/configh.in 2012-03-28 22:03:33.000000000 +0200 @@ -169,6 +169,9 @@ /* Define to 1 if you have the `setlocale' function. */ #undef HAVE_SETLOCALE +/* Define to 1 if you have the `setsid' function. */ +#undef HAVE_SETSID + /* Define to 1 if you have the `snprintf' function. */ #undef HAVE_SNPRINTF @@ -240,6 +243,9 @@ /* Define to 1 if you have the `system' function. */ #undef HAVE_SYSTEM +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_IOCTL_H + /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H @@ -347,9 +353,6 @@ /* Define to 1 if *printf supports %F format */ #undef PRINTF_HAS_F_FORMAT -/* Define to 1 if the C compiler supports function prototypes. */ -#undef PROTOTYPES - /* Define as the return type of signal handlers (`int' or `void'). */ #undef RETSIGTYPE @@ -420,9 +423,6 @@ # undef __CHAR_UNSIGNED__ #endif -/* Define like PROTOTYPES; this can be used by system headers. */ -#undef __PROTOTYPES - /* Define to empty if `const' does not conform to ANSI C. */ #undef const diff -urN gawk-4.0.0/configure gawk-4.0.1/configure --- gawk-4.0.0/configure 2011-06-23 09:39:36.000000000 +0300 +++ gawk-4.0.1/configure 2012-03-28 22:03:22.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for GNU Awk 4.0.0. +# Generated by GNU Autoconf 2.68 for GNU Awk 4.0.1. # # Report bugs to . # @@ -560,8 +560,8 @@ # Identity of this package. PACKAGE_NAME='GNU Awk' PACKAGE_TARNAME='gawk' -PACKAGE_VERSION='4.0.0' -PACKAGE_STRING='GNU Awk 4.0.0' +PACKAGE_VERSION='4.0.1' +PACKAGE_STRING='GNU Awk 4.0.1' PACKAGE_BUGREPORT='bug-gawk@gnu.org' PACKAGE_URL='http://www.gnu.org/software/gawk/' @@ -639,8 +639,6 @@ MSGFMT GETTEXT_MACRO_VERSION USE_NLS -ANSI2KNR -U LN_S YFLAGS YACC @@ -1292,7 +1290,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures GNU Awk 4.0.0 to adapt to many kinds of systems. +\`configure' configures GNU Awk 4.0.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1362,7 +1360,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of GNU Awk 4.0.0:";; + short | recursive ) echo "Configuration of GNU Awk 4.0.1:";; esac cat <<\_ACEOF @@ -1474,7 +1472,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -GNU Awk configure 4.0.0 +GNU Awk configure 4.0.1 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. @@ -2178,7 +2176,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.0, which was +It was created by GNU Awk $as_me 4.0.1, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -3013,7 +3011,7 @@ # Define the identity of the package. PACKAGE='gawk' - VERSION='4.0.0' + VERSION='4.0.1' cat >>confdefs.h <<_ACEOF @@ -5823,44 +5821,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for function prototypes" >&5 -$as_echo_n "checking for function prototypes... " >&6; } -if test "$ac_cv_prog_cc_c89" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -$as_echo "#define PROTOTYPES 1" >>confdefs.h - - -$as_echo "#define __PROTOTYPES 1" >>confdefs.h - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -if test "$ac_cv_prog_cc_stdc" != no; then - U= ANSI2KNR= -else - U=_ ANSI2KNR=./ansi2knr -fi -# Ensure some checks needed by ansi2knr itself. - -for ac_header in string.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default" -if test "x$ac_cv_header_string_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STRING_H 1 -_ACEOF - -fi - -done - - - case `(uname) 2> /dev/null` in *CYGWIN*) with_libiconv_prefix=no @@ -8219,7 +8179,7 @@ for ac_header in arpa/inet.h fcntl.h limits.h locale.h libintl.h mcheck.h \ netdb.h netinet/in.h stdarg.h stddef.h string.h \ - sys/param.h sys/socket.h sys/time.h unistd.h \ + sys/ioctl.h sys/param.h sys/socket.h sys/time.h unistd.h \ termios.h stropts.h wchar.h wctype.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -9894,10 +9854,10 @@ for ac_func in atexit btowc fmod getgrent getgroups grantpt \ isascii iswctype iswlower iswupper mbrlen \ memcmp memcpy memcpy_ulong memmove memset \ - memset_ulong mkstemp setenv setlocale snprintf strchr \ + 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" @@ -10817,6 +10777,7 @@ ac_libobjs= ac_ltlibobjs= +U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' @@ -11260,7 +11221,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by GNU Awk $as_me 4.0.0, which was +This file was extended by GNU Awk $as_me 4.0.1, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -11328,7 +11289,7 @@ 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.0 +GNU Awk config.status 4.0.1 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" diff -urN gawk-4.0.0/configure.ac gawk-4.0.1/configure.ac --- gawk-4.0.0/configure.ac 2011-06-23 09:39:32.000000000 +0300 +++ gawk-4.0.1/configure.ac 2012-03-28 22:01:23.000000000 +0200 @@ -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. @@ -23,7 +23,7 @@ dnl Process this file with autoconf to produce a configure script. -AC_INIT([GNU Awk], 4.0.0, bug-gawk@gnu.org, gawk) +AC_INIT([GNU Awk], 4.0.1, bug-gawk@gnu.org, gawk) # This is a hack. Different versions of install on different systems # are just too different. Chuck it and use install-sh. @@ -40,7 +40,7 @@ fi AC_PREREQ(2.68) -AM_INIT_AUTOMAKE([1.11 dist-bzip2 dist-xz]) +AM_INIT_AUTOMAKE([1.11 dist-xz]) AC_CONFIG_MACRO_DIR([m4]) @@ -116,9 +116,6 @@ dnl this only needs to be set once, since everything is in C. AC_LANG([C]) -dnl check for C compiler for automake. Needed for dfa.h. -AM_C_PROTOTYPES - dnl Cygwin doesn't like to get libs with full paths dnl since that overrides linking against DLLs. case `(uname) 2> /dev/null` in @@ -142,7 +139,7 @@ AC_HEADER_TIME AC_CHECK_HEADERS(arpa/inet.h fcntl.h limits.h locale.h libintl.h mcheck.h \ netdb.h netinet/in.h stdarg.h stddef.h string.h \ - sys/param.h sys/socket.h sys/time.h unistd.h \ + sys/ioctl.h sys/param.h sys/socket.h sys/time.h unistd.h \ termios.h stropts.h wchar.h wctype.h) if test "$ac_cv_header_string_h" = yes @@ -268,10 +265,10 @@ AC_CHECK_FUNCS(atexit btowc fmod getgrent getgroups grantpt \ isascii iswctype iswlower iswupper mbrlen \ memcmp memcpy memcpy_ulong memmove memset \ - memset_ulong mkstemp setenv setlocale snprintf strchr \ + 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 diff -urN gawk-4.0.0/custom.h gawk-4.0.1/custom.h --- gawk-4.0.0/custom.h 2011-02-27 08:00:53.000000000 +0200 +++ gawk-4.0.1/custom.h 2011-11-01 22:09:45.000000000 +0200 @@ -31,7 +31,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ -/* for VMS POSIX, from Pat Rankin, rankin@pactechdata.com */ +/* for VMS POSIX, from Pat Rankin, r.pat.rankin@gmail.com */ #ifdef VMS_POSIX #undef VMS #include "vms/redirect.h" diff -urN gawk-4.0.0/debug.c gawk-4.0.1/debug.c --- gawk-4.0.0/debug.c 2011-05-08 20:37:41.000000000 +0300 +++ gawk-4.0.1/debug.c 2012-03-28 21:54:02.000000000 +0200 @@ -39,6 +39,7 @@ extern FILE *output_fp; extern IOBUF *curfile; extern const char *command_file; +extern const char *get_spec_varname(Func_ptr fptr); extern int r_interpret(INSTRUCTION *); extern int zzparse(void); #define read_command() (void) zzparse() @@ -497,8 +498,8 @@ efree(path); return s; } - efree(path); } + efree(path); } d_error(_("cannot find source file named `%s' (%s)"), src, strerror(errno_val)); @@ -993,7 +994,7 @@ pcount = get_param_count(func); for (i = 0; i < pcount; i++) { - if (STREQ(name, pnames[i])) { + if (strcmp(name, pnames[i]) == 0) { r = f->stack[i]; if (r->type == Node_array_ref) r = r->orig_array; @@ -2230,6 +2231,23 @@ INSTRUCTION *ip, *prevp; for (prevp = rp, ip = rp->nexti; ip; prevp = ip, ip = ip->nexti) { + if (ip->opcode == Op_K_case) { + INSTRUCTION *i1, *i2; + + /* Special case: the code line numbers for a switch do not form + * a monotonically increasing sequence. Check if the line # is between + * the first and last statements of the case block before continuing + * the search. + */ + for (i2 = ip->stmt_start, i1 = i2->nexti; i2 != ip->stmt_end; + i2 = i1, i1 = i1->nexti) { + if (i1->source_line >= lineno) + return add_breakpoint(i2, i1, rp->source_file, silent); + if (i1 == ip->stmt_end) + break; + } + } + if (ip->source_line >= lineno) return add_breakpoint(prevp, ip, rp->source_file, silent); if (ip == (rp + 1)->lasti) @@ -3736,11 +3754,19 @@ switch (pc->opcode) { case Op_var_update: - print_func(fp, "[update_%s]\n", pc->memory->vname); + print_func(fp, "[update_%s()]\n", get_spec_varname(pc->update_var)); break; case Op_var_assign: - print_func(fp, "[set_%s]\n", pc->memory->vname); + print_func(fp, "[set_%s()]", get_spec_varname(pc->assign_var)); + if (pc->assign_ctxt != 0) + print_func(fp, " [assign_ctxt = %s]", opcode2str(pc->assign_ctxt)); + print_func(fp, "\n"); + break; + + case Op_field_assign: + print_func(fp, "[%s]\n", pc->field_assign == reset_record ? + "reset_record()" : "invalidate_field0()"); break; case Op_field_spec_lhs: @@ -3787,9 +3813,19 @@ break; case Op_K_nextfile: + print_func(fp, "[target_newfile = %p] [target_endfile = %p]\n", + pc->target_newfile, pc->target_endfile); + break; + case Op_newfile: print_func(fp, "[target_jmp = %p] [target_endfile = %p]\n", pc->target_jmp, pc->target_endfile); + print_func(fp, "%*s[target_get_record = %p]\n", + noffset, "", (pc + 1)->target_get_record); + break; + + case Op_get_record: + print_func(fp, "[target_newfile = %p]\n", pc->target_newfile); break; case Op_jmp: @@ -3830,6 +3866,26 @@ pc->line_range, pc->target_jmp); break; + case Op_sub_builtin: + { + const char *fname = "sub"; + static const struct flagtab values[] = { + { GSUB, "GSUB" }, + { GENSUB, "GENSUB" }, + { LITERAL, "LITERAL" }, + { 0, NULL } + }; + + if (pc->sub_flags & GSUB) + fname = "gsub"; + else if (pc->sub_flags & GENSUB) + fname = "gensub"; + print_func(fp, "%s [arg_count = %ld] [sub_flags = %s]\n", + fname, pc->expr_count, + genflags2str(pc->sub_flags, values)); + } + break; + case Op_builtin: { const char *fname = getfname(pc->builtin); @@ -4012,7 +4068,7 @@ */ if (strlen(line) > 1 - && STREQN(line, "sa", 2)) + && strncmp(line, "sa", 2) == 0) continue; fprintf(fp, "%s\n", line); @@ -4046,7 +4102,7 @@ value = arg ? arg->a_string : NULL; for (opt = option_list; opt->name; opt++) { /* linear search */ - if (STREQ(name, opt->name)) + if (strcmp(name, opt->name) == 0) break; } if (! opt->name) @@ -4595,8 +4651,9 @@ const struct dbg_option *opt; for (opt = option_list; opt->name; opt++) { - if (STREQN(pstr[0], opt->name, pstr_len[0])) { + if (strncmp(pstr[0], opt->name, pstr_len[0]) == 0) { char *value; + value = estrdup(pstr[1], pstr_len[1]); (*(opt->assign))(value); efree(value); @@ -5007,7 +5064,7 @@ int idx; for (idx = 0; (p = option_list[idx].name); idx++) { - if (STREQ(p, name)) + if (strcmp(p, name) == 0) return idx; } return -1; @@ -5076,19 +5133,19 @@ if (fp == NULL) close(fd); - } else if (STREQN(file, "/dev/", 5)) { + } else if (strncmp(file, "/dev/", 5) == 0) { char *cp = (char *) file + 5; - if (STREQ(cp, "stdout")) + if (strcmp(cp, "stdout") == 0) return; - if (STREQ(cp, "stderr")) { + if (strcmp(cp, "stderr") == 0) { output_fp = stderr; output_file = "/dev/stderr"; output_is_tty = os_isatty(fileno(stderr)); return; } - if (STREQN(cp, "fd/", 3)) { + if (strncmp(cp, "fd/", 3) == 0) { cp += 3; fd = (int) strtoul(cp, NULL, 10); if (errno == 0 && fd > INVALID_HANDLE) { @@ -5142,9 +5199,9 @@ set_option_flag(const char *value) { long n; - if (STREQ(value, "on")) + if (strcmp(value, "on") == 0) return TRUE; - if (STREQ(value, "off")) + if (strcmp(value, "off") == 0) return FALSE; errno = 0; n = strtol(value, NULL, 0); @@ -5345,28 +5402,27 @@ return (ei == *pi); } -extern void unwind_stack(STACK_ITEM *sp_bottom); +extern INSTRUCTION *unwind_stack(long n); static NODE * execute_code(volatile INSTRUCTION *code) { volatile NODE *r = NULL; volatile jmp_buf fatal_tag_stack; - STACK_ITEM *ctxt_stack_bottom; + long save_stack_size; /* We use one global stack for all contexts. - * Remember stack bottom for current context; in case of - * a fatal error, unwind stack until stack_ptr is below that 'bottom'. + * Save # of items in stack; in case of + * a fatal error, pop stack until it has that many items. */ - ctxt_stack_bottom = stack_ptr + 1; + save_stack_size = (stack_ptr - stack_bottom) + 1; PUSH_BINDING(fatal_tag_stack, fatal_tag, fatal_tag_valid); if (setjmp(fatal_tag) == 0) { (void) r_interpret((INSTRUCTION *) code); - assert(stack_ptr == ctxt_stack_bottom); r = POP_SCALAR(); } else /* fatal error */ - unwind_stack(ctxt_stack_bottom); + (void) unwind_stack(save_stack_size); POP_BINDING(fatal_tag_stack, fatal_tag, fatal_tag_valid); @@ -5648,7 +5704,7 @@ { struct command_source *cs; for (cs = cmd_src; cs != NULL; cs = cs->next) { - if (cs->str != NULL && STREQ(cs->str, filename)) + if (cs->str != NULL && strcmp(cs->str, filename) == 0) return TRUE; } return FALSE; diff -urN gawk-4.0.0/dfa.c gawk-4.0.1/dfa.c --- gawk-4.0.0/dfa.c 2011-06-23 09:27:01.000000000 +0300 +++ gawk-4.0.1/dfa.c 2012-03-28 21:47:53.000000000 +0200 @@ -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 @@ -53,8 +53,8 @@ #include "gettext.h" #define _(str) gettext (str) -#include "mbsupport.h" /* defines MBS_SUPPORT if appropriate */ -#ifdef MBS_SUPPORT +#include "mbsupport.h" /* defines MBS_SUPPORT to 1 or 0, as appropriate */ +#if MBS_SUPPORT /* We can handle multibyte strings. */ #include #include @@ -68,7 +68,7 @@ #define bool int #define true (1) #define false (0) -#endif +#endif /* GAWK */ #include "regex.h" #include "dfa.h" @@ -80,7 +80,7 @@ { return (c == ' ' || c == '\t'); } -#endif +#endif /* GAWK */ /* HPUX, define those as macros in sys/param.h */ #ifdef setbit @@ -109,6 +109,24 @@ /* Sets of unsigned characters are stored as bit vectors in arrays of ints. */ 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; } + +/* Contexts tell us whether a character is a newline or a word constituent. + Word-constituent characters are those that satisfy iswalnum(), plus '_'. + + A state also stores a context value, which is nonzero if its + predecessors always matches a newline or a word constituent. + The definition of a state's context is a bit unclear, but will be + modified soon anyway. */ + +#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 was, and the value of the current (lookahead) character. Context @@ -125,20 +143,19 @@ 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(). - 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 the context value for + the previous character, curr is the context value for the lookahead + character. */ +#define MATCHES_NEWLINE_CONTEXT(constraint, prev, curr) \ + ((constraint) & \ + 1 << (((prev & CTX_NEWLINE) ? 2 : 0) + ((curr & CTX_NEWLINE) ? 1 : 0) + 4)) +#define MATCHES_LETTER_CONTEXT(constraint, prev, curr) \ + ((constraint) & \ + 1 << (((prev & CTX_LETTER) ? 2 : 0) + ((curr & CTX_LETTER) ? 1 : 0))) +#define SUCCEEDS_IN_CONTEXT(constraint, prev, curr) \ + (MATCHES_NEWLINE_CONTEXT(constraint, prev, curr) \ + && MATCHES_LETTER_CONTEXT(constraint, prev, curr)) /* The following macros give information about what a constraint depends on. */ #define PREV_NEWLINE_DEPENDENT(constraint) \ @@ -264,9 +281,17 @@ typedef struct { position *elems; /* Elements of this position set. */ - int nelem; /* Number of elements in this 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 +{ + unsigned int *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. */ @@ -274,20 +299,16 @@ { 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 \. */ + unsigned char context; /* Context from previous state. */ + char backref; /* True if this state matches a \. */ unsigned char constraint; /* Constraint for this state to accept. */ int first_end; /* Token value of the first END in elems. */ -#if MBS_SUPPORT position_set mbps; /* Positions which can match multibyte characters. e.g. period. These staff are used only if MB_CUR_MAX > 1. */ -#endif } dfa_state; -#if MBS_SUPPORT /* A bracket operator. e.g. [a-c], [[:alpha:]], etc. */ struct mb_char_classes @@ -306,7 +327,6 @@ char **coll_elems; int ncoll_elems; /* Collating elements. */ }; -#endif /* A compiled regular expression. */ struct dfa @@ -412,26 +432,45 @@ /* 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); -#define CALLOC(p, t, n) ((p) = xcalloc((size_t)(n), sizeof (t))) -#define MALLOC(p, t, n) ((p) = xmalloc((n) * sizeof (t))) -#define REALLOC(p, t, n) ((p) = xrealloc((p), (n) * sizeof (t))) - -/* Reallocate an array of type t if nalloc is too small for index. */ -#define REALLOC_IF_NECESSARY(p, t, nalloc, index) \ - if ((index) >= (nalloc)) \ - { \ - do \ - (nalloc) *= 2; \ - while ((index) >= (nalloc)); \ - REALLOC(p, t, nalloc); \ - } +/* These two macros are identical to the ones in gnulib's xalloc.h, + except that they not to case the result to "(t *)", and thus may + be used via type-free CALLOC and MALLOC macros. */ +#undef XNMALLOC +#undef XCALLOC + +/* Allocate memory for N elements of type T, with error checking. */ +/* extern t *XNMALLOC (size_t n, typename t); */ +# define XNMALLOC(n, t) \ + (sizeof (t) == 1 ? xmalloc (n) : xnmalloc (n, sizeof (t))) + +/* Allocate memory for N elements of type T, with error checking, + and zero it. */ +/* extern t *XCALLOC (size_t n, typename t); */ +# define XCALLOC(n, t) \ + (sizeof (t) == 1 ? xzalloc (n) : xcalloc (n, sizeof (t))) + +#define CALLOC(p, n) do { (p) = XCALLOC (n, *(p)); } while (0) +#define MALLOC(p, n) do { (p) = XNMALLOC (n, *(p)); } while (0) +#define REALLOC(p, n) do {(p) = xnrealloc (p, n, sizeof (*(p))); } while (0) + +/* Reallocate an array of type *P if N_ALLOC is <= N_REQUIRED. */ +#define REALLOC_IF_NECESSARY(p, n_alloc, n_required) \ + do \ + { \ + if ((n_alloc) <= (n_required)) \ + { \ + size_t new_n_alloc = (n_required) + !(p); \ + (p) = x2nrealloc (p, &new_n_alloc, sizeof (*(p))); \ + (n_alloc) = new_n_alloc; \ + } \ + } \ + while (false) #ifdef DEBUG @@ -464,10 +503,8 @@ case OR: s = "OR"; break; case LPAREN: s = "LPAREN"; break; case RPAREN: s = "RPAREN"; break; -#if MBS_SUPPORT case ANYCHAR: s = "ANYCHAR"; break; case MBCSET: s = "MBCSET"; break; -#endif /* MBS_SUPPORT */ default: s = "CSET"; break; } fprintf(stderr, "%s", s); @@ -534,7 +571,7 @@ for (i = 0; i < dfa->cindex; ++i) if (equal(s, dfa->charclasses[i])) return i; - REALLOC_IF_NECESSARY(dfa->charclasses, charclass, dfa->calloc, dfa->cindex); + REALLOC_IF_NECESSARY(dfa->charclasses, dfa->calloc, dfa->cindex + 1); ++dfa->cindex; copyset(s, dfa->charclasses[i]); return i; @@ -549,14 +586,72 @@ /* 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 @@ -587,7 +682,14 @@ setbit (b, c); } #else -#define setbit_c setbit +# define setbit_c setbit +static inline bool +setbit_wc (wint_t wc, charclass c) +{ + abort (); + /*NOTREACHED*/ + return false; +} #endif /* Like setbit_c, but if case is folded, set both cases of a letter. For @@ -597,7 +699,6 @@ static void setbit_case_fold_c (int b, charclass c) { -#if MBS_SUPPORT if (MB_CUR_MAX > 1) { wint_t wc = btowc (b); @@ -608,7 +709,6 @@ setbit_wc (iswupper (wc) ? towlower (wc) : towupper (wc), c); } else -#endif { setbit (b, c); if (case_fold && isalpha (b)) @@ -626,7 +726,7 @@ static int utf8 = -1; if (utf8 == -1) { -#if defined HAVE_LANGINFO_CODESET && defined MBS_SUPPORT +#if defined HAVE_LANGINFO_CODESET && MBS_SUPPORT utf8 = (STREQ (nl_langinfo (CODESET), "UTF-8")); #else utf8 = 0; @@ -651,7 +751,6 @@ static int cur_mb_len = 1; /* Length of the multibyte representation of wctok. */ -#if MBS_SUPPORT /* 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 @@ -674,7 +773,6 @@ 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(). */ -#endif /* MBS_SUPPORT */ #if MBS_SUPPORT @@ -696,7 +794,7 @@ { \ cur_mb_len = 1; \ --lexleft; \ - (wc) = (c) = (unsigned char) *lexptr++; \ + (wc) = (c) = to_uchar (*lexptr++); \ } \ else \ { \ @@ -725,7 +823,7 @@ else \ return lasttok = END; \ } \ - (c) = (unsigned char) *lexptr++; \ + (c) = to_uchar (*lexptr++); \ --lexleft; \ } while(0) @@ -760,7 +858,7 @@ { NULL, NULL, false } }; -static const struct dfa_ctype * +static const struct dfa_ctype * _GL_ATTRIBUTE_PURE find_pred (const char *str) { unsigned int i; @@ -788,21 +886,21 @@ Bit 3 = includes ranges, char/equiv classes or collation elements. */ int colon_warning_state; -#if MBS_SUPPORT - wint_t wc, wc1, wc2; + wint_t wc; + wint_t wc2; + wint_t wc1 = 0; /* 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, 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, struct mb_char_classes, - 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 @@ -814,7 +912,6 @@ } else work_mbc = NULL; -#endif memset (ccl, 0, sizeof ccl); FETCH_WC (c, wc, _("unbalanced [")); @@ -844,10 +941,8 @@ /* If pattern contains `[[:', `[[.', or `[[='. */ if (c1 == ':' -#if MBS_SUPPORT /* TODO: handle `[[.' and `[[=' also for MB_CUR_MAX == 1. */ || (MB_CUR_MAX > 1 && (c1 == '.' || c1 == '=')) -#endif ) { size_t len = 0; @@ -878,39 +973,32 @@ if (!pred) dfaerror(_("invalid character class")); -#if MBS_SUPPORT 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, wctype_t, ++ch_classes_al); - REALLOC_IF_NECESSARY(work_mbc->ch_classes, wctype_t, + REALLOC_IF_NECESSARY(work_mbc->ch_classes, ch_classes_al, work_mbc->nch_classes + 1); work_mbc->ch_classes[work_mbc->nch_classes++] = wt; } -#endif for (c2 = 0; c2 < NOTCHAR; ++c2) if (pred->func(c2)) setbit_case_fold_c (c2, ccl); } -#if MBS_SUPPORT - else if (c1 == '=' || c1 == '.') + else if (MBS_SUPPORT && (c1 == '=' || c1 == '.')) { char *elem; - MALLOC(elem, char, len + 1); + MALLOC(elem, len + 1); strncpy(elem, str, len + 1); if (c1 == '=') /* build equivalent class. */ { - if (equivs_al == 0) - MALLOC(work_mbc->equivs, char*, ++equivs_al); - REALLOC_IF_NECESSARY(work_mbc->equivs, char*, + REALLOC_IF_NECESSARY(work_mbc->equivs, equivs_al, work_mbc->nequivs + 1); work_mbc->equivs[work_mbc->nequivs++] = elem; @@ -919,15 +1007,12 @@ if (c1 == '.') /* build collating element. */ { - if (coll_elems_al == 0) - MALLOC(work_mbc->coll_elems, char*, ++coll_elems_al); - REALLOC_IF_NECESSARY(work_mbc->coll_elems, char*, + REALLOC_IF_NECESSARY(work_mbc->coll_elems, coll_elems_al, work_mbc->ncoll_elems + 1); work_mbc->coll_elems[work_mbc->ncoll_elems++] = elem; } } -#endif colon_warning_state |= 8; /* Fetch new lookahead character. */ @@ -964,19 +1049,13 @@ && (syntax_bits & RE_BACKSLASH_ESCAPE_IN_LISTS)) FETCH_WC(c2, wc2, _("unbalanced [")); -#if MBS_SUPPORT 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, wchar_t, ++range_sts_al); - MALLOC(work_mbc->range_ends, wchar_t, ++range_ends_al); - } - REALLOC_IF_NECESSARY(work_mbc->range_sts, wchar_t, + REALLOC_IF_NECESSARY(work_mbc->range_sts, range_sts_al, work_mbc->nranges + 1); - REALLOC_IF_NECESSARY(work_mbc->range_ends, wchar_t, + 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; @@ -986,17 +1065,16 @@ #ifndef GREP if (case_fold && (iswalpha(wc) || iswalpha(wc2))) { - REALLOC_IF_NECESSARY(work_mbc->range_sts, wchar_t, + 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, wchar_t, + 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 -#endif { c1 = c; if (case_fold) @@ -1015,45 +1093,39 @@ colon_warning_state |= (c == ':') ? 2 : 4; -#if MBS_SUPPORT - if (MB_CUR_MAX > 1) + if (MB_CUR_MAX == 1) { - if (case_fold && iswalpha(wc)) - { - wc = towlower(wc); - if (!setbit_wc (wc, ccl)) - { - REALLOC_IF_NECESSARY(work_mbc->chars, wchar_t, chars_al, - work_mbc->nchars + 1); - work_mbc->chars[work_mbc->nchars++] = wc; - } -#ifdef GREP - continue; -#else - wc = towupper(wc); -#endif - } + setbit_case_fold_c (c, ccl); + continue; + } + + if (case_fold && iswalpha(wc)) + { + wc = towlower(wc); if (!setbit_wc (wc, ccl)) { - REALLOC_IF_NECESSARY(work_mbc->chars, wchar_t, chars_al, + REALLOC_IF_NECESSARY(work_mbc->chars, chars_al, work_mbc->nchars + 1); work_mbc->chars[work_mbc->nchars++] = wc; } - } - else +#ifdef GREP + continue; +#else + wc = towupper(wc); #endif - setbit_case_fold_c (c, ccl); + } + if (!setbit_wc (wc, ccl)) + { + REALLOC_IF_NECESSARY(work_mbc->chars, chars_al, + work_mbc->nchars + 1); + work_mbc->chars[work_mbc->nchars++] = wc; + } } - while (( -#if MBS_SUPPORT - wc = wc1, -#endif - (c = c1) != ']')); + while ((wc = wc1, (c = c1) != ']')); if (colon_warning_state == 7) dfawarn (_("character class syntax is [[:space:]], not [:space:]")); -#if MBS_SUPPORT if (MB_CUR_MAX > 1) { static charclass zeroclass; @@ -1061,13 +1133,10 @@ work_mbc->cset = equal(ccl, zeroclass) ? -1 : charclass_index(ccl); return MBCSET; } -#endif if (invert) { -#if MBS_SUPPORT assert(MB_CUR_MAX == 1); -#endif notset(ccl); if (syntax_bits & RE_HAT_LISTS_NOT_NEWLINE) clrbit(eolbyte, ccl); @@ -1076,9 +1145,6 @@ return CSET + charclass_index(ccl); } -/* Return non-zero if C is a `word-constituent' byte; zero otherwise. */ -#define IS_WORD_CONSTITUENT(C) (isalnum(C) || (C) == '_') - static token lex (void) { @@ -1095,7 +1161,6 @@ "if (backslash) ...". */ for (i = 0; i < 2; ++i) { -#if MBS_SUPPORT if (MB_CUR_MAX > 1) { FETCH_WC (c, wctok, NULL); @@ -1103,7 +1168,6 @@ goto normal_char; } else -#endif /* MBS_SUPPORT */ FETCH(c, NULL); switch (c) @@ -1326,7 +1390,6 @@ case '.': if (backslash) goto normal_char; -#if MBS_SUPPORT if (MB_CUR_MAX > 1) { /* In multibyte environment period must match with a single @@ -1334,7 +1397,6 @@ laststart = 0; return lasttok = ANYCHAR; } -#endif /* MBS_SUPPORT */ zeroset(ccl); notset(ccl); if (!(syntax_bits & RE_DOT_NEWLINE)) @@ -1379,12 +1441,10 @@ default: normal_char: laststart = 0; -#if MBS_SUPPORT /* For multibyte character sets, folding is done in atom. Always return WCHAR. */ if (MB_CUR_MAX > 1) return lasttok = WCHAR; -#endif if (case_fold && isalpha(c)) { @@ -1415,18 +1475,14 @@ static void addtok_mb (token t, int mbprop) { -#if MBS_SUPPORT if (MB_CUR_MAX > 1) { - REALLOC_IF_NECESSARY(dfa->multibyte_prop, int, dfa->nmultibyte_prop, - dfa->tindex); + REALLOC_IF_NECESSARY(dfa->multibyte_prop, dfa->nmultibyte_prop, + dfa->tindex + 1); dfa->multibyte_prop[dfa->tindex] = mbprop; } -#else - (void) mbprop; -#endif - REALLOC_IF_NECESSARY(dfa->tokens, token, dfa->talloc, dfa->tindex); + REALLOC_IF_NECESSARY(dfa->tokens, dfa->talloc, dfa->tindex + 1); dfa->tokens[dfa->tindex++] = t; switch (t) @@ -1451,16 +1507,13 @@ dfa->depth = depth; } -#if MBS_SUPPORT static void addtok_wc (wint_t wc); -#endif /* Add the given token to the parse tree, maintaining the depth count and updating the maximum depth if necessary. */ static void addtok (token t) { -#if MBS_SUPPORT if (MB_CUR_MAX > 1 && t == MBCSET) { bool need_or = false; @@ -1508,8 +1561,9 @@ } } else -#endif - addtok_mb (t, 3); + { + addtok_mb (t, 3); + } } #if MBS_SUPPORT @@ -1541,10 +1595,14 @@ addtok(CAT); } } +#else +static void addtok_wc (wint_t wc) {} +#endif static void 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 */ @@ -1560,7 +1618,7 @@ for (i = 0; i < n; i++) { charclass c; - memcpy (c, utf8_classes[i], sizeof c); + copyset (utf8_classes[i], c); if (i == 1) { if (!(syntax_bits & RE_DOT_NEWLINE)) @@ -1589,8 +1647,8 @@ addtok (CAT); addtok (OR); } -} #endif +} /* The grammar understood by the parser is as follows. @@ -1634,8 +1692,7 @@ { /* empty */ } -#if MBS_SUPPORT - else if (tok == WCHAR) + else if (MBS_SUPPORT && tok == WCHAR) { addtok_wc (case_fold ? towlower(wctok) : wctok); #ifndef GREP @@ -1648,8 +1705,7 @@ tok = lex(); } - - else if (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 @@ -1661,8 +1717,6 @@ add_utf8_anychar(); tok = lex(); } -#endif /* MBS_SUPPORT */ - else if ((tok >= 0 && tok < NOTCHAR) || tok >= CSET || tok == BACKREF || tok == BEGLINE || tok == ENDLINE || tok == BEGWORD #if MBS_SUPPORT @@ -1686,7 +1740,7 @@ } /* Return the number of tokens in the given subexpression. */ -static int +static int _GL_ATTRIBUTE_PURE nsubtoks (int tindex) { int ntoks1; @@ -1715,11 +1769,9 @@ for (i = 0; i < ntokens; ++i) { addtok(dfa->tokens[tindex + i]); -#if MBS_SUPPORT /* 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]; -#endif } } @@ -1799,13 +1851,11 @@ lasttok = END; laststart = 1; parens = 0; -#if MBS_SUPPORT if (MB_CUR_MAX > 1) { cur_mb_len = 0; memset(&mbs, 0, sizeof mbs); } -#endif /* MBS_SUPPORT */ if (! syntax_bits_set) dfaerror(_("no syntax specified")); @@ -1833,41 +1883,49 @@ static void copy (position_set const *src, position_set *dst) { - int i; - - for (i = 0; i < src->nelem; ++i) - dst->elems[i] = src->elems[i]; + REALLOC_IF_NECESSARY(dst->elems, dst->alloc, src->nelem); + memcpy(dst->elems, src->elems, sizeof(dst->elems[0]) * src->nelem); dst->nelem = src->nelem; } -/* Insert a position in a set. Position sets are maintained in sorted - order according to index. If position already exists in the set with - the same index then their constraints are logically or'd together. +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) { int count = s->nelem; int lo = 0, hi = count; + int i; while (lo < hi) { int mid = ((unsigned) lo + (unsigned) hi) >> 1; - if (s->elems[mid].index < p.index) + if (s->elems[mid].index > p.index) lo = mid + 1; else hi = mid; } 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 @@ -1877,6 +1935,7 @@ { int 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) @@ -1910,18 +1969,15 @@ /* 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. */ + state. Context tells whether we got here on a newline or letter. */ static int -state_index (struct dfa *d, position_set const *s, int newline, int letter) +state_index (struct dfa *d, position_set const *s, int context) { int hash = 0; int constraint; int i, j; - newline = newline ? 1 : 0; - letter = letter ? 1 : 0; - + context &= ~CTX_NONE; for (i = 0; i < s->nelem; ++i) hash ^= s->elems[i].index + s->elems[i].constraint; @@ -1929,7 +1985,7 @@ 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 @@ -1941,27 +1997,26 @@ } /* We'll have to create a new state. */ - REALLOC_IF_NECESSARY(d->states, dfa_state, d->salloc, d->sindex); + REALLOC_IF_NECESSARY(d->states, d->salloc, d->sindex + 1); d->states[i].hash = hash; - MALLOC(d->states[i].elems.elems, position, s->nelem); + alloc_position_set(&d->states[i].elems, s->nelem); copy(s, &d->states[i].elems); - d->states[i].newline = newline; - d->states[i].letter = letter; + d->states[i].context = context; d->states[i].backref = 0; d->states[i].constraint = 0; d->states[i].first_end = 0; -#if MBS_SUPPORT - d->states[i].mbps.nelem = 0; - d->states[i].mbps.elems = NULL; -#endif + if (MBS_SUPPORT) + { + d->states[i].mbps.nelem = 0; + d->states[i].mbps.elems = NULL; + } for (j = 0; j < s->nelem; ++j) 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_NONE) + || SUCCEEDS_IN_CONTEXT(constraint, context, CTX_NEWLINE) + || SUCCEEDS_IN_CONTEXT(constraint, context, CTX_LETTER)) d->states[i].constraint |= constraint; if (! d->states[i].first_end) d->states[i].first_end = d->tokens[s->elems[j].index]; @@ -1989,7 +2044,7 @@ char *visited; /* array of booleans, enough to use char, not int */ position p, old; - CALLOC(visited, char, d->tindex); + CALLOC(visited, d->tindex); for (i = 0; i < s->nelem; ++i) if (d->tokens[s->elems[i].index] >= NOTCHAR @@ -2044,6 +2099,55 @@ 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 subset of POSSIBLE_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. However, + all contexts in the complement set will have the same follow set. */ + +static int _GL_ATTRIBUTE_PURE +state_separate_contexts (position_set *s, int possible_contexts) +{ + int separate_context = 0; + unsigned int j; + + for (j = 0; j < s->nelem; ++j) + { + if ((possible_contexts & CTX_NEWLINE) + && PREV_NEWLINE_DEPENDENT(s->elems[j].constraint)) + separate_context |= CTX_NEWLINE; + if ((possible_contexts & CTX_LETTER) + && PREV_LETTER_DEPENDENT(s->elems[j].constraint)) + separate_context |= CTX_LETTER; + } + + return separate_context; +} + + /* 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. @@ -2104,10 +2208,9 @@ 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 separate_contexts; /* Context wanted by some position. */ int *o_nullable; int *o_nfirst, *o_nlast; position *o_firstpos, *o_lastpos; @@ -2126,25 +2229,22 @@ d->searchflag = searchflag; - MALLOC(nullable, int, d->depth); + MALLOC(nullable, d->depth); o_nullable = nullable; - MALLOC(nfirstpos, int, d->depth); + MALLOC(nfirstpos, d->depth); o_nfirst = nfirstpos; - MALLOC(firstpos, position, d->nleaves); + MALLOC(firstpos, d->nleaves); o_firstpos = firstpos, firstpos += d->nleaves; - MALLOC(nlastpos, int, d->depth); + MALLOC(nlastpos, d->depth); o_nlast = nlastpos; - MALLOC(lastpos, position, d->nleaves); + MALLOC(lastpos, d->nleaves); o_lastpos = lastpos, lastpos += d->nleaves; - CALLOC(nalloc, int, d->tindex); - MALLOC(merged.elems, position, 2 * d->nleaves); + alloc_position_set(&merged, d->nleaves); - CALLOC(d->follows, position_set, d->tindex); + CALLOC(d->follows, d->tindex); for (i = 0; i < d->tindex; ++i) -#ifdef DEBUG - { /* Nonsyntactic #ifdef goo... */ -#endif + { switch (d->tokens[i]) { case EMPTY: @@ -2165,8 +2265,6 @@ for (j = 0; j < nlastpos[-1]; ++j) { merge(&tmp, &d->follows[pos[j].index], &merged); - REALLOC_IF_NECESSARY(d->follows[pos[j].index].elems, position, - nalloc[pos[j].index], merged.nelem - 1); copy(&merged, &d->follows[pos[j].index]); } @@ -2185,8 +2283,6 @@ for (j = 0; j < nlastpos[-2]; ++j) { merge(&tmp, &d->follows[pos[j].index], &merged); - REALLOC_IF_NECESSARY(d->follows[pos[j].index].elems, position, - nalloc[pos[j].index], merged.nelem - 1); copy(&merged, &d->follows[pos[j].index]); } @@ -2246,8 +2342,7 @@ firstpos->constraint = lastpos->constraint = NO_CONSTRAINT; /* Allocate the follow set for this position. */ - nalloc[i] = 1; - MALLOC(d->follows[i].elems, position, nalloc[i]); + alloc_position_set(&d->follows[i], 1); break; } #ifdef DEBUG @@ -2269,8 +2364,8 @@ prtok(d->tokens[lastpos[j].index]); } putc('\n', stderr); - } #endif + } /* For each follow set that is the follow set of a real position, replace it with its epsilon closure. */ @@ -2295,8 +2390,6 @@ #endif copy(&d->follows[i], &merged); epsclosure(&merged, d); - if (d->follows[i].nelem < merged.nelem) - REALLOC(d->follows[i].elems, position, merged.nelem); copy(&merged, &d->follows[i]); } @@ -2307,27 +2400,23 @@ 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; - /* Build the initial state. */ d->salloc = 1; d->sindex = 0; - MALLOC(d->states, dfa_state, d->salloc); - state_index(d, &merged, wants_newline, 0); + MALLOC(d->states, d->salloc); + + separate_contexts = state_separate_contexts(&merged, CTX_NEWLINE); + state_index(d, &merged, separate_contexts); free(o_nullable); free(o_nfirst); free(o_firstpos); free(o_nlast); free(o_lastpos); - free(nalloc); free(merged.elems); } + /* Find, for each character, the transition out of state s of d, and store it in the appropriate slot of trans. @@ -2361,7 +2450,7 @@ void dfastate (int s, struct dfa *d, int trans[]) { - position_set *grps; /* As many as will ever be needed. */ + leaf_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. */ @@ -2371,33 +2460,18 @@ 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 possible_contexts; /* Contexts that this group can match. */ + int separate_contexts; /* Context that new state wants to know. */ 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. */ -#if MBS_SUPPORT int next_isnt_1st_byte = 0; /* Flag if we can't add state0. */ -#endif 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); - } + MALLOC (grps, NOTCHAR); + MALLOC (labels, NOTCHAR); zeroset(matches); @@ -2408,23 +2482,19 @@ setbit(d->tokens[pos.index], matches); else if (d->tokens[pos.index] >= CSET) copyset(d->charclasses[d->tokens[pos.index] - CSET], matches); -#if MBS_SUPPORT - else if (d->tokens[pos.index] == ANYCHAR - || d->tokens[pos.index] == MBCSET) - /* MB_CUR_MAX > 1 */ + else if (MBS_SUPPORT + && (d->tokens[pos.index] == ANYCHAR + || d->tokens[pos.index] == MBCSET)) + /* MB_CUR_MAX > 1 */ { /* ANYCHAR and MBCSET must match with a single character, so we 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, position, - d->states[s].elems.nelem); - } + alloc_position_set(&d->states[s].mbps, 1); insert(pos, &(d->states[s].mbps)); continue; } -#endif /* MBS_SUPPORT */ else continue; @@ -2433,18 +2503,20 @@ if (pos.constraint != 0xFF) { if (! MATCHES_NEWLINE_CONTEXT(pos.constraint, - d->states[s].newline, 1)) + d->states[s].context & CTX_NEWLINE, + CTX_NEWLINE)) clrbit(eolbyte, matches); if (! MATCHES_NEWLINE_CONTEXT(pos.constraint, - d->states[s].newline, 0)) + d->states[s].context & CTX_NEWLINE, 0)) for (j = 0; j < CHARCLASS_INTS; ++j) matches[j] &= newline[j]; if (! MATCHES_LETTER_CONTEXT(pos.constraint, - d->states[s].letter, 1)) + d->states[s].context & CTX_LETTER, + CTX_LETTER)) for (j = 0; j < CHARCLASS_INTS; ++j) matches[j] &= ~letters[j]; if (! MATCHES_LETTER_CONTEXT(pos.constraint, - d->states[s].letter, 0)) + d->states[s].context & CTX_LETTER, 0)) for (j = 0; j < CHARCLASS_INTS; ++j) matches[j] &= letters[j]; @@ -2488,14 +2560,16 @@ { copyset(leftovers, labels[ngrps]); copyset(intersect, labels[j]); - MALLOC(grps[ngrps].elems, position, d->nleaves); - copy(&grps[j], &grps[ngrps]); + 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. */ @@ -2509,40 +2583,34 @@ { copyset(matches, labels[ngrps]); zeroset(matches); - MALLOC(grps[ngrps].elems, position, d->nleaves); + 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, position, d->nleaves); - MALLOC(tmp.elems, position, 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; - } + /* Find the state(s) corresponding to the positions of state 0. */ copy(&d->states[0].elems, &follows); - state = state_index(d, &follows, 0, 0); - if (wants_newline) - state_newline = state_index(d, &follows, 1, 0); + separate_contexts = state_separate_contexts(&follows, CTX_ANY); + state = state_index(d, &follows, 0); + 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[eolbyte] = state_newline; @@ -2558,10 +2626,9 @@ /* 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 MBS_SUPPORT if (d->mb_cur_max > 1) { /* If a token in follows.elems is not 1st byte of a multibyte @@ -2592,42 +2659,27 @@ } } } -#endif /* If we are building a searching matcher, throw in the positions of state 0 as well. */ -#if MBS_SUPPORT - if (d->searchflag && (d->mb_cur_max == 1 || !next_isnt_1st_byte)) -#else - if (d->searchflag) -#endif + if (d->searchflag + && (! 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); /* 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, possible_contexts); /* 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); + state = state_index(d, &follows, 0); + 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; @@ -2687,17 +2739,14 @@ /* 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; + 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, int, NOTCHAR); + MALLOC(trans, NOTCHAR); dfastate(s, d, trans); /* Now go through the new transition table, and make sure that the trans @@ -2710,11 +2759,11 @@ while (trans[i] >= d->tralloc) d->tralloc *= 2; - REALLOC(d->realtrans, int *, d->tralloc + 1); + REALLOC(d->realtrans, d->tralloc + 1); d->trans = d->realtrans + 1; - REALLOC(d->fails, int *, d->tralloc); - REALLOC(d->success, int, d->tralloc); - REALLOC(d->newlines, int, 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; @@ -2738,15 +2787,14 @@ { d->tralloc = 1; d->trcount = 0; - CALLOC(d->realtrans, int *, d->tralloc + 1); + CALLOC(d->realtrans, d->tralloc + 1); d->trans = d->realtrans + 1; - CALLOC(d->fails, int *, d->tralloc); - MALLOC(d->success, int, d->tralloc); - MALLOC(d->newlines, int, d->tralloc); + CALLOC(d->fails, d->tralloc); + MALLOC(d->success, d->tralloc); + MALLOC(d->newlines, d->tralloc); build_state(0, d); } -#if MBS_SUPPORT /* Multibyte character handling sub-routines for dfaexec. */ /* Initial state may encounter the byte which is not a single byte character @@ -2783,11 +2831,11 @@ while (new_state >= d->tralloc) d->tralloc *= 2; - REALLOC(d->realtrans, int *, d->tralloc + 1); + REALLOC(d->realtrans, d->tralloc + 1); d->trans = d->realtrans + 1; - REALLOC(d->fails, int *, d->tralloc); - REALLOC(d->success, int, d->tralloc); - REALLOC(d->newlines, int, 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; @@ -2850,51 +2898,42 @@ return rval; } -/* Check whether period can match or not in the current context. If it can, - return the amount of the bytes with which period can match, otherwise - return 0. - `pos' is the position of the period. `idx' is the index from the - buf_begin, and it is the current position in the buffer. */ +/* Match a "." against the current context. buf_begin[IDX] is the + 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) { - 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]; - /* Check context. */ + /* Check syntax bits. */ if (wc == (wchar_t)eolbyte) { if (!(syntax_bits & RE_DOT_NEWLINE)) return 0; - newline = 1; } 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; } -/* Check whether bracket expression can match or not in the current context. - If it can, return the amount of the bytes with which expression can match, - otherwise return 0. - `pos' is the position of the bracket expression. `idx' is the index - from the buf_begin, and it is the current position in the buffer. */ +/* Match a bracket expression against the current context. + buf_begin[IDX] is the current position. + 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) { @@ -2904,34 +2943,29 @@ with which this operator match. */ int op_len; /* Length of the operator. */ char buffer[128]; - wchar_t wcbuf[6]; /* Pointer to the structure to which we are currently refering. */ struct mb_char_classes *work_mbc; - int newline = 0; - int letter = 0; + int context; wchar_t wc; /* Current refering character. */ wc = inputwcs[idx]; - /* Check context. */ + /* Check syntax bits. */ if (wc == (wchar_t)eolbyte) { if (!(syntax_bits & RE_DOT_NEWLINE)) return 0; - newline = 1; } 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. */ @@ -2981,17 +3015,11 @@ } } - wcbuf[0] = wc; - wcbuf[1] = wcbuf[3] = wcbuf[5] = '\0'; - /* match with a range? */ for (i = 0; inranges; i++) { - wcbuf[2] = work_mbc->range_sts[i]; - wcbuf[4] = work_mbc->range_ends[i]; - - if (wcscoll(wcbuf, wcbuf+2) >= 0 && - wcscoll(wcbuf+4, wcbuf) >= 0) + if (work_mbc->range_sts[i] <= wc && + wc <= work_mbc->range_ends[i]) goto charset_matched; } @@ -3021,7 +3049,7 @@ int i; int* rarray; - MALLOC(rarray, int, 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]; @@ -3141,8 +3169,7 @@ } /* This state has some operators which can match a multibyte character. */ - follows.nelem = 0; - MALLOC(follows.elems, position, 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. @@ -3151,12 +3178,11 @@ 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)); + 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); for (i = 0; i < nelem ; i++) @@ -3169,7 +3195,7 @@ } wc = inputwcs[*pp - mbclen - buf_begin]; - s1 = state_index(d, &follows, wc == L'\n', iswalnum(wc)); + s1 = state_index(d, &follows, wchar_context (wc)); realloc_trans_if_necessary(d, s1); } free(match_lens); @@ -3177,11 +3203,13 @@ return s1; } + /* Initialize mblen_buf and inputwcs with data from the next line. */ static void prepare_wc_buf (const char *begin, const char *end) { +#if MBS_SUPPORT unsigned char eol = eolbyte; size_t remain_bytes, i; @@ -3222,9 +3250,8 @@ buf_end = (unsigned char *) (begin + i); mblen_buf[i] = 0; inputwcs[i] = 0; /* sentinel */ -} - #endif /* MBS_SUPPORT */ +} /* Search through a buffer looking for a match to the given struct dfa. Find the first occurrence of a string matching the regexp in the @@ -3233,33 +3260,21 @@ 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, int *count, int *backref) { - int s, s1, tmp; /* Current state. */ + int s, s1; /* Current state. */ unsigned char const *p; /* Current input character. */ int **trans, *t; /* Copy of d->trans so it can be optimized into a register. */ 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); @@ -3270,21 +3285,18 @@ saved_end = *(unsigned char *) end; *end = eol; -#if MBS_SUPPORT if (d->mb_cur_max > 1) { - MALLOC(mblen_buf, unsigned char, end - begin + 2); - MALLOC(inputwcs, wchar_t, end - begin + 2); + MALLOC(mblen_buf, end - begin + 2); + MALLOC(inputwcs, end - begin + 2); memset(&mbs, 0, sizeof(mbstate_t)); prepare_wc_buf ((const char *) p, end); } -#endif /* MBS_SUPPORT */ for (;;) { -#if MBS_SUPPORT if (d->mb_cur_max > 1) - while ((t = trans[s])) + while ((t = trans[s]) != NULL) { if (p > buf_end) break; @@ -3316,15 +3328,18 @@ trans = d->trans; } else -#endif /* MBS_SUPPORT */ - while ((t = trans[s]) != 0) { /* hand-optimized loop */ - s1 = t[*p++]; - if ((t = trans[s1]) == 0) { - tmp = s ; s = s1 ; s1 = tmp ; /* swap */ - break; + { + while ((t = trans[s]) != NULL) + { + s1 = t[*p++]; + if ((t = trans[s1]) == NULL) + { + int tmp = s; s = s1; s1 = tmp; /* swap */ + break; + } + s = t[*p++]; + } } - s = t[*p++]; - } if (s >= 0 && (char *) p <= end && d->fails[s]) { @@ -3332,19 +3347,16 @@ { if (backref) *backref = (d->states[s].backref != 0); -#if MBS_SUPPORT if (d->mb_cur_max > 1) { free(mblen_buf); free(inputwcs); } -#endif /* MBS_SUPPORT */ *end = saved_end; return (char *) p; } s1 = s; -#if MBS_SUPPORT if (d->mb_cur_max > 1) { /* Can match with a multibyte character (and multicharacter @@ -3353,8 +3365,7 @@ trans = d->trans; } else -#endif /* MBS_SUPPORT */ - s = d->fails[s][*p++]; + s = d->fails[s][*p++]; continue; } @@ -3364,22 +3375,18 @@ if (count) ++*count; -#if MBS_SUPPORT if (d->mb_cur_max > 1) prepare_wc_buf ((const char *) p, end); -#endif } /* Check if we've run off the end of the buffer. */ if ((char *) p > end) { -#if MBS_SUPPORT if (d->mb_cur_max > 1) { free(mblen_buf); free(inputwcs); } -#endif /* MBS_SUPPORT */ *end = saved_end; return NULL; } @@ -3391,7 +3398,7 @@ continue; } - if (p[-1] == eol && newline) + if (p[-1] == eol && allow_nl) { s = d->newlines[s1]; continue; @@ -3401,7 +3408,6 @@ } } -#if MBS_SUPPORT static void free_mbdata (struct dfa *d) { @@ -3432,7 +3438,6 @@ d->mbcsets = NULL; d->nmbcsets = 0; } -#endif /* Initialize the components of a dfa that the other routines don't initialize for themselves. */ @@ -3442,29 +3447,28 @@ memset (d, 0, sizeof *d); d->calloc = 1; - MALLOC(d->charclasses, charclass, d->calloc); + MALLOC(d->charclasses, d->calloc); d->talloc = 1; - MALLOC(d->tokens, token, d->talloc); + MALLOC(d->tokens, d->talloc); -#if MBS_SUPPORT d->mb_cur_max = MB_CUR_MAX; + if (d->mb_cur_max > 1) { d->nmultibyte_prop = 1; - MALLOC(d->multibyte_prop, int, d->nmultibyte_prop); + MALLOC(d->multibyte_prop, d->nmultibyte_prop); d->mbcsets_alloc = 1; - MALLOC(d->mbcsets, struct mb_char_classes, d->mbcsets_alloc); + MALLOC(d->mbcsets, d->mbcsets_alloc); } -#endif } -#if MBS_SUPPORT static void dfaoptimize (struct dfa *d) { unsigned int i; - if (!using_utf8()) + + if (!MBS_SUPPORT || !using_utf8()) return; for (i = 0; i < d->tindex; ++i) @@ -3485,7 +3489,6 @@ free_mbdata (d); d->mb_cur_max = 1; } -#endif /* Parse and analyze a single string of the given length. */ void @@ -3494,9 +3497,7 @@ dfainit(d); dfaparse(s, len, d); dfamust(d); -#if MBS_SUPPORT dfaoptimize(d); -#endif dfaanalyze(d, searchflag); } @@ -3510,16 +3511,13 @@ free(d->charclasses); free(d->tokens); -#if MBS_SUPPORT if (d->mb_cur_max > 1) free_mbdata(d); -#endif /* MBS_SUPPORT */ for (i = 0; i < d->sindex; ++i) { free(d->states[i].elems.elems); -#if MBS_SUPPORT - free(d->states[i].mbps.elems); -#endif /* MBS_SUPPORT */ + if (MBS_SUPPORT) + free(d->states[i].mbps.elems); } free(d->states); for (i = 0; i < d->tindex; ++i) @@ -3627,23 +3625,15 @@ 'psi|epsilon' is likelier)? */ static char * -icatalloc (char const *old, char const *new) +icatalloc (char *old, char const *new) { char *result; - size_t oldsize, newsize; - - newsize = (new == NULL) ? 0 : strlen(new); - if (old == NULL) - oldsize = 0; - else if (newsize == 0) - return (char *) old; - else oldsize = strlen(old); - if (old == NULL) - result = malloc(newsize + 1); - else - result = realloc((void *) old, oldsize + newsize + 1); - if (result != NULL && new != NULL) - (void) strcpy(result + oldsize, new); + size_t oldsize = old == NULL ? 0 : strlen (old); + size_t newsize = new == NULL ? 0 : strlen (new); + if (newsize == 0) + return old; + result = xrealloc (old, oldsize + newsize + 1); + strcpy (result + oldsize, new); return result; } @@ -3653,7 +3643,7 @@ return icatalloc (NULL, string); } -static char * +static char * _GL_ATTRIBUTE_PURE istrstr (char const *lookin, char const *lookfor) { char const *cp; @@ -3714,9 +3704,7 @@ cpp[i] = NULL; } /* Add the new string. */ - cpp = realloc((char *) cpp, (i + 2) * sizeof *cpp); - if (cpp == NULL) - return NULL; + REALLOC(cpp, i + 2); cpp[i] = new; cpp[i + 1] = NULL; return cpp; @@ -3753,8 +3741,16 @@ } if (len == 0) continue; - if ((cpp = enlist(cpp, lcp, len)) == NULL) - break; + { + char **p = enlist (cpp, lcp, len); + if (p == NULL) + { + freelist (cpp); + cpp = NULL; + break; + } + cpp = p; + } } return cpp; } @@ -3841,21 +3837,16 @@ result = empty_string; exact = 0; - musts = malloc((d->tindex + 1) * sizeof *musts); - if (musts == NULL) - return; + 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 = malloc(sizeof *mp[i].in); - mp[i].left = malloc(2); - mp[i].right = malloc(2); - mp[i].is = malloc(2); - if (mp[i].in == NULL || mp[i].left == NULL || - mp[i].right == NULL || mp[i].is == NULL) - goto done; + 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; } @@ -3962,13 +3953,8 @@ char *tp; tp = icpyalloc(lmp->right); - if (tp == NULL) - goto done; tp = icatalloc(tp, rmp->left); - if (tp == NULL) - goto done; - lmp->in = enlist(lmp->in, tp, - strlen(tp)); + lmp->in = enlist(lmp->in, tp, strlen(tp)); free(tp); if (lmp->in == NULL) goto done; @@ -4009,10 +3995,9 @@ goto done; } else if (t >= CSET -#if MBS_SUPPORT + || !MBS_SUPPORT || t == ANYCHAR || t == MBCSET -#endif /* MBS_SUPPORT */ ) { /* easy enough */ @@ -4045,9 +4030,9 @@ done: if (strlen(result)) { - MALLOC(dm, struct dfamust, 1); + MALLOC(dm, 1); dm->exact = exact; - MALLOC(dm->must, char, strlen(result) + 1); + MALLOC(dm->must, strlen(result) + 1); strcpy(dm->must, result); dm->next = d->musts; d->musts = dm; @@ -4070,7 +4055,7 @@ return xmalloc (sizeof (struct dfa)); } -struct dfamust * +struct dfamust * _GL_ATTRIBUTE_PURE dfamusts (struct dfa const *d) { return d->musts; diff -urN gawk-4.0.0/dfa.h gawk-4.0.1/dfa.h --- gawk-4.0.0/dfa.h 2011-01-27 23:14:53.000000000 +0200 +++ gawk-4.0.1/dfa.h 2012-03-28 21:47:53.000000000 +0200 @@ -22,6 +22,13 @@ # 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 @@ -99,4 +106,4 @@ /* 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 void dfaerror (const char *) __attribute__ ((noreturn)); diff -urN gawk-4.0.0/doc/ChangeLog gawk-4.0.1/doc/ChangeLog --- gawk-4.0.0/doc/ChangeLog 2011-06-24 11:13:34.000000000 +0300 +++ gawk-4.0.1/doc/ChangeLog 2012-03-28 22:02:36.000000000 +0200 @@ -1,3 +1,53 @@ +2012-03-28 Arnold D. Robbins + + * 4.0.1: Release tar ball made. + +2012-02-10 Arnold D. Robbins + + * gawk.texi, awkcard.in: Bump patch level. + * texinfo.tex: Updated from Texinfo CVS. + +2011-12-06 Arnold D. Robbins + + * gawk.texi: Various typo fixes from mailing list. + +2011-11-10 Arnold D. Robbins + + * gawk.1: Fix some .BR to be .B. + +2011-11-08 Arnold D. Robbins + + * gawk.texi: Further improvement in the discussion of sorted array + traversal. Some sections reordered and text edited to suit. + +2011-11-06 Arnold D. Robbins + + * gawk.texi: Try to improve discussion of sorted array + traversal. + +2011-09-24 Arnold D. Robbins + + * gawk.1: Fix some spelling errors. Thanks to + Jeroen Schot . + * gawk.texi: Some minor fixes. + +2011-07-28 Arnold D. Robbins + + * gawk.texi (Gory Details): Restore text on historical behavior + etc. and add explanation on gawk 4.0.x. + +2011-07-17 Arnold D. Robbins + + * gawk.texi: Add reference in node Expressions to node Precedence, + based on suggestion from Dan Jacobson dated 4 Jun 2001. + +2011-07-17 Paul Eggert + + * gawk.texi: Warn up-front (indirectly) that plain gawk is not + compatible with SVR4 awk and with POSIX awk. Describe how + gawk differs from the GNU standard in its interpretation of + POSIXLY_CORRECT. (From mail dated 15 May 2001). + 2011-06-24 Arnold D. Robbins * Makefile.am (EXTRA_DIST): Add ChangeLog.0. diff -urN gawk-4.0.0/doc/Makefile.in gawk-4.0.1/doc/Makefile.in --- gawk-4.0.0/doc/Makefile.in 2011-06-24 11:16:16.000000000 +0300 +++ gawk-4.0.1/doc/Makefile.in 2012-03-28 22:03:23.000000000 +0200 @@ -182,7 +182,6 @@ SHELL = @SHELL@ SOCKET_LIBS = @SOCKET_LIBS@ STRIP = @STRIP@ -U = @U@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ diff -urN gawk-4.0.0/doc/awkcard.in gawk-4.0.1/doc/awkcard.in --- gawk-4.0.0/doc/awkcard.in 2011-05-19 16:54:19.000000000 +0300 +++ gawk-4.0.1/doc/awkcard.in 2012-03-28 21:47:53.000000000 +0200 @@ -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 @@ -101,7 +102,7 @@ .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 @@ -1913,7 +1914,7 @@ .ES .nf \*(CDHost: \*(FCftp.gnu.org\*(FR -File: \*(FC/gnu/gawk/gawk-4.0.0.tar.gz\fP +File: \*(FC/gnu/gawk/gawk-4.0.1.tar.gz\fP .in +.2i .fi GNU \*(AK (\*(GK). There may be a later version. diff -urN gawk-4.0.0/doc/gawk.1 gawk-4.0.1/doc/gawk.1 --- gawk-4.0.0/doc/gawk.1 2011-06-01 23:06:26.000000000 +0300 +++ gawk-4.0.1/doc/gawk.1 2012-03-28 21:47:53.000000000 +0200 @@ -14,7 +14,7 @@ . if \w'\(rq' .ds rq "\(rq . \} .\} -.TH GAWK 1 "May 29 2011" "Free Software Foundation" "Utility Commands" +.TH GAWK 1 "Nov 10 2011" "Free Software Foundation" "Utility Commands" .SH NAME gawk \- pattern scanning and processing language .SH SYNOPSIS @@ -782,7 +782,7 @@ this case, the regular expression describes the fields themselves, instead of the text that separates the fields. Assigning a new value to -.BR FS +.B FS or .B FIELDWIDTHS overrides the use of @@ -2089,7 +2089,7 @@ below.) .PP The -.BR getline +.B getline command returns 1 on success, 0 on end of file, and \-1 on an error. Upon an error, .B ERRNO @@ -2234,9 +2234,9 @@ and .BR %X , supply a leading -.BR 0x +.B 0x or -.BR 0X +.B 0X for a nonzero result. For @@ -2491,7 +2491,7 @@ .I s unchanged. The optional string .I how -controls the direction and the comparsion mode. +controls the direction and the comparison mode. Valid values for .I how are @@ -2517,7 +2517,7 @@ The purpose of the optional string .I how is the same as described in -.BR asort() +.B asort() above. .TP \fBgensub(\fIr\fB, \fIs\fB, \fIh \fR[\fB, \fIt\fR]\fB)\fR @@ -2589,7 +2589,7 @@ (This must be typed as \fB"\e\e&"\fP; see \*(EP for a fuller discussion of the rules for -.BR &'s +.BR & 's and backslashes in the replacement text of .BR sub() , .BR gsub() , @@ -3275,7 +3275,7 @@ array; the .BR \ea , and -.BR \ev +.B \ev escape sequences (done originally in .I gawk and fed back into the Bell Laboratories version); the @@ -3775,7 +3775,7 @@ Run an external command for particular lines of data: .ft B - tail -f access_log | + tail \-f access_log | awk '/myhome.html/ { system("nmap " $1 ">> logdir/myhome.html") }' .ft R .fi diff -urN gawk-4.0.0/doc/gawk.texi gawk-4.0.1/doc/gawk.texi --- gawk-4.0.0/doc/gawk.texi 2011-06-13 22:26:13.000000000 +0300 +++ gawk-4.0.1/doc/gawk.texi 2012-03-28 21:47:54.000000000 +0200 @@ -20,9 +20,9 @@ @c applies to and all the info about who's publishing this edition @c These apply across the board. -@set UPDATE-MONTH June, 2011 +@set UPDATE-MONTH February, 2012 @set VERSION 4.0 -@set PATCHLEVEL 0 +@set PATCHLEVEL 1 @set FSF @@ -143,7 +143,7 @@ @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 @@ -306,439 +306,399 @@ * Index:: Concept and Variable Index. @detailmenu -* History:: The history of @command{gawk} and - @command{awk}. -* Names:: What name to use to find @command{awk}. -* This Manual:: Using this @value{DOCUMENT}. Includes - sample input files that you can use. -* Conventions:: Typographical Conventions. -* Manual History:: Brief history of the GNU project and - this @value{DOCUMENT}. -* How To Contribute:: Helping to save the world. -* Acknowledgments:: Acknowledgments. -* Running gawk:: How to run @command{gawk} programs; - includes command-line syntax. -* One-shot:: Running a short throwaway @command{awk} - program. -* Read Terminal:: Using no input files (input from - terminal instead). -* Long:: Putting permanent @command{awk} - programs in files. -* Executable Scripts:: Making self-contained @command{awk} - programs. -* Comments:: Adding documentation to @command{gawk} - programs. -* Quoting:: More discussion of shell quoting - issues. -* DOS Quoting:: Quoting in Windows Batch Files. -* Sample Data Files:: Sample data files for use in the - @command{awk} programs illustrated in - this @value{DOCUMENT}. -* Very Simple:: A very simple example. -* Two Rules:: A less simple one-line example using - two rules. -* More Complex:: A more complex example. -* Statements/Lines:: Subdividing or combining statements - into lines. -* Other Features:: Other Features of @command{awk}. -* When:: When to use @command{gawk} and when to - use other things. -* Command Line:: How to run @command{awk}. -* Options:: Command-line options and their - meanings. -* Other Arguments:: Input file names and variable - assignments. -* Naming Standard Input:: How to specify standard input with - other files. -* Environment Variables:: The environment variables - @command{gawk} uses. -* AWKPATH Variable:: Searching directories for @command{awk} - programs. -* Other Environment Variables:: The environment variables. -* Exit Status:: @command{gawk}'s exit status. -* Include Files:: Including other files into your - program. -* Obsolete:: Obsolete Options and/or features. -* Undocumented:: Undocumented Options and Features. -* Regexp Usage:: How to Use Regular Expressions. -* Escape Sequences:: How to write nonprinting characters. -* Regexp Operators:: Regular Expression Operators. -* Bracket Expressions:: What can go between @samp{[...]}. -* GNU Regexp Operators:: Operators specific to GNU software. -* Case-sensitivity:: How to do case-insensitive matching. -* Leftmost Longest:: How much text matches. -* Computed Regexps:: Using Dynamic Regexps. -* Records:: Controlling how data is split into - records. -* Fields:: An introduction to fields. -* Nonconstant Fields:: Nonconstant Field Numbers. -* Changing Fields:: Changing the Contents of a Field. -* Field Separators:: The field separator and how to change - it. -* Default Field Splitting:: How fields are normally separated. -* Regexp Field Splitting:: Using regexps as the field separator. -* Single Character Fields:: Making each character a separate field. -* Command Line Field Separator:: Setting @code{FS} from the - command-line. -* Field Splitting Summary:: Some final points and a summary table. -* Constant Size:: Reading constant width data. -* Splitting By Content:: Defining Fields By Content -* Multiple Line:: Reading multi-line records. -* Getline:: Reading files under explicit program - control using the @code{getline} - function. -* Plain Getline:: Using @code{getline} with no arguments. -* Getline/Variable:: Using @code{getline} into a variable. -* Getline/File:: Using @code{getline} from a file. -* Getline/Variable/File:: Using @code{getline} into a variable - from a file. -* Getline/Pipe:: Using @code{getline} from a pipe. -* Getline/Variable/Pipe:: Using @code{getline} into a variable - from a pipe. -* Getline/Coprocess:: Using @code{getline} from a coprocess. -* Getline/Variable/Coprocess:: Using @code{getline} into a variable - from a coprocess. -* Getline Notes:: Important things to know about - @code{getline}. -* Getline Summary:: Summary of @code{getline} Variants. -* Command line directories:: What happens if you put a directory on - the command line. -* Print:: The @code{print} statement. -* Print Examples:: Simple examples of @code{print} - statements. -* Output Separators:: The output separators and how to change - them. -* OFMT:: Controlling Numeric Output With - @code{print}. -* Printf:: The @code{printf} statement. -* Basic Printf:: Syntax of the @code{printf} statement. -* Control Letters:: Format-control letters. -* Format Modifiers:: Format-specification modifiers. -* Printf Examples:: Several examples. -* Redirection:: How to redirect output to multiple - files and pipes. -* Special Files:: File name interpretation in - @command{gawk}. @command{gawk} allows - access to inherited file descriptors. -* Special FD:: Special files for I/O. -* Special Network:: Special files for network - communications. -* Special Caveats:: Things to watch out for. -* Close Files And Pipes:: Closing Input and Output Files and - Pipes. -* Values:: Constants, Variables, and Regular - Expressions. -* Constants:: String, numeric and regexp constants. -* Scalar Constants:: Numeric and string constants. -* Nondecimal-numbers:: What are octal and hex numbers. -* Regexp Constants:: Regular Expression constants. -* Using Constant Regexps:: When and how to use a regexp constant. -* Variables:: Variables give names to values for - later use. -* Using Variables:: Using variables in your programs. -* Assignment Options:: Setting variables on the command-line - and a summary of command-line syntax. - This is an advanced method of input. -* Conversion:: The conversion of strings to numbers - and vice versa. -* All Operators:: @command{gawk}'s operators. -* Arithmetic Ops:: Arithmetic operations (@samp{+}, - @samp{-}, etc.) -* Concatenation:: Concatenating strings. -* Assignment Ops:: Changing the value of a variable or a - field. -* Increment Ops:: Incrementing the numeric value of a - variable. -* Truth Values and Conditions:: Testing for true and false. -* Truth Values:: What is ``true'' and what is ``false''. -* Typing and Comparison:: How variables acquire types and how - this affects comparison of numbers and - strings with @samp{<}, etc. -* Variable Typing:: String type versus numeric type. -* Comparison Operators:: The comparison operators. -* POSIX String Comparison:: String comparison with POSIX rules. -* Boolean Ops:: Combining comparison expressions using - boolean operators @samp{||} (``or''), - @samp{&&} (``and'') and @samp{!} - (``not''). -* Conditional Exp:: Conditional expressions select between - two subexpressions under control of a - third subexpression. -* Function Calls:: A function call is an expression. -* Precedence:: How various operators nest. -* Locales:: How the locale affects things. -* Pattern Overview:: What goes into a pattern. -* Regexp Patterns:: Using regexps as patterns. -* Expression Patterns:: Any expression can be used as a - pattern. -* Ranges:: Pairs of patterns specify record - ranges. -* BEGIN/END:: Specifying initialization and cleanup - rules. -* Using BEGIN/END:: How and why to use BEGIN/END rules. -* I/O And BEGIN/END:: I/O issues in BEGIN/END rules. -* BEGINFILE/ENDFILE:: Two special patterns for advanced - control. -* Empty:: The empty pattern, which matches every - record. -* Using Shell Variables:: How to use shell variables with - @command{awk}. -* Action Overview:: What goes into an action. -* Statements:: Describes the various control - statements in detail. -* If Statement:: Conditionally execute some - @command{awk} statements. -* While Statement:: Loop until some condition is satisfied. -* Do Statement:: Do specified action while looping until - some condition is satisfied. -* For Statement:: Another looping statement, that - provides initialization and increment - clauses. -* Switch Statement:: Switch/case evaluation for conditional - execution of statements based on a - value. -* Break Statement:: Immediately exit the innermost - enclosing loop. -* Continue Statement:: Skip to the end of the innermost - enclosing loop. -* Next Statement:: Stop processing the current input - record. -* Nextfile Statement:: Stop processing the current file. -* Exit Statement:: Stop execution of @command{awk}. -* Built-in Variables:: Summarizes the built-in variables. -* User-modified:: Built-in variables that you change to - control @command{awk}. -* Auto-set:: Built-in variables where @command{awk} - gives you information. -* ARGC and ARGV:: Ways to use @code{ARGC} and - @code{ARGV}. -* Array Basics:: The basics of arrays. -* Array Intro:: Introduction to Arrays -* Reference to Elements:: How to examine one element of an array. -* Assigning Elements:: How to change an element of an array. -* Array Example:: Basic Example of an Array -* Scanning an Array:: A variation of the @code{for} - statement. It loops through the indices - of an array's existing elements. -* Delete:: The @code{delete} statement removes an - element from an array. -* Numeric Array Subscripts:: How to use numbers as subscripts in - @command{awk}. -* Uninitialized Subscripts:: Using Uninitialized variables as - subscripts. -* Multi-dimensional:: Emulating multidimensional arrays in - @command{awk}. -* Multi-scanning:: Scanning multidimensional arrays. -* Arrays of Arrays:: True multidimensional arrays. -* Built-in:: Summarizes the built-in functions. -* Calling Built-in:: How to call built-in functions. -* Numeric Functions:: Functions that work with numbers, - including @code{int()}, @code{sin()} - and @code{rand()}. -* String Functions:: Functions for string manipulation, such - as @code{split()}, @code{match()} and - @code{sprintf()}. -* Gory Details:: More than you want to know about - @samp{\} and @samp{&} with - @code{sub()}, @code{gsub()}, and - @code{gensub()}. -* I/O Functions:: Functions for files and shell commands. -* Time Functions:: Functions for dealing with timestamps. -* Bitwise Functions:: Functions for bitwise operations. -* Type Functions:: Functions for type information. -* I18N Functions:: Functions for string translation. -* User-defined:: Describes User-defined functions in - detail. -* Definition Syntax:: How to write definitions and what they - mean. -* Function Example:: An example function definition and what - it does. -* Function Caveats:: Things to watch out for. -* Calling A Function:: Don't use spaces. -* Variable Scope:: Controlling variable scope. -* Pass By Value/Reference:: Passing parameters. -* Return Statement:: Specifying the value a function - returns. -* Dynamic Typing:: How variable types can change at - runtime. -* Indirect Calls:: Choosing the function to call at - runtime. -* I18N and L10N:: Internationalization and Localization. -* Explaining gettext:: How GNU @code{gettext} works. -* Programmer i18n:: Features for the programmer. -* Translator i18n:: Features for the translator. -* String Extraction:: Extracting marked strings. -* Printf Ordering:: Rearranging @code{printf} arguments. -* I18N Portability:: @command{awk}-level portability issues. -* I18N Example:: A simple i18n example. -* Gawk I18N:: @command{gawk} is also - internationalized. -* Nondecimal Data:: Allowing nondecimal input data. -* Array Sorting:: Facilities for controlling array - traversal and sorting arrays. -* Controlling Array Traversal:: How to use PROCINFO["sorted_in"]. -* Controlling Scanning With A Function:: Using a function to control scanning. -* Controlling Scanning:: Controlling the order in which arrays - are scanned. -* Array Sorting Functions:: How to use @code{asort()} and - @code{asorti()}. -* Two-way I/O:: Two-way communications with another - process. -* TCP/IP Networking:: Using @command{gawk} for network - programming. -* Profiling:: Profiling your @command{awk} programs. -* Library Names:: How to best name private global - variables in library functions. -* General Functions:: Functions that are of general use. -* Strtonum Function:: A replacement for the built-in - @code{strtonum()} function. -* Assert Function:: A function for assertions in - @command{awk} programs. -* Round Function:: A function for rounding if - @code{sprintf()} does not do it - correctly. -* Cliff Random Function:: The Cliff Random Number Generator. -* Ordinal Functions:: Functions for using characters as - numbers and vice versa. -* Join Function:: A function to join an array into a - string. -* Gettimeofday Function:: A function to get formatted times. -* Data File Management:: Functions for managing command-line - data files. -* Filetrans Function:: A function for handling data file - transitions. -* Rewind Function:: A function for rereading the current - file. -* File Checking:: Checking that data files are readable. -* Empty Files:: Checking for zero-length files. -* Ignoring Assigns:: Treating assignments as file names. -* Getopt Function:: A function for processing command-line - arguments. -* Passwd Functions:: Functions for getting user information. -* Group Functions:: Functions for getting group - information. -* Walking Arrays:: A function to walk arrays of arrays. -* Running Examples:: How to run these examples. -* Clones:: Clones of common utilities. -* Cut Program:: The @command{cut} utility. -* Egrep Program:: The @command{egrep} utility. -* Id Program:: The @command{id} utility. -* Split Program:: The @command{split} utility. -* Tee Program:: The @command{tee} utility. -* Uniq Program:: The @command{uniq} utility. -* Wc Program:: The @command{wc} utility. -* Miscellaneous Programs:: Some interesting @command{awk} - programs. -* Dupword Program:: Finding duplicated words in a document. -* Alarm Program:: An alarm clock. -* Translate Program:: A program similar to the @command{tr} - utility. -* Labels Program:: Printing mailing labels. -* Word Sorting:: A program to produce a word usage - count. -* History Sorting:: Eliminating duplicate entries from a - history file. -* Extract Program:: Pulling out programs from Texinfo - source files. -* Simple Sed:: A Simple Stream Editor. -* Igawk Program:: A wrapper for @command{awk} that - includes files. -* Anagram Program:: Finding anagrams from a dictionary. -* Signature Program:: People do amazing things with too much - time on their hands. -* Debugging:: Introduction to @command{dgawk}. -* Debugging Concepts:: Debugging In General. -* Debugging Terms:: Additional Debugging Concepts. -* Awk Debugging:: Awk Debugging. -* Sample dgawk session:: Sample @command{dgawk} session. -* dgawk invocation:: @command{dgawk} Invocation. -* Finding The Bug:: Finding The Bug. -* List of Debugger Commands:: Main @command{dgawk} Commands. -* Breakpoint Control:: Control of breakpoints. -* Dgawk Execution Control:: Control of execution. -* Viewing And Changing Data:: Viewing and changing data. -* Dgawk Stack:: Dealing with the stack. -* Dgawk Info:: Obtaining information about the program - and the debugger state. -* Miscellaneous Dgawk Commands:: Miscellaneous Commands. -* Readline Support:: Readline Support. -* Dgawk Limitations:: Limitations and future plans. -* V7/SVR3.1:: The major changes between V7 and System - V Release 3.1. -* SVR4:: Minor changes between System V Releases - 3.1 and 4. -* POSIX:: New features from the POSIX standard. -* BTL:: New features from Brian Kernighan's - version of @command{awk}. -* POSIX/GNU:: The extensions in @command{gawk} not in - POSIX @command{awk}. -* Common Extensions:: Common Extensions Summary. -* Ranges and Locales:: How locales used to affect regexp - ranges. -* Contributors:: The major contributors to - @command{gawk}. -* Gawk Distribution:: What is in the @command{gawk} - distribution. -* Getting:: How to get the distribution. -* Extracting:: How to extract the distribution. -* Distribution contents:: What is in the distribution. -* Unix Installation:: Installing @command{gawk} under various - versions of Unix. -* Quick Installation:: Compiling @command{gawk} under Unix. -* Additional Configuration Options:: Other compile-time options. -* Configuration Philosophy:: How it's all supposed to work. -* Non-Unix Installation:: Installation on Other Operating - Systems. -* PC Installation:: Installing and Compiling @command{gawk} - on MS-DOS and OS/2. -* PC Binary Installation:: Installing a prepared distribution. -* PC Compiling:: Compiling @command{gawk} for MS-DOS, - Windows32, and OS/2. -* PC Testing:: Testing @command{gawk} on PC systems. -* PC Using:: Running @command{gawk} on MS-DOS, - Windows32 and OS/2. -* Cygwin:: Building and running @command{gawk} for - Cygwin. -* MSYS:: Using @command{gawk} In The MSYS - Environment. -* VMS Installation:: Installing @command{gawk} on VMS. -* VMS Compilation:: How to compile @command{gawk} under - VMS. -* VMS Installation Details:: How to install @command{gawk} under - VMS. -* VMS Running:: How to run @command{gawk} under VMS. -* VMS Old Gawk:: An old version comes with some VMS - systems. -* Bugs:: Reporting Problems and Bugs. -* Other Versions:: Other freely available @command{awk} - implementations. -* Compatibility Mode:: How to disable certain @command{gawk} - extensions. -* Additions:: Making Additions To @command{gawk}. -* Accessing The Source:: Accessing the Git repository. -* Adding Code:: Adding code to the main body of - @command{gawk}. -* New Ports:: Porting @command{gawk} to a new - operating system. -* Dynamic Extensions:: Adding new built-in functions to - @command{gawk}. -* Internals:: A brief look at some @command{gawk} - internals. -* Plugin License:: A note about licensing. -* Sample Library:: A example of new functions. -* Internal File Description:: What the new functions will do. -* Internal File Ops:: The code for internal file operations. -* Using Internal File Ops:: How to use an external extension. -* Future Extensions:: New features that may be implemented - one day. -* Basic High Level:: The high level view. -* Basic Data Typing:: A very quick intro to data types. -* Floating Point Issues:: Stuff to know about floating-point - numbers. -* String Conversion Precision:: The String Value Can Lie. -* Unexpected Results:: Floating Point Numbers Are Not Abstract - Numbers. -* POSIX Floating Point Problems:: Standards Versus Existing Practice. +* History:: The history of @command{gawk} and + @command{awk}. +* Names:: What name to use to find @command{awk}. +* This Manual:: Using this @value{DOCUMENT}. Includes + sample input files that you can use. +* Conventions:: Typographical Conventions. +* Manual History:: Brief history of the GNU project and this + @value{DOCUMENT}. +* How To Contribute:: Helping to save the world. +* Acknowledgments:: Acknowledgments. +* Running gawk:: How to run @command{gawk} programs; + includes command-line syntax. +* One-shot:: Running a short throwaway @command{awk} + program. +* Read Terminal:: Using no input files (input from terminal + instead). +* Long:: Putting permanent @command{awk} programs in + files. +* Executable Scripts:: Making self-contained @command{awk} + programs. +* Comments:: Adding documentation to @command{gawk} + programs. +* Quoting:: More discussion of shell quoting issues. +* DOS Quoting:: Quoting in Windows Batch Files. +* Sample Data Files:: Sample data files for use in the + @command{awk} programs illustrated in this + @value{DOCUMENT}. +* Very Simple:: A very simple example. +* Two Rules:: A less simple one-line example using two + rules. +* More Complex:: A more complex example. +* Statements/Lines:: Subdividing or combining statements into + lines. +* Other Features:: Other Features of @command{awk}. +* When:: When to use @command{gawk} and when to use + other things. +* Command Line:: How to run @command{awk}. +* Options:: Command-line options and their meanings. +* Other Arguments:: Input file names and variable assignments. +* Naming Standard Input:: How to specify standard input with other + files. +* Environment Variables:: The environment variables @command{gawk} + uses. +* AWKPATH Variable:: Searching directories for @command{awk} + programs. +* Other Environment Variables:: The environment variables. +* Exit Status:: @command{gawk}'s exit status. +* Include Files:: Including other files into your program. +* Obsolete:: Obsolete Options and/or features. +* Undocumented:: Undocumented Options and Features. +* Regexp Usage:: How to Use Regular Expressions. +* Escape Sequences:: How to write nonprinting characters. +* Regexp Operators:: Regular Expression Operators. +* Bracket Expressions:: What can go between @samp{[...]}. +* GNU Regexp Operators:: Operators specific to GNU software. +* Case-sensitivity:: How to do case-insensitive matching. +* Leftmost Longest:: How much text matches. +* Computed Regexps:: Using Dynamic Regexps. +* Records:: Controlling how data is split into records. +* Fields:: An introduction to fields. +* Nonconstant Fields:: Nonconstant Field Numbers. +* Changing Fields:: Changing the Contents of a Field. +* Field Separators:: The field separator and how to change it. +* Default Field Splitting:: How fields are normally separated. +* Regexp Field Splitting:: Using regexps as the field separator. +* Single Character Fields:: Making each character a separate field. +* Command Line Field Separator:: Setting @code{FS} from the command-line. +* Field Splitting Summary:: Some final points and a summary table. +* Constant Size:: Reading constant width data. +* Splitting By Content:: Defining Fields By Content +* Multiple Line:: Reading multi-line records. +* Getline:: Reading files under explicit program + control using the @code{getline} function. +* Plain Getline:: Using @code{getline} with no arguments. +* Getline/Variable:: Using @code{getline} into a variable. +* Getline/File:: Using @code{getline} from a file. +* Getline/Variable/File:: Using @code{getline} into a variable from a + file. +* Getline/Pipe:: Using @code{getline} from a pipe. +* Getline/Variable/Pipe:: Using @code{getline} into a variable from a + pipe. +* Getline/Coprocess:: Using @code{getline} from a coprocess. +* Getline/Variable/Coprocess:: Using @code{getline} into a variable from a + coprocess. +* Getline Notes:: Important things to know about + @code{getline}. +* Getline Summary:: Summary of @code{getline} Variants. +* Command line directories:: What happens if you put a directory on the + command line. +* Print:: The @code{print} statement. +* Print Examples:: Simple examples of @code{print} statements. +* Output Separators:: The output separators and how to change + them. +* OFMT:: Controlling Numeric Output With + @code{print}. +* Printf:: The @code{printf} statement. +* Basic Printf:: Syntax of the @code{printf} statement. +* Control Letters:: Format-control letters. +* Format Modifiers:: Format-specification modifiers. +* Printf Examples:: Several examples. +* Redirection:: How to redirect output to multiple files + and pipes. +* Special Files:: File name interpretation in @command{gawk}. + @command{gawk} allows access to inherited + file descriptors. +* Special FD:: Special files for I/O. +* Special Network:: Special files for network communications. +* Special Caveats:: Things to watch out for. +* Close Files And Pipes:: Closing Input and Output Files and Pipes. +* Values:: Constants, Variables, and Regular + Expressions. +* Constants:: String, numeric and regexp constants. +* Scalar Constants:: Numeric and string constants. +* Nondecimal-numbers:: What are octal and hex numbers. +* Regexp Constants:: Regular Expression constants. +* Using Constant Regexps:: When and how to use a regexp constant. +* Variables:: Variables give names to values for later + use. +* Using Variables:: Using variables in your programs. +* Assignment Options:: Setting variables on the command-line and a + summary of command-line syntax. This is an + advanced method of input. +* Conversion:: The conversion of strings to numbers and + vice versa. +* All Operators:: @command{gawk}'s operators. +* Arithmetic Ops:: Arithmetic operations (@samp{+}, @samp{-}, + etc.) +* Concatenation:: Concatenating strings. +* Assignment Ops:: Changing the value of a variable or a + field. +* Increment Ops:: Incrementing the numeric value of a + variable. +* Truth Values and Conditions:: Testing for true and false. +* Truth Values:: What is ``true'' and what is ``false''. +* Typing and Comparison:: How variables acquire types and how this + affects comparison of numbers and strings + with @samp{<}, etc. +* Variable Typing:: String type versus numeric type. +* Comparison Operators:: The comparison operators. +* POSIX String Comparison:: String comparison with POSIX rules. +* Boolean Ops:: Combining comparison expressions using + boolean operators @samp{||} (``or''), + @samp{&&} (``and'') and @samp{!} (``not''). +* Conditional Exp:: Conditional expressions select between two + subexpressions under control of a third + subexpression. +* Function Calls:: A function call is an expression. +* Precedence:: How various operators nest. +* Locales:: How the locale affects things. +* Pattern Overview:: What goes into a pattern. +* Regexp Patterns:: Using regexps as patterns. +* Expression Patterns:: Any expression can be used as a pattern. +* Ranges:: Pairs of patterns specify record ranges. +* BEGIN/END:: Specifying initialization and cleanup + rules. +* Using BEGIN/END:: How and why to use BEGIN/END rules. +* I/O And BEGIN/END:: I/O issues in BEGIN/END rules. +* BEGINFILE/ENDFILE:: Two special patterns for advanced control. +* Empty:: The empty pattern, which matches every + record. +* Using Shell Variables:: How to use shell variables with + @command{awk}. +* Action Overview:: What goes into an action. +* Statements:: Describes the various control statements in + detail. +* If Statement:: Conditionally execute some @command{awk} + statements. +* While Statement:: Loop until some condition is satisfied. +* Do Statement:: Do specified action while looping until + some condition is satisfied. +* For Statement:: Another looping statement, that provides + initialization and increment clauses. +* Switch Statement:: Switch/case evaluation for conditional + execution of statements based on a value. +* Break Statement:: Immediately exit the innermost enclosing + loop. +* Continue Statement:: Skip to the end of the innermost enclosing + loop. +* Next Statement:: Stop processing the current input record. +* Nextfile Statement:: Stop processing the current file. +* Exit Statement:: Stop execution of @command{awk}. +* Built-in Variables:: Summarizes the built-in variables. +* User-modified:: Built-in variables that you change to + control @command{awk}. +* Auto-set:: Built-in variables where @command{awk} + gives you information. +* ARGC and ARGV:: Ways to use @code{ARGC} and @code{ARGV}. +* Array Basics:: The basics of arrays. +* Array Intro:: Introduction to Arrays +* Reference to Elements:: How to examine one element of an array. +* Assigning Elements:: How to change an element of an array. +* Array Example:: Basic Example of an Array +* Scanning an Array:: A variation of the @code{for} statement. It + loops through the indices of an array's + existing elements. +* Controlling Scanning:: Controlling the order in which arrays are + scanned. +* Delete:: The @code{delete} statement removes an + element from an array. +* Numeric Array Subscripts:: How to use numbers as subscripts in + @command{awk}. +* Uninitialized Subscripts:: Using Uninitialized variables as + subscripts. +* Multi-dimensional:: Emulating multidimensional arrays in + @command{awk}. +* Multi-scanning:: Scanning multidimensional arrays. +* Arrays of Arrays:: True multidimensional arrays. +* Built-in:: Summarizes the built-in functions. +* Calling Built-in:: How to call built-in functions. +* Numeric Functions:: Functions that work with numbers, including + @code{int()}, @code{sin()} and + @code{rand()}. +* String Functions:: Functions for string manipulation, such as + @code{split()}, @code{match()} and + @code{sprintf()}. +* Gory Details:: More than you want to know about @samp{\} + and @samp{&} with @code{sub()}, + @code{gsub()}, and @code{gensub()}. +* I/O Functions:: Functions for files and shell commands. +* Time Functions:: Functions for dealing with timestamps. +* Bitwise Functions:: Functions for bitwise operations. +* Type Functions:: Functions for type information. +* I18N Functions:: Functions for string translation. +* User-defined:: Describes User-defined functions in detail. +* Definition Syntax:: How to write definitions and what they + mean. +* Function Example:: An example function definition and what it + does. +* Function Caveats:: Things to watch out for. +* Calling A Function:: Don't use spaces. +* Variable Scope:: Controlling variable scope. +* Pass By Value/Reference:: Passing parameters. +* Return Statement:: Specifying the value a function returns. +* Dynamic Typing:: How variable types can change at runtime. +* Indirect Calls:: Choosing the function to call at runtime. +* I18N and L10N:: Internationalization and Localization. +* Explaining gettext:: How GNU @code{gettext} works. +* Programmer i18n:: Features for the programmer. +* Translator i18n:: Features for the translator. +* String Extraction:: Extracting marked strings. +* Printf Ordering:: Rearranging @code{printf} arguments. +* I18N Portability:: @command{awk}-level portability issues. +* I18N Example:: A simple i18n example. +* Gawk I18N:: @command{gawk} is also internationalized. +* Nondecimal Data:: Allowing nondecimal input data. +* Array Sorting:: Facilities for controlling array traversal + and sorting arrays. +* Controlling Array Traversal:: How to use PROCINFO["sorted_in"]. +* Array Sorting Functions:: How to use @code{asort()} and + @code{asorti()}. +* Two-way I/O:: Two-way communications with another + process. +* TCP/IP Networking:: Using @command{gawk} for network + programming. +* Profiling:: Profiling your @command{awk} programs. +* Library Names:: How to best name private global variables + in library functions. +* General Functions:: Functions that are of general use. +* Strtonum Function:: A replacement for the built-in + @code{strtonum()} function. +* Assert Function:: A function for assertions in @command{awk} + programs. +* Round Function:: A function for rounding if @code{sprintf()} + does not do it correctly. +* Cliff Random Function:: The Cliff Random Number Generator. +* Ordinal Functions:: Functions for using characters as numbers + and vice versa. +* Join Function:: A function to join an array into a string. +* Gettimeofday Function:: A function to get formatted times. +* Data File Management:: Functions for managing command-line data + files. +* Filetrans Function:: A function for handling data file + transitions. +* Rewind Function:: A function for rereading the current file. +* File Checking:: Checking that data files are readable. +* Empty Files:: Checking for zero-length files. +* Ignoring Assigns:: Treating assignments as file names. +* Getopt Function:: A function for processing command-line + arguments. +* Passwd Functions:: Functions for getting user information. +* Group Functions:: Functions for getting group information. +* Walking Arrays:: A function to walk arrays of arrays. +* Running Examples:: How to run these examples. +* Clones:: Clones of common utilities. +* Cut Program:: The @command{cut} utility. +* Egrep Program:: The @command{egrep} utility. +* Id Program:: The @command{id} utility. +* Split Program:: The @command{split} utility. +* Tee Program:: The @command{tee} utility. +* Uniq Program:: The @command{uniq} utility. +* Wc Program:: The @command{wc} utility. +* Miscellaneous Programs:: Some interesting @command{awk} programs. +* Dupword Program:: Finding duplicated words in a document. +* Alarm Program:: An alarm clock. +* Translate Program:: A program similar to the @command{tr} + utility. +* Labels Program:: Printing mailing labels. +* Word Sorting:: A program to produce a word usage count. +* History Sorting:: Eliminating duplicate entries from a + history file. +* Extract Program:: Pulling out programs from Texinfo source + files. +* Simple Sed:: A Simple Stream Editor. +* Igawk Program:: A wrapper for @command{awk} that includes + files. +* Anagram Program:: Finding anagrams from a dictionary. +* Signature Program:: People do amazing things with too much time + on their hands. +* Debugging:: Introduction to @command{dgawk}. +* Debugging Concepts:: Debugging In General. +* Debugging Terms:: Additional Debugging Concepts. +* Awk Debugging:: Awk Debugging. +* Sample dgawk session:: Sample @command{dgawk} session. +* dgawk invocation:: @command{dgawk} Invocation. +* Finding The Bug:: Finding The Bug. +* List of Debugger Commands:: Main @command{dgawk} Commands. +* Breakpoint Control:: Control of breakpoints. +* Dgawk Execution Control:: Control of execution. +* Viewing And Changing Data:: Viewing and changing data. +* Dgawk Stack:: Dealing with the stack. +* Dgawk Info:: Obtaining information about the program and + the debugger state. +* Miscellaneous Dgawk Commands:: Miscellaneous Commands. +* Readline Support:: Readline Support. +* Dgawk Limitations:: Limitations and future plans. +* V7/SVR3.1:: The major changes between V7 and System V + Release 3.1. +* SVR4:: Minor changes between System V Releases 3.1 + and 4. +* POSIX:: New features from the POSIX standard. +* BTL:: New features from Brian Kernighan's version + of @command{awk}. +* POSIX/GNU:: The extensions in @command{gawk} not in + POSIX @command{awk}. +* Common Extensions:: Common Extensions Summary. +* Ranges and Locales:: How locales used to affect regexp ranges. +* Contributors:: The major contributors to @command{gawk}. +* Gawk Distribution:: What is in the @command{gawk} distribution. +* Getting:: How to get the distribution. +* Extracting:: How to extract the distribution. +* Distribution contents:: What is in the distribution. +* Unix Installation:: Installing @command{gawk} under various + versions of Unix. +* Quick Installation:: Compiling @command{gawk} under Unix. +* Additional Configuration Options:: Other compile-time options. +* Configuration Philosophy:: How it's all supposed to work. +* Non-Unix Installation:: Installation on Other Operating Systems. +* PC Installation:: Installing and Compiling @command{gawk} on + MS-DOS and OS/2. +* PC Binary Installation:: Installing a prepared distribution. +* PC Compiling:: Compiling @command{gawk} for MS-DOS, + Windows32, and OS/2. +* PC Testing:: Testing @command{gawk} on PC systems. +* PC Using:: Running @command{gawk} on MS-DOS, Windows32 + and OS/2. +* Cygwin:: Building and running @command{gawk} for + Cygwin. +* MSYS:: Using @command{gawk} In The MSYS + Environment. +* VMS Installation:: Installing @command{gawk} on VMS. +* VMS Compilation:: How to compile @command{gawk} under VMS. +* VMS Installation Details:: How to install @command{gawk} under VMS. +* VMS Running:: How to run @command{gawk} under VMS. +* VMS Old Gawk:: An old version comes with some VMS systems. +* Bugs:: Reporting Problems and Bugs. +* Other Versions:: Other freely available @command{awk} + implementations. +* Compatibility Mode:: How to disable certain @command{gawk} + extensions. +* Additions:: Making Additions To @command{gawk}. +* Accessing The Source:: Accessing the Git repository. +* Adding Code:: Adding code to the main body of + @command{gawk}. +* New Ports:: Porting @command{gawk} to a new operating + system. +* Dynamic Extensions:: Adding new built-in functions to + @command{gawk}. +* Internals:: A brief look at some @command{gawk} + internals. +* Plugin License:: A note about licensing. +* Sample Library:: A example of new functions. +* Internal File Description:: What the new functions will do. +* Internal File Ops:: The code for internal file operations. +* Using Internal File Ops:: How to use an external extension. +* Future Extensions:: New features that may be implemented one + day. +* Basic High Level:: The high level view. +* Basic Data Typing:: A very quick intro to data types. +* Floating Point Issues:: Stuff to know about floating-point numbers. +* String Conversion Precision:: The String Value Can Lie. +* Unexpected Results:: Floating Point Numbers Are Not Abstract + Numbers. +* POSIX Floating Point Problems:: Standards Versus Existing Practice. @end detailmenu @end menu @@ -893,7 +853,9 @@ The @command{awk} utility interprets a special-purpose programming language that makes it easy to handle simple data-reformatting jobs. -The GNU implementation of @command{awk} is called @command{gawk}; it is fully +The GNU implementation of @command{awk} is called @command{gawk}; if you +invoke it with the proper options or environment variables +(@pxref{Options}), it is fully compatible with the POSIX@footnote{The 2008 POSIX standard can be found online at @url{http://www.opengroup.org/onlinepubs/9699919799/}.} @@ -2007,9 +1969,11 @@ 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 @@ -3429,7 +3393,10 @@ If the environment variable @env{POSIXLY_CORRECT} exists, then @command{gawk} behaves in strict POSIX mode, exactly as if you had supplied the @option{--posix} command-line option. -Many GNU programs look for this environment variable to turn on +Many GNU programs look for this environment variable to suppress +extensions that conflict with POSIX, but @command{gawk} behaves +differently: it suppresses all extensions, even those that do not +conflict with POSIX, and behaves in strict POSIX mode. If @option{--lint} is supplied on the command line and @command{gawk} turns on POSIX mode because of @env{POSIXLY_CORRECT}, then it issues a warning message indicating that POSIX @@ -4519,6 +4486,10 @@ 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 @@ -5741,7 +5712,7 @@ @end example @noindent -This forces @command{awk} rebuild the record. It does help +This forces @command{awk} to rebuild the record. It does help to add a comment, as we've shown here. There is a flip side to the relationship between @code{$0} and @@ -10943,7 +10914,7 @@ @item BEGINFILE @itemx ENDFILE -Special patterns for you to supply startup or cleanup actions to +Special patterns for you to supply startup or cleanup actions to be done on a per file basis. (@xref{BEGINFILE/ENDFILE}.) @@ -11079,6 +11050,9 @@ which never match any input record, are not expressions and cannot appear inside Boolean patterns. +The precedence of the different operators which can appear in +patterns is described in @ref{Precedence}. + @node Ranges @subsection Specifying Record Ranges with Patterns @@ -11349,6 +11323,7 @@ The @code{ENDFILE} rule is called when @command{gawk} has finished processing the last record in an input file. For the last input file, it will be called before any @code{END} rules. +The @code{ENDFILE} rule is executed even for empty input files. Normally, when an error occurs when reading input in the normal input processing loop, the error is fatal. However, if an @code{ENDFILE} @@ -12054,8 +12029,8 @@ @cindex dark corner, @code{continue} statement @cindex @command{gawk}, @code{continue} statement in The @code{continue} statement has no special meaning with respect to the -@code{switch} statement, nor does it any meaning when used outside the body of -a loop. Historical versions of @command{awk} treated a @code{continue} +@code{switch} statement, nor does it have any meaning when used outside the +body of a loop. Historical versions of @command{awk} treated a @code{continue} statement outside a loop the same way they treated a @code{break} statement outside a loop: as if it were a @code{next} statement @@ -12153,16 +12128,17 @@ @code{nextfile} is not special. Upon execution of the @code{nextfile} statement, -any @code{ENDFILE} rules are executed, -@code{FILENAME} is +any @code{ENDFILE} rules are executed except in the case as +mentioned below, @code{FILENAME} is updated to the name of the next @value{DF} listed on the command line, @code{FNR} is reset to one, @code{ARGIND} is incremented, any @code{BEGINFILE} rules are executed, and processing starts over with the first rule in the program. (@code{ARGIND} hasn't been introduced yet. @xref{Built-in Variables}.) If the @code{nextfile} statement causes the end of the input to be reached, -then the code in any @code{END} rules is executed. -@xref{BEGIN/END}. +then the code in any @code{END} rules is executed. An exception to this is +when the @code{nextfile} is invoked during execution of any statement in an +@code{END} rule; In this case, it causes the program to stop immediately. @xref{BEGIN/END}. The @code{nextfile} statement is useful when there are many @value{DF}s to process but it isn't necessary to process every record in every file. @@ -12172,7 +12148,8 @@ In addition, @code{nextfile} is useful inside a @code{BEGINFILE} rule to skip over a file that would otherwise cause @command{gawk} -to exit with a fatal error. @xref{BEGINFILE/ENDFILE}. +to exit with a fatal error. In this case, @code{ENDFILE} rules are not +executed. @xref{BEGINFILE/ENDFILE}. While one might think that @samp{close(FILENAME)} would accomplish the same as @code{nextfile}, this isn't true. @code{close()} is @@ -13043,6 +13020,8 @@ * Scanning an Array:: A variation of the @code{for} statement. It loops through the indices of an array's existing elements. +* Controlling Scanning:: Controlling the order in which arrays are + scanned. @end menu @node Array Intro @@ -13430,11 +13409,151 @@ reach them. Similarly, changing @var{var} inside the loop may produce strange results. It is best to avoid such things. -As an extension, @command{gawk} makes it possible for you to -loop over the elements of an array in order, based on the value of -@code{PROCINFO["sorted_in"]} (@pxref{Auto-set}). -This is an advanced feature, so discussion of it is delayed -until @ref{Controlling Array Traversal}. +@node Controlling Scanning +@subsection Using Predefined Array Scanning Orders + +By default, when a @code{for} loop traverses an array, the order +is undefined, meaning that the @command{awk} implementation +determines the order in which the array is traversed. +This order is usually based on the internal implementation of arrays +and will vary from one version of @command{awk} to the next. + +Often, though, you may wish to do something simple, such as +``traverse the array by comparing the indices in ascending order,'' +or ``traverse the array by on comparing the values in descending order.'' +@command{gawk} provides two mechanisms which give you this control. + +@itemize @bullet +@item +Set @code{PROCINFO["sorted_in"]} to one of a set of predefined values. +We describe this now. + +@item +Set @code{PROCINFO["sorted_in"]} to the name of a user-defined function +to be used for comparison of array elements. This advanced feature +is described later, in @ref{Array Sorting}. +@end itemize + +The following special values for @code{PROCINFO["sorted_in"]} are available: + +@table @code +@item "@@unsorted" +Array elements are processed in arbitrary order, which is the default +@command{awk} behavior. + +@item "@@ind_str_asc" +Order by indices compared as strings; this is the most basic sort. +(Internally, array indices are always strings, so with @samp{a[2*5] = 1} +the index is @code{"10"} rather than numeric 10.) + +@item "@@ind_num_asc" +Order by indices but force them to be treated as numbers in the process. +Any index with a non-numeric value will end up positioned as if it were zero. + +@item "@@val_type_asc" +Order by element values rather than indices. +Ordering is by the type assigned to the element +(@pxref{Typing and Comparison}). +All numeric values come before all string values, +which in turn come before all subarrays. +(Subarrays have not been described yet; +@pxref{Arrays of Arrays}). + +@item "@@val_str_asc" +Order by element values rather than by indices. Scalar values are +compared as strings. Subarrays, if present, come out last. + +@item "@@val_num_asc" +Order by element values rather than by indices. Scalar values are +compared as numbers. Subarrays, if present, come out last. +When numeric values are equal, the string values are used to provide +an ordering: this guarantees consistent results across different +versions of the C @code{qsort()} function,@footnote{When two elements +compare as equal, the C @code{qsort()} function does not guarantee +that they will maintain their original relative order after sorting. +Using the string value to provide a unique ordering when the numeric +values are equal ensures that @command{gawk} behaves consistently +across different environments.} which @command{gawk} uses internally +to perform the sorting. + +@item "@@ind_str_desc" +Reverse order from the most basic sort. + +@item "@@ind_num_desc" +Numeric indices ordered from high to low. + +@item "@@val_type_desc" +Element values, based on type, in descending order. + +@item "@@val_str_desc" +Element values, treated as strings, ordered from high to low. +Subarrays, if present, come out first. + +@item "@@val_num_desc" +Element values, treated as numbers, ordered from high to low. +Subarrays, if present, come out first. +@end table + +The array traversal order is determined before the @code{for} loop +starts to run. Changing @code{PROCINFO["sorted_in"]} in the loop body +will not affect the loop. + +For example: + +@example +$ @kbd{gawk 'BEGIN @{} +> @kbd{ a[4] = 4} +> @kbd{ a[3] = 3} +> @kbd{ for (i in a)} +> @kbd{ print i, a[i]} +> @kbd{@}'} +@print{} 4 4 +@print{} 3 3 +$ @kbd{gawk 'BEGIN @{} +> @kbd{ PROCINFO["sorted_in"] = "@@ind_str_asc"} +> @kbd{ a[4] = 4} +> @kbd{ a[3] = 3} +> @kbd{ for (i in a)} +> @kbd{ print i, a[i]} +> @kbd{@}'} +@print{} 3 3 +@print{} 4 4 +@end example + +When sorting an array by element values, if a value happens to be +a subarray then it is considered to be greater than any string or +numeric value, regardless of what the subarray itself contains, +and all subarrays are treated as being equal to each other. Their +order relative to each other is determined by their index strings. + +Here are some additional things to bear in mind about sorted +array traversal. + +@itemize @bullet +@item +The value of @code{PROCINFO["sorted_in"]} is global. That is, it affects +all array traversal @code{for} loops. If you need to change it within your +own code, you should see if it's defined and save and restore the value: + +@example +@dots{} +if ("sorted_in" in PROCINFO) @{ + save_sorted = PROCINFO["sorted_in"] + PROCINFO["sorted_in"] = "@@val_str_desc" # or whatever +@} +@dots{} +if (save_sorted) + PROCINFO["sorted_in"] = save_sorted +@end example + +@item +As mentioned, the default array traversal order is represented by +@code{"@@unsorted"}. You can also get the default behavior by assigning +the null string to @code{PROCINFO["sorted_in"]} or by just deleting the +@code{"sorted_in"} element from the @code{PROCINFO} array with +the @code{delete} statement. +(The @code{delete} statement hasn't been described yet; @pxref{Delete}.) +@end itemize In addition, @command{gawk} provides built-in functions for sorting arrays; see @ref{Array Sorting Functions}. @@ -13774,8 +13893,9 @@ @subsection Scanning Multidimensional Arrays There is no special @code{for} statement for scanning a -``multidimensional'' array. There cannot be one, because, in truth, there -are no multidimensional arrays or elements---there is only a +``multidimensional'' array. There cannot be one, because, in truth, +@command{awk} does not have +multidimensional arrays or elements---there is only a multidimensional @emph{way of accessing} an array. @cindex subscripts in arrays, multidimensional, scanning @@ -13802,7 +13922,7 @@ @code{SUBSEP} appears. The individual indices then become the elements of the array @code{separate}. -Thus, if a value is previously stored in @code{array[1, "foo"]}; then +Thus, if a value is previously stored in @code{array[1, "foo"]}, then an element with index @code{"1\034foo"} exists in @code{array}. (Recall that the default value of @code{SUBSEP} is the character with code 034.) Sooner or later, the @code{for} statement finds that index and does an @@ -13822,7 +13942,8 @@ @node Arrays of Arrays @section Arrays of Arrays -@command{gawk} supports arrays of +@command{gawk} goes beyond standard @command{awk}'s multidimensional +array access and provides true arrays of arrays. Elements of a subarray are referred to by their own indices enclosed in square brackets, just like the elements of the main array. For example, the following creates a two-element subarray at index @samp{1} @@ -14088,6 +14209,13 @@ @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 @@ -15015,8 +15143,6 @@ The problem with the historical approach is that there is no way to get a literal @samp{\} followed by the matched text. -@c We can omit this historical stuff now -@ignore @c @cindex @command{awk} language, POSIX version @cindex POSIX @command{awk}, functions and, @code{gsub()}/@code{sub()} The 1992 POSIX standard attempted to fix this problem. That standard @@ -15150,7 +15276,6 @@ The POSIX standard took much longer to be revised than was expected in 1996. The 2001 standard does not follow the above rules. Instead, the rules there are somewhat simpler. The results are similar except for one case. -@end ignore The POSIX rules state that @samp{\&} in the replacement string produces a literal @samp{&}, @samp{\\} produces a literal @samp{\}, and @samp{\} followed @@ -15201,17 +15326,21 @@ @end ifnottex @end float -@ignore The only case where the difference is noticeable is the last one: @samp{\\\\} is seen as @samp{\\} and produces @samp{\} instead of @samp{\\}. Starting with @value{PVERSION} 3.1.4, @command{gawk} followed the POSIX rules when @option{--posix} is specified (@pxref{Options}). Otherwise, it continued to follow the 1996 proposed rules, since -that had been its behavior for many seven years. -@end ignore +that had been its behavior for many years. -@command{gawk} follows the POSIX rules. +When @value{PVERSION} 4.0.0, was released, the @command{gawk} maintainer +made the POSIX rules the default, breaking well over a decade's worth +of backwards compatibility.@footnote{This was rather naive of him, despite +there being a note in this section indicating that the next major version +would move to the POSIX rules.} Needless to say, this was a bad idea, +and as of @value{PVERSION} 4.0.1, @command{gawk} resumed its historical +behavior, and only follows the POSIX rules when @option{--posix} is given. The rules for @code{gensub()} are considerably simpler. At the runtime level, whenever @command{gawk} sees a @samp{\}, if the following character @@ -17091,6 +17220,7 @@ @c file eg/lib/quicksort.awk # # Adapted from K&R-II, page 110 +@c endfile @end ignore @c file eg/lib/quicksort.awk @@ -18149,8 +18279,8 @@ @node Array Sorting @section Controlling Array Traversal and Array Sorting -@command{gawk} lets you control the order in which @samp{for (i in array)} loops -will traverse an array. +@command{gawk} lets you control the order in which a @samp{for (i in array)} +loop traverses an array. In addition, two built-in functions, @code{asort()} and @code{asorti()}, let you sort arrays based on the array values and indices, respectively. @@ -18171,18 +18301,14 @@ Often, though, it is desirable to be able to loop over the elements in a particular order that you, the programmer, choose. @command{gawk} -lets you do this; this @value{SUBSECTION} describes how. +lets you do this. -@menu -* Controlling Scanning With A Function:: Using a function to control scanning. -* Controlling Scanning:: Controlling the order in which arrays - are scanned. -@end menu +@ref{Controlling Scanning}, describes how you can assign special, +pre-defined values to @code{PROCINFO["sorted_in"]} in order to +control the order in which @command{gawk} will traverse an array +during a @code{for} loop. -@node Controlling Scanning With A Function -@subsubsection Array Scanning Using A User-defined Function - -The value of @code{PROCINFO["sorted_in"]} can be a function name. +In addition, the value of @code{PROCINFO["sorted_in"]} can be a function name. This lets you traverse an array based on any custom criterion. The array elements are ordered according to the return value of this function. The comparison function should be defined with at least @@ -18199,8 +18325,9 @@ Here, @var{i1} and @var{i2} are the indices, and @var{v1} and @var{v2} are the corresponding values of the two elements being compared. Either @var{v1} or @var{v2}, or both, can be arrays if the array being -traversed contains subarrays as values. The three possible return values -are interpreted this way: +traversed contains subarrays as values. +(@xref{Arrays of Arrays}, for more information about subarrays.) +The three possible return values are interpreted as follows: @table @code @item comp_func(i1, v1, i2, v2) < 0 @@ -18301,7 +18428,7 @@ @print{} data[10] = one @print{} data[20] = two @print{} -@print{} Sort function: cmp_num_str_val @ii{Sort all numbers before all strings} +@print{} Sort function: cmp_num_str_val @ii{Sort all numeric values before all strings} @print{} data[one] = 10 @print{} data[two] = 20 @print{} data[100] = 100 @@ -18310,7 +18437,7 @@ @end example Consider sorting the entries of a GNU/Linux system password file -according to login names. The following program sorts records +according to login name. The following program sorts records by a specific field position and can be used for this purpose: @example @@ -18341,8 +18468,8 @@ @end example The first field in each entry of the password file is the user's login name, -and the fields are seperated by colons. -Each record defines a subarray (@pxref{Arrays of Arrays}), +and the fields are separated by colons. +Each record defines a subarray, with each field as an element in the subarray. Running the program produces the following output: @@ -18432,122 +18559,6 @@ @c maintainers believe that only the people who wish to use a @c feature should have to pay for it. -@node Controlling Scanning -@subsubsection Controlling Array Scanning Order - -As described in -@iftex -the previous subsubsection, -@end iftex -@ifnottex -@ref{Controlling Scanning With A Function}, -@end ifnottex -you can provide the name of a function as the value of -@code{PROCINFO["sorted_in"]} to specify custom sorting criteria. - -Often, though, you may wish to do something simple, such as -``sort based on comparing the indices in ascending order,'' -or ``sort based on comparing the values in descending order.'' -Having to write a simple comparison function for this purpose -for use in all of your programs becomes tedious. -For the common simple cases, @command{gawk} provides -the option of supplying special names that do the requested -sorting for you. -You can think of them as ``predefined'' sorting functions, -if you like, although the names purposely include characters -that are not valid in real @command{awk} function names. - -The following special values are available: - -@table @code -@item "@@ind_str_asc" -Order by indices compared as strings; this is the most basic sort. -(Internally, array indices are always strings, so with @samp{a[2*5] = 1} -the index is @code{"10"} rather than numeric 10.) - -@item "@@ind_num_asc" -Order by indices but force them to be treated as numbers in the process. -Any index with a non-numeric value will end up positioned as if it were zero. - -@item "@@val_type_asc" -Order by element values rather than indices. -Ordering is by the type assigned to the element -(@pxref{Typing and Comparison}). -All numeric values come before all string values, -which in turn come before all subarrays. - -@item "@@val_str_asc" -Order by element values rather than by indices. Scalar values are -compared as strings. Subarrays, if present, come out last. - -@item "@@val_num_asc" -Order by element values rather than by indices. Scalar values are -compared as numbers. Subarrays, if present, come out last. -When numeric values are equal, the string values are used to provide -an ordering: this guarantees consistent results across different -versions of the C @code{qsort()} function.@footnote{When two elements -compare as equal, the C @code{qsort()} function does not guarantee -that they will maintain their original relative order after sorting. -Using the string value to provide a unique ordering when the numeric -values are equal ensures that @command{gawk} behaves consistently -across different environments.} - -@item "@@ind_str_desc" -Reverse order from the most basic sort. - -@item "@@ind_num_desc" -Numeric indices ordered from high to low. - -@item "@@val_type_desc" -Element values, based on type, in descending order. - -@item "@@val_str_desc" -Element values, treated as strings, ordered from high to low. -Subarrays, if present, come out first. - -@item "@@val_num_desc" -Element values, treated as numbers, ordered from high to low. -Subarrays, if present, come out first. - -@item "@@unsorted" -Array elements are processed in arbitrary order, which is the normal -@command{awk} behavior. You can also get the normal behavior by just -deleting the @code{"sorted_in"} element from the @code{PROCINFO} array, -if it previously had a value assigned to it. -@end table - -The array traversal order is determined before the @code{for} loop -starts to run. Changing @code{PROCINFO["sorted_in"]} in the loop body -will not affect the loop. - -For example: - -@example -$ @kbd{gawk 'BEGIN @{} -> @kbd{ a[4] = 4} -> @kbd{ a[3] = 3} -> @kbd{ for (i in a)} -> @kbd{ print i, a[i]} -> @kbd{@}'} -@print{} 4 4 -@print{} 3 3 -$ @kbd{gawk 'BEGIN @{} -> @kbd{ PROCINFO["sorted_in"] = "@@str_ind_asc"} -> @kbd{ a[4] = 4} -> @kbd{ a[3] = 3} -> @kbd{ for (i in a)} -> @kbd{ print i, a[i]} -> @kbd{@}'} -@print{} 3 3 -@print{} 4 4 -@end example - -When sorting an array by element values, if a value happens to be -a subarray then it is considered to be greater than any string or -numeric value, regardless of what the subarray itself contains, -and all subarrays are treated as being equal to each other. Their -order relative to each other is determined by their index strings. - @node Array Sorting Functions @subsection Sorting Array Values and Indices with @command{gawk} @@ -18556,7 +18567,7 @@ @cindex @code{asort()} function (@command{gawk}), arrays@comma{} sorting @cindex sort function, arrays, sorting In most @command{awk} implementations, sorting an array requires -writing a @code{sort} function. +writing a @code{sort()} function. While this can be educational for exploring different sorting algorithms, usually that's not the point of the program. @command{gawk} provides the built-in @code{asort()} @@ -18575,7 +18586,10 @@ to some number @var{n}, the total number of elements in @code{data}. (This count is @code{asort()}'s return value.) @code{data[1]} @value{LEQ} @code{data[2]} @value{LEQ} @code{data[3]}, and so on. -The array elements are compared as strings. +The comparison is based on the type of the elements +(@pxref{Typing and Comparison}). +All numeric values come before all string values, +which in turn come before all subarrays. @cindex side effects, @code{asort()} function An important side effect of calling @code{asort()} is that @@ -18594,12 +18608,11 @@ @code{dest} array and then sorts @code{dest}, destroying its indices. However, the @code{source} array is not affected. -@code{asort()} accepts a third string argument -to control comparison of array elements. -As with @code{PROCINFO["sorted_in"]}, this argument may be the -name of a user-defined function, or one of the predefined names -that @command{gawk} provides -(@pxref{Controlling Scanning With A Function}). +@code{asort()} accepts a third string argument to control comparison of +array elements. As with @code{PROCINFO["sorted_in"]}, this argument +may be one of the predefined names that @command{gawk} provides +(@pxref{Controlling Scanning}), or the name of a user-defined function +(@pxref{Controlling Array Traversal}). @quotation NOTE In all cases, the sorted element values consist of the original @@ -20632,6 +20645,7 @@ function was written before @command{gawk} acquired the ability to split strings into single characters using @code{""} as the separator. We have left it alone, since using @code{substr()} is more portable.} +@c FIXME: could use split(str, a, "") to do it more easily. The discussion that follows walks through the code a bit at a time: @@ -25057,6 +25071,84 @@ We leave it to you to determine what the program does. +@ignore +To: "Arnold Robbins" +Date: Sat, 20 Aug 2011 13:50:46 -0400 +Subject: The GNU Awk User's Guide, Section 13.3.11 +From: "Chris Johansen" +Message-ID: + +Arnold, you don't know me, but we have a tenuous connection. My wife is +Barbara A. Field, FAIA, GIT '65 (B. Arch.). + +I have had a couple of paper copies of "Effective Awk Programming" for +years, and now I'm going through a Kindle version of "The GNU Awk User's +Guide" again. When I got to section 13.3.11, I reformatted and lightly +commented Davide Brin's signature script to understand its workings. + +It occurs to me that this might have pedagogical value as an example +(although imperfect) of the value of whitespace and comments, and a +starting point for that discussion. It certainly helped _me_ understand +what's going on. You are welcome to it, as-is or modified (subject to +Davide's constraints, of course, which I think I have met). + +If I were to include it in a future edition, I would put it at some +distance from section 13.3.11, say, as a note or an appendix, so as not to +be a "spoiler" to the puzzle. + +Best regards, +-- +Chris Johansen {johansen at main dot nc dot us} + . . . collapsing the probability wave function, sending ripples of +certainty through the space-time continuum. + + +#! /usr/bin/gawk -f + +# From "13.3.11 And Now For Something Completely Different" +# http://www.gnu.org/software/gawk/manual/html_node/Signature-Program.html#Signature-Program + +# Copyright © 2008 Davide Brini + +# Copying and distribution of the code published in this page, with +# or without modification, are permitted in any medium without +# royalty provided the copyright notice and this notice are preserved. + +BEGIN { + O = "~" ~ "~"; # 1 + o = "==" == "=="; # 1 + o += +o; # 2 + x = O "" O; # 11 + + + while ( X++ <= x + o + o ) c = c "%c"; + + # O is 1 + # o is 2 + # x is 11 + # X is 17 + # c is "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c" + + printf c, + ( x - O )*( x - O), # 100 d + x*( x - o ) - o, # 97 a + x*( x - O ) + x - O - o, # 118 v + +x*( x - O ) - x + o, # 101 e + X*( o*o + O ) + x - O, # 95 _ + X*( X - x ) - o*o, # 98 b + ( x + X )*o*o + o, # 114 r + x*( X - x ) - O - O, # 64 @ + x - O + ( O + o + X + x )*( o + O ), # 103 g + X*X - X*( x - O ) - x + O, # 109 m + O + X*( o*( o + O ) + O ), # 120 x + +x + O + X*o, # 46 . + x*( x - o), # 99 c + ( o + X + x )*o*o - ( x - O - O ), # 111 0 + O + ( X - x )*( X + O ), # 109 m + x - O # 10 \n +} +@end ignore + @c The original text for this chapter was contributed by Efraim Yawitz. @c FIXME: Add more indexing. @@ -26932,13 +27024,13 @@ in the machine's native character set. Thus, on ASCII-based systems, @code{[a-z]} matched all the lowercase letters, and only the lowercase letters, since the numeric values for the letters from @samp{a} through -@samp{z} were contigous. (On an EBCDIC system, the range @samp{[a-z]} +@samp{z} were contiguous. (On an EBCDIC system, the range @samp{[a-z]} includes additional, non-alphabetic characters as well.) Almost all introductory Unix literature explained range expressions as working in this fashion, and in particular, would teach that the ``correct'' way to match lowercase letters was with @samp{[a-z]}, and -that @samp{[A-Z]} was the the ``correct'' way to match uppercase letters. +that @samp{[A-Z]} was the ``correct'' way to match uppercase letters. And indeed, this was true. The 1993 POSIX standard introduced the idea of locales (@pxref{Locales}). @@ -28081,6 +28173,7 @@ @c based on material from Pat Rankin @c now rankin@pactechdata.com +@c now r.pat.rankin@gmail.com @cindex @command{gawk}, VMS version of @cindex installation, VMS @@ -28361,7 +28454,7 @@ @item OS/2 @tab Andreas Buening, @EMAIL{andreas.buening@@nexgo.de,andreas dot buening at nexgo dot de}. @cindex Rankin, Pat -@item VMS @tab Pat Rankin, @EMAIL{rankin@@pactechdata.com,rankin at pactechdata dot com}. +@item VMS @tab Pat Rankin, @EMAIL{r.pat.rankin@@gmail.com,r.pat.rankin at gmail.com} @cindex Pitts, Dave @item z/OS (OS/390) @tab Dave Pitts, @EMAIL{dpitts@@cozx.com,dpitts at cozx dot com}. diff -urN gawk-4.0.0/doc/texinfo.tex gawk-4.0.1/doc/texinfo.tex --- gawk-4.0.0/doc/texinfo.tex 2011-01-02 20:30:11.000000000 +0200 +++ gawk-4.0.1/doc/texinfo.tex 2012-03-28 21:47:54.000000000 +0200 @@ -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-01-19.16} % % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, -% 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +% 2007, 2008, 2009, 2010, 2011 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 @@ \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 @@ \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 @@ -1078,9 +1081,8 @@ \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 +1097,24 @@ % 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 @@ -1200,29 +1176,31 @@ \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% \def\imageheight{#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 @@ -1250,10 +1228,9 @@ % 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 +1262,22 @@ % 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 +1333,26 @@ % 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 @@ -1512,7 +1494,7 @@ % 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 +1761,7 @@ % 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 +2052,7 @@ % \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 +2234,14 @@ % 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 +2275,11 @@ \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 +2303,36 @@ \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 +2360,9 @@ \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 +2372,15 @@ % 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 +2476,7 @@ \plainfrenchspacing #1% }% - \null + \null % reset spacefactor to 1000 } % We *must* turn on hyphenation at `-' and `_' in @code. @@ -2487,6 +2508,8 @@ } } +\def\codex #1{\tclose{#1}\endgroup} + \def\realdash{-} \def\codedash{-\discretionary{}{}{}} \def\codeunder{% @@ -2500,7 +2523,6 @@ \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 +2542,18 @@ \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 +2574,103 @@ \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 +2692,51 @@ \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 +2758,7 @@ \ifx\temp\empty \else \space ({\unsepspaces \ignorespaces \temp \unskip})% \fi + \null % reset \spacefactor=1000 } % @abbr for "Comput. J." and the like. @@ -2651,6 +2771,7 @@ \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 +2836,48 @@ } } +% @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 +3005,7 @@ {\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 +3154,7 @@ % 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 +3182,9 @@ \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 +3244,7 @@ \finishedtitlepagetrue } -%%% Macros to be used within @titlepage: +% Macros to be used within @titlepage: \let\subtitlerm=\tenrm \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} @@ -3127,7 +3277,7 @@ } -%%% Set up page headings and footings. +% Set up page headings and footings. \let\thispage=\folio @@ -3279,7 +3429,7 @@ % 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 +3976,18 @@ \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} @@ -4349,6 +4499,7 @@ % % Commands that take arguments. \definedummyword\acronym + \definedummyword\anchor \definedummyword\cite \definedummyword\code \definedummyword\command @@ -5242,7 +5393,8 @@ \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 +5438,47 @@ \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 +5486,25 @@ } % 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 +5554,13 @@ % (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 +5763,8 @@ % \def\sectionheading#1#2#3#4{% {% + \checkenv{}% should not be in an environment. + % % Switch to the right set of fonts. \csname #2fonts\endcsname \rmisbold % @@ -5718,7 +5882,6 @@ % 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 \penalty 10001 @@ -6136,6 +6299,12 @@ \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 \fi + % \vbox\bgroup \baselineskip=0pt\parskip=0pt\lineskip=0pt \carttop @@ -6149,7 +6318,7 @@ \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 +6515,7 @@ % \def\Equotation{% \par - \ifx\quotationauthor\undefined\else + \ifx\quotationauthor\thisisundefined\else % indent a bit. \leftline{\kern 2\leftskip \sl ---\quotationauthor}% \fi @@ -6505,6 +6674,7 @@ \makevalueexpandable \setupverbatim \indexnofonts % Allow `@@' and other weird things in file names. + \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% \input #1 \afterenvbreak }% @@ -6554,7 +6724,7 @@ % 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 +6791,36 @@ \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 +6839,7 @@ \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}% } -%%% Typed functions: +% Typed functions: % @deftypefn category type name args \makedefun{deftypefn}{\deftypefngeneral{}} @@ -6661,10 +6854,11 @@ % \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 +6876,7 @@ \defname{#2}{#3}{#4}\defunargs{#5\unskip}% } -%%% Untyped variables: +% Untyped variables: % @defvr category var args \makedefun{defvr}#1 {\deftypevrheader{#1} {} } @@ -6693,7 +6887,8 @@ % \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 +6916,49 @@ % 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 +6980,16 @@ % . 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 +7107,7 @@ % 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 +7132,14 @@ % ... 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 +7274,15 @@ \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 +7332,17 @@ \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 +7352,33 @@ % % 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 +7389,205 @@ \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 +} + +% +\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 the macro itself. There are six cases: recursive and -% nonrecursive macros of zero, one, and many arguments. +% 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 +7606,25 @@ \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 +7641,33 @@ \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 +7706,8 @@ % @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 +7768,32 @@ \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 +7802,36 @@ \def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]} \def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} \def\ref#1{\xrefX[#1,,,,,,,]} +% +\newbox\topbox +\newbox\printedrefnamebox +\newbox\printedmanualbox +% \def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup \unsepspaces - \def\printedmanual{\ignorespaces #5}% + % \def\printedrefname{\ignorespaces #3}% - \setbox1=\hbox{\printedmanual\unskip}% - \setbox0=\hbox{\printedrefname\unskip}% - \ifdim \wd0 = 0pt + \setbox\printedrefnamebox = \hbox{\printedrefname\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. @@ -7346,9 +7849,8 @@ % etc. don't get their TeX definitions. \getfilename{#4}% % - % See comments at \activebackslashdouble. - {\activebackslashdouble \xdef\pdfxrefdest{#1}% - \backslashparens\pdfxrefdest}% + \edef\pdfxrefdest{#1}% + \txiescapepdf\pdfxrefdest % \leavevmode \startlink attr{/Border [0 0 0]}% @@ -7375,7 +7877,7 @@ \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 @@ -7383,21 +7885,46 @@ % % 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 \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}% + % + % 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. + % + % Cross-manual reference. Only include the "Section ``foo'' in" if + % the foo is neither missing or Top. Thus, @xref{,,,foo,The Foo Manual} + % outputs simply "see The Foo Manual". + \ifdim \wd\printedmanualbox > 0pt + % What is the 7sp about? The idea is that we also want to omit + % the Section part if we would be printing "Top", since they are + % clearly trying to refer to the whole manual. But, this being + % TeX, we can't easily compare strings while ignoring the possible + % spaces before and after in the input. By adding the arbitrary + % 7sp, we make it much less likely that a real node name would + % happen to have the same width as "Top" (e.g., in a monospaced font). + % I hope it will never happen in practice. + % + % For the same basic reason, we retypeset the "Top" at every + % reference, since the current font is indeterminate. + % + \setbox\topbox = \hbox{Top\kern7sp}% + \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}% + \ifdim \wd2 > 7sp + \ifdim \wd2 = \wd\topbox \else + \putwordSection{} ``\printedrefname'' \putwordin{}\space + \fi + \fi + \cite{\printedmanual}% \else + % Reference in 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 +7936,7 @@ \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: @@ -7637,7 +8164,7 @@ % 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 +8227,8 @@ % 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 +8316,7 @@ it from ftp://tug.org/tex/epsf.tex.} % \def\image#1{% - \ifx\epsfbox\undefined + \ifx\epsfbox\thisiundefined \ifwarnednoepsf \else \errhelp = \noepsfhelp \errmessage{epsf.tex not found, images will be ignored}% @@ -8252,7 +8781,7 @@ % % 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 +8811,7 @@ \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 +8903,7 @@ % 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 +9076,7 @@ \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 +9752,21 @@ \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 +9844,24 @@ % 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 +9869,16 @@ % 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 +9910,19 @@ % Say @foo, not \foo, in error messages. @escapechar = `@@ +% These (along with & and #) are made active for url-breaking, so need +% active definitions as the normal characters. +@def@normaldot{.} +@def@normalquest{?} +@def@normalslash{/} + % These look ok in all fonts, so just make them not special. -@catcode`@& = @other -@catcode`@# = @other -@catcode`@% = @other +% @hashchar{} gets its own user-level command, because of #line. +@catcode`@& = @other @def@normalamp{&} +@catcode`@# = @other @def@normalhash{#} +@catcode`@% = @other @def@normalpercent{%} + +@let @hashchar = @normalhash @c Finally, make ` and ' active, so that txicodequoteundirected and @c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we diff -urN gawk-4.0.0/eval.c gawk-4.0.1/eval.c --- gawk-4.0.0/eval.c 2011-05-08 20:37:41.000000000 +0300 +++ gawk-4.0.1/eval.c 2012-03-28 21:54:19.000000000 +0200 @@ -30,7 +30,7 @@ extern double modf(double x, double *yp); extern double fmod(double x, double y); NODE **fcall_list; -long fcall_count; +long fcall_count = 0; int currule = 0; IOBUF *curfile = NULL; /* current data file */ int exiting = FALSE; @@ -79,7 +79,7 @@ #endif #define C(c) ((char)c) /* - * This table is used by the regexp routines to do case independant + * This table is used by the regexp routines to do case independent * matching. Basically, every ascii character maps to itself, except * uppercase letters map to lower case ones. This table has 256 * entries, for ISO 8859-1. Note also that if the system this @@ -348,6 +348,7 @@ { "Op_K_getline", "getline" }, { "Op_K_nextfile", "nextfile" }, { "Op_builtin", NULL }, + { "Op_sub_builtin", NULL }, { "Op_in_array", " in " }, { "Op_func_call", NULL }, { "Op_indirect_func_call", NULL }, @@ -542,7 +543,7 @@ * In either case, ret will be the right thing to return. */ } -#ifdef MBS_SUPPORT +#if MBS_SUPPORT else { /* Similar logic, using wide characters */ (void) force_wstring(s1); @@ -625,7 +626,7 @@ const unsigned char *cp1 = (const unsigned char *) t1->stptr; const unsigned char *cp2 = (const unsigned char *) t2->stptr; -#ifdef MBS_SUPPORT +#if MBS_SUPPORT if (gawk_mb_cur_max > 1) { ret = strncasecmpmbs((const unsigned char *) cp1, (const unsigned char *) cp2, l); @@ -677,7 +678,7 @@ #endif } #else /* not PROFILING or DEBUGGING */ -#define push_frame(p) /* nothing */ +#define push_frame(p) /* nothing */ #define pop_frame() /* nothing */ #endif @@ -689,7 +690,6 @@ void dump_fcall_stack(FILE *fp) { - NODE *f, *func; long i = 0; @@ -1149,12 +1149,6 @@ case Node_var: break; -#if 0 - case Node_builtin: - /* in gawk for a while */ - fatal(_("assignment is not allowed to result of builtin function")); -#endif - default: cant_happen(); } @@ -1241,7 +1235,7 @@ /* setup_frame --- setup new frame for function call */ -static void +static INSTRUCTION * setup_frame(INSTRUCTION *pc) { NODE *r = NULL; @@ -1328,18 +1322,23 @@ DEREF(r); } + frame_ptr->vname = source; /* save current source */ + push_frame(frame_ptr); /* save current frame in stack */ PUSH(frame_ptr); + /* setup new frame */ getnode(frame_ptr); frame_ptr->type = Node_frame; frame_ptr->stack = sp; + frame_ptr->prev_frame_size = (stack_ptr - stack_bottom); /* size of the previous stack frame */ frame_ptr->func_node = f; frame_ptr->vname = NULL; + frame_ptr->reti = pc; /* on return execute pc->nexti */ - frame_ptr->reti = (unsigned long) pc; /* on return execute pc->nexti */ + return f->code_ptr; } @@ -1368,13 +1367,18 @@ } if (frame_ptr->stack != NULL) efree(frame_ptr->stack); - ri = (INSTRUCTION *) frame_ptr->reti; /* execution in calling frame - * resumes from ri->nexti. - */ + ri = frame_ptr->reti; /* execution in calling frame + * resumes from ri->nexti. + */ freenode(frame_ptr); pop_frame(); + /* restore frame */ frame_ptr = fp; + /* restore source */ + source = fp->vname; + fp->vname = NULL; + return ri->nexti; } @@ -1394,33 +1398,40 @@ freenode(r); } -/* unwind_stack --- pop the runtime stack */ -void -unwind_stack(STACK_ITEM *sp_bottom) +/* unwind_stack --- pop items off the run-time stack; + * 'n' is the # of items left in the stack. + */ + +INSTRUCTION * +unwind_stack(long n) { NODE *r; + INSTRUCTION *cp = NULL; + STACK_ITEM *sp; - while (stack_ptr >= sp_bottom) { - r = POP(); - switch (r->type) { - case Node_instruction: - freenode(r); - break; + if (stack_empty()) + return NULL; + + sp = stack_bottom + n; + + if (stack_ptr < sp) + return NULL; + while ((r = POP()) != NULL) { + switch (r->type) { case Node_frame: - (void) restore_frame(r); - source = frame_ptr->vname; + cp = restore_frame(r); break; - case Node_arrayfor: free_arrayfor(r); break; - case Node_val: DEREF(r); break; - + case Node_instruction: + freenode(r); + break; default: if (in_main_context()) fatal(_("unwind_stack: unexpected type `%s'"), @@ -1434,8 +1445,19 @@ */ break; } + + if (stack_ptr < sp) + break; } -} + return cp; +} + + +/* pop_fcall --- pop off the innermost frame */ +#define pop_fcall() unwind_stack(frame_ptr->prev_frame_size) + +/* pop the run-time stack */ +#define pop_stack() (void) unwind_stack(0) /* @@ -1562,6 +1584,75 @@ } +/* 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 + * the instruction and hence is not considered a part of the execution state. + */ + + +typedef struct exec_state { + struct exec_state *next; + + INSTRUCTION *cptr; /* either getline (Op_K_getline) or the + * implicit "open-file, read-record" loop (Op_newfile). + */ + + int rule; /* rule for the INSTRUCTION */ + + long stack_size; /* For this particular usage, it is sufficient to save + * only the size of the call stack. We do not + * store the actual stack pointer to avoid problems + * in case the stack gets realloc-ed. + */ + + const char *source; /* source file for the INSTRUCTION */ +} EXEC_STATE; + +static EXEC_STATE exec_state_stack; + +/* push_exec_state --- save an execution state on stack */ + +static void +push_exec_state(INSTRUCTION *cp, int rule, char *src, STACK_ITEM *sp) +{ + EXEC_STATE *es; + + emalloc(es, EXEC_STATE *, sizeof(EXEC_STATE), "push_exec_state"); + es->rule = rule; + es->cptr = cp; + es->stack_size = (sp - stack_bottom) + 1; + es->source = src; + es->next = exec_state_stack.next; + exec_state_stack.next = es; +} + + +/* pop_exec_state --- pop one execution state off the stack */ + +static INSTRUCTION * +pop_exec_state(int *rule, char **src, long *sz) +{ + INSTRUCTION *cp; + EXEC_STATE *es; + + es = exec_state_stack.next; + if (es == NULL) + return NULL; + cp = es->cptr; + if (rule != NULL) + *rule = es->rule; + if (src != NULL) + *src = (char *) es->source; + if (sz != NULL) + *sz = es->stack_size; + exec_state_stack.next = es->next; + efree(es); + return cp; +} + + /* * r_interpret: * code is a list of instructions to run. returns the exit value @@ -1597,6 +1688,7 @@ #endif int stdio_problem = FALSE; + if (args_array == NULL) emalloc(args_array, NODE **, (max_args + 2)*sizeof(NODE *), "r_interpret"); else @@ -2114,11 +2206,29 @@ break; case Op_var_assign: - pc->assign_var(); - break; - case Op_field_assign: - pc->field_assign(); + if (pc->assign_ctxt == Op_sub_builtin + && TOP()->numbr == 0.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. + * Skip the set_FOO routine if the target is a special variable. + */ + + 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 */ + ) { + /* getline returned EOF or error */ + + break; + } + + if (pc->opcode == Op_var_assign) + pc->assign_var(); + else + pc->field_assign(); break; case Op_concat: @@ -2208,7 +2318,7 @@ /* * Actual array for use in lint warning * in Op_arrayfor_incr - */ + */ list[num_elems] = array; arrayfor: @@ -2256,7 +2366,12 @@ #endif PUSH(r); break; - + + case Op_sub_builtin: /* sub, gsub and gensub */ + r = do_sub(pc->expr_count, pc->sub_flags); + PUSH(r); + break; + case Op_K_print: do_print(pc->expr_count, pc->redir_type); break; @@ -2333,7 +2448,7 @@ if (t1->stlen > 0) { /* retrieve function definition node */ f = pc->func_body; - if (f != NULL && STREQ(f->vname, t1->stptr)) + if (f != NULL && strcmp(f->vname, t1->stptr) == 0) /* indirect var hasn't been reassigned */ goto func_call; f = lookup(t1->stptr); @@ -2359,10 +2474,8 @@ /* save current frame along with source */ func_call: - frame_ptr->vname = source; /* save current source */ - setup_frame(pc); - - ni = f->code_ptr; /* function code */ + ni = setup_frame(pc); + if (ni->opcode == Op_ext_func) { /* dynamically set source and line numbers for an extension builtin. */ ni->source_file = source; @@ -2377,29 +2490,11 @@ case Op_K_return: m = POP_SCALAR(); /* return value */ - r = POP(); - while (r->type != Node_frame) { - switch (r->type) { - case Node_arrayfor: - free_arrayfor(r); - break; - case Node_val: - DEREF(r); - break; - case Node_instruction: - freenode(r); - break; - default: - break; - } - r = POP(); - } - - ni = restore_frame(r); - source = frame_ptr->vname; - + ni = pop_fcall(); + /* put the return value back on stack */ PUSH(m); + JUMPTO(ni); case Op_K_getline_redir: @@ -2412,103 +2507,158 @@ break; case Op_K_getline: /* no redirection */ - if (currule == BEGINFILE || currule == ENDFILE) + if (! currule || currule == BEGINFILE || currule == ENDFILE) fatal(_("non-redirected `getline' invalid inside `%s' rule"), ruletab[currule]); + do { int ret; - ret = nextfile(&curfile, FALSE); + ret = nextfile(& curfile, FALSE); if (ret <= 0) r = do_getline(pc->into_var, curfile); else { - PUSH_CODE(pc); + + /* Save execution state so that we can return to it + * from Op_after_beginfile or Op_after_endfile. + */ + + push_exec_state(pc, currule, source, stack_ptr); + if (curfile == NULL) JUMPTO((pc + 1)->target_endfile); else JUMPTO((pc + 1)->target_beginfile); } } while (r == NULL); /* EOF */ + PUSH(r); break; case Op_after_endfile: - ni = POP_CODE(); + /* Find the execution state to return to */ + ni = pop_exec_state(& currule, & source, NULL); + assert(ni->opcode == Op_newfile || ni->opcode == Op_K_getline); JUMPTO(ni); case Op_after_beginfile: - after_beginfile(&curfile); - ni = POP_CODE(); + after_beginfile(& curfile); + + /* Find the execution state to return to */ + ni = pop_exec_state(& currule, & source, NULL); + + assert(ni->opcode == Op_newfile || ni->opcode == Op_K_getline); if (ni->opcode == Op_K_getline || curfile == NULL /* skipping directory argument */ ) JUMPTO(ni); - PUSH_CODE(ni); /* for use in Op_K_nextfile and Op_get_record */ - break; /* Op_get_record */ + + break; /* read a record, Op_get_record */ case Op_newfile: { int ret; - ret = nextfile(&curfile, FALSE); - if (ret < 0) - JUMPTO(pc->target_jmp); /* end block or Op_atexit */ - else if (ret > 0) { - PUSH_CODE(pc); - if (curfile == NULL) - JUMPTO(pc->target_endfile); - break; /* beginfile block */ - } else - PUSH_CODE(pc); - /* fall through */ + + ret = nextfile(& curfile, FALSE); + + if (ret < 0) /* end of input */ + JUMPTO(pc->target_jmp); /* end block or Op_atexit */ + + if (ret == 0) /* read a record */ + JUMPTO((pc + 1)->target_get_record); + + /* ret > 0 */ + /* Save execution state for use in Op_after_beginfile or Op_after_endfile. */ + + push_exec_state(pc, currule, source, stack_ptr); + + if (curfile == NULL) /* EOF */ + JUMPTO(pc->target_endfile); + /* else + execute beginfile block */ } + break; - case Op_get_record: - if (curfile == NULL) { /* from getline without redirection */ - ni = POP_CODE(); /* Op_newfile */ - ni = ni->target_jmp; /* end_block or Op_atexit */ - } else if (inrec(curfile) == 0) - break; /* prog(rule) block */ - else - ni = POP_CODE(); /* Op_newfile */ - JUMPTO(ni); + case Op_get_record: + { + int errcode = 0; + + ni = pc->target_newfile; + if (curfile == NULL) { + /* from non-redirected getline, e.g.: + * { + * while (getline > 0) ; + * } + */ + + ni = ni->target_jmp; /* end_block or Op_atexit */ + JUMPTO(ni); + } + + if (inrec(curfile, & errcode) != 0) { + if (errcode > 0 && (do_traditional || ! pc->has_endfile)) + fatal(_("error reading input file `%s': %s"), + curfile->name, strerror(errcode)); + + JUMPTO(ni); + } /* else + prog (rule) block */ + } + break; case Op_K_nextfile: + { + int ret; + if (currule != Rule && currule != BEGINFILE) - fatal(_("`nextfile' cannot be called from a `%s' rule"), ruletab[currule]); - (void) nextfile(&curfile, TRUE); - while (currule == BEGINFILE) { - r = POP(); - switch (r->type) { - case Node_instruction: - ni = r->code_ptr; - freenode(r); - if (ni->opcode == Op_newfile || ni->opcode == Op_K_getline) - JUMPTO(ni); - break; - case Node_frame: - (void) restore_frame(r); - source = frame_ptr->vname; - break; - case Node_arrayfor: - free_arrayfor(r); - break; - case Node_val: - DEREF(r); - break; - default: - break; - } - } + fatal(_("`nextfile' cannot be called from a `%s' rule"), + ruletab[currule]); + + ret = nextfile(& curfile, TRUE); /* skip current file */ - assert(currule != BEGINFILE); - unwind_stack(stack_bottom + 1); /* don't pop Op_newfile */ - JUMPTO(pc->target_endfile); /* endfile block */ + if (currule == BEGINFILE) { + long stack_size; + + ni = pop_exec_state(& currule, & source, & stack_size); + + assert(ni->opcode == Op_K_getline || ni->opcode == Op_newfile); + + /* pop stack returning to the state of Op_K_getline or Op_newfile. */ + unwind_stack(stack_size); + + if (ret == 0) { + /* There was an error opening the file; + * don't run ENDFILE block(s). + */ + + JUMPTO(ni); + } else { + /* do run ENDFILE block(s) first. */ + + /* Execution state to return to in Op_after_endfile. */ + push_exec_state(ni, currule, source, stack_ptr); + + JUMPTO(pc->target_endfile); + } + } /* else + Start over with the first rule. */ + + /* empty the run-time stack to avoid memory leak */ + pop_stack(); + + /* Push an execution state for Op_after_endfile to return to */ + push_exec_state(pc->target_newfile, currule, source, stack_ptr); + + JUMPTO(pc->target_endfile); + } + break; case Op_K_exit: - if (currule == END) - ni = pc->target_atexit; - else - ni = pc->target_end; + /* exit not allowed in user-defined comparison functions for "sorted_in"; + * This is done so that END blocks aren't executed more than once. + */ + if (! currule) + fatal(_("`exit' cannot be called in the current context")); exiting = TRUE; POP_NUMBER(x1); @@ -2521,19 +2671,36 @@ /* else just pass anything else on through */ #endif - /* jump to either the first end_block instruction - * or to Op_atexit + + if (currule == BEGINFILE || currule == ENDFILE) { + + /* Find the rule of the saved execution state (Op_K_getline/Op_newfile). + * This is needed to prevent multiple execution of any END rules: + * gawk 'BEGINFILE { exit(1) } \ + * END { while (getline > 0); }' in1 in2 + */ + + (void) pop_exec_state(& currule, & source, NULL); + } + + pop_stack(); /* empty stack, don't leak memory */ + + /* Jump to either the first END block instruction + * or to Op_atexit. */ - unwind_stack(stack_bottom); + + if (currule == END) + ni = pc->target_atexit; + else + ni = pc->target_end; JUMPTO(ni); case Op_K_next: if (currule != Rule) fatal(_("`next' cannot be called from a `%s' rule"), ruletab[currule]); - /* jump to Op_get_record */ - unwind_stack(stack_bottom + 1); /* don't pop Op_newfile */ - JUMPTO(pc->target_jmp); + pop_stack(); + JUMPTO(pc->target_jmp); /* Op_get_record, read next record */ case Op_pop: #if defined(GAWKDEBUG) || defined(ARRAYDEBUG) diff -urN gawk-4.0.0/ext.c gawk-4.0.1/ext.c --- gawk-4.0.0/ext.c 2011-05-23 22:02:21.000000000 +0300 +++ gawk-4.0.1/ext.c 2012-03-28 21:52:50.000000000 +0200 @@ -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,10 +33,6 @@ #include -#ifdef __GNUC__ -static unsigned long long dummy; /* fake out gcc for dynamic loading? */ -#endif - /* do_ext --- load an extension */ NODE * @@ -54,12 +50,6 @@ static short warned = FALSE; #endif -#ifdef __GNUC__ - AWKNUM junk; - - junk = (AWKNUM) dummy; -#endif - if (do_sandbox) fatal(_("extensions are not allowed in sandbox mode")); diff -urN gawk-4.0.0/extension/ChangeLog gawk-4.0.1/extension/ChangeLog --- gawk-4.0.0/extension/ChangeLog 2011-06-23 09:44:35.000000000 +0300 +++ gawk-4.0.1/extension/ChangeLog 2012-03-28 22:02:17.000000000 +0200 @@ -1,3 +1,7 @@ +2012-03-28 Arnold D. Robbins + + * 4.0.1: Release tar ball made. + 2011-06-23 Arnold D. Robbins * ChangeLog.0: Rotated ChangeLog into this file. diff -urN gawk-4.0.0/field.c gawk-4.0.1/field.c --- gawk-4.0.0/field.c 2011-06-05 21:33:34.000000000 +0300 +++ gawk-4.0.1/field.c 2012-03-28 21:47:54.000000000 +0200 @@ -373,7 +373,7 @@ char *end = scan + len; int regex_flags = RE_NEED_START; char *sep; -#ifdef MBS_SUPPORT +#if MBS_SUPPORT size_t mbclen = 0; mbstate_t mbs; if (gawk_mb_cur_max > 1) @@ -405,7 +405,7 @@ && nf < up_to) { regex_flags |= RE_NO_BOL; if (REEND(rp, scan) == RESTART(rp, scan)) { /* null match */ -#ifdef MBS_SUPPORT +#if MBS_SUPPORT if (gawk_mb_cur_max > 1) { mbclen = mbrlen(scan, end-scan, &mbs); if ((mbclen == 1) || (mbclen == (size_t) -1) @@ -617,7 +617,7 @@ if (len == 0) return nf; -#ifdef MBS_SUPPORT +#if MBS_SUPPORT if (gawk_mb_cur_max > 1) { mbstate_t mbs; memset(&mbs, 0, sizeof(mbstate_t)); @@ -669,7 +669,7 @@ char *field; char *end = scan + len; char sav; -#ifdef MBS_SUPPORT +#if MBS_SUPPORT size_t mbclen = 0; mbstate_t mbs; if (gawk_mb_cur_max > 1) @@ -693,7 +693,7 @@ for (; nf < up_to;) { field = scan; -#ifdef MBS_SUPPORT +#if MBS_SUPPORT if (gawk_mb_cur_max > 1) { while (*scan != fschar) { mbclen = mbrlen(scan, end-scan, &mbs); @@ -747,7 +747,7 @@ char *scan = *buf; long nf = parse_high_water; char *end = scan + len; -#ifdef MBS_SUPPORT +#if MBS_SUPPORT int nmbc; size_t mbclen; size_t mbslen; @@ -763,7 +763,7 @@ if (len == 0) return nf; for (; nf < up_to && (len = FIELDWIDTHS[nf+1]) != -1; ) { -#ifdef MBS_SUPPORT +#if MBS_SUPPORT if (gawk_mb_cur_max > 1) { nmbc = 0; mbslen = 0; @@ -849,7 +849,8 @@ if (assign != NULL) field0_valid = FALSE; /* $0 needs reconstruction */ #else - /* keep things uniform. Also, mere intention of assigning something + /* + * Keep things uniform. Also, mere intention of assigning something * to $n should not make $0 invalid. Makes sense to invalidate $0 * after the actual assignment is performed. Not a real issue in * the interpreter otherwise, but causes problem in the @@ -1126,10 +1127,12 @@ FIELDWIDTHS[0] = 0; for (i = 1; ; i++) { unsigned long int tmp; - if (i + 1 >= fw_alloc) { + if (i + 2 >= fw_alloc) { fw_alloc *= 2; erealloc(FIELDWIDTHS, int *, fw_alloc * sizeof(int), "set_FIELDWIDTHS"); } + /* Initialize value to be end of list */ + FIELDWIDTHS[i] = -1; /* Ensure that there is no leading `-' sign. Otherwise, strtoul would accept it and return a bogus result. */ while (is_blank(*scan)) { @@ -1163,8 +1166,6 @@ if (*scan == '\0') break; } - if (i == 1) /* empty string! */ - i--; FIELDWIDTHS[i+1] = -1; update_PROCINFO_str("FS", "FIELDWIDTHS"); @@ -1425,13 +1426,13 @@ * Implementation varies if doing MBS or not. */ -#ifdef MBS_SUPPORT +#if MBS_SUPPORT #define increment_scan(scanp, len) incr_scan(scanp, len, & mbs) #else #define increment_scan(scanp, len) ((*scanp)++) #endif -#ifdef MBS_SUPPORT +#if MBS_SUPPORT /* incr_scan --- MBS version of increment_scan() */ static void @@ -1577,16 +1578,13 @@ int need_to_set_sep; int non_empty; int eosflag; -#ifdef MBS_SUPPORT +#if MBS_SUPPORT mbstate_t mbs; if (gawk_mb_cur_max > 1) memset(&mbs, 0, sizeof(mbstate_t)); #endif - if (in_middle) - regex_flags |= RE_NO_BOL; - if (up_to == UNLIMITED) nf = 0; @@ -1596,7 +1594,13 @@ if (rp == NULL) /* use FPAT */ rp = FPAT_regexp; - eosflag = non_empty = FALSE; + if (in_middle) { + regex_flags |= RE_NO_BOL; + non_empty = rp->non_empty; + } else + non_empty = FALSE; + + eosflag = FALSE; need_to_set_sep = TRUE; start = scan; while (research(rp, scan, 0, (end - scan), regex_flags) != -1 @@ -1675,5 +1679,6 @@ } *buf = scan; + rp->non_empty = non_empty; return nf; } diff -urN gawk-4.0.0/getopt.c gawk-4.0.1/getopt.c --- gawk-4.0.0/getopt.c 2010-10-31 12:25:52.000000000 +0200 +++ gawk-4.0.1/getopt.c 2012-03-28 21:47:54.000000000 +0200 @@ -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 + . */ /* This tells Alpha OSF/1 not to define a getopt prototype in . Ditto for AIX 3.2 and . */ @@ -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 # include #endif /* GNU C library. */ @@ -74,7 +81,7 @@ # define _(msgid) gettext (msgid) #endif -#if defined _LIBC && defined USE_IN_LIBIO +#if defined _LIBC # include #endif @@ -526,23 +533,29 @@ || !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 @@ || 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]); + + do + { + fprintf (fp, " '--%s'", ambig_list->p->name); + ambig_list = ambig_list->next; + } + while (ambig_list != NULL); + + fputc_unlocked ('\n', fp); - if (__asprintf (&buf, _("%s: option '%s' is ambiguous\n"), - argv[0], argv[d->optind]) >= 0) + if (__builtin_expect (fclose (fp) != EOF, 1)) { _IO_flockfile (stderr); @@ -586,9 +627,24 @@ 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 @@ { if (print_errors) { -#if defined _LIBC && defined USE_IN_LIBIO +#if defined _LIBC char *buf; int n; #endif @@ -619,7 +675,7 @@ 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 @@ 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 @@ #endif } -#if defined _LIBC && defined USE_IN_LIBIO +#if defined _LIBC if (n >= 0) { _IO_flockfile (stderr); @@ -678,7 +734,7 @@ { if (print_errors) { -#if defined _LIBC && defined USE_IN_LIBIO +#if defined _LIBC char *buf; if (__asprintf (&buf, _("\ @@ -729,7 +785,7 @@ { if (print_errors) { -#if defined _LIBC && defined USE_IN_LIBIO +#if defined _LIBC char *buf; int n; #endif @@ -737,7 +793,7 @@ 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 @@ 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 @@ #endif } -#if defined _LIBC && defined USE_IN_LIBIO +#if defined _LIBC if (n >= 0) { _IO_flockfile (stderr); @@ -795,19 +851,19 @@ { 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 @@ 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 @@ { if (print_errors) { -#if defined _LIBC && defined USE_IN_LIBIO +#if defined _LIBC char *buf; if (__asprintf (&buf, @@ -924,7 +983,7 @@ { 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 @@ { if (print_errors) { -#if defined _LIBC && defined USE_IN_LIBIO +#if defined _LIBC char *buf; if (__asprintf (&buf, _("\ @@ -1003,7 +1062,7 @@ { if (print_errors) { -#if defined _LIBC && defined USE_IN_LIBIO +#if defined _LIBC char *buf; if (__asprintf (&buf, _("\ @@ -1045,6 +1104,8 @@ } return pfound->val; } + + no_longs: d->__nextchar = NULL; return 'W'; /* Let the application handle it. */ } @@ -1076,7 +1137,7 @@ { if (print_errors) { -#if defined _LIBC && defined USE_IN_LIBIO +#if defined _LIBC char *buf; if (__asprintf (&buf, _("\ diff -urN gawk-4.0.0/getopt.h gawk-4.0.1/getopt.h --- gawk-4.0.0/getopt.h 2010-10-31 12:25:52.000000000 +0200 +++ gawk-4.0.1/getopt.h 2012-03-28 21:47:54.000000000 +0200 @@ -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 + . */ #ifndef _GETOPT_H @@ -158,9 +157,9 @@ additional functionality can be disable at runtime. This redirection helps to also do this at runtime. */ # ifdef __REDIRECT - extern int __REDIRECT (getopt, (int ___argc, char *const *___argv, + extern int __REDIRECT_NTH (getopt, (int ___argc, char *const *___argv, const char *__shortopts), - __posix_getopt) __THROW; + __posix_getopt); # else extern int __posix_getopt (int ___argc, char *const *___argv, const char *__shortopts) __THROW; diff -urN gawk-4.0.0/getopt1.c gawk-4.0.1/getopt1.c --- gawk-4.0.0/getopt1.c 2010-10-31 12:25:52.000000000 +0200 +++ gawk-4.0.1/getopt1.c 2012-03-28 21:47:54.000000000 +0200 @@ -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 + . */ #ifdef HAVE_CONFIG_H #include @@ -46,6 +45,11 @@ #endif #endif +/* !@#$%^&*() !!!!!!!! */ +#ifdef GAWK +#undef ELIDE_CODE +#endif + #ifndef ELIDE_CODE diff -urN gawk-4.0.0/getopt_int.h gawk-4.0.1/getopt_int.h --- gawk-4.0.0/getopt_int.h 2010-10-31 12:25:52.000000000 +0200 +++ gawk-4.0.1/getopt_int.h 2012-03-28 21:47:54.000000000 +0200 @@ -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 + . */ #ifndef _GETOPT_INT_H #define _GETOPT_INT_H 1 diff -urN gawk-4.0.0/io.c gawk-4.0.1/io.c --- gawk-4.0.0/io.c 2011-05-18 21:47:29.000000000 +0300 +++ gawk-4.0.1/io.c 2012-03-28 21:47:54.000000000 +0200 @@ -34,6 +34,9 @@ #undef RE_DUP_MAX /* avoid spurious conflict w/regex.h */ #include #endif /* HAVE_SYS_PARAM_H */ +#ifdef HAVE_SYS_IOCTL_H +#include +#endif /* HAVE_SYS_IOCTL_H */ #ifndef O_ACCMODE #define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR) @@ -214,7 +217,6 @@ static Regexp *RS_regexp; int RS_is_null; -int has_endfile = FALSE; extern int output_is_tty; extern NODE *ARGC_node; @@ -262,10 +264,6 @@ iop = *curfile; assert(iop != NULL); -#if 0 - if (iop == NULL) - return; -#endif if (iop->fd == INVALID_HANDLE) { const char *fname; @@ -309,10 +307,13 @@ IOBUF *iop = *curfile; if (skipping) { /* for 'nextfile' call */ - if (iop != NULL) + errcode = 0; + if (iop != NULL) { + errcode = iop->errcode; (void) iop_close(iop); + } *curfile = NULL; - return 0; /* return value not used */ + return (errcode == 0); } if (iop != NULL) { @@ -409,28 +410,23 @@ /* inrec --- This reads in a record from the input file */ int -inrec(IOBUF *iop) +inrec(IOBUF *iop, int *errcode) { char *begin; int cnt; int retval = 0; - int errcode = 0; if (at_eof(iop) && no_data_left(iop)) cnt = EOF; 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_saved(errcode); - if (do_traditional || ! has_endfile) - fatal(_("error reading input file `%s': %s"), - iop->name, strerror(errcode)); - } + if (*errcode > 0) + update_ERRNO_saved(*errcode); } else { NR += 1; FNR += 1; @@ -448,9 +444,14 @@ int newfd; int ret = -1; - close(oldfd); - newfd = open("/dev/null", O_RDWR); - if (newfd >= 0 && newfd != oldfd) { + /* + * Give OS-specific routines in gawkmisc.c chance to interpret + * "/dev/null" as appropriate for their platforms. + */ + newfd = os_devopen("/dev/null", O_RDWR); + if (newfd == INVALID_HANDLE) + newfd = open("/dev/null", O_RDWR); + if (newfd >= 0) { /* dup2() will close oldfd for us first. */ ret = dup2(newfd, oldfd); if (ret == 0) @@ -617,9 +618,8 @@ fatal(_("expression for `%s' redirection has null string value"), what); - if (do_lint && (STREQN(str, "0", redir_exp->stlen) - || STREQN(str, "1", redir_exp->stlen)) - ) + if (do_lint && (strncmp(str, "0", redir_exp->stlen) == 0 + || strncmp(str, "1", redir_exp->stlen) == 0)) lintwarn(_("filename `%s' for `%s' redirection may be result of logical expression"), str, what); @@ -630,7 +630,7 @@ #ifdef HAVE_SOCKETS if (inetfile(str, & len, NULL)) { tflag |= RED_SOCKET; - if (STREQN(str + len, "tcp/", 4)) + if (strncmp(str + len, "tcp/", 4) == 0) tflag |= RED_TCP; /* use shutdown when closing */ } #endif /* HAVE_SOCKETS */ @@ -1377,7 +1377,7 @@ flag = str2mode(mode); - if (STREQ(name, "-")) + if (strcmp(name, "-") == 0) return fileno(stdin); openfd = INVALID_HANDLE; @@ -1390,16 +1390,16 @@ return openfd; } - if (STREQN(name, "/dev/", 5)) { + if (strncmp(name, "/dev/", 5) == 0) { cp = (char *) name + 5; - if (STREQ(cp, "stdin") && (flag & O_ACCMODE) == O_RDONLY) + if (strcmp(cp, "stdin") == 0 && (flag & O_ACCMODE) == O_RDONLY) openfd = fileno(stdin); - else if (STREQ(cp, "stdout") && (flag & O_ACCMODE) == O_WRONLY) + else if (strcmp(cp, "stdout") == 0 && (flag & O_ACCMODE) == O_WRONLY) openfd = fileno(stdout); - else if (STREQ(cp, "stderr") && (flag & O_ACCMODE) == O_WRONLY) + else if (strcmp(cp, "stderr") == 0 && (flag & O_ACCMODE) == O_WRONLY) openfd = fileno(stderr); - else if (STREQN(cp, "fd/", 3)) { + else if (strncmp(cp, "fd/", 3) == 0) { struct stat sbuf; cp += 3; @@ -1422,9 +1422,9 @@ cp = (char *) name + len; /* which protocol? */ - if (STREQN(cp, "tcp/", 4)) + if (strncmp(cp, "tcp/", 4) == 0) protocol = SOCK_STREAM; - else if (STREQN(cp, "udp/", 4)) + else if (strncmp(cp, "udp/", 4) == 0) protocol = SOCK_DGRAM; else { protocol = SOCK_STREAM; /* shut up the compiler */ @@ -1593,7 +1593,7 @@ } #endif /* HAVE_SOCKETS */ -#ifdef HAVE_TERMIOS_H +#if defined(HAVE_TERMIOS_H) && ! defined(ZOS_USS) /* case 2: use ptys for two-way communications to child */ if (! no_ptys && pty_vs_pipe(str)) { static int initialized = FALSE; @@ -1703,9 +1703,6 @@ ioctl(slave, I_PUSH, "ldterm"); #endif -#ifdef TIOCSCTTY - ioctl(slave, TIOCSCTTY, 0); -#endif tcgetattr(slave, &st); st.c_iflag &= ~(ISTRIP | IGNCR | INLCR | IXOFF); st.c_iflag |= (ICRNL | IGNPAR | BRKINT | IXON); @@ -1740,6 +1737,12 @@ switch (pid = fork ()) { case 0: /* Child process */ + setsid(); + +#ifdef TIOCSCTTY + ioctl(slave, TIOCSCTTY, 0); +#endif + if (close(master) == -1) fatal(_("close of master pty failed (%s)"), strerror(errno)); if (close(1) == -1) @@ -1805,7 +1808,7 @@ first_pty_letter = '\0'; /* reset for next command */ return TRUE; } -#endif /* HAVE_TERMIOS_H */ +#endif /* defined(HAVE_TERMIOS_H) && ! defined(ZOS_USS) */ use_pipes: #ifndef PIPES_SIMULATED /* real pipes */ @@ -2028,7 +2031,7 @@ /* * 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 dependant) + * and thus has a child process feeding it input (shell dependent) */ /*(void) wait_any(0);*/ /* wait for outstanding processes */ @@ -2370,7 +2373,7 @@ emalloc(path, char *, max_pathlen + strlen(src) + 1, "do_find_source"); for (i = 0; awkpath[i] != NULL; i++) { - if (STREQ(awkpath[i], "./") || STREQ(awkpath[i], ".")) { + if (strcmp(awkpath[i], "./") == 0 || strcmp(awkpath[i], ".") == 0) { *path = '\0'; } else strcpy(path, awkpath[i]); @@ -2583,7 +2586,7 @@ { char *bp; char rs; -#ifdef MBS_SUPPORT +#if MBS_SUPPORT size_t mbclen = 0; mbstate_t mbs; #endif @@ -2597,7 +2600,7 @@ if (*state == INDATA) /* skip over data we've already seen */ bp += iop->scanoff; -#ifdef MBS_SUPPORT +#if MBS_SUPPORT /* * From: Bruno Haible * To: Aharon Robbins , gnits@gnits.org @@ -2871,8 +2874,12 @@ while (*bp++ != '\n') continue; - if (bp >= iop->dataend) { /* no terminator */ + if (bp >= iop->dataend) { /* no full terminator */ iop->scanoff = recm->len = bp - iop->off - 1; + if (bp == iop->dataend) { /* half a terminator */ + recm->rt_start = bp - 1; + recm->rt_len = 1; + } *state = INDATA; return NOTERM; } @@ -3043,9 +3050,10 @@ /* else leave it alone */ } else if (matchrec == rsnullscan) { - if (rtval->stlen <= recm.rt_len) + if (rtval->stlen >= recm.rt_len) { rtval->stlen = recm.rt_len; - else + free_wstr(rtval); + } else set_RT(recm.rt_start, recm.rt_len); } else set_RT(recm.rt_start, recm.rt_len); @@ -3202,19 +3210,19 @@ { int ret = FALSE; - if (STREQN(str, "/inet/", 6)) { + if (strncmp(str, "/inet/", 6) == 0) { ret = TRUE; if (length != NULL) *length = 6; if (family != NULL) *family = AF_UNSPEC; - } else if (STREQN(str, "/inet4/", 7)) { + } else if (strncmp(str, "/inet4/", 7) == 0) { ret = TRUE; if (length != NULL) *length = 7; if (family != NULL) *family = AF_INET; - } else if (STREQN(str, "/inet6/", 7)) { + } else if (strncmp(str, "/inet6/", 7) == 0) { ret = TRUE; if (length != NULL) *length = 7; diff -urN gawk-4.0.0/m4/ChangeLog gawk-4.0.1/m4/ChangeLog --- gawk-4.0.0/m4/ChangeLog 2011-06-23 09:44:35.000000000 +0300 +++ gawk-4.0.1/m4/ChangeLog 2012-03-28 22:02:04.000000000 +0200 @@ -1,3 +1,7 @@ +2012-03-28 Arnold D. Robbins + + * 4.0.1: Release tar ball made. + 2011-06-23 Arnold D. Robbins * ChangeLog.0: Rotated ChangeLog into this file. diff -urN gawk-4.0.0/main.c gawk-4.0.1/main.c --- gawk-4.0.0/main.c 2011-05-31 23:02:29.000000000 +0300 +++ gawk-4.0.1/main.c 2012-03-28 21:47:54.000000000 +0200 @@ -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" @@ -148,10 +148,8 @@ int do_sandbox = FALSE; /* sandbox mode - disable 'system' function & redirections */ int use_lc_numeric = FALSE; /* obey locale for decimal point */ -#ifdef MBS_SUPPORT +#if MBS_SUPPORT int gawk_mb_cur_max; /* MB_CUR_MAX value, see comment in main() */ -#else -const int gawk_mb_cur_max = 1; #endif FILE *output_fp; /* default output for debugger */ @@ -267,7 +265,7 @@ setlocale(LC_TIME, ""); #endif -#ifdef MBS_SUPPORT +#if MBS_SUPPORT /* * In glibc, MB_CUR_MAX is actually a function. This value is * tested *a lot* in many speed-critical places in gawk. Caching @@ -306,6 +304,8 @@ /* init array handling. */ array_init(); + output_fp = stdout; + /* we do error messages ourselves on invalid options */ opterr = FALSE; @@ -556,7 +556,7 @@ if (do_lint && os_is_setuid()) warning(_("running %s setuid root may be a security problem"), myname); -#ifdef MBS_SUPPORT +#if MBS_SUPPORT if (do_binary) { if (do_posix) warning(_("`--posix' overrides `--binary'")); @@ -678,7 +678,6 @@ setlocale(LC_NUMERIC, ""); #endif - output_fp = stdout; interpret(code_block); if (do_profiling) { @@ -924,7 +923,7 @@ {&FILENAME_node, "FILENAME", "", 0, NULL, NULL, FALSE, 0 }, {&FNR_node, "FNR", NULL, 0, update_FNR, set_FNR, TRUE, 0 }, {&FS_node, "FS", " ", 0, NULL, set_FS, FALSE, 0 }, -{&FPAT_node, "FPAT", "[^[:space:]]+", 0, NULL, set_FPAT, FALSE, 0 }, +{&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 }, {&NF_node, "NF", NULL, -1, update_NF, set_NF, FALSE, 0 }, @@ -1127,6 +1126,26 @@ return FALSE; } + +/* get_spec_varname --- return the name of a special variable + with the given assign or update routine. +*/ + +const char * +get_spec_varname(Func_ptr fptr) +{ + const struct varinit *vp; + + if (! fptr) + return NULL; + for (vp = varinit; vp->name != NULL; vp++) { + if (vp->assign == fptr || vp->update == fptr) + return vp->name; + } + return NULL; +} + + /* arg_assign --- process a command-line assignment */ int @@ -1353,17 +1372,20 @@ */ 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 -urN gawk-4.0.0/mbsupport.h gawk-4.0.1/mbsupport.h --- gawk-4.0.0/mbsupport.h 2011-01-19 20:28:54.000000000 +0200 +++ gawk-4.0.1/mbsupport.h 2012-03-28 21:52:05.000000000 +0200 @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2004, 2005 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. @@ -36,8 +36,11 @@ #include #endif +#ifndef NO_MBSUPPORT + #if defined(HAVE_ISWCTYPE) \ && defined(HAVE_LOCALE_H) \ + && (defined(HAVE_BTOWC) || defined(ZOS_USS)) \ && defined(HAVE_MBRLEN) \ && defined(HAVE_MBRTOWC) \ && defined(HAVE_WCHAR_H) \ @@ -55,5 +58,37 @@ /* We can handle multibyte strings. */ # define MBS_SUPPORT 1 #else -# undef MBS_SUPPORT +# define MBS_SUPPORT 0 +#endif + +#else /* NO_MBSUPPORT is defined */ +# define MBS_SUPPORT 0 +#endif + +#if ! MBS_SUPPORT +# undef MB_CUR_MAX +# define MB_CUR_MAX 1 + +/* All this glop is for dfa.c. Bleah. */ + +#ifndef DJGPP +#define wchar_t char +#endif + +#define wctype_t int +#define wint_t int +#define mbstate_t int +#define WEOF EOF +#define towupper toupper +#define towlower tolower +#ifndef DJGPP +#define btowc(x) ((int)x) +#endif +#define iswalnum isalnum +#define iswalpha isalpha +#define iswupper isupper + +extern wctype_t wctype(const char *name); +extern int iswctype(wint_t wc, wctype_t desc); +extern int wcscoll(const wchar_t *ws1, const wchar_t *ws2); #endif diff -urN gawk-4.0.0/missing_d/ChangeLog gawk-4.0.1/missing_d/ChangeLog --- gawk-4.0.0/missing_d/ChangeLog 2011-06-23 09:44:35.000000000 +0300 +++ gawk-4.0.1/missing_d/ChangeLog 2012-03-28 22:02:30.000000000 +0200 @@ -1,3 +1,15 @@ +2012-03-28 Arnold D. Robbins + + * 4.0.1: Release tar ball made. + +2011-11-02 Pat Rankin + + * wcmisc.c: Make code be conditional upon corresponding !HAVE_WCxxx. + +2011-11-01 Arnold D. Robbins + + * wcmisc.c: New file. + 2011-06-23 Arnold D. Robbins * ChangeLog.0: Rotated ChangeLog into this file. diff -urN gawk-4.0.0/missing_d/wcmisc.c gawk-4.0.1/missing_d/wcmisc.c --- gawk-4.0.0/missing_d/wcmisc.c 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/missing_d/wcmisc.c 2011-12-08 21:12:16.000000000 +0200 @@ -0,0 +1,100 @@ +/* wcmisc.c - replace wcXXXX routines + Copyright (C) 2011 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., + 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA */ + +#if !defined(HAVE_WCTYPE) || !defined(HAVE_ISWCTYPE) +static const char *classes[] = { + "", + "alnum", + "alpha", + "blank", + "cntrl", + "digit", + "graph", + "lower", + "print", + "punct", + "space", + "upper", + "xdigit", + NULL +}; +#endif + +#ifndef HAVE_ISWCTYPE +static int is_blank (int c) +{ + return (c == ' ' || c == '\t'); +} +#endif + +#ifndef HAVE_WCTYPE +wctype_t wctype(const char *name) +{ + int i; + + for (i = 1; classes[i] != NULL; i++) + if (strcmp(name, classes[i]) == 0) + return i; + + return 0; +} +#endif + +#ifndef HAVE_ISWCTYPE +int iswctype(wint_t wc, wctype_t desc) +{ + int j = sizeof(classes) / sizeof(classes[0]); + + if (desc >= j || desc == 0) + return 0; + + switch (desc) { + case 1: return isalnum(wc); + case 2: return isalpha(wc); + case 3: return is_blank(wc); + case 4: return iscntrl(wc); + case 5: return isdigit(wc); + case 6: return isgraph(wc); + case 7: return islower(wc); + case 8: return isprint(wc); + case 9: return ispunct(wc); + case 10: return isspace(wc); + case 11: return isupper(wc); + case 12: return isxdigit(wc); + default: return 0; + } +} +#endif + +#ifndef HAVE_WCSCOLL +int wcscoll(const wchar_t *ws1, const wchar_t *ws2) +{ + size_t i; + + for (i = 0; ws1[i] != 0 && ws2[i] != 0; i++) { + if (ws1[i] < ws2[i]) + return -1; + else if (ws1[i] > ws2[i]) + return 1; + } + + return (ws1[i] - ws2[i]); +} +#endif + +/*wcmisc.c*/ diff -urN gawk-4.0.0/msg.c gawk-4.0.1/msg.c --- gawk-4.0.0/msg.c 2011-02-16 21:01:40.000000000 +0200 +++ gawk-4.0.1/msg.c 2012-03-28 21:47:54.000000000 +0200 @@ -46,7 +46,7 @@ (void) fflush(output_fp); me = myname; - if (STREQN(me, "dgawk", 5)) + if (strncmp(me, "dgawk", 5) == 0) me = &myname[1]; (void) fprintf(stderr, "%s: ", me); #ifdef GAWKDEBUG diff -urN gawk-4.0.0/node.c gawk-4.0.1/node.c --- gawk-4.0.0/node.c 2011-06-05 22:11:31.000000000 +0300 +++ gawk-4.0.1/node.c 2012-03-28 21:47:54.000000000 +0200 @@ -297,7 +297,7 @@ r->flags &= ~FIELD; r->flags |= MALLOC; r->valref = 1; -#ifdef MBS_SUPPORT +#if MBS_SUPPORT /* * DON'T call free_wstr(r) here! * r->wstptr still points at n->wstptr's value, and we @@ -305,13 +305,13 @@ */ r->wstptr = NULL; r->wstlen = 0; -#endif /* defined MBS_SUPPORT */ +#endif /* MBS_SUPPORT */ if ((n->flags & STRCUR) != 0) { emalloc(r->stptr, char *, n->stlen + 2, "dupnode"); memcpy(r->stptr, n->stptr, n->stlen); r->stptr[n->stlen] = '\0'; -#if defined MBS_SUPPORT +#if MBS_SUPPORT if ((n->flags & WSTRCUR) != 0) { r->wstlen = n->wstlen; emalloc(r->wstptr, wchar_t *, sizeof(wchar_t) * (n->wstlen + 2), "dupnode"); @@ -319,7 +319,7 @@ r->wstptr[n->wstlen] = L'\0'; r->flags |= WSTRCUR; } -#endif /* defined MBS_SUPPORT */ +#endif /* MBS_SUPPORT */ } return r; @@ -354,10 +354,10 @@ r->type = Node_val; r->numbr = 0; r->flags = (STRING|STRCUR|MALLOC); -#ifdef MBS_SUPPORT +#if MBS_SUPPORT r->wstptr = NULL; r->wstlen = 0; -#endif /* defined MBS_SUPPORT */ +#endif /* MBS_SUPPORT */ if (flags & ALREADY_MALLOCED) r->stptr = (char *) s; @@ -372,7 +372,7 @@ char *ptm; int c; const char *end; -#ifdef MBS_SUPPORT +#if MBS_SUPPORT mbstate_t cur_state; memset(& cur_state, 0, sizeof(cur_state)); @@ -380,7 +380,7 @@ end = &(r->stptr[len]); for (pf = ptm = r->stptr; pf < end;) { -#ifdef MBS_SUPPORT +#if MBS_SUPPORT /* * Keep multibyte characters together. This avoids * problems if a subsequent byte of a multibyte @@ -653,7 +653,7 @@ return TRUE; } -#if defined MBS_SUPPORT +#if MBS_SUPPORT /* str2wstr --- convert a multibyte string to a wide string */ NODE * @@ -902,7 +902,7 @@ return NULL; } -#endif /* defined MBS_SUPPORT */ +#endif /* MBS_SUPPORT */ /* is_ieee_magic_val --- return true for +inf, -inf, +nan, -nan */ @@ -949,7 +949,7 @@ return v; } -#ifdef MBS_SUPPORT +#if MBS_SUPPORT wint_t btowc_cache[256]; /* init_btowc_cache --- initialize the cache */ diff -urN gawk-4.0.0/pc/ChangeLog gawk-4.0.1/pc/ChangeLog --- gawk-4.0.0/pc/ChangeLog 2011-06-23 09:44:35.000000000 +0300 +++ gawk-4.0.1/pc/ChangeLog 2012-03-28 22:02:39.000000000 +0200 @@ -1,3 +1,107 @@ +2012-03-28 Arnold D. Robbins + + * 4.0.1: Release tar ball made. + +2012-03-20 Arnold D. Robbins + + * Makefile.tst (printfbad3): New test. + +2012-03-14 Eli Zaretskii + + * gawkmisc.pc (btowc): New version for DJGPP. + +2012-03-01 Scott Deifik + + * Makefile.tst: Sync with mainline version. + +2012-03-01 Eli Zaretskii + + * Makefile: Quiet confusing info messages from the linker when + gawk is linked against readline as a shared library. + +2012-02-22 Eli Zaretskii + + * Makefile.tst: Update CMP and CP definitions, add "Expect xxxx to + fail with MinGW" messages as needed. + +2012-02-15 Arnold D. Robbins + + * gawkmisc.pc (execvp): Modify signature, return -1 + on error. + +2012-02-11 Eli Zaretskii + + 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 + + * gawkmisc.pc (execvp): New function based on code from Eli + Zaretskii to make dgawk's restarting the debugger work. + +2012-01-27 Scott Deifik + + * Makefile.tst: Sync with mainline version. + +2011-12-06 Scott Deifik + + * Makefile.tst: Sync with mainline version. + Use testoutcmp.awk script. + +2011-12-06 Arnold D. Robbins + + * testoutcmp.awk: Script to replace cmd for DJGPP. + +2011-11-01 Scott Deifik + + * config.sed: Additional update. + +2011-10-29 Eli Zaretskii + + * config.sed: Fix some edits, to be consistent with the old + config.h file. Make regexps match #undef lines with whitespace + at the end of the line. Add forgotten EMX #defines. + +2011-10-27 Scott Deifik + + * Makefile.tst: Sync with mainline version. + +2011-10-24 Eli Zaretskii + + * gawkmisc.pc (wctob) [__MINGW32__]: A replacement for the + function of the same name in MS runtime, which does a better job + with 8-bit characters that have their high bit set. + Original supplied by Jim Meyering . + + * popen.h (system) [__MINGW32__]: Redirect to os_system. + + * Makefile (./doc/awkcard.tr): Don't use Unixy forward slashes in + redirection. + (builtin$O): Depend on popen.h. + (random$O): New target, separated from builtin$O. + + * configpk.sed: + * config.sed: + * make-config.bat: New files, to produce pc/config.h from the top-level + configh.in file. + +2011-10-18 Juan Manuel Guerrero + + * Makefile: doc target to create all documentation files. + +2011-09-30 Eli Zaretskii + + * config.h: Update packaging related versions. + 2011-06-23 Arnold D. Robbins * ChangeLog.0: Rotated ChangeLog into this file. diff -urN gawk-4.0.0/pc/Makefile gawk-4.0.1/pc/Makefile --- gawk-4.0.0/pc/Makefile 2011-06-20 20:16:38.000000000 +0300 +++ gawk-4.0.1/pc/Makefile 2012-03-28 21:47:54.000000000 +0200 @@ -13,10 +13,13 @@ @echo " emx ..... OS/2 32-bit exe [emx/gcc; uses emxlibc.dll] " @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 . Windows32 exe [Mingw32 GNU C] " + @echo " mingw32-readline . Like mingw32, but with readline " + @echo " [You will need to have GNU readline library installed.] " @echo " ----------------------------------------------------- " @echo " test .... Perform tests (see README_d/README.pc) " @echo " install . Install gawk under $(prefix)/ " + @echo " doc ..... Create documentation " # Support dropped in 4.0 # - for DJGPP v1.x [DOS 32bit protected-mode executable] @@ -28,7 +31,7 @@ # @echo " msc6 .... DOS exe [Microsoft C 6.00a] " # @echo " msc6os2 . OS/2 exe [Microsoft C 6.00a] " # @echo " msc6bnd . OS/2 and DOS exe [Microsoft C 6.00a] " -# @echo " vcWin32 . Windows32 exe [Microsoft Visual C] " +# @echo " vcWin32 . Windows32 exe [Microsoft Visual C] " # Support dropped in 3.0 # - for Microsoft C 5.1 [16bit executable for OS/2 or DOS] # @echo " msc51 DOS exe [Microsoft C 5.1] " @@ -166,6 +169,13 @@ LNK=LMINGW32 PLNK=PLMINGW32 DLNK=DLMINGW32 \ LF="-gdwarf-2 -g3" LF2=-lmsvcp60 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="-lreadline -lmsvcp60 -Wl,--enable-auto-import" RSP= + # Define BIND for BINDless compiles, otherwise $($(BIND)) may break. BIND = EMPTY PBIND = EMPTY @@ -236,10 +246,12 @@ # 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) eval_p$O profile_p$O eval_d$O debug$O command$O: \ awk.h regex.h config.h gettext.h mbsupport.h protos.h dfa.h getopt.h -builtin$O random$O: floatmagic.h random.h +builtin$O: floatmagic.h random.h popen.h + +random$O: floatmagic.h random.h debug$O: floatmagic.h @@ -313,3 +325,68 @@ tags: ctags awk.h *.y custom.h *.c *.h + +#======================================================================== +#================================= DOC ================================== +#======================================================================== + +DVIS = ./doc/gawk.dvi ./doc/gawkinet.dvi +PDFS = ./doc/gawk.pdf ./doc/gawkinet.pdf +PSS = ./doc/gawk.ps ./doc/gawkinet.ps +HTMLS = ./doc/gawk.html ./doc/gawkinet.html +INFOS = ./doc/gawk.info ./doc/gawkinet.info +TEXINFOS = ./doc/gawk.texi ./doc/gawkinet.texi + +TEXI2DVI = texi2dvi --build-dir=./doc +TEXI2PDF = $(TEXI2DVI) --pdf --batch +DVIPS = dvips +MAKEINFO = makeinfo --no-split --force +MAKEINFOHTML = $(MAKEINFO) --html + +TROFF = groff -t -Tps -U +#SEDME = sed -e "s/^level0 restore/level0 restore flashme 100 72 moveto (Copyright `date '+%m-%d-%y %T'`, FSF, Inc. (all)) show/" \ +# -e "s/^\/level0 save def/\/level0 save def 30 -48 translate/" + +SEDME = sed "s/^\/level0 save def/\/level0 save def 30 -48 translate/" + +SEDME2 = sed "/%%Page: 10 10/,/0 Cg EP/d" + +.SUFFIXES: .dvi .html .info .pdf .ps .texi + +.texi.info: + $(MAKEINFO) -o $@ $< + +.texi.html: + $(MAKEINFOHTML) -o $@ $< + +.texi.dvi: + $(TEXI2DVI) -o $@ $< + +.texi.pdf: + $(TEXI2PDF) -o $@ $< + +.dvi.ps: + $(DVIPS) -o $@ $< + +./doc/awkcard.tr: ./doc/awkcard.in + cd doc + sed "s,SRCDIR,.," < awkcard.in > awkcard.tr + cd .. + +./doc/awkcard.nc: export GROFF_TMPDIR ?= . +./doc/awkcard.nc: ./doc/macros ./doc/cardfonts ./doc/no.colors ./doc/awkcard.tr ./doc/ad.block ./doc/awkcard.in ./doc/setter.outline + cd doc + $(TROFF) ./macros ./cardfonts ./no.colors awkcard.tr | $(SEDME) | cat ./setter.outline - | $(SEDME2) > awkcard.ps + cd .. + +./doc/awkcard.ps: ./doc/awkcard.nc + cd doc + touch awkcard.nc + cd .. + +./doc/awkcard.pdf: ./doc/awkcard.ps + cd doc + ps2pdf ./awkcard.ps ./awkcard.pdf + cd .. + +doc: $(INFOS) $(DVIS) $(HTMLS) $(PSS) $(PDFS) ./doc/awkcard.ps ./doc/awkcard.pdf diff -urN gawk-4.0.0/pc/Makefile.tst gawk-4.0.1/pc/Makefile.tst --- gawk-4.0.0/pc/Makefile.tst 2011-06-20 20:37:06.000000000 +0300 +++ gawk-4.0.1/pc/Makefile.tst 2012-03-28 21:47:54.000000000 +0200 @@ -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. @@ -86,15 +86,19 @@ #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 +# exactly the same. Should run even on old awk. +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 @@ -115,52 +119,67 @@ # ============================================================================ srcdir = . +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 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 \ - 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 + 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 UNIX_TESTS = \ - fflush getlnhd localenl pid pipeio1 pipeio2 poundbang space strftlng + fflush getlnhd localenl pid pipeio1 pipeio2 poundbang rtlen rtlen01 \ + space strftlng GAWK_EXT_TESTS = \ aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \ - backw badargs beginfile1 binmode1 clos1way delsub devfd devfd1 \ - devfd2 dumpvars exit fieldwdth fpat1 fpat2 fpatnull fsfwfs funlen \ - fwtest fwtest2 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 \ - profile1 profile2 profile3 rebuf regx8bit reint reint2 rsstart1 \ + 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 printfbad3 procinfs \ + profile1 profile2 profile3 pty1 \ + rebuf regx8bit reint reint2 rsstart1 \ rsstart2 rsstart3 rstest6 shadow sortfor sortu splitarg4 strftime \ strtonum switch2 @@ -169,8 +188,7 @@ MACHINE_TESTS = double1 double2 fmtspcl intformat LOCALE_CHARSET_TESTS = \ asort asorti fmttest fnarydel fnparydl lc_num1 mbfw1 \ - mbprintf1 mbprintf2 mbprintf3 rebt8b2 sort1 sprintfc - + mbprintf1 mbprintf2 mbprintf3 rebt8b2 rtlenmb sort1 sprintfc # List of the tests which should be run with --lint option: NEED_LINT = \ @@ -295,7 +313,7 @@ .) : ;; \ *) rm -f ./argarray.in ;; \ esac - @-$(CMP) $(srcdir)/argarray.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ regtest:: @echo 'Some of the output from regtest is very system specific, do not' @@ -310,44 +328,45 @@ @$(AWK) 'BEGIN { for (i = 1; i <= 1030; i++) print i, i}' >_$@ @$(AWK) -f $(srcdir)/manyfiles.awk _$@ _$@ @wc -l junk/* | $(AWK) '$$1 != 2' | wc -l | sed "s/ *//g" > _$@ - @rm -rf junk ; $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + @rm -rf junk + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ compare:: @echo $@ @$(AWK) -f $(srcdir)/compare.awk 0 1 $(srcdir)/compare.in >_$@ - @-$(CMP) $(srcdir)/compare.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ inftest:: @echo $@ @echo This test is very machine specific... @echo Expect inftest to fail with DJGPP. @$(AWK) -f $(srcdir)/inftest.awk | sed "s/inf/Inf/g" >_$@ - @-$(CMP) $(srcdir)/inftest.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ getline2:: @echo $@ @$(AWK) -f $(srcdir)/getline2.awk $(srcdir)/getline2.awk $(srcdir)/getline2.awk >_$@ - @-$(CMP) $(srcdir)/getline2.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ awkpath:: @echo $@ @AWKPATH="$(srcdir)$(PATH_SEPARATOR)$(srcdir)/lib" $(AWK) -f awkpath.awk >_$@ - @-$(CMP) $(srcdir)/awkpath.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ argtest:: @echo $@ @$(AWK) -f $(srcdir)/argtest.awk -x -y abc >_$@ - @-$(CMP) $(srcdir)/argtest.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ badargs:: @echo $@ @-$(AWK) -f 2>&1 | grep -v patchlevel >_$@ - @-$(CMP) $(srcdir)/badargs.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ nonl:: @echo $@ @-AWKPATH=$(srcdir) $(AWK) --lint -f nonl.awk /dev/null >_$@ 2>&1 - @-$(CMP) $(srcdir)/nonl.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ strftime:: @echo This test could fail on slow machines or on a minute boundary, @@ -364,7 +383,7 @@ litoct:: @echo $@ @echo ab | $(AWK) --traditional -f $(srcdir)/litoct.awk >_$@ - @-$(CMP) $(srcdir)/litoct.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ devfd:: @echo $@ @@ -375,13 +394,13 @@ fflush:: @echo $@ @$(srcdir)/fflush.sh >_$@ - @-$(CMP) $(srcdir)/fflush.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ tweakfld:: @echo $@ @$(AWK) -f $(srcdir)/tweakfld.awk $(srcdir)/tweakfld.in >_$@ @rm -f errors.cleanup - @-$(CMP) $(srcdir)/tweakfld.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ mmap8k:: @echo $@ @@ -391,7 +410,7 @@ tradanch:: @echo $@ @$(AWK) --traditional -f $(srcdir)/tradanch.awk $(srcdir)/tradanch.in >_$@ - @-$(CMP) $(srcdir)/tradanch.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ # AIX /bin/sh exec's the last command in a list, therefore issue a ":" # command so that pid.sh is fork'ed as a child before being exec'ed. @@ -407,12 +426,12 @@ @if $(CMP) $(srcdir)/strftlng.ok _$@ >/dev/null 2>&1 ; then : ; else \ TZ=UTC0; export TZ; $(AWK) -f $(srcdir)/strftlng.awk >_$@ ; \ fi - @-$(CMP) $(srcdir)/strftlng.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ nors:: @echo $@ @echo A B C D E | tr -d '\12\15' | $(AWK) '{ print $$NF }' - $(srcdir)/nors.in > _$@ - @-$(CMP) $(srcdir)/nors.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ fmtspcl.ok: fmtspcl.tok @$(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 @@ -426,18 +445,19 @@ reint:: @echo $@ @$(AWK) --re-interval -f $(srcdir)/reint.awk $(srcdir)/reint.in >_$@ - @-$(CMP) $(srcdir)/reint.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ pipeio1:: @echo $@ @$(AWK) -f $(srcdir)/pipeio1.awk >_$@ @rm -f test1 test2 - @-$(CMP) $(srcdir)/pipeio1.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ pipeio2:: @echo $@ + @echo Expect pipeio2 to fail with MinGW @$(AWK) -v SRCDIR=$(srcdir) -f $(srcdir)/pipeio2.awk >_$@ - @-$(CMP) $(srcdir)/pipeio2.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ clobber:: @echo $@ @@ -448,7 +468,7 @@ arynocls:: @echo $@ @-AWKPATH=$(srcdir) $(AWK) -v INPUT=$(srcdir)/arynocls.in -f arynocls.awk >_$@ - @-$(CMP) $(srcdir)/arynocls.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ getlnbuf:: @echo $@ @@ -492,12 +512,12 @@ redfilnm:: @echo $@ @$(AWK) -f $(srcdir)/redfilnm.awk srcdir=$(srcdir) $(srcdir)/redfilnm.in >_$@ - @-$(CMP) $(srcdir)/redfilnm.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ leaddig:: @echo $@ @$(AWK) -v x=2E -f $(srcdir)/leaddig.awk >_$@ - @-$(CMP) $(srcdir)/leaddig.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ gsubtst3:: @echo $@ @@ -506,9 +526,9 @@ space:: @echo $@ - @echo Expect space to fail with DJGPP. @$(AWK) -f ' ' $(srcdir)/space.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +# @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + @-$(TESTOUTCMP) $(srcdir)/$@.ok _$@ && rm -f _$@ printf0:: @echo $@ @@ -606,6 +626,22 @@ @head $(srcdir)/rsstart1.in | $(AWK) -f $(srcdir)/rsstart2.awk >_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +rtlen:: + @echo $@ + @$(srcdir)/$@.sh >_$@ || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +rtlen01:: + @echo $@ + @$(srcdir)/$@.sh >_$@ || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +rtlenmb:: + @echo $@ + @GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \ + $(srcdir)/rtlen.sh >_$@ || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/rtlen.ok _$@ && rm -f _$@ + nondec2:: @echo $@ @$(AWK) --non-decimal-data -v a=0x1 -f $(srcdir)/$@.awk >_$@ @@ -643,6 +679,7 @@ # 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 _$@ @@ -670,7 +707,7 @@ 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 _$@ @@ -689,7 +726,7 @@ 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 _$@ @@ -712,10 +749,16 @@ 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) && LC_ALL=C AWK="$(abs_builddir)/$(AWKPROG)" $(srcdir)/$@.sh $(srcdir)/$@.in ) > _$@ 2>&1 +# @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + @-$(TESTOUTCMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + dumpvars:: @echo $@ @AWKPATH=$(srcdir) $(AWK) --dump-variables 1 < $(srcdir)/$@.in >/dev/null 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -725,31 +768,43 @@ profile1: @echo $@ - @$(AWK) --profile -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > _$@.out1 - @$(AWK) -f awkprof.out $(srcdir)/dtdgport.awk > _$@.out2 ; rm awkprof.out + @$(AWK) --profile=ap-$@.out -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > _$@.out1 + @$(AWK) -f ap-$@.out $(srcdir)/dtdgport.awk > _$@.out2 ; rm ap-$@.out @cmp _$@.out1 _$@.out2 && rm _$@.out[12] || echo EXIT CODE: $$? >>_$@ profile2: @echo $@ - @$(PGAWK) -v sortcmd=sort -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > /dev/null - @sed 1,2d < awkprof.out > _$@; rm awkprof.out + @$(PGAWK) --profile=ap-$@.out -v sortcmd=sort -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > /dev/null + @sed 1,2d < ap-$@.out > _$@; rm ap-$@.out @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ profile3: @echo $@ - @$(PGAWK) -f $(srcdir)/$@.awk > /dev/null - @sed 1,2d < awkprof.out > _$@; rm awkprof.out + @$(PGAWK) --profile=ap-$@.out -f $(srcdir)/$@.awk > /dev/null + @sed 1,2d < ap-$@.out > _$@; rm ap-$@.out + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +posix2008sub: + @echo $@ + @$(AWK) --posix -f $(srcdir)/$@.awk > _$@ 2>&1 @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ 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 _$@ + +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: @@ -959,6 +1014,7 @@ 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 _$@ @@ -1067,6 +1123,11 @@ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +getline4: + @echo getline4 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + getnr2tb: @echo getnr2tb @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1102,6 +1163,16 @@ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +gsubtst7: + @echo gsubtst7 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +gsubtst8: + @echo gsubtst8 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + hex: @echo hex @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1109,6 +1180,7 @@ 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 _$@ @@ -1343,11 +1415,6 @@ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ -posix2008sub: - @echo posix2008sub - @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ - prdupval: @echo prdupval @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1450,11 +1517,13 @@ 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 _$@ @@ -1676,6 +1745,11 @@ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +fpat3: + @echo fpat3 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + fpatnull: @echo fpatnull @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1701,6 +1775,11 @@ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +fwtest3: + @echo fwtest3 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + gensub: @echo gensub @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1713,7 +1792,7 @@ 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 _$@ @@ -1809,6 +1888,7 @@ 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 _$@ @@ -1817,11 +1897,22 @@ @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: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +pty1: + @echo pty1 + @echo Expect pty1 to fail with DJGPP and MinGW. + @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + rebuf: @echo rebuf @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1874,6 +1965,7 @@ 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 _$@ @@ -1894,6 +1986,7 @@ 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 -urN gawk-4.0.0/pc/config.h gawk-4.0.1/pc/config.h --- gawk-4.0.0/pc/config.h 2011-03-31 21:52:55.000000000 +0200 +++ gawk-4.0.1/pc/config.h 2012-03-28 21:47:54.000000000 +0200 @@ -1,410 +1,419 @@ -/* config.h. Generated automatically by configure. */ -/* config.h.in. Generated automatically from configure.in by autoheader. */ -/* - * acconfig.h -- configuration definitions for gawk. - */ - -/* - * Copyright (C) 1995-2005 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 - */ - - -/* Define if on AIX 3. - System headers sometimes define this. - We just want to avoid a redefinition error message. */ -#ifndef _ALL_SOURCE -/* #undef _ALL_SOURCE */ -#endif - -/* Define if using alloca.c. */ -/* #undef C_ALLOCA */ - -/* Define if type char is unsigned and you are not using gcc. */ -#ifndef __CHAR_UNSIGNED__ -/* #undef __CHAR_UNSIGNED__ */ -#endif +/* configh.in. Generated from configure.ac by autoheader. */ +/* pc/config.h. Generated automatically by pc/config.sed. */ -/* Define to empty if the keyword does not work. */ -/* #undef const */ +/* dynamic loading is possible */ +#undef DYNAMIC -/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems. - This function is required for alloca.c support on those systems. */ -/* #undef CRAY_STACKSEG_END */ +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +#undef ENABLE_NLS -/* Define to the type of elements in the array set by `getgroups'. - Usually this is either `int' or `gid_t'. */ +/* Define to the type of elements in the array set by `getgroups'. Usually + this is either `int' or `gid_t'. */ #define GETGROUPS_T gid_t -/* Define if the `getpgrp' function takes no argument. */ +/* Define to 1 if the `getpgrp' function requires zero arguments. */ #define GETPGRP_VOID 1 +/* Define to 1 if you have the `alarm' function. */ +#define HAVE_ALARM 1 + +/* Define to 1 if you have the header file. */ +#undef HAVE_ARPA_INET_H + /* Define to 1 if you have the `atexit' function. */ -# define HAVE_ATEXIT 1 +#define HAVE_ATEXIT 1 /* Define to 1 if you have the `btowc' function. */ #ifdef _WIN32 #define HAVE_BTOWC 1 #endif -#ifdef __MINGW32__ +/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +#undef HAVE_CFLOCALECOPYCURRENT + +/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +#undef HAVE_CFPREFERENCESCOPYAPPVALUE + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +#undef HAVE_DCGETTEXT + /* Define to 1 if you have the declaration of `tzname', and to 0 if you don't. */ +#ifdef __MINGW32__ #define HAVE_DECL_TZNAME 1 +#endif + +/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ +#undef HAVE_DOPRNT + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the `fmod' function. */ +#define HAVE_FMOD 1 + +/* have getaddrinfo */ +#undef HAVE_GETADDRINFO + +/* Define to 1 if you have the `getgrent' function. */ +#undef HAVE_GETGRENT + +/* Define to 1 if you have the `getgroups' function. */ +#undef HAVE_GETGROUPS + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT + +/* Define to 1 if you have the `grantpt' function. */ +#undef HAVE_GRANTPT + +/* Define if you have the iconv() function and it works. */ +#undef HAVE_ICONV /* Define if you have the 'intmax_t' type in or . */ +#ifdef __MINGW32__ #define HAVE_INTMAX_T 1 - -/* Define if you have the 'uintmax_t' type in or . */ -#define HAVE_UINTMAX_T 1 +#endif /* Define to 1 if you have the header file. */ +#ifdef __MINGW32__ #define HAVE_INTTYPES_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDINT_H 1 +#endif /* Define if exists, doesn't clash with , and declares uintmax_t. */ +#ifdef __MINGW32__ #define HAVE_INTTYPES_H_WITH_UINTMAX 1 #endif -#ifdef __MINGW32__ /* Define to 1 if you have the `isascii' function. */ +#ifdef __MINGW32__ #define HAVE_ISASCII 1 +#endif /* Define to 1 if you have the `iswctype' function. */ +#ifdef __MINGW32__ #define HAVE_ISWCTYPE 1 +#endif /* Define to 1 if you have the `iswlower' function. */ +#ifdef __MINGW32__ #define HAVE_ISWLOWER 1 +#endif /* Define to 1 if you have the `iswupper' function. */ +#ifdef __MINGW32__ #define HAVE_ISWUPPER 1 - -/* Define if you have the 'long long' type. */ -#define HAVE_LONG_LONG 1 - -/* Define to 1 if you have the `mbrlen' function. */ -#define HAVE_MBRLEN 1 - -/* Define to 1 if mbrtowc and mbstate_t are properly declared. */ -#define HAVE_MBRTOWC 1 - -/* Define to 1 if you have the `towlower' function. */ -#define HAVE_TOWLOWER 1 - -/* Define to 1 if you have the `towupper' function. */ -#define HAVE_TOWUPPER 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_WCHAR_H 1 - -/* Define to 1 if you have the `wcrtomb' function. */ -#define HAVE_WCRTOMB 1 - -/* Define to 1 if you have the `wcscoll' function. */ -#define HAVE_WCSCOLL 1 - -/* Define to 1 if you have the `wctype' function. */ -#define HAVE_WCTYPE 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_WCTYPE_H 1 - -/* systems should define this type here */ -#define HAVE_WCTYPE_T 1 - -/* systems should define this type here */ -#define HAVE_WINT_T 1 #endif -/* Define to `int' if doesn't define. */ -/* #undef gid_t */ - -/* Define if you have and it should be used (not on Ultrix). */ -/* #undef HAVE_ALLOCA_H */ +/* Define if you have and nl_langinfo(CODESET). */ +#undef HAVE_LANGINFO_CODESET -/* Define if you don't have vprintf but do have _doprnt. */ -/* #undef HAVE_DOPRNT */ +/* Define if your file defines LC_MESSAGES. */ +#undef HAVE_LC_MESSAGES -/* Define if you have a working `mmap' system call. */ -/* #undef HAVE_MMAP */ +/* Define to 1 if you have the header file. */ +#undef HAVE_LIBINTL_H -/* Define if your struct stat has st_blksize. */ -#define HAVE_ST_BLKSIZE 1 - -/* Define if you have the ANSI # stringizing operator in cpp. */ -#define HAVE_STRINGIZE 1 - -/* Define if you have that is POSIX.1 compatible. */ -/* #undef HAVE_SYS_WAIT_H */ +/* Define to 1 if you have the `m' library (-lm). */ +#define HAVE_LIBM 1 -/* Define if your struct tm has tm_zone. */ -/* #undef HAVE_TM_ZONE */ +/* Define to 1 if you have a fully functional readline library. */ +/* #undef HAVE_LIBREADLINE */ -/* Define if you don't have tm_zone but do have the external array - tzname. */ -#define HAVE_TZNAME 1 +/* Define if you have the libsigsegv library. */ +#undef HAVE_LIBSIGSEGV -/* Define if you have the vprintf function. */ -#define HAVE_VPRINTF 1 +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 -#ifdef __GNUC__ -#define inline __inline__ -/* Define to 1 if you have the header file. */ -#define HAVE_STDDEF_H 1 +/* Define to 1 if you have the header file. */ +#ifdef __MINGW32__ +#define HAVE_LOCALE_H 1 #endif -/* Define if on MINIX. */ -/* #undef _MINIX */ - -/* Define to `long' if doesn't define. */ -/* #undef off_t */ - -/* Define to `int' if doesn't define. */ -/* #undef pid_t */ - -/* Define if the system does not provide POSIX.1 features except - with this defined. */ -/* #undef _POSIX_1_SOURCE */ - -/* Define if you need to in order for stat and other things to work. */ -/* #undef _POSIX_SOURCE */ +/* Define if you have the 'long long' type. */ +#ifdef __MINGW32__ +#define HAVE_LONG_LONG 1 +#endif -/* Define as the return type of signal handlers (int or void). */ -#define RETSIGTYPE void +/* Define to 1 if the system has the type `long long int'. */ +#undef HAVE_LONG_LONG_INT -/* Define to `unsigned' if doesn't define. */ -/* #undef size_t */ +/* Define to 1 if you have the `mbrlen' function. */ +#ifdef __MINGW32__ +#define HAVE_MBRLEN 1 +#endif -/* If using the C implementation of alloca, define if you know the - direction of stack growth for your system; otherwise it will be - automatically deduced at run-time. - STACK_DIRECTION > 0 => grows toward higher addresses - STACK_DIRECTION < 0 => grows toward lower addresses - STACK_DIRECTION = 0 => direction of growth unknown - */ -/* #undef STACK_DIRECTION */ +/* Define to 1 if mbrtowc and mbstate_t are properly declared. */ +#ifdef __MINGW32__ +#define HAVE_MBRTOWC 1 +#endif -/* Define if you have the ANSI C header files. */ -#define STDC_HEADERS 1 +/* Define to 1 if you have the header file. */ +#undef HAVE_MCHECK_H -/* Define if you can safely include both and . */ -#define TIME_WITH_SYS_TIME 1 +/* Define to 1 if you have the `memcmp' function. */ +#define HAVE_MEMCMP 1 -/* Define if your declares struct tm. */ -/* #undef TM_IN_SYS_TIME */ +/* Define to 1 if you have the `memcpy' function. */ +#define HAVE_MEMCPY 1 -/* Define to `int' if doesn't define. */ -/* #undef uid_t */ +/* Define to 1 if you have the `memcpy_ulong' function. */ +#undef HAVE_MEMCPY_ULONG -#define REGEX_MALLOC 1 /* use malloc instead of alloca in regex.c */ -#define SPRINTF_RET int /* return type of sprintf */ -#define HAVE_MKTIME /* we have the mktime function */ -/* #undef HAVE_SOCKETS */ /* we have sockets on this system */ -/* #undef DYNAMIC */ /* allow dynamic addition of builtins */ -/* #undef STRTOD_NOT_C89 */ /* strtod doesn't have C89 semantics */ +/* Define to 1 if you have the `memmove' function. */ +#ifdef __MINGW32__ +#define HAVE_MEMMOVE 1 +#endif -/* Define if you have the alarm function. */ -#define HAVE_ALARM 1 +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H -/* Define if you have the dcgettext function. */ -/* #undef HAVE_DCGETTEXT */ +/* Define to 1 if you have the `memset' function. */ +#define HAVE_MEMSET 1 -/* Define if you have the fmod function. */ -#define HAVE_FMOD 1 +/* Define to 1 if you have the `memset_ulong' function. */ +#undef HAVE_MEMSET_ULONG -/* Define if you have the getcwd function. */ -/* #undef HAVE_GETCWD */ +/* Define to 1 if you have the `mkstemp' function. */ +#ifdef DJGPP +#define HAVE_MKSTEMP 1 +#endif -/* Define if you have the getpagesize function. */ -/* #undef HAVE_GETPAGESIZE */ +/* we have the mktime function */ +#define HAVE_MKTIME 1 -/* Define if you have the memcmp function. */ -#define HAVE_MEMCMP 1 +/* Define to 1 if you have the header file. */ +#undef HAVE_NETDB_H -/* Define if you have the memcpy function. */ -#define HAVE_MEMCPY 1 +/* Define to 1 if you have the header file. */ +#undef HAVE_NETINET_IN_H -#ifdef __MINGW32__ -/* Define to 1 if you have the `memmove' function. */ -#define HAVE_MEMMOVE 1 +/* Define to 1 if you have the `setenv' function. */ +#if defined(__MINGW32__) || defined(__DJGPP__) +#define HAVE_SETENV 1 #endif -/* Define if you have the memset function. */ -#define HAVE_MEMSET 1 - -/* Define if you have the munmap function. */ -/* #undef HAVE_MUNMAP */ - +/* Define to 1 if you have the `setlocale' function. */ #ifdef __MINGW32__ -/* Define if you have the putenv function. */ -#define HAVE_PUTENV 1 - -/* Define if you have the setlocale function. */ #define HAVE_SETLOCALE 1 +#endif -/* Define if you have the header file. */ -#define HAVE_LOCALE_H 1 +/* Define to 1 if you have the `setsid' function. */ +#undef HAVE_SETSID /* Define to 1 if you have the `snprintf' function. */ +#ifdef __MINGW32__ #define HAVE_SNPRINTF 1 +#endif -/* Define if you have the strcasecmp function. */ -#define HAVE_STRCASECMP 1 - -/* FIXME!! */ +/* newer systems define this type here */ +#undef HAVE_SOCKADDR_STORAGE /* we have sockets on this system */ #undef HAVE_SOCKETS -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_SOCKET_H -#endif /* __MINGW32__ */ +/* Define to 1 if you have the header file. */ +#define HAVE_STDARG_H 1 -#if defined(__MINGW32__) || defined(__DJGPP__) -/* Define if you have the setenv function. */ -#define HAVE_SETENV 1 +/* Define to 1 if you have the header file. */ +#ifdef __GNUC__ +#define HAVE_STDDEF_H 1 #endif -/* Define if you have the stpcpy function. */ -/* #undef HAVE_STPCPY */ +/* Define to 1 if you have the header file. */ +#ifdef __MINGW32__ +#define HAVE_STDINT_H 1 +#endif -/* Define if you have the strcasecmp function. */ -/* #undef HAVE_STRCASECMP */ +/* Define if exists, doesn't clash with , and declares + uintmax_t. */ +#undef HAVE_STDINT_H_WITH_UINTMAX -/* Define if you have the strchr function. */ +/* Define to 1 if you have the header file. */ +#ifdef __MINGW32__ +#define HAVE_STDLIB_H 1 +#endif + +/* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 -/* Define if you have the strdup function. */ -#define HAVE_STRDUP 1 +/* Define to 1 if you have the `strcoll' function. */ +#undef HAVE_STRCOLL -/* Define if you have the strerror function. */ +/* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1 +/* Define to 1 if you have the `strftime' function. */ #ifdef __MINGW32__ -/* Define if you have the strftime function. __MINGW32__ uses the - replacement from missing_d, to support the %e specifier. */ +/* MinGW uses the replacement from missing_d, to support the %e specifier. */ #define strftime rpl_strftime #else #define HAVE_STRFTIME 1 #endif -/* Define if you have the strncasecmp function. */ +/* Define to 1 if cpp supports the ANSI # stringizing operator. */ +#define HAVE_STRINGIZE 1 + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strncasecmp' function. */ #define HAVE_STRNCASECMP 1 +#ifdef __EMX__ +#define strncasecmp strnicmp +#endif -/* Define if you have the strtod function. */ -#define HAVE_STRTOD 1 +/* Define to 1 if you have the header file. */ +#undef HAVE_STROPTS_H -#ifdef __MINGW32__ +/* Define to 1 if you have the `strtod' function. */ +#define HAVE_STRTOD 1 /* Define to 1 if you have the `strtoul' function. */ +#ifdef __MINGW32__ #define HAVE_STRTOUL 1 #endif -/* Define if you have the system function. */ -#define HAVE_SYSTEM 1 +/* Define to 1 if `st_blksize' is a member of `struct stat'. */ +#undef HAVE_STRUCT_STAT_ST_BLKSIZE -/* Define if you have the tzset function. */ -#define HAVE_TZSET 1 +/* Define to 1 if `tm_zone' is a member of `struct tm'. */ +#undef HAVE_STRUCT_TM_TM_ZONE -/* Define if you have the header file. */ -/* #undef HAVE_ARGZ_H */ +/* Define to 1 if your `struct stat' has `st_blksize'. Deprecated, use + `HAVE_STRUCT_STAT_ST_BLKSIZE' instead. */ +#undef HAVE_ST_BLKSIZE -/* Define if you have the header file. */ -#define HAVE_FCNTL_H 1 +/* Define to 1 if you have the `system' function. */ +#define HAVE_SYSTEM 1 -/* Define if you have the header file. */ -/* #undef HAVE_LIBINTL_H */ +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_IOCTL_H -/* Define if you have the header file. */ -#define HAVE_LIMITS_H 1 +/* Define to 1 if you have the header file. */ +#ifndef __MINGW32__ +#define HAVE_SYS_PARAM_H 1 +#endif -/* Define if you have the header file. */ -/* #undef HAVE_MALLOC_H */ +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SOCKET_H -/* Define if you have the header file. */ -#define HAVE_MEMORY_H 1 +/* Define to 1 if you have the header file. */ +#ifdef __MINGW32__ +#define HAVE_SYS_STAT_H 1 +#endif -/* Define if you have the header file. */ -/* #undef HAVE_NETDB_H */ +/* Define to 1 if you have the header file. */ +#if defined(DJGPP) || defined(__MINGW32__) +#define HAVE_SYS_TIME_H 1 +#endif -/* Define if you have the header file. */ -/* #undef HAVE_NETINET_IN_H */ +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 -/* Define if you have the header file. */ -/* #undef HAVE_NL_TYPES_H */ +/* Define to 1 if you have that is POSIX.1 compatible. */ +#undef HAVE_SYS_WAIT_H -/* Define if you have the header file. */ -/* #undef HAVE_SIGNUM_H */ +/* Define to 1 if you have the header file. */ +#undef HAVE_TERMIOS_H -/* Define if you have the header file. */ -#define HAVE_STDARG_H 1 +/* Define to 1 if you have the `tmpfile' function. */ +#undef HAVE_TMPFILE +/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use + `HAVE_STRUCT_TM_TM_ZONE' instead. */ +#undef HAVE_TM_ZONE + +/* Define to 1 if you have the `towlower' function. */ #ifdef __MINGW32__ -/* Define if you have the header file. */ -#define HAVE_STDLIB_H 1 +#define HAVE_TOWLOWER 1 +#endif -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_STAT_H 1 +/* Define to 1 if you have the `towupper' function. */ +#ifdef __MINGW32__ +#define HAVE_TOWUPPER 1 +#endif -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TIME_H 1 +/* Define to 1 if you don't have `tm_zone' but do have the external array + `tzname'. */ +#define HAVE_TZNAME 1 + +/* Define to 1 if you have the `tzset' function. */ +#define HAVE_TZSET 1 + +/* Define if you have the 'uintmax_t' type in or . */ +#if defined(DJGPP) || defined(__MINGW32__) +#define HAVE_UINTMAX_T 1 +#ifdef DJGPP +#define uintmax_t unsigned long long +#endif +#endif + +/* Define to 1 if you have the header file. */ +#if defined(DJGPP) || defined(__MINGW32__) +#define HAVE_UNISTD_H 1 +#endif /* Define if you have the 'unsigned long long' type. */ #define HAVE_UNSIGNED_LONG_LONG 1 -#endif -/* Define if you have the header file. */ -#define HAVE_STRING_H 1 +/* Define to 1 if the system has the type `unsigned long long int'. */ +#undef HAVE_UNSIGNED_LONG_LONG_INT -/* Define if you have the header file. */ -/* #undef HAVE_STRINGS_H */ +/* Define to 1 if you have the `usleep' function. */ +#if defined(DJGPP) || defined(__MINGW32__) +#define HAVE_USLEEP 1 +#endif -/* Define if you have the header file. */ -#define HAVE_SYS_PARAM_H 1 +/* Define to 1 if you have the `vprintf' function. */ +#define HAVE_VPRINTF 1 -/* Define if you have the header file. */ -/* #undef HAVE_SYS_SOCKET_H */ +/* Define to 1 if you have the header file. */ +#ifdef __MINGW32__ +#define HAVE_WCHAR_H 1 +#endif -/* Define if you have the header file. */ -#if defined(DJGPP) -# define HAVE_SYS_TIME_H 1 +/* Define to 1 if you have the `wcrtomb' function. */ +#ifdef __MINGW32__ +#define HAVE_WCRTOMB 1 #endif -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TYPES_H 1 +/* Define to 1 if you have the `wcscoll' function. */ +#ifdef __MINGW32__ +#define HAVE_WCSCOLL 1 +#endif -/* Define if you have the header file. */ -#if defined(DJGPP) || defined(__MINGW32__) -# define HAVE_UNISTD_H 1 +/* Define to 1 if you have the `wctype' function. */ +#ifdef __MINGW32__ +#define HAVE_WCTYPE 1 #endif -/* Define if you have the i library (-li). */ -/* #undef HAVE_LIBI */ +/* Define to 1 if you have the header file. */ +#ifdef __MINGW32__ +#define HAVE_WCTYPE_H 1 +#endif -/* Define if you have the intl library (-lintl). */ -/* #undef HAVE_LIBINTL */ +/* systems should define this type here */ +#ifdef __MINGW32__ +#define HAVE_WCTYPE_T 1 +#endif -/* Define if you have the m library (-lm). */ -#define HAVE_LIBM 1 +/* systems should define this type here */ +#ifdef __MINGW32__ +#define HAVE_WINT_T 1 +#endif + +/* disable lint checks */ +#undef NO_LINT /* Name of package */ #define PACKAGE "gawk" @@ -416,67 +425,157 @@ #define PACKAGE_NAME "GNU Awk" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "GNU Awk 3.1.5a" +#define PACKAGE_STRING "GNU Awk 4.0.0l" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "gawk" +/* Define to the home page for this package. */ +#define PACKAGE_URL "http://www.gnu.org/software/gawk/" + /* Define to the version of this package. */ -#define PACKAGE_VERSION "3.1.5a" +#define PACKAGE_VERSION "4.0.0l" -/* Version number of package */ -#define VERSION "3.1.5a" +/* Define to 1 if *printf supports %F format */ +#undef PRINTF_HAS_F_FORMAT -/* Number of bits in a file offset, on hosts where this is settable. */ -/* #undef _FILE_OFFSET_BITS */ +/* Define as the return type of signal handlers (`int' or `void'). */ +#define RETSIGTYPE void -/* Define to make ftello visible on some hosts (e.g. HP-UX 10.20). */ -/* #undef _LARGEFILE_SOURCE */ +#if defined(DJGPP) || defined(__MINGW32__) +#include +#endif -/* Define for large files, on AIX-style hosts. */ -/* #undef _LARGE_FILES */ +/* The size of `unsigned int', as computed by sizeof. */ +#if UINT_MAX == 65536 +#define SIZEOF_UNSIGNED_INT 2 +#elif UINT_MAX == 4294967295U +#define SIZEOF_UNSIGNED_INT 4 +#endif -/* Define to make ftello visible on some hosts (e.g. glibc 2.1.3). */ -/* #undef _XOPEN_SOURCE */ +/* The size of `unsigned long', as computed by sizeof. */ +#if ULONG_MAX == 4294967295UL +#define SIZEOF_UNSIGNED_LONG 4 +#endif -/* Define to 1 if *printf supports %F format */ -/* #undef PRINTF_HAS_F_FORMAT */ +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* some systems define this type here */ +#undef TIME_T_IN_SYS_TYPES_H + +/* Define to 1 if you can safely include both and . */ +#define TIME_WITH_SYS_TIME 1 + +/* Define to 1 if your declares `struct tm'. */ +#undef TM_IN_SYS_TIME + +/* force use of our version of strftime */ +#undef USE_INCLUDED_STRFTIME -/* Define if compiler has function prototypes */ -#define PROTOTYPES 1 +/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# undef _GNU_SOURCE +#endif +/* Enable threading extensions on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# undef _POSIX_PTHREAD_SEMANTICS +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif -/* Define to 1 if you have the stpcpy function. */ -/* #undef HAVE_STPCPY */ -/* Define if your locale.h file contains LC_MESSAGES. */ -/* #undef HAVE_LC_MESSAGES */ +/* Version number of package */ +#define VERSION "4.0.0l" -/* Define to 1 if NLS is requested. */ -/* #undef ENABLE_NLS */ +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS -/* Define to 1 if you have gettext and don't want to use GNU gettext. */ -/* #undef HAVE_GETTEXT */ +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES -/* Define as 1 if you have catgets and don't want to use GNU gettext. */ -/* #undef HAVE_CATGETS */ +/* Define to 1 if on MINIX. */ +#undef _MINIX -/* The size of `unsigned int' & `unsigned long', as computed by sizeof. */ -#if defined(DJGPP) || defined(__MINGW32__) -# include +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +#undef _POSIX_1_SOURCE + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +#undef _POSIX_SOURCE + +/* Define to 1 if type `char' is unsigned and you are not using gcc. */ +#ifndef __CHAR_UNSIGNED__ +# undef __CHAR_UNSIGNED__ #endif -#if UINT_MAX == 65536 -# define SIZEOF_UNSIGNED_INT 2 +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `int' if doesn't define. */ +#undef gid_t + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#ifdef __GNUC__ +#define inline __inline__ +#endif #endif -#if UINT_MAX == 4294967295U -# define SIZEOF_UNSIGNED_INT 4 +/* Define to long or long long if and don't define. */ +#ifdef DJGPP +#define intmax_t long long #endif -#if ULONG_MAX == 4294967295UL -# define SIZEOF_UNSIGNED_LONG 4 +/* Define to `int' if does not define. */ +#undef pid_t + +/* Define to the equivalent of the C99 'restrict' keyword, or to + nothing if this is not supported. Do not define if restrict is + supported directly. */ +#ifdef DJGPP +#define restrict +#endif +/* Work around a bug in Sun C++: it does not support _Restrict or + __restrict__, even though the corresponding Sun C compiler ends up with + "#define restrict _Restrict" or "#define restrict __restrict__" in the + previous line. Perhaps some future version of Sun C++ will work with + restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ +#if defined __SUNPRO_CC && !defined __RESTRICT +# define _Restrict +# define __restrict__ +#endif + +/* Define to `unsigned int' if does not define. */ +#undef size_t + +/* type to use in place of socklen_t if not defined */ +#undef socklen_t + +/* Define to `int' if does not define. */ +#undef ssize_t + +/* Define to `int' if doesn't define. */ +#undef uid_t + +/* Define to unsigned long or unsigned long long if and + don't define. */ +#ifdef DJGPP +#define uintmax_t unsigned long long #endif +#include "custom.h" /* Library search path */ #if defined(__DJGPP__) && (__DJGPP__ > 2 || __DJGPP_MINOR__ >= 3) # define DEFPATH ".;/dev/env/DJDIR/share/awk" @@ -484,38 +583,15 @@ # define DEFPATH ".;c:/lib/awk;c:/gnu/lib/awk" #endif +#ifndef DJGPP #define HAVE_POPEN_H 1 +#endif #if defined(__EMX__) #define strcasecmp stricmp #define strncasecmp strnicmp #endif -#if defined(DJGPP) -# define HAVE_LIMITS_H 1 -# undef HAVE_POPEN_H -# undef HAVE_ALLOCA -# define HAVE_MKSTEMP 1 -# define HAVE_USLEEP 1 -#define intmax_t long long -#define uintmax_t unsigned long long -#define restrict /* nothing */ -#endif - -#if defined(__WIN32__) && defined(__CRTRSXNT__) -#include -#endif - -#if defined(__MINGW32__) -#undef HAVE_SYS_PARAM_H -#endif - #if defined(__MINGW32__) # define WEXITSTATUS(stat_val) ((stat_val) & ~0xC0000000) #endif - -#ifdef __MINGW32__ -#define HAVE_USLEEP 1 -#endif - -/* #define NO_LINT 1 */ diff -urN gawk-4.0.0/pc/config.sed gawk-4.0.1/pc/config.sed --- gawk-4.0.0/pc/config.sed 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/pc/config.sed 2012-03-28 21:47:54.000000000 +0200 @@ -0,0 +1,279 @@ +# -config.sed----------------------------------------------------------- +# Configuration script for pc/config.h +# ---------------------------------------------------------------------- + +# 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 + +# ---------------------------------------------------------------------- + +/configh\.in/a\ +/* pc/config.h. Generated automatically by pc/config.sed. */ + +s/^#undef GETPGRP_VOID *$/#define GETPGRP_VOID 1/ +s/^#undef GETGROUPS_T *$/#define GETGROUPS_T gid_t/ +/^#undef GETPGRP_VOID$/c\ +#ifdef DJGPP\ +#define GETPGRP_VOID 1\ +#endif +s/^#undef HAVE_ALARM *$/#define HAVE_ALARM 1/ +s/^#undef HAVE_ATEXIT *$/#define HAVE_ATEXIT 1/ +/^#undef HAVE_BTOWC *$/c\ +#ifdef _WIN32\ +#define HAVE_BTOWC 1\ +#endif +/^#undef HAVE_DECL_TZNAME *$/c\ +#ifdef __MINGW32__\ +#define HAVE_DECL_TZNAME 1\ +#endif +s/^#undef HAVE_FCNTL_H *$/#define HAVE_FCNTL_H 1/ +s/^#undef HAVE_FMOD *$/#define HAVE_FMOD 1/ +/^#undef HAVE_INTMAX_T *$/c\ +#ifdef __MINGW32__\ +#define HAVE_INTMAX_T 1\ +#endif +/^#undef HAVE_INTTYPES_H *$/c\ +#ifdef __MINGW32__\ +#define HAVE_INTTYPES_H 1\ +#endif +/^#undef HAVE_INTTYPES_H_WITH_UINTMAX *$/c\ +#ifdef __MINGW32__\ +#define HAVE_INTTYPES_H_WITH_UINTMAX 1\ +#endif +/^#undef HAVE_ISASCII *$/c\ +#ifdef __MINGW32__\ +#define HAVE_ISASCII 1\ +#endif +/^#undef HAVE_ISWCTYPE *$/c\ +#ifdef __MINGW32__\ +#define HAVE_ISWCTYPE 1\ +#endif +/^#undef HAVE_ISWLOWER *$/c\ +#ifdef __MINGW32__\ +#define HAVE_ISWLOWER 1\ +#endif +/^#undef HAVE_ISWUPPER *$/c\ +#ifdef __MINGW32__\ +#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__\ +#define HAVE_LOCALE_H 1\ +#endif +/^#undef HAVE_LONG_LONG *$/c\ +#ifdef __MINGW32__\ +#define HAVE_LONG_LONG 1\ +#endif +/^#undef HAVE_MBRLEN *$/c\ +#ifdef __MINGW32__\ +#define HAVE_MBRLEN 1\ +#endif +/^#undef HAVE_MBRTOWC *$/c\ +#ifdef __MINGW32__\ +#define HAVE_MBRTOWC 1\ +#endif +s/^#undef HAVE_MEMCMP *$/#define HAVE_MEMCMP 1/ +s/^#undef HAVE_MEMCPY *$/#define HAVE_MEMCPY 1/ +/^#undef HAVE_MEMMOVE *$/c\ +#ifdef __MINGW32__\ +#define HAVE_MEMMOVE 1\ +#endif +s/^#undef HAVE_MEMSET *$/#define HAVE_MEMSET 1/ +/^#undef HAVE_MKSTEMP *$/c\ +#ifdef DJGPP\ +#define HAVE_MKSTEMP 1\ +#endif +s/^#undef HAVE_MKTIME *$/#define HAVE_MKTIME 1/ +/^#undef HAVE_SETENV *$/c\ +#if defined(__MINGW32__) || defined(__DJGPP__)\ +#define HAVE_SETENV 1\ +#endif +/^#undef HAVE_SETLOCALE *$/c\ +#ifdef __MINGW32__\ +#define HAVE_SETLOCALE 1\ +#endif +/^#undef HAVE_SNPRINTF *$/c\ +#ifdef __MINGW32__\ +#define HAVE_SNPRINTF 1\ +#endif +s/^#undef HAVE_STDARG_H *$/#define HAVE_STDARG_H 1/ +/^#undef HAVE_STDDEF_H *$/c\ +#ifdef __GNUC__\ +#define HAVE_STDDEF_H 1\ +#endif +/^#undef HAVE_STDINT_H *$/c\ +#ifdef __MINGW32__\ +#define HAVE_STDINT_H 1\ +#endif +/^#undef HAVE_STDLIB_H *$/c\ +#ifdef __MINGW32__\ +#define HAVE_STDLIB_H 1\ +#endif +s/^#undef HAVE_STRCHR *$/#define HAVE_STRCHR 1/ +s/^#undef HAVE_STRERROR *$/#define HAVE_STRERROR 1/ +/^#undef HAVE_STRFTIME *$/c\ +#ifdef __MINGW32__\ +/* MinGW uses the replacement from missing_d, to support the %e specifier. */\ +#define strftime rpl_strftime\ +#else\ +#define HAVE_STRFTIME 1\ +#endif +s/^#undef HAVE_STRINGIZE *$/#define HAVE_STRINGIZE 1/ +s/^#undef HAVE_STRING_H *$/#define HAVE_STRING_H 1/ +/^#undef HAVE_STRNCASECMP *$/c\ +#define HAVE_STRNCASECMP 1\ +#ifdef __EMX__\ +#define strncasecmp strnicmp\ +#endif +s/^#undef HAVE_STRTOD *$/#define HAVE_STRTOD 1/ +/^#undef HAVE_STRTOUL *$/c\ +#ifdef __MINGW32__\ +#define HAVE_STRTOUL 1\ +#endif +s/^#undef HAVE_SYSTEM *$/#define HAVE_SYSTEM 1/ +/^#undef HAVE_SYS_PARAM_H *$/c\ +#ifndef __MINGW32__\ +#define HAVE_SYS_PARAM_H 1\ +#endif +/^#undef HAVE_SYS_STAT_H *$/c\ +#ifdef __MINGW32__\ +#define HAVE_SYS_STAT_H 1\ +#endif +/^#undef HAVE_SYS_TIME_H *$/c\ +#if defined(DJGPP) || defined(__MINGW32__)\ +#define HAVE_SYS_TIME_H 1\ +#endif +s/^#undef HAVE_SYS_TYPES_H *$/#define HAVE_SYS_TYPES_H 1/ +/^#undef HAVE_TOWLOWER *$/c\ +#ifdef __MINGW32__\ +#define HAVE_TOWLOWER 1\ +#endif +/^#undef HAVE_TOWUPPER *$/c\ +#ifdef __MINGW32__\ +#define HAVE_TOWUPPER 1\ +#endif +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__)\ +#define HAVE_UINTMAX_T 1\ +#ifdef DJGPP\ +#define uintmax_t unsigned long long\ +#endif\ +#endif +/^#undef HAVE_UNISTD_H *$/c\ +#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__)\ +#define HAVE_USLEEP 1\ +#endif +s/^#undef HAVE_VPRINTF *$/#define HAVE_VPRINTF 1/ +/^#undef HAVE_WCHAR_H *$/c\ +#ifdef __MINGW32__\ +#define HAVE_WCHAR_H 1\ +#endif +/^#undef HAVE_WCRTOMB *$/c\ +#ifdef __MINGW32__\ +#define HAVE_WCRTOMB 1\ +#endif +/^#undef HAVE_WCSCOLL *$/c\ +#ifdef __MINGW32__\ +#define HAVE_WCSCOLL 1\ +#endif +/^#undef HAVE_WCTYPE *$/c\ +#ifdef __MINGW32__\ +#define HAVE_WCTYPE 1\ +#endif +/^#undef HAVE_WCTYPE_H *$/c\ +#ifdef __MINGW32__\ +#define HAVE_WCTYPE_H 1\ +#endif +/^#undef HAVE_WCTYPE_T *$/c\ +#ifdef __MINGW32__\ +#define HAVE_WCTYPE_T 1\ +#endif +/^#undef HAVE_WINT_T *$/c\ +#ifdef __MINGW32__\ +#define HAVE_WINT_T 1\ +#endif +s/^#undef PROTOTYPES *$/#define PROTOTYPES 1/ +s/^#undef RETSIGTYPE *$/#define RETSIGTYPE void/ +/^#.*RETSIGTYPE /a\ +\ +#if defined(DJGPP) || defined(__MINGW32__)\ +#include \ +#endif +/^#undef SIZEOF_UNSIGNED_INT *$/c\ +#if UINT_MAX == 65536\ +#define SIZEOF_UNSIGNED_INT 2\ +#elif UINT_MAX == 4294967295U\ +#define SIZEOF_UNSIGNED_INT 4\ +#endif +/^#undef SIZEOF_UNSIGNED_LONG *$/c\ +#if ULONG_MAX == 4294967295UL\ +#define SIZEOF_UNSIGNED_LONG 4\ +#endif +s/^#undef STDC_HEADERS *$/#define STDC_HEADERS 1/ +s/^#undef TIME_WITH_SYS_TIME *$/#define TIME_WITH_SYS_TIME 1/ +/^#undef inline *$/c\ +#ifdef __GNUC__\ +#define inline __inline__\ +#endif +/^#undef intmax_t *$/c\ +#ifdef DJGPP\ +#define intmax_t long long\ +#endif +/^#undef restrict *$/c\ +#ifdef DJGPP\ +#define restrict\ +#endif +/^#undef uintmax_t *$/c\ +#ifdef DJGPP\ +#define uintmax_t unsigned long long\ +#endif + +s|^#undef PACKAGE_URL *$|#define PACKAGE_URL "http://www.gnu.org/software/gawk/"| + +$a\ +/* Library search path */\ +#if defined(__DJGPP__) && (__DJGPP__ > 2 || __DJGPP_MINOR__ >= 3)\ +# define DEFPATH ".;/dev/env/DJDIR/share/awk"\ +#else\ +# define DEFPATH ".;c:/lib/awk;c:/gnu/lib/awk"\ +#endif\ +\ +#ifndef DJGPP\ +#define HAVE_POPEN_H 1\ +#endif\ +\ +#if defined(__EMX__)\ +#define strcasecmp stricmp\ +#define strncasecmp strnicmp\ +#endif\ +\ +#if defined(__MINGW32__)\ +# define WEXITSTATUS(stat_val) ((stat_val) & ~0xC0000000)\ +#endif diff -urN gawk-4.0.0/pc/configpk.sed gawk-4.0.1/pc/configpk.sed --- gawk-4.0.0/pc/configpk.sed 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/pc/configpk.sed 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1,9 @@ +s/^AC_INIT([[]\{0,1\}\([^],]*\)[]]\{0,1\}, *[[]\{0,1\}\([^],]*\)[]]\{0,1\}, *[[]\{0,1\}\([^],]*\)[]]\{0,1\}, *[[]\{0,1\}\([^],)]*\).*$/\ +s|^#undef PACKAGE_NAME *$|#define PACKAGE_NAME "\1"|\ +s|^#undef VERSION *$|#define VERSION "\2"\|\ +s|^#undef PACKAGE_VERSION *$|#define PACKAGE_VERSION "\2"|\ +s|^#undef PACKAGE_STRING *$|#define PACKAGE_STRING "\1 \2"|\ +s|^#undef PACKAGE_BUGREPORT *$|#define PACKAGE_BUGREPORT "\3"|\ +s|^#undef PACKAGE *$|#define PACKAGE "\4"|\ +s|^#undef PACKAGE_TARNAME *$|#define PACKAGE_TARNAME "\4"|\ +/p diff -urN gawk-4.0.0/pc/gawkmisc.pc gawk-4.0.1/pc/gawkmisc.pc --- gawk-4.0.0/pc/gawkmisc.pc 2011-03-31 21:52:48.000000000 +0200 +++ gawk-4.0.1/pc/gawkmisc.pc 2012-03-28 21:47:54.000000000 +0200 @@ -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. @@ -547,6 +547,41 @@ return usec - msecf * 1000 < 0 ? 0 : (int)(usec - msecf * 1000); } +/* The implementation of wctob in the MS runtime is problematic + because it doesn't allow to distinguish between WEOF and 0xff, due + to integer sign extension. It also causes failures in dfa.c when + characters with the 8th bit set are involved. This replacement + version fixes that. */ + +#include + +int +wctob (wint_t wc) +{ + char buf[64]; + + if (!(MB_CUR_MAX <= sizeof (buf))) + abort (); + /* Handle the case where WEOF is a value that does not fit in a wchar_t. */ + if (wc == (wchar_t)wc) + if (wctomb (buf, (wchar_t)wc) == 1) + return (unsigned char) buf[0]; + 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__ @@ -560,4 +595,12 @@ 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 -urN gawk-4.0.0/pc/make-config.bat gawk-4.0.1/pc/make-config.bat --- gawk-4.0.0/pc/make-config.bat 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/pc/make-config.bat 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1,6 @@ +@echo off +sed -n -f configpk.sed < ..\configure.ac > tmp.sed +sed -f config.sed < ..\configh.in > config.tmp +sed -f tmp.sed < config.tmp > config.h +del tmp.sed +del config.tmp diff -urN gawk-4.0.0/pc/popen.h gawk-4.0.1/pc/popen.h --- gawk-4.0.0/pc/popen.h 2010-12-18 20:11:18.000000000 +0200 +++ gawk-4.0.1/pc/popen.h 2011-11-01 22:09:45.000000000 +0200 @@ -10,4 +10,8 @@ # define pclose(f) os_pclose(f) extern FILE *os_popen( const char *, const char * ); extern int os_pclose( FILE * ); +# ifdef __MINGW32__ +# define system(c) os_system(c) + extern int os_system( const char * ); +# endif /* __MINGW32__ */ #endif /* !__DJGPP__ */ diff -urN gawk-4.0.0/pc/testoutcmp.awk gawk-4.0.1/pc/testoutcmp.awk --- gawk-4.0.0/pc/testoutcmp.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/pc/testoutcmp.awk 2012-03-28 21:47:54.000000000 +0200 @@ -0,0 +1,57 @@ +# 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) + file = 0 + else + file = 1 + gsub(/\r/, "", $0) + lines[file, FNR] = $0 +} + +END { + if (NR/2 != FNR) { + printf("testoutcmp: warning: files are not of equal length!\n") > "/dev/stderr" + exit 1 + } + + for (i = 1; i <= FNR; i++) { + good = lines[0, i] + actual = lines[1, i] + if (good == actual) + continue + + l = length(good) + if (substr(good, l, 1) == ")") + l-- + if (substr(good, 1, l) == substr(actual, 1, l)) + continue + else { + printf("%s and %s are not equal\n", ARGV[1], + ARGV[2]) > "/dev/stderr" + exit 1 + } + } + + exit 0 +} diff -urN gawk-4.0.0/po/ChangeLog gawk-4.0.1/po/ChangeLog --- gawk-4.0.0/po/ChangeLog 2011-06-24 11:30:31.000000000 +0300 +++ gawk-4.0.1/po/ChangeLog 2012-03-28 22:01:57.000000000 +0200 @@ -1,3 +1,13 @@ +2012-03-28 Arnold D. Robbins + + * 4.0.1: Release tar ball made. + +2011-07-17 Arnold D. Robbins + + * Makefile.in.in (dist2): Remove README from list of files checked for + manually. Added in main directory's Makefile.am EXTRA_DIST, per + advice from Bruno Haible. + 2011-06-23 Arnold D. Robbins * Makefile.in.in (dist2): Add README to list of files checked for diff -urN gawk-4.0.0/po/Makefile.in.in gawk-4.0.1/po/Makefile.in.in --- gawk-4.0.0/po/Makefile.in.in 2011-06-24 11:29:52.000000000 +0300 +++ gawk-4.0.1/po/Makefile.in.in 2011-11-01 22:09:45.000000000 +0200 @@ -363,9 +363,6 @@ if test -f $(srcdir)/$(DOMAIN).pot; then \ dists="$$dists $(DOMAIN).pot stamp-po"; \ fi; \ - if test -f $(srcdir)/README; then \ - dists="$$dists README"; \ - fi; \ if test -f $(srcdir)/ChangeLog; then \ dists="$$dists ChangeLog"; \ fi; \ diff -urN gawk-4.0.0/po/da.po gawk-4.0.1/po/da.po --- gawk-4.0.0/po/da.po 2011-06-23 09:46:20.000000000 +0300 +++ gawk-4.0.1/po/da.po 2012-03-28 22:03:46.000000000 +0200 @@ -1,22 +1,22 @@ # 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 , 2001-2002. +# Martin Sjögren , 2001-2002. # Christer Andersson , 2007. -# Keld Simonsen , 2002,2011. -# Review by Torben Grøn Helligsø , 2011. +# Keld Simonsen , 2002,2011,2012. +# Review by Torben Grøn Helligsø , 2011. # Review by Ask Hjorth Larsen , 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-06-23 09:46+0300\n" -"PO-Revision-Date: 2011-05-22 10:37+0200\n" +"POT-Creation-Date: 2012-03-28 22:03+0200\n" +"PO-Revision-Date: 2012-02-06 10:37+0100\n" "Last-Translator: Keld Simonsen \n" "Language-Team: Danish \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" @@ -28,29 +28,29 @@ #: array.c:248 msgid "attempt to use a scalar value as array" -msgstr "forsøg pÃ¥ at bruge en skalar som array" +msgstr "forsøg 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" +msgstr "forsøg på at bruge funktionen '%s' som et array" #: array.c:254 #, 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øg på at bruge skalarparameteren '%s' som et array" #: array.c:257 #, c-format msgid "attempt to use scalar `%s' as an array" -msgstr "forsøg pÃ¥ at bruge skalar '%s' som et array" +msgstr "forsøg på at bruge skalar '%s' som et array" -#: array.c:302 array.c:707 builtin.c:81 builtin.c:1381 builtin.c:1423 -#: builtin.c:1436 builtin.c:1851 builtin.c:1863 eval.c:1135 eval.c:1139 -#: eval.c:1473 eval.c:1720 +#: array.c:302 array.c:707 builtin.c:84 builtin.c:1385 builtin.c:1427 +#: builtin.c:1440 builtin.c:1859 builtin.c:1871 eval.c:1135 eval.c:1139 +#: eval.c:1495 eval.c:1812 #, 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øg på at bruge array '%s' i skalarsammenhæng" #: array.c:513 #, c-format @@ -67,10 +67,10 @@ msgid "delete: index `%s' not in array `%s'" msgstr "delete: indeks '%s' findes ikke i array '%s'" -#: array.c:734 eval.c:1773 +#: array.c:734 eval.c:1865 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" -msgstr "forsøg pÃ¥ at bruge skalaren '%s[\"%.*s\"]' som array" +msgstr "forsøg på at bruge skalaren '%s[\"%.*s\"]' som array" #: array.c:910 #, c-format @@ -85,7 +85,7 @@ #: array.c:919 #, c-format msgid "%s: table_size = %d, array_size = %d\n" -msgstr "%s: tabelstørrelse = %d, arraystørrelse = %d\n" +msgstr "%s: tabelstørrelse = %d, arraystørrelse = %d\n" #: array.c:954 #, c-format @@ -111,38 +111,38 @@ #: array.c:1094 msgid "asort: first argument not an array" -msgstr "asort: første argument er ikke et array" +msgstr "asort: første argument er ikke et array" #: array.c:1095 msgid "asorti: first argument not an array" -msgstr "asorti: første argument er ikke et array" +msgstr "asorti: første argument er ikke et array" #: array.c:1102 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ørste argument for andet argument" #: array.c:1103 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ørste argument for andet argument" #: array.c:1108 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ørste argument" #: array.c:1109 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ørste argument" -#: array.c:1659 +#: array.c:1655 #, c-format msgid "`%s' is invalid as a function name" msgstr "'%s' er ugyldigt som funktionsnavn" -#: array.c:1663 +#: array.c:1659 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "funktionen for sorteringssammenligning '%s' er ikke defineret" @@ -154,12 +154,12 @@ #: awkgram.y:252 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ønster eller en handlingsdel" #: awkgram.y:323 awkgram.y:334 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øtter ikke flere 'BEGIN'- eller 'END'-regler" #: awkgram.y:371 #, c-format @@ -178,352 +178,352 @@ #: awkgram.y:528 #, c-format msgid "duplicate case values in switch body: %s" -msgstr "dublet case-værdier i switch-krop %s" +msgstr "dublet case-værdier i switch-krop %s" #: awkgram.y:549 msgid "duplicate `default' detected in switch body" msgstr "dublet 'default' opdaget i switch-krop" -#: awkgram.y:811 +#: awkgram.y:809 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økke eller switch er ikke tilladt" -#: awkgram.y:820 +#: awkgram.y:818 msgid "`continue' is not allowed outside a loop" -msgstr "'continue' uden for en løkke er ikke tilladt" +msgstr "'continue' uden for en løkke er ikke tilladt" -#: awkgram.y:830 +#: awkgram.y:828 #, c-format msgid "`next' used in %s action" msgstr "'next' brugt i %s-handling" -#: awkgram.y:838 +#: awkgram.y:836 msgid "`nextfile' is a gawk extension" msgstr "'nextfile' er en gawk-udvidelse" -#: awkgram.y:843 +#: awkgram.y:841 #, c-format msgid "`nextfile' used in %s action" msgstr "'nextfile' brugt i %s-handling" -#: awkgram.y:867 +#: awkgram.y:865 msgid "`return' used outside function context" msgstr "'return' brugt uden for funktion" -#: awkgram.y:927 +#: awkgram.y:925 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ående 'print' i BEGIN eller END-regel skulle muligvis være 'print " "\"\"'" -#: awkgram.y:997 awkgram.y:1001 awkgram.y:1025 +#: awkgram.y:995 awkgram.y:999 awkgram.y:1023 msgid "`delete array' is a gawk extension" msgstr "'delete array' er en gawk-udvidelse" -#: awkgram.y:1021 +#: awkgram.y:1019 msgid "`delete(array)' is a non-portable tawk extension" msgstr "'delete array' er en ikke-portabel udvidelse fra tawk" -#: awkgram.y:1137 +#: awkgram.y:1135 msgid "multistage two-way pipelines don't work" msgstr "flertrins dobbeltrettede datakanaler fungerer ikke" -#: awkgram.y:1240 +#: awkgram.y:1238 msgid "regular expression on right of assignment" -msgstr "regulært udtryk i højreleddet af en tildeling" +msgstr "regulært udtryk i højreleddet af en tildeling" -#: awkgram.y:1251 +#: awkgram.y:1249 msgid "regular expression on left of `~' or `!~' operator" -msgstr "regulært udtryk pÃ¥ venstre side af en '~'- eller '!~'-operator" +msgstr "regulært udtryk på venstre side af en '~'- eller '!~'-operator" -#: awkgram.y:1267 awkgram.y:1421 +#: awkgram.y:1265 awkgram.y:1419 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øtter ikke nøgleordet 'in' undtagen efter 'for'" -#: awkgram.y:1277 +#: awkgram.y:1275 msgid "regular expression on right of comparison" -msgstr "regulært udtryk i højreleddet af en sammenligning" +msgstr "regulært udtryk i højreleddet af en sammenligning" -#: awkgram.y:1396 +#: awkgram.y:1394 #, c-format msgid "`getline var' invalid inside `%s' rule" msgstr "'getline var' ugyldig inden i '%s' regel" -#: awkgram.y:1399 eval.c:2409 +#: awkgram.y:1397 eval.c:2504 #, c-format msgid "`getline' invalid inside `%s' rule" msgstr "'getline' ugyldig inden i '%s' regel" -#: awkgram.y:1404 +#: awkgram.y:1402 msgid "non-redirected `getline' undefined inside END action" msgstr "ikke-omdirigeret 'getline' udefineret inden i END-handling" -#: awkgram.y:1423 +#: awkgram.y:1421 msgid "old awk does not support multidimensional arrays" -msgstr "gamle versioner af awk understøtter ikke flerdimensionale array" +msgstr "gamle versioner af awk understøtter ikke flerdimensionale array" -#: awkgram.y:1519 +#: awkgram.y:1517 msgid "call of `length' without parentheses is not portable" msgstr "kald af 'length' uden parenteser er ikke portabelt" -#: awkgram.y:1582 +#: awkgram.y:1580 msgid "indirect function calls are a gawk extension" msgstr "indirekte funktionskald er en gawk-udvidelse" -#: awkgram.y:1595 +#: awkgram.y:1593 #, c-format msgid "can not use special variable `%s' for indirect function call" msgstr "kan ikke bruge specialvariabel '%s' til indirekte funktionskald" -#: awkgram.y:1673 +#: awkgram.y:1671 msgid "invalid subscript expression" msgstr "ugyldigt indeksudtryk" -#: awkgram.y:1713 +#: awkgram.y:1711 msgid "use of non-array as array" msgstr "brug af ikke-array som array" -#: awkgram.y:1977 awkgram.y:1997 msg.c:98 +#: awkgram.y:1975 awkgram.y:1995 msg.c:98 msgid "warning: " msgstr "advarsel: " -#: awkgram.y:1995 msg.c:130 +#: awkgram.y:1993 msg.c:130 msgid "fatal: " msgstr "fatal: " -#: awkgram.y:2045 +#: awkgram.y:2043 msgid "unexpected newline or end of string" msgstr "uventet nylinjetegn eller strengafslutning" -#: awkgram.y:2301 awkgram.y:2359 awkgram.y:2543 +#: awkgram.y:2300 awkgram.y:2358 awkgram.y:2542 #, 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 åbne kildefilen '%s' for læsning (%s)" -#: awkgram.y:2302 awkgram.y:2360 builtin.c:119 +#: awkgram.y:2301 awkgram.y:2359 builtin.c:122 msgid "reason unknown" -msgstr "ukendt Ã¥rsag" +msgstr "ukendt årsag" -#: awkgram.y:2318 +#: awkgram.y:2317 #, c-format msgid "already included source file `%s'" msgstr "allerede inkluderet kildefil '%s'" -#: awkgram.y:2344 +#: awkgram.y:2343 msgid "@include is a gawk extension" msgstr "@include er en gawk-udvidelse" -#: awkgram.y:2350 +#: awkgram.y:2349 msgid "empty filename after @include" msgstr "tomt filnavn efter @include" -#: awkgram.y:2495 +#: awkgram.y:2494 msgid "empty program text on command line" -msgstr "tom programtekst pÃ¥ kommandolinjen" +msgstr "tom programtekst på kommandolinjen" -#: awkgram.y:2610 +#: awkgram.y:2609 #, c-format msgid "can't read sourcefile `%s' (%s)" -msgstr "kan ikke læse kildefilen '%s' (%s)" +msgstr "kan ikke læse kildefilen '%s' (%s)" -#: awkgram.y:2621 +#: awkgram.y:2620 #, c-format msgid "source file `%s' is empty" msgstr "kildefilen '%s' er tom" -#: awkgram.y:2806 +#: awkgram.y:2797 msgid "source file does not end in newline" msgstr "kildefilen slutter ikke med en ny linje" -#: awkgram.y:2883 +#: awkgram.y:2900 msgid "unterminated regexp ends with `\\' at end of file" -msgstr "uafsluttet regulært udtryk slutter med '\\' i slutningen af filen" +msgstr "uafsluttet regulært udtryk slutter med '\\' i slutningen af filen" -#: awkgram.y:2907 +#: awkgram.y:2924 #, 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-ændringstegn '/.../%c' fra tawk virker ikke i gawk" -#: awkgram.y:2911 +#: awkgram.y:2928 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" -msgstr "regex-ændringstegn '/.../%c' fra tawk virker ikke i gawk" +msgstr "regex-ændringstegn '/.../%c' fra tawk virker ikke i gawk" -#: awkgram.y:2918 +#: awkgram.y:2935 msgid "unterminated regexp" -msgstr "uafsluttet regulært udtryk" +msgstr "uafsluttet regulært udtryk" -#: awkgram.y:2922 +#: awkgram.y:2939 msgid "unterminated regexp at end of file" -msgstr "uafsluttet regulært udtryk i slutningen af filen" +msgstr "uafsluttet regulært udtryk i slutningen af filen" -#: awkgram.y:2981 +#: awkgram.y:2998 msgid "use of `\\ #...' line continuation is not portable" -msgstr "brug af '\\ #...' for linjefortsættelse er ikke portabelt" +msgstr "brug af '\\ #...' for linjefortsættelse er ikke portabelt" -#: awkgram.y:2997 +#: awkgram.y:3014 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åstreg" -#: awkgram.y:3058 +#: awkgram.y:3075 msgid "POSIX does not allow operator `**='" msgstr "POSIX tillader ikke operatoren '**='" -#: awkgram.y:3060 +#: awkgram.y:3077 msgid "old awk does not support operator `**='" -msgstr "gamle versioner af awk understøtter ikke operatoren '**='" +msgstr "gamle versioner af awk understøtter ikke operatoren '**='" -#: awkgram.y:3069 +#: awkgram.y:3086 msgid "POSIX does not allow operator `**'" msgstr "POSIX tillader ikke operatoren '**'" -#: awkgram.y:3071 +#: awkgram.y:3088 msgid "old awk does not support operator `**'" -msgstr "gamle versioner af awk understøtter ikke operatoren '**'" +msgstr "gamle versioner af awk understøtter ikke operatoren '**'" -#: awkgram.y:3106 +#: awkgram.y:3123 msgid "operator `^=' is not supported in old awk" -msgstr "operatoren '^=' understøttes ikke i gamle versioner af awk" +msgstr "operatoren '^=' understøttes ikke i gamle versioner af awk" -#: awkgram.y:3114 +#: awkgram.y:3131 msgid "operator `^' is not supported in old awk" -msgstr "operatoren '^' understøttes ikke i gamle versioner af awk" +msgstr "operatoren '^' understøttes ikke i gamle versioner af awk" -#: awkgram.y:3207 awkgram.y:3223 +#: awkgram.y:3224 awkgram.y:3240 msgid "unterminated string" msgstr "uafsluttet streng" -#: awkgram.y:3419 +#: awkgram.y:3436 #, c-format msgid "invalid char '%c' in expression" msgstr "ugyldigt tegn '%c' i udtryk" -#: awkgram.y:3466 +#: awkgram.y:3483 #, c-format msgid "`%s' is a gawk extension" msgstr "'%s' er en gawk-udvidelse" -#: awkgram.y:3471 +#: awkgram.y:3488 #, c-format msgid "`%s' is a Bell Labs extension" msgstr "'%s' er en Bell Labs-udvidelse" -#: awkgram.y:3476 +#: awkgram.y:3493 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX tillader ikke '%s'" -#: awkgram.y:3484 +#: awkgram.y:3501 #, c-format msgid "`%s' is not supported in old awk" -msgstr "'%s' understøttes ikke i gamle versioner af awk" +msgstr "'%s' understøttes ikke i gamle versioner af awk" -#: awkgram.y:3551 +#: awkgram.y:3568 msgid "`goto' considered harmful!\n" msgstr "'goto' anses for skadelig!\n" -#: awkgram.y:3604 +#: awkgram.y:3619 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d er et ugyldigt antal argumenter for %s" -#: awkgram.y:3639 awkgram.y:3642 -msgid "match: third argument is a gawk extension" -msgstr "match: tredje argument er en gawk-udvidelse" - -#: awkgram.y:3670 +#: awkgram.y:3654 #, 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:3675 +#: awkgram.y:3659 #, 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 ændringsbart objekt" -#: awkgram.y:3761 awkgram.y:3764 +#: awkgram.y:3732 awkgram.y:3735 +msgid "match: third argument is a gawk extension" +msgstr "match: tredje argument er en gawk-udvidelse" + +#: awkgram.y:3789 awkgram.y:3792 msgid "close: second argument is a gawk extension" msgstr "close: andet argument er en gawk-udvidelse" -#: awkgram.y:3776 +#: awkgram.y:3804 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "brug af dcgettext(_\"...\") er forkert: fjern det indledende " "understregningstegn" -#: awkgram.y:3791 +#: awkgram.y:3819 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "brug af dcgettext(_\"...\") er forkert: fjern det indledende " "understregningstegn" -#: awkgram.y:3883 +#: awkgram.y:3911 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funktionen '%s': parameter %d, '%s', er samme som parameter %d" -#: awkgram.y:3925 +#: awkgram.y:3953 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funktionen '%s': parameteren '%s' overskygger en global variabel" -#: awkgram.y:4083 +#: awkgram.y:4111 #, c-format msgid "could not open `%s' for writing (%s)" -msgstr "kunne ikke Ã¥bne '%s' for skrivning (%s)" +msgstr "kunne ikke åbne '%s' for skrivning (%s)" -#: awkgram.y:4084 +#: awkgram.y:4112 msgid "sending variable list to standard error" msgstr "sender variabelliste til standard fejl" -#: awkgram.y:4090 +#: awkgram.y:4118 #, c-format msgid "%s: close failed (%s)" msgstr "%s: lukning mislykkedes (%s)" -#: awkgram.y:4142 +#: awkgram.y:4170 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() kaldt to gange!" -#: awkgram.y:4148 +#: awkgram.y:4176 msgid "there were shadowed variables." msgstr "der var skyggede variable." -#: awkgram.y:4178 +#: awkgram.y:4206 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "funktionen '%s': kan ikke bruge funktionsnavn som parameternavn" -#: awkgram.y:4182 +#: awkgram.y:4210 #, 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:4198 +#: awkgram.y:4226 #, c-format msgid "function name `%s' previously defined" msgstr "funktionsnavnet '%s' er allerede defineret" -#: awkgram.y:4366 awkgram.y:4372 +#: awkgram.y:4394 awkgram.y:4400 #, c-format msgid "function `%s' called but never defined" msgstr "funktionen '%s' kaldt, men aldrig defineret" -#: awkgram.y:4375 +#: awkgram.y:4403 #, c-format msgid "function `%s' defined but never called directly" msgstr "funktionen '%s' defineret, men aldrig kaldt direkte" -#: awkgram.y:4407 +#: awkgram.y:4435 #, 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ært udtryk for parameter %d giver en boolesk værdi" -#: awkgram.y:4516 +#: awkgram.y:4544 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -532,451 +532,455 @@ "funktionen '%s' kaldt med blanktegn mellem navnet og '(',\n" "eller brugt som en variabel eller et array" -#: awkgram.y:4763 eval.c:1964 +#: awkgram.y:4791 eval.c:2056 msgid "division by zero attempted" -msgstr "forsøgte at dividere med nul" +msgstr "forsøgte at dividere med nul" -#: awkgram.y:4772 eval.c:1980 +#: awkgram.y:4800 eval.c:2072 #, c-format msgid "division by zero attempted in `%%'" -msgstr "forsøgte at dividere med nul i '%%'" +msgstr "forsøgte at dividere med nul i '%%'" -#: builtin.c:117 +#: builtin.c:120 #, c-format msgid "%s to \"%s\" failed (%s)" msgstr "%s til '%s' mislykkedes (%s)" -#: builtin.c:118 +#: builtin.c:121 msgid "standard output" msgstr "standard ud" -#: builtin.c:132 +#: builtin.c:135 msgid "exp: received non-numeric argument" msgstr "exp: fik et ikke-numerisk argument" -#: builtin.c:138 +#: builtin.c:141 #, 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åde" -#: builtin.c:197 +#: builtin.c:200 #, 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' åbnet for læsning, ikke skrivning" -#: builtin.c:200 +#: builtin.c:203 #, 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' åbnet for læsning, ikke skrivning" -#: builtin.c:212 +#: builtin.c:215 #, 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 åben fil, datakanal eller ko-proces" -#: builtin.c:330 +#: builtin.c:333 msgid "index: received non-string first argument" -msgstr "indeks: første argument er ikke en streng" +msgstr "indeks: første argument er ikke en streng" -#: builtin.c:332 +#: builtin.c:335 msgid "index: received non-string second argument" msgstr "indeks: andet argument er ikke en streng" -#: builtin.c:454 +#: builtin.c:457 msgid "int: received non-numeric argument" msgstr "int: fik et ikke-numerisk argument" -#: builtin.c:490 +#: builtin.c:493 msgid "length: received array argument" msgstr "length: fik et array-argument" -#: builtin.c:493 +#: builtin.c:496 msgid "`length(array)' is a gawk extension" msgstr "'length(array)' er en gawk-udvidelse" -#: builtin.c:501 +#: builtin.c:504 msgid "length: received non-string argument" msgstr "length: fik et argument som ikke er en streng" -#: builtin.c:532 +#: builtin.c:535 msgid "log: received non-numeric argument" msgstr "log: fik et ikke-numerisk argument" -#: builtin.c:535 +#: builtin.c:538 #, c-format msgid "log: received negative argument %g" msgstr "log: fik et negativt argument %g" -#: builtin.c:691 builtin.c:696 +#: builtin.c:694 builtin.c:699 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:758 +#: builtin.c:762 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "feltbredde ignoreret for '%%'-angivelse" -#: builtin.c:760 +#: builtin.c:764 #, c-format msgid "precision is ignored for `%%' specifier" -msgstr "præcision ignoreret for '%%'-angivelse" +msgstr "præcision ignoreret for '%%'-angivelse" -#: builtin.c:762 +#: builtin.c:766 #, c-format msgid "field width and precision are ignored for `%%' specifier" -msgstr "feltbredde og præcision ignoreret for '%%'-angivelse" +msgstr "feltbredde og præcision ignoreret for '%%'-angivelse" -#: builtin.c:813 +#: builtin.c:817 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal: '$' tillades ikke i awk-formater" -#: builtin.c:822 +#: builtin.c:826 msgid "fatal: arg count with `$' must be > 0" -msgstr "fatal: argumentantallet med '$' skal være > 0" +msgstr "fatal: argumentantallet med '$' skal være > 0" -#: builtin.c:826 +#: builtin.c:830 #, 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ørre end antal givne argumenter" -#: builtin.c:830 +#: builtin.c:834 msgid "fatal: `$' not permitted after period in format" msgstr "fatal: '$' tillades ikke efter et punktum i formatet" -#: builtin.c:846 +#: builtin.c:850 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æcision af positionsangivet felt" -#: builtin.c:917 +#: builtin.c:921 msgid "`l' is meaningless in awk formats; ignored" -msgstr "'l' er meningsløst i awk-formater, ignoreret" +msgstr "'l' er meningsløst i awk-formater, ignoreret" -#: builtin.c:921 +#: builtin.c:925 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fatal: 'l' tillades ikke i POSIX awk-formater" -#: builtin.c:934 +#: builtin.c:938 msgid "`L' is meaningless in awk formats; ignored" -msgstr "'L' er meningsløst i awk-formater, ignoreret" +msgstr "'L' er meningsløst i awk-formater, ignoreret" -#: builtin.c:938 +#: builtin.c:942 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "fatal: 'L' tillades ikke i POSIX awk-formater" -#: builtin.c:951 +#: builtin.c:955 msgid "`h' is meaningless in awk formats; ignored" -msgstr "'h' er meningsløst i awk-formater, ignoreret" +msgstr "'h' er meningsløst i awk-formater, ignoreret" -#: builtin.c:955 +#: builtin.c:959 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fatal: 'h' tillades ikke i POSIX awk-formater" -#: builtin.c:1268 +#: builtin.c:1272 #, 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ærdi %g er uden for område for '%%%c'-format" -#: builtin.c:1328 +#: builtin.c:1332 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "ignorerer ukendt formatspecificeringstegn '%c': intet argument konverteret" -#: builtin.c:1333 +#: builtin.c:1337 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:1335 +#: builtin.c:1339 msgid "^ ran out for this one" msgstr "^ sluttede her" -#: builtin.c:1342 +#: builtin.c:1346 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: formatspecifikation har intet kommandobogstav" -#: builtin.c:1345 +#: builtin.c:1349 msgid "too many arguments supplied for format string" msgstr "for mange argumenter til formatstrengen" -#: builtin.c:1419 builtin.c:1430 +#: builtin.c:1423 builtin.c:1434 msgid "printf: no arguments" msgstr "printf: ingen argumenter" -#: builtin.c:1471 +#: builtin.c:1475 msgid "sqrt: received non-numeric argument" msgstr "sqrt: fik ikke-numerisk argument" -#: builtin.c:1475 +#: builtin.c:1479 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: kaldt med negativt argument %g" -#: builtin.c:1499 +#: builtin.c:1503 #, c-format msgid "substr: length %g is not >= 1" -msgstr "substr: længden %g er ikke >= 1" +msgstr "substr: længden %g er ikke >= 1" -#: builtin.c:1501 +#: builtin.c:1505 #, c-format msgid "substr: length %g is not >= 0" -msgstr "substr: længden %g er ikke >= 0" +msgstr "substr: længden %g er ikke >= 0" -#: builtin.c:1508 +#: builtin.c:1512 #, 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ængden %g som ikke er et heltal vil blive trunkeret" -#: builtin.c:1513 +#: builtin.c:1517 #, 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ængden %g for stor til strengindeksering, trunkerer til %g" -#: builtin.c:1525 +#: builtin.c:1529 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: startindeks %g er ugyldigt, bruger 1" -#: builtin.c:1530 +#: builtin.c:1534 #, 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:1555 +#: builtin.c:1559 msgid "substr: source string is zero length" msgstr "substr: kildestrengen er tom" -#: builtin.c:1571 +#: builtin.c:1575 #, 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:1579 +#: builtin.c:1583 #, 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ængden %g ved startindeks %g overskrider længden af første argument " "(%lu)" -#: builtin.c:1652 +#: builtin.c:1657 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" -msgstr "strftime: formatværdi i PROCINFO[\"strftime\"] har numerisk type" +msgstr "strftime: formatværdi i PROCINFO[\"strftime\"] har numerisk type" -#: builtin.c:1675 +#: builtin.c:1680 msgid "strftime: received non-numeric second argument" msgstr "strftime: fik et ikke-numerisk andet argument" -#: builtin.c:1682 +#: builtin.c:1683 +msgid "strftime: second argument less than 0 or too big for time_t" +msgstr "strftime: andet argument mindre end 0 eller for stort til time_t" + +#: builtin.c:1690 msgid "strftime: received non-string first argument" -msgstr "strftime: fik et første argument som ikke er en streng" +msgstr "strftime: fik et første argument som ikke er en streng" -#: builtin.c:1688 +#: builtin.c:1696 msgid "strftime: received empty format string" msgstr "strftime: fik en tom formatstreng" -#: builtin.c:1754 +#: builtin.c:1762 msgid "mktime: received non-string argument" msgstr "mktime: fik et argument som ikke er en streng" -#: builtin.c:1771 +#: builtin.c:1779 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 én af værdierne er udenfor standardområdet" -#: builtin.c:1806 +#: builtin.c:1814 msgid "'system' function not allowed in sandbox mode" msgstr "'system'-funktion ikke tilladt i sandkasse-tilstand" -#: builtin.c:1811 +#: builtin.c:1819 msgid "system: received non-string argument" msgstr "system: fik et argument som ikke er en streng" -#: builtin.c:1866 eval.c:1165 eval.c:1698 eval.c:1711 +#: builtin.c:1874 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:1933 +#: builtin.c:1941 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "reference til ikke-initieret felt '$%d'" -#: builtin.c:2020 +#: builtin.c:2028 msgid "tolower: received non-string argument" msgstr "tolower: fik et argument som ikke er en streng" -#: builtin.c:2054 +#: builtin.c:2062 msgid "toupper: received non-string argument" msgstr "toupper: fik et argument som ikke er en streng" -#: builtin.c:2090 +#: builtin.c:2098 msgid "atan2: received non-numeric first argument" -msgstr "atan2: fik et ikke-numerisk første argument" +msgstr "atan2: fik et ikke-numerisk første argument" -#: builtin.c:2092 +#: builtin.c:2100 msgid "atan2: received non-numeric second argument" msgstr "atan2: fik et ikke-numerisk andet argument" -#: builtin.c:2111 +#: builtin.c:2119 msgid "sin: received non-numeric argument" msgstr "sin: fik et ikke-numerisk argument" -#: builtin.c:2127 +#: builtin.c:2135 msgid "cos: received non-numeric argument" msgstr "cos: fik et ikke-numerisk argument" -#: builtin.c:2180 +#: builtin.c:2188 msgid "srand: received non-numeric argument" msgstr "srand: fik et ikke-numerisk argument" -#: builtin.c:2211 +#: builtin.c:2219 msgid "match: third argument is not an array" msgstr "match: tredje argument er ikke et array" -#: builtin.c:2718 +#: builtin.c:2483 msgid "gensub: third argument of 0 treated as 1" msgstr "gensub: 0 i tredje argument behandlet som 1" -#: builtin.c:2757 +#: builtin.c:2776 msgid "lshift: received non-numeric first argument" -msgstr "lshift: fik et ikke-numerisk første argument" +msgstr "lshift: fik et ikke-numerisk første argument" -#: builtin.c:2759 +#: builtin.c:2778 msgid "lshift: received non-numeric second argument" msgstr "lshift: fik et ikke-numerisk andet argument" -#: builtin.c:2765 +#: builtin.c:2784 #, 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ærdier vil give mærkelige resultater" -#: builtin.c:2767 +#: builtin.c:2786 #, 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ærdier vil blive trunkeret" -#: builtin.c:2769 +#: builtin.c:2788 #, 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ærdier vil give mærkelige resultater" -#: builtin.c:2794 +#: builtin.c:2813 msgid "rshift: received non-numeric first argument" -msgstr "rshift: fik et ikke-numerisk første argument" +msgstr "rshift: fik et ikke-numerisk første argument" -#: builtin.c:2796 +#: builtin.c:2815 msgid "rshift: received non-numeric second argument" msgstr "rshift: fik et ikke-numerisk andet argument" -#: builtin.c:2802 +#: builtin.c:2821 #, 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ærdier vil give mærkelige resultater" -#: builtin.c:2804 +#: builtin.c:2823 #, 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ærdier vil blive trunkeret" -#: builtin.c:2806 +#: builtin.c:2825 #, 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ærdier vil give mærkelige resultater" -#: builtin.c:2831 +#: builtin.c:2850 msgid "and: received non-numeric first argument" -msgstr "and: fik et ikke-numerisk første argument" +msgstr "and: fik et ikke-numerisk første argument" -#: builtin.c:2833 +#: builtin.c:2852 msgid "and: received non-numeric second argument" msgstr "and: fik et ikke-numerisk andet argument" -#: builtin.c:2839 +#: builtin.c:2858 #, 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ærdier vil give mærkelige resultater" -#: builtin.c:2841 +#: builtin.c:2860 #, 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ærdier vil blive trunkeret" -#: builtin.c:2866 +#: builtin.c:2885 msgid "or: received non-numeric first argument" -msgstr "or: fik et ikke-numerisk første argument" +msgstr "or: fik et ikke-numerisk første argument" -#: builtin.c:2868 +#: builtin.c:2887 msgid "or: received non-numeric second argument" msgstr "or: fik et ikke-numerisk andet argument" -#: builtin.c:2874 +#: builtin.c:2893 #, 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ærdier vil give mærkelige resultater" -#: builtin.c:2876 +#: builtin.c:2895 #, 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ærdier vil blive trunkeret" -#: builtin.c:2904 +#: builtin.c:2923 msgid "xor: received non-numeric first argument" -msgstr "xor: fik et ikke-numerisk første argument" +msgstr "xor: fik et ikke-numerisk første argument" -#: builtin.c:2906 +#: builtin.c:2925 msgid "xor: received non-numeric second argument" msgstr "xor: fik et ikke-numerisk andet argument" -#: builtin.c:2912 +#: builtin.c:2931 #, 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ærdier vil give mærkelige resultater" -#: builtin.c:2914 +#: builtin.c:2933 #, 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ærdier vil blive trunkeret" -#: builtin.c:2938 builtin.c:2944 +#: builtin.c:2957 builtin.c:2963 msgid "compl: received non-numeric argument" msgstr "compl: fik et ikke-numerisk argument" -#: builtin.c:2946 +#: builtin.c:2965 #, 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ærdier vil give mærkelige resultater" -#: builtin.c:2948 +#: builtin.c:2967 #, c-format msgid "compl(%lf): fractional value will be truncated" -msgstr "compl(%lf): kommatalsværdier vil blive trunkeret" +msgstr "compl(%lf): kommatalsværdier vil blive trunkeret" -#: builtin.c:3117 +#: builtin.c:3136 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: '%s' er ikke en gyldig lokalitetskategori" -#: eval.c:411 +#: eval.c:412 #, c-format msgid "unknown nodetype %d" msgstr "ukendt nodetype %d" -#: eval.c:422 eval.c:436 +#: eval.c:423 eval.c:437 #, c-format msgid "unknown opcode %d" msgstr "ukendt opkode %d" -#: eval.c:433 +#: eval.c:434 #, 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øgleord" -#: eval.c:487 +#: eval.c:488 msgid "buffer overflow in genflags2str" -msgstr "bufferoverløb i genflags2str" +msgstr "bufferoverløb i genflags2str" #: eval.c:698 #, c-format @@ -1000,7 +1004,7 @@ #: eval.c:812 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" -msgstr "BINMODE værdi '%s' er ugyldig, behandles som 3" +msgstr "BINMODE værdi '%s' er ugyldig, behandles som 3" #: eval.c:902 #, c-format @@ -1009,123 +1013,128 @@ #: eval.c:980 msgid "turning off `--lint' due to assignment to `LINT'" -msgstr "deaktiverer '--lint' pÃ¥ grund af en tildeling til 'LINT'" +msgstr "deaktiverer '--lint' på grund af en tildeling til 'LINT'" -#: eval.c:1127 eval.c:1685 +#: 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" -#: eval.c:1155 -msgid "assignment is not allowed to result of builtin function" -msgstr "tildeling er ikke tilladt til resultatet fra en indbygget funktion" - -#: eval.c:1164 eval.c:1697 eval.c:1710 +#: eval.c:1158 eval.c:1789 eval.c:1802 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "reference til ikke-initieret argument '%s'" -#: eval.c:1183 +#: eval.c:1177 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øg på at referere til et felt fra ikke-numerisk værdi" -#: eval.c:1185 +#: eval.c:1179 msgid "attempt to field reference from null string" -msgstr "forsøg pÃ¥ at referere til et felt fra tom streng" +msgstr "forsøg på at referere til et felt fra tom streng" -#: eval.c:1191 +#: eval.c:1185 #, c-format msgid "attempt to access field %ld" -msgstr "forsøg pÃ¥ at fÃ¥ adgang til felt %ld" +msgstr "forsøg på at få adgang til felt %ld" -#: eval.c:1200 +#: eval.c:1194 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "reference til ikke-initieret felt '$%ld'" -#: eval.c:1262 +#: eval.c:1256 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "funktionen '%s' kaldt med flere argumenter end deklareret" -#: eval.c:1426 +#: eval.c:1437 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: uventet type `%s'" -#: eval.c:1510 +#: eval.c:1532 msgid "division by zero attempted in `/='" -msgstr "forsøgte at dividere med nul i '/='" +msgstr "forsøgte at dividere med nul i '/='" -#: eval.c:1517 +#: eval.c:1539 #, c-format msgid "division by zero attempted in `%%='" -msgstr "forsøgte at dividere med nul i '%%='" +msgstr "forsøgte at dividere med nul i '%%='" -#: eval.c:1784 eval.c:2030 +#: 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" +msgstr "forsøg på at bruge array '%s[\"%.*s\"]' i skalarsammenhæng" -#: eval.c:1815 +#: eval.c:1907 msgid "assignment used in conditional context" -msgstr "tildeling brugt i sammenligningsammenhæng" +msgstr "tildeling brugt i sammenligningsammenhæng" -#: eval.c:1819 +#: eval.c:1911 msgid "statement has no effect" msgstr "kommandoen har ingen effekt" -#: eval.c:2233 +#: 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" +"for-løkke: array '%s' ændrede størrelse fra %ld til %ld under udførelse af " +"løkken" -#: eval.c:2343 +#: eval.c:2458 #, c-format msgid "function called indirectly through `%s' does not exist" msgstr "funktion kaldt indirekte via '%s' eksisterer ikke" -#: eval.c:2355 +#: eval.c:2470 #, c-format msgid "function `%s' not defined" msgstr "funktionen '%s' er ikke defineret" -#: eval.c:2416 +#: eval.c:2511 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "ikke-omdirigeret 'getline' ugyldig inden i '%s'-regel" -#: eval.c:2477 +#: 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" -#: eval.c:2532 +#: eval.c:2661 +msgid "`exit' cannot be called in the current context" +msgstr "'exit' kan ikke kaldes i den aktuelle kontekst" + +#: eval.c:2700 #, c-format msgid "`next' cannot be called from a `%s' rule" msgstr "'next' kan ikke kaldes fra en '%s'-regel" -#: eval.c:2599 +#: eval.c:2766 #, c-format msgid "Sorry, don't know how to interpret `%s'" -msgstr "Véd desværre ikke hvordan '%s' skal fortolkes" +msgstr "Véd desværre ikke hvordan '%s' skal fortolkes" -#: ext.c:64 +#: ext.c:54 msgid "extensions are not allowed in sandbox mode" msgstr "udvidelser er ikke tilladt i sandkasse-tilstand" -#: ext.c:70 ext.c:75 +#: ext.c:60 ext.c:65 msgid "`extension' is a gawk extension" msgstr "'extension' er en gawk-udvidelse" -#: ext.c:85 +#: ext.c:75 #, c-format msgid "fatal: extension: cannot open `%s' (%s)\n" -msgstr "atalt: extension: kan ikke Ã¥bne '%s' (%s)\n" +msgstr "atalt: extension: kan ikke åbne '%s' (%s)\n" -#: ext.c:94 +#: ext.c:84 #, c-format msgid "" "fatal: extension: library `%s': does not define " @@ -1134,267 +1143,262 @@ "fatalt: extension: bibliotek '%s': definer ikke " "'plugin_is_GPL_compatible' (%s)\n" -#: ext.c:103 +#: ext.c:93 #, c-format msgid "fatal: 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:127 msgid "extension: missing function name" msgstr "extension: mangler funktionsnavn" -#: ext.c:142 +#: ext.c:132 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: ugyldigt tegn '%c' i funktionsnavn '%s'" -#: ext.c:151 +#: ext.c:141 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: kan ikke omdefinere funktion '%s'" -#: ext.c:155 +#: ext.c:145 #, c-format msgid "extension: function `%s' already defined" msgstr "extension: funktionen '%s' er allerede defineret" -#: ext.c:160 +#: ext.c:150 #, c-format msgid "extension: function name `%s' previously defined" msgstr "extension: funktionsnavnet '%s' er defineret tidligere" -#: ext.c:162 +#: ext.c:152 #, 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:156 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: negativt argumentantal for funktion '%s'" -#: ext.c:269 +#: ext.c:259 #, 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:262 #, c-format msgid "function `%s': missing argument #%d" msgstr "funktion '%s': mangler argument nummer %d" -#: ext.c:289 +#: ext.c:279 #, 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øg på at bruge skalar som et array" -#: ext.c:293 +#: ext.c:283 #, 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øg på at bruge array som en skalar" -#: ext.c:306 +#: ext.c:296 msgid "Operation Not Supported" -msgstr "Operationen understøttes ikke" +msgstr "Operationen understøttes ikke" #: field.c:328 msgid "NF set to negative value" -msgstr "NF sat til en negativ værdi" +msgstr "NF sat til en negativ værdi" -#: field.c:950 field.c:957 field.c:961 +#: field.c:951 field.c:958 field.c:962 msgid "split: fourth argument is a gawk extension" msgstr "split: fjerde argument er en gawk-udvidelse" -#: field.c:954 +#: field.c:955 msgid "split: fourth argument is not an array" msgstr "split: fjerde argument er ikke et array" -#: field.c:968 +#: field.c:969 msgid "split: second argument is not an array" msgstr "split: andet argument er ikke et array" -#: field.c:972 +#: field.c:973 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:977 +#: field.c:978 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:980 +#: field.c:981 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:1009 +#: field.c:1010 msgid "split: null string for third arg is a gawk extension" msgstr "split: tom streng som tredje argument er en gawk-udvidelse" -#: field.c:1049 +#: field.c:1050 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: fjerde argument er ikke et array" -#: field.c:1054 +#: field.c:1055 msgid "patsplit: second argument is not an array" msgstr "patsplit: andet argument er ikke et array" -#: field.c:1060 +#: field.c:1061 msgid "patsplit: third argument must be non-null" msgstr "patmatch: tredje argument er ikke et array" -#: field.c:1064 +#: field.c:1065 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:1069 +#: field.c:1070 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:1072 +#: field.c:1073 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:1109 +#: field.c:1110 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "'FIELDWIDTHS' er en gawk-udvidelse" -#: field.c:1172 +#: field.c:1173 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" -msgstr "ugyldig FIELDWIDTHS værdi, nær '%s" +msgstr "ugyldig FIELDWIDTHS værdi, nær '%s" -#: field.c:1245 +#: field.c:1246 msgid "null string for `FS' is a gawk extension" msgstr "tom streng som 'FS' er en gawk-udvidelse" -#: field.c:1249 +#: field.c:1250 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øtter ikke regexp'er som værdi for 'FS'" -#: field.c:1368 +#: field.c:1369 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æver 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æver 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æver et argument\n" -#: io.c:282 +#: io.c:280 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "kommandolinjeargument '%s' er et katalog, oversprunget" -#: io.c:285 io.c:384 +#: io.c:283 io.c:385 #, c-format msgid "cannot open file `%s' for reading (%s)" -msgstr "kan ikke Ã¥bne filen '%s' for læsning (%s)" - -#: io.c:431 -#, c-format -msgid "error reading input file `%s': %s" -msgstr "fejl ved læsning af inddatafilen '%s': %s" +msgstr "kan ikke åbne filen '%s' for læsning (%s)" -#: io.c:500 +#: io.c:501 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "lukning af fd %d ('%s') mislykkedes (%s)" -#: io.c:577 +#: io.c:578 msgid "redirection not allowed in sandbox mode" msgstr "omdirigering ikke tilladt i sandkasse-tilstand" -#: io.c:611 +#: io.c:612 #, 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ærdi" -#: io.c:617 +#: io.c:618 #, 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ærdi" #: io.c:623 #, 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ære resultatet af et logisk udtryk" #: io.c:666 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" -msgstr "unødig blanding af '>' og '>>' for filen '%.*s'" +msgstr "unødig blanding af '>' og '>>' for filen '%.*s'" #: io.c:719 #, c-format msgid "can't open pipe `%s' for output (%s)" -msgstr "kan ikke Ã¥bne datakanalen '%s' for udskrivning (%s)" +msgstr "kan ikke åbne datakanalen '%s' for udskrivning (%s)" #: io.c:729 #, c-format msgid "can't open pipe `%s' for input (%s)" -msgstr "kan ikke Ã¥bne datakanalen '%s' for indtastning (%s)" +msgstr "kan ikke åbne datakanalen '%s' for indtastning (%s)" #: io.c:752 #, 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 åbne tovejsdatakanalen '%s' for ind-/uddata (%s)" #: io.c:834 #, c-format @@ -1410,7 +1414,7 @@ msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" -"nÃ¥ede systembegrænsningen for Ã¥bne filer: begynder at multiplekse " +"nåede systembegrænsningen for åbne filer: begynder at multiplekse " "fildeskriptorer" #: io.c:904 @@ -1420,26 +1424,26 @@ #: io.c:912 msgid "too many pipes or input files open" -msgstr "for mange datakanaler eller inddatafiler Ã¥bne" +msgstr "for mange datakanaler eller inddatafiler åbne" #: io.c:934 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ære 'to' eller 'from'" #: io.c:951 #, 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 åben fil, datakanal eller ko-proces" #: io.c:956 msgid "close of redirection that was never opened" -msgstr "lukning af omdirigering som aldrig blev Ã¥bnet" +msgstr "lukning af omdirigering som aldrig blev åbnet" #: io.c:1053 #, 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 åbnet med '|&', andet argument ignoreret" #: io.c:1069 #, c-format @@ -1471,7 +1475,7 @@ msgid "no explicit close of file `%s' provided" msgstr "ingen eksplicit lukning af filen '%s' angivet" -#: io.c:1129 io.c:1184 main.c:795 main.c:832 +#: io.c:1129 io.c:1184 main.c:794 main.c:831 #, c-format msgid "error writing standard output (%s)" msgstr "fejl ved skrivning til standard ud (%s)" @@ -1504,7 +1508,7 @@ #: io.c:1279 #, c-format msgid "remote host and port information (%s, %s) invalid" -msgstr "fjernvært og portinformation (%s, %s) ugyldige" +msgstr "fjernvært og portinformation (%s, %s) ugyldige" #: io.c:1431 #, c-format @@ -1514,7 +1518,7 @@ #: io.c:1445 #, c-format msgid "special file name `%s' is incomplete" -msgstr "special-filnavn '%s' er ufuldstændigt" +msgstr "special-filnavn '%s' er ufuldstændigt" #: io.c:1462 msgid "must supply a remote hostname to `/inet'" @@ -1526,100 +1530,100 @@ #: io.c:1526 msgid "TCP/IP communications are not supported" -msgstr "TCP/IP-kommunikation understøttes ikke" +msgstr "TCP/IP-kommunikation understøttes ikke" #: io.c:1693 #, c-format msgid "could not open `%s', mode `%s'" -msgstr "kunne ikke Ã¥bne '%s', tilstand '%s'" +msgstr "kunne ikke åbne '%s', tilstand '%s'" -#: io.c:1744 +#: io.c:1747 #, c-format msgid "close of master pty failed (%s)" msgstr "lukning af master-pty mislykkedes (%s)" -#: io.c:1746 io.c:1914 io.c:2071 +#: io.c:1749 io.c:1917 io.c:2074 #, c-format msgid "close of stdout in child failed (%s)" msgstr "lukning af standard ud i underproces mislykkedes (%s)" -#: io.c:1749 +#: io.c:1752 #, 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:1751 io.c:1919 +#: io.c:1754 io.c:1922 #, c-format msgid "close of stdin in child failed (%s)" msgstr "lukning af standard ind i underproces mislykkedes (%s)" -#: io.c:1754 +#: io.c:1757 #, 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:1756 io.c:1777 +#: io.c:1759 io.c:1780 #, c-format msgid "close of slave pty failed (%s)" msgstr "lukning af slave-pty mislykkedes (%s)" -#: io.c:1855 io.c:1917 io.c:2049 io.c:2074 +#: io.c:1858 io.c:1920 io.c:2052 io.c:2077 #, 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:1862 io.c:1922 +#: io.c:1865 io.c:1925 #, 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:1882 io.c:2064 +#: io.c:1885 io.c:2067 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ælderprocessen mislykkedes\n" -#: io.c:1890 +#: io.c:1893 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ælderprocessen mislykkedes\n" -#: io.c:1925 io.c:2076 io.c:2090 +#: io.c:1928 io.c:2079 io.c:2093 #, c-format msgid "close of pipe failed (%s)" msgstr "lukning af datakanalen mislykkedes (%s)" -#: io.c:1970 +#: io.c:1973 msgid "`|&' not supported" -msgstr "'|&' understøttes ikke" +msgstr "'|&' understøttes ikke" -#: io.c:2036 +#: io.c:2039 #, c-format msgid "cannot open pipe `%s' (%s)" -msgstr "kan ikke Ã¥bne datakanalen '%s' (%s)" +msgstr "kan ikke åbne datakanalen '%s' (%s)" -#: io.c:2084 +#: io.c:2087 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "kan ikke oprette barneproces for '%s' (fork: %s)" -#: io.c:2517 +#: io.c:2520 #, c-format msgid "data file `%s' is empty" msgstr "datafilen '%s' er tom" -#: io.c:2558 io.c:2566 +#: io.c:2561 io.c:2569 msgid "could not allocate more input memory" msgstr "kunne ikke allokere mere hukommelse til inddata" -#: io.c:3119 +#: io.c:3127 msgid "multicharacter value of `RS' is a gawk extension" -msgstr "'RS' som flertegnsværdi er en gawk-udvidelse" +msgstr "'RS' som flertegnsværdi er en gawk-udvidelse" -#: io.c:3224 +#: io.c:3232 msgid "IPv6 communication is not supported" -msgstr "IPv6-kommunikation understøttes ikke" +msgstr "IPv6-kommunikation understøttes ikke" #: main.c:366 msgid "`-m[fr]' option irrelevant in gawk" @@ -1641,159 +1645,159 @@ #: main.c:515 #, c-format msgid "%s: option requires an argument -- %c\n" -msgstr "%s: flaget kræver et argument -- %c\n" +msgstr "%s: flaget kræver et argument -- %c\n" #: main.c:536 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" -msgstr "miljøvariablen 'POSIXLY_CORRECT' sat: aktiverer '--posix'" +msgstr "miljøvariablen 'POSIXLY_CORRECT' sat: aktiverer '--posix'" #: main.c:542 msgid "`--posix' overrides `--traditional'" -msgstr "'--posix' tilsidesætter '--traditional'" +msgstr "'--posix' tilsidesætter '--traditional'" #: main.c:553 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" -msgstr "'--posix'/'--traditional' tilsidesætter '--non-decimal-data'" +msgstr "'--posix'/'--traditional' tilsidesætter '--non-decimal-data'" #: main.c:557 #, 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øre %s setuid root kan være et sikkerhedsproblem" #: main.c:562 msgid "`--posix' overrides `--binary'" -msgstr "'--posix' tilsidesætter '--binary'" +msgstr "'--posix' tilsidesætter '--binary'" #: main.c:613 #, 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ætte binær tilstand på standard ind (%s)" #: main.c:616 #, 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ætte binær tilstand på standard ud (%s)" #: main.c:618 #, 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ætte binær tilstand på standard fejl (%s)" #: main.c:657 msgid "no program text at all!" msgstr "ingen programtekst overhovedet!" -#: main.c:735 +#: main.c:734 #, 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:737 +#: main.c:736 #, 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:742 +#: main.c:741 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX-flag:\t\tlange GNU-flag: (standard)\n" -#: main.c:743 +#: main.c:742 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f progfil\t\t--file=progfil\n" -#: main.c:744 +#: main.c:743 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:745 +#: main.c:744 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ærdi\t\t--assign=var=værdi\n" -#: main.c:746 +#: main.c:745 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "POSIX-flag:\t\tlange GNU-flag: (udvidelser)\n" -#: main.c:747 +#: main.c:746 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:748 +#: main.c:747 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:749 +#: main.c:748 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:750 +#: main.c:749 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[fil]\t\t--dump-variables[=fil]\n" -#: main.c:751 +#: main.c:750 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'programtekst'\t--source='programtekst'\n" -#: main.c:752 +#: main.c:751 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E fil\t\t\t--exec=fil\n" -#: main.c:753 +#: main.c:752 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:754 +#: main.c:753 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:755 +#: main.c:754 msgid "\t-L [fatal]\t\t--lint[=fatal]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: main.c:756 +#: main.c:755 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:757 +#: main.c:756 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:758 +#: main.c:757 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:759 +#: main.c:758 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[fil]\t\t--profile[=fil]\n" -#: main.c:760 +#: main.c:759 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:761 +#: main.c:760 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:763 +#: main.c:762 msgid "\t-R file\t\t\t--command=file\n" msgstr "\t-R file\t\t\t--command=fil\n" -#: main.c:764 +#: main.c:763 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:765 +#: main.c:764 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:766 +#: main.c:765 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:768 +#: main.c:767 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:771 +#: main.c:770 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -1802,7 +1806,7 @@ #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:780 +#: main.c:779 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -1813,19 +1817,19 @@ "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 .\n" +"Rapportér kommentarer til oversættelsen til .\n" -#: main.c:784 +#: main.c:783 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ønster-genkendelse og -behandling.\n" +"Almindeligvis læser gawk fra standard ind og skriver til standard ud.\n" "\n" -#: main.c:788 +#: main.c:787 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -1835,7 +1839,7 @@ "\tgawk '{ sum += $1 }; END { print sum }' fil\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:808 +#: main.c:807 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -1846,16 +1850,16 @@ "(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" +"ændre 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:816 +#: main.c:815 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,88 +1867,83 @@ "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 FORMÃ…L. Se GNU\n" +"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 FORMÅL. Se GNU\n" "General Public License for yderligere information.\n" "\n" -#: main.c:822 +#: main.c:821 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ø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" -#: main.c:857 +#: main.c:856 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ætter ikke FS til tab i POSIX-awk" -#: main.c:1091 +#: main.c:1090 #, c-format msgid "unknown value for field spec: %d\n" -msgstr "ukendt værdi for felt-spec: %d\n" +msgstr "ukendt værdi for felt-spec: %d\n" -#: main.c:1152 +#: main.c:1171 #, 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ærdi'\n" "\n" -#: main.c:1178 +#: main.c:1197 #, c-format msgid "`%s' is not a legal variable name" msgstr "'%s' er ikke et gyldigt variabelnavn" -#: main.c:1181 +#: main.c:1200 #, 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:1185 -#, fuzzy, c-format +#: main.c:1204 +#, 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:1190 -#, fuzzy, c-format +#: main.c:1209 +#, 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:1243 +#: main.c:1262 msgid "floating point exception" msgstr "flydendetalsundtagelse" -#: main.c:1250 +#: main.c:1269 msgid "fatal error: internal error" msgstr "fatal fejl: intern fejl" -#: main.c:1265 +#: main.c:1284 msgid "fatal error: internal error: segfault" msgstr "fatal fejl: intern fejl: segmentfejl" -#: main.c:1277 +#: main.c:1296 msgid "fatal error: internal error: stack overflow" -msgstr "fatal fejl: intern fejl: stakoverløb" +msgstr "fatal fejl: intern fejl: stakoverløb" -#: main.c:1327 +#: main.c:1346 #, c-format msgid "no pre-opened fd %d" -msgstr "ingen fd %d Ã¥bnet i forvejen" +msgstr "ingen fd %d åbnet i forvejen" -#: main.c:1334 +#: main.c:1353 #, c-format msgid "could not pre-open /dev/null for fd %d" -msgstr "kunne ikke i forvejen Ã¥bne /dev/null for fd %d" - -#: main.c:1357 main.c:1366 -#, c-format -msgid "could not find groups: %s" -msgstr "kunne ikke finde grupper: %s" +msgstr "kunne ikke i forvejen åbne /dev/null for fd %d" #: msg.c:63 #, c-format @@ -1957,12 +1956,12 @@ #: node.c:406 msgid "backslash at end of string" -msgstr "omvendt skrÃ¥streg i slutningen af strengen" +msgstr "omvendt skråstreg i slutningen af strengen" #: node.c:517 #, 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øtter ikke '\\%c' undvigesekvens" #: node.c:568 msgid "POSIX does not allow `\\x' escapes" @@ -1978,7 +1977,7 @@ "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ået som du " "forventer det" #: node.c:611 @@ -1991,23 +1990,23 @@ "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åske 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ætte luk-ved-exec (fcntl F_SETFD: %s)" #: profile.c:83 #, c-format msgid "could not open `%s' for writing: %s" -msgstr "kunne ikke Ã¥bne '%s' for skrivning: %s" +msgstr "kunne ikke åbne '%s' for skrivning: %s" #: profile.c:85 msgid "sending profile to standard error" @@ -2036,12 +2035,12 @@ msgid "internal error: %s with null vname" msgstr "intern fejl: %s med null vname" -#: profile.c:938 +#: profile.c:952 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# profil til gawk oprettet %s\n" -#: profile.c:1317 +#: profile.c:1331 #, c-format msgid "" "\n" @@ -2050,113 +2049,119 @@ "\n" "\t# Funktioner, listede alfabetisk\n" -#: profile.c:1356 +#: profile.c:1370 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: uykendt omdirigeringstype %d" -#: re.c:572 +#: re.c:573 #, c-format -msgid "range of the form `[%c-%c]' is locale dependant" -msgstr "omrÃ¥de pÃ¥ formen `[%c-%c]' er locale-afhængig" +msgid "range of the form `[%c-%c]' is locale dependent" +msgstr "område på formen `[%c-%c]' er locale-afhængig" -#: re.c:599 +#: re.c:600 #, 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ære `[%.*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ært 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ølgende omvendt skråstreg" -#: 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ående regulært 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ært udtryk" -#: regcomp.c:177 +#: regcomp.c:176 msgid "Regular expression too big" -msgstr "Regulært udtryk for stort" +msgstr "Regulært 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ående regulært udtryk" + +#~ 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øg på at bruge array i skalarsammenhæng" #~ msgid "statement may have no effect" -#~ msgstr "kommandoen har mÃ¥ske ikke nogen effekt" +#~ msgstr "kommandoen har måske 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øg 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øg på at bruge array '%s' i skalarsammenhæng" #~ 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ældet ifølge POSIX" #~ msgid "division by zero attempted in `/'" -#~ msgstr "forsøgte at dividere med nul i '/'" +#~ msgstr "forsøgte 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" @@ -2165,10 +2170,10 @@ #~ 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økke 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økke er ikke portabelt" #~ msgid "`next' cannot be called from a BEGIN rule" #~ msgstr "'next' kan ikke kaldes fra en BEGIN-regel" @@ -2180,7 +2185,7 @@ #~ "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 ændret længden af et andet!" #~ msgid "illegal type (%s) in tree_eval" #~ msgstr "ugyldig type (%s) i tree_eval" @@ -2189,16 +2194,16 @@ #~ msgstr "\t# -- main --\n" #~ msgid "invalid tree type %s in redirect()" -#~ msgstr "ugyldig trætype %s i redirect()" +#~ msgstr "ugyldig trætype %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ærre 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ærre ikke klar endnu" #~ msgid "file `%s' is a directory" #~ msgstr "filen '%s' er et katalog" @@ -2210,7 +2215,7 @@ #~ 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ærdi\n" #~ msgid "\t-W compat\t\t--compat\n" #~ msgstr "\t-W compat\t\t--compat\n" @@ -2228,7 +2233,7 @@ #~ 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æst udvidelsesfunktion" #~ msgid "" #~ "\t# BEGIN block(s)\n" diff -urN gawk-4.0.0/po/de.po gawk-4.0.1/po/de.po --- gawk-4.0.0/po/de.po 2011-06-23 09:46:20.000000000 +0300 +++ gawk-4.0.1/po/de.po 2012-03-28 22:03:46.000000000 +0200 @@ -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 , 2011 +# Philipp Thomas , 2011 2012 # 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-06-23 09:46+0300\n" -"PO-Revision-Date: 2011-05-18 14:43+0200\n" +"POT-Creation-Date: 2012-03-28 22:03+0200\n" +"PO-Revision-Date: 2012-01-30 16:21+0100\n" "Last-Translator: Philipp Thomas \n" "Language-Team: German \n" "Language: de\n" @@ -34,16 +34,16 @@ #: array.c:254 #, c-format msgid "attempt to use scalar parameter `%s' as an array" -msgstr "Es wird versucht, den skalaren Parameter »%s« als Feld zu benutzen" +msgstr "Es wird versucht, den skalaren Parameter »%s« als Feld zu verwenden" #: array.c:257 #, 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:81 builtin.c:1381 builtin.c:1423 -#: builtin.c:1436 builtin.c:1851 builtin.c:1863 eval.c:1135 eval.c:1139 -#: eval.c:1473 eval.c:1720 +#: array.c:302 array.c:707 builtin.c:84 builtin.c:1385 builtin.c:1427 +#: builtin.c:1440 builtin.c:1859 builtin.c:1871 eval.c:1135 eval.c:1139 +#: eval.c:1495 eval.c:1812 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "Es wird versucht, das Feld »%s« in einem Skalarkontext zu verwenden" @@ -51,7 +51,7 @@ #: array.c:513 #, c-format msgid "reference to uninitialized element `%s[\"%.*s\"]'" -msgstr "Bezug auf ein nicht-initialisiertes Element »%s[\"%.*s\"]«" +msgstr "Bezug auf ein nicht initialisiertes Element »%s[\"%.*s\"]«" #: array.c:519 #, c-format @@ -63,7 +63,7 @@ msgid "delete: index `%s' not in array `%s'" msgstr "delete: Index »%s« ist in Feld »%s« nicht vorhanden" -#: array.c:734 eval.c:1773 +#: array.c:734 eval.c:1865 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "Es wird versucht, den Skalar »%s[\"%.*s\"]« als Feld zu verwenden" @@ -81,7 +81,7 @@ #: array.c:919 #, c-format msgid "%s: table_size = %d, array_size = %d\n" -msgstr "%s: Table_size = %d, array_size = %d\n" +msgstr "%s: Tabellengröße = %d, Feldgröße = %d\n" #: array.c:954 #, c-format @@ -111,7 +111,7 @@ #: array.c:1095 msgid "asorti: first argument not an array" -msgstr "asort: Das erste Argument ist kein Feld" +msgstr "asorti: Das erste Argument ist kein Feld" #: array.c:1102 msgid "asort: cannot use a subarray of first arg for second arg" @@ -137,12 +137,12 @@ "asorti: ein untergeordnetes Feld des zweiten Arguments kann nicht als erstes " "Argument verwendet werden" -#: array.c:1659 +#: array.c:1655 #, c-format msgid "`%s' is invalid as a function name" -msgstr "»%s« ist ein unzuässiger Funktionsname" +msgstr "»%s« ist ein unzulässiger Funktionsname" -#: array.c:1663 +#: array.c:1659 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "Die Vergleichsfunktion »%s« für das Sortieren ist nicht definiert" @@ -154,11 +154,11 @@ #: awkgram.y:252 msgid "each rule must have a pattern or an action part" -msgstr "jede Regel muss entweder ein Muster oder einen Aktionsteil haben" +msgstr "Jede Regel muss entweder ein Muster oder einen Aktionsteil haben" #: awkgram.y:323 awkgram.y:334 msgid "old awk does not support multiple `BEGIN' or `END' rules" -msgstr "Das alte awk erlaubt keine mehrfachen »BEGIN« oder »END« Regeln" +msgstr "Das alte awk erlaubt keine mehrfachen »BEGIN«- oder »END«-Regeln" #: awkgram.y:371 #, c-format @@ -168,611 +168,609 @@ #: awkgram.y:432 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "" -"Der Konstante reguläre Ausdruck »//« sieht wie ein C-Kommentar aus, ist aber " -"keiner" +"Die Regulärer-Ausdruck-Konstante »//« sieht wie ein C-Kommentar aus, ist " +"aber keiner" #: awkgram.y:436 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "" -"Der reguläre Ausdruckskonstante »/%s/« sieht wie ein C-Kommentar aus, ist " +"Die Regulärer-Ausdruck-Konstante »/%s/« sieht wie ein C-Kommentar aus, ist " "aber keiner" #: awkgram.y:528 #, c-format msgid "duplicate case values in switch body: %s" -msgstr "doppelte Case-Werte im Switch-Rumpf: %s" +msgstr "doppelte Case-Werte im Switch-Block: %s" #: awkgram.y:549 msgid "duplicate `default' detected in switch body" -msgstr "doppeltes »default« im Switch-Rumpf gerfunden" +msgstr "doppeltes »default« im Switch-Block gefunden" -#: awkgram.y:811 +#: awkgram.y:809 msgid "`break' is not allowed outside a loop or switch" msgstr "" -"»break« außerhalb einer Schleife oder eines Switches ist nicht zulässig" +"»break« ist außerhalb einer Schleife oder eines Switch-Blocks nicht zulässig" -#: awkgram.y:820 +#: awkgram.y:818 msgid "`continue' is not allowed outside a loop" -msgstr "»continue« außerhalb einer Schleife ist nicht zulässig" +msgstr "»continue« ist außerhalb einer Schleife nicht zulässig" -#: awkgram.y:830 +#: awkgram.y:828 #, c-format msgid "`next' used in %s action" -msgstr "»next« wird in %s--Aktion benutzt" +msgstr "»next« wird in %s-Aktion verwendet" -#: awkgram.y:838 +#: awkgram.y:836 msgid "`nextfile' is a gawk extension" msgstr "»nextfile« ist eine gawk-Erweiterung" -#: awkgram.y:843 +#: awkgram.y:841 #, c-format msgid "`nextfile' used in %s action" -msgstr "»nextfile« wird in %s-Aktion benutzt" +msgstr "»nextfile« wird in %s-Aktion verwendet" -#: awkgram.y:867 +#: awkgram.y:865 msgid "`return' used outside function context" -msgstr "»return« wird außerhalb einer Funktion benutzt" +msgstr "»return« wird außerhalb einer Funktion verwendet" -#: awkgram.y:927 +#: awkgram.y:925 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:997 awkgram.y:1001 awkgram.y:1025 +#: awkgram.y:995 awkgram.y:999 awkgram.y:1023 msgid "`delete array' is a gawk extension" msgstr "»delete array« ist eine gawk-Erweiterung" -#: awkgram.y:1021 +#: awkgram.y:1019 msgid "`delete(array)' is a non-portable tawk extension" msgstr "»delete(array)« ist eine gawk-Erweiterung" -#: awkgram.y:1137 +#: awkgram.y:1135 msgid "multistage two-way pipelines don't work" msgstr "mehrstufige Zweiwege-Pipes funktionieren nicht" -#: awkgram.y:1240 +#: awkgram.y:1238 msgid "regular expression on right of assignment" msgstr "Regulärer Ausdruck auf der rechten Seite einer Zuweisung" -#: awkgram.y:1251 +#: awkgram.y:1249 msgid "regular expression on left of `~' or `!~' operator" msgstr "Regulärer Ausdruck links vom »~«- oder »!~«-Operator" -#: awkgram.y:1267 awkgram.y:1421 +#: awkgram.y:1265 awkgram.y:1419 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:1277 +#: awkgram.y:1275 msgid "regular expression on right of comparison" msgstr "Regulärer Ausdruck rechts von einem Vergleich" -#: awkgram.y:1396 +#: awkgram.y:1394 #, c-format msgid "`getline var' invalid inside `%s' rule" msgstr "»getline var« ist ungültig innerhalb der »%s«-Regel" -#: awkgram.y:1399 eval.c:2409 +#: awkgram.y:1397 eval.c:2504 #, c-format msgid "`getline' invalid inside `%s' rule" msgstr "»getline« ist ungültig innerhalb der »%s«-Regel" -#: awkgram.y:1404 +#: awkgram.y:1402 msgid "non-redirected `getline' undefined inside END action" msgstr "" "Nicht-umgelenktes »getline« ist innerhalb der END-Aktion nicht definiert" -#: awkgram.y:1423 +#: awkgram.y:1421 msgid "old awk does not support multidimensional arrays" msgstr "Das alte awk unterstützt keine mehrdimensionalen Felder" -#: awkgram.y:1519 +#: awkgram.y:1517 msgid "call of `length' without parentheses is not portable" msgstr "Aufruf von »length« ohne Klammern ist nicht portabel" -#: awkgram.y:1582 +#: awkgram.y:1580 msgid "indirect function calls are a gawk extension" msgstr "indirekte Funktionsaufrufe sind eine gawk-Erweiterung" -#: awkgram.y:1595 +#: awkgram.y:1593 #, 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:1673 +#: awkgram.y:1671 msgid "invalid subscript expression" msgstr "Ungültiger Index-Ausdruck" -#: awkgram.y:1713 +#: awkgram.y:1711 msgid "use of non-array as array" msgstr "Verwendung eines Nicht-Feldes als Feld" -#: awkgram.y:1977 awkgram.y:1997 msg.c:98 +#: awkgram.y:1975 awkgram.y:1995 msg.c:98 msgid "warning: " msgstr "Warnung: " -#: awkgram.y:1995 msg.c:130 +#: awkgram.y:1993 msg.c:130 msgid "fatal: " msgstr "Fatal: " -#: awkgram.y:2045 +#: awkgram.y:2043 msgid "unexpected newline or end of string" msgstr "Unerwarteter Zeilenumbruch oder Ende der Zeichenkette" -#: awkgram.y:2301 awkgram.y:2359 awkgram.y:2543 +#: awkgram.y:2300 awkgram.y:2358 awkgram.y:2542 #, 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:2302 awkgram.y:2360 builtin.c:119 +#: awkgram.y:2301 awkgram.y:2359 builtin.c:122 msgid "reason unknown" msgstr "Unbekannte Ursache" -#: awkgram.y:2318 +#: awkgram.y:2317 #, c-format msgid "already included source file `%s'" msgstr "Quelldatei »%s« wurde bereits eingebunden" -#: awkgram.y:2344 +#: awkgram.y:2343 msgid "@include is a gawk extension" msgstr "»@include« ist eine gawk-Erweiterung" -#: awkgram.y:2350 +#: awkgram.y:2349 msgid "empty filename after @include" msgstr "leerer Dateiname nach @include" -#: awkgram.y:2495 +#: awkgram.y:2494 msgid "empty program text on command line" msgstr "Kein Programmtext auf der Kommandozeile" -#: awkgram.y:2610 +#: awkgram.y:2609 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "Die Quelldatei »%s« kann nicht gelesen werden (%s)" -#: awkgram.y:2621 +#: awkgram.y:2620 #, c-format msgid "source file `%s' is empty" msgstr "Die Quelldatei »%s« ist leer" -#: awkgram.y:2806 +#: awkgram.y:2797 msgid "source file does not end in newline" msgstr "Die Quelldatei hört nicht mit einem Zeilenende auf" -#: awkgram.y:2883 +#: awkgram.y:2900 msgid "unterminated regexp ends with `\\' at end of file" msgstr "" -"Nicht-beendeter Regulärer Ausdruck (hört mit '\\' auf) am Ende der Datei" +"Nicht beendeter regulärer Ausdruck (hört mit '\\' auf) am Ende der Datei" -#: awkgram.y:2907 +#: awkgram.y:2924 #, 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 " +"%s: %d: der tawk-Modifizierer für reguläre Ausdrücke »/.../%c« funktioniert " "nicht in gawk" -#: awkgram.y:2911 +#: awkgram.y:2928 #, 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 " +"Der tawk-Modifizierer für reguläre Ausdrücke »/.../%c« funktioniert nicht in " "gawk" -#: awkgram.y:2918 +#: awkgram.y:2935 msgid "unterminated regexp" -msgstr "Nicht-beendeter Regulärer Ausdruck" +msgstr "Nicht beendeter regulärer Ausdruck" -#: awkgram.y:2922 +#: awkgram.y:2939 msgid "unterminated regexp at end of file" -msgstr "Nicht-beendeter Regulärer Ausdruck am Dateiende" +msgstr "Nicht beendeter regulärer Ausdruck am Dateiende" -#: awkgram.y:2981 +#: awkgram.y:2998 msgid "use of `\\ #...' line continuation is not portable" msgstr "" "Die Verwendung von »\\#...« zur Fortsetzung von Zeilen ist nicht portabel" -#: awkgram.y:2997 +#: awkgram.y:3014 msgid "backslash not last character on line" msgstr "das letzte Zeichen auf der Zeile ist kein Backslash (»\\«)" -#: awkgram.y:3058 +#: awkgram.y:3075 msgid "POSIX does not allow operator `**='" msgstr "POSIX erlaubt den Operator »**=« nicht" -#: awkgram.y:3060 +#: awkgram.y:3077 msgid "old awk does not support operator `**='" -msgstr "Das alte awk erlaubt den Operator »**=« nicht" +msgstr "Das alte awk unterstützt den Operator »**=« nicht" -#: awkgram.y:3069 +#: awkgram.y:3086 msgid "POSIX does not allow operator `**'" msgstr "POSIX erlaubt den Operator »**« nicht" -#: awkgram.y:3071 +#: awkgram.y:3088 msgid "old awk does not support operator `**'" -msgstr "Das alte awk erlaubt den Operator »**« nicht" +msgstr "Das alte awk unterstützt den Operator »**« nicht" -#: awkgram.y:3106 +#: awkgram.y:3123 msgid "operator `^=' is not supported in old awk" -msgstr "Das alte awk kennt den Operator »^=« nicht" +msgstr "Das alte awk unterstützt den Operator »^=« nicht" -#: awkgram.y:3114 +#: awkgram.y:3131 msgid "operator `^' is not supported in old awk" -msgstr "Das alte awk kennt den Operator »^« nicht" +msgstr "Das alte awk unterstützt den Operator »^« nicht" -#: awkgram.y:3207 awkgram.y:3223 +#: awkgram.y:3224 awkgram.y:3240 msgid "unterminated string" -msgstr "Nicht-beendete Zeichenkette" +msgstr "Nicht beendete Zeichenkette" -#: awkgram.y:3419 +#: awkgram.y:3436 #, c-format msgid "invalid char '%c' in expression" msgstr "Ungültiges Zeichen »%c« in einem Ausdruck" -#: awkgram.y:3466 +#: awkgram.y:3483 #, c-format msgid "`%s' is a gawk extension" msgstr "»%s« ist eine gawk-Erweiterung" -#: awkgram.y:3471 +#: awkgram.y:3488 #, c-format msgid "`%s' is a Bell Labs extension" msgstr "»%s« ist eine Erweiterung der Bell Labs" -#: awkgram.y:3476 +#: awkgram.y:3493 #, c-format msgid "POSIX does not allow `%s'" -msgstr "POSIX gestattet »%s« nicht" +msgstr "POSIX erlaubt »%s« nicht" -#: awkgram.y:3484 +#: awkgram.y:3501 #, c-format msgid "`%s' is not supported in old awk" msgstr "»%s« wird im alten awk nicht unterstützt" -#: awkgram.y:3551 +#: awkgram.y:3568 msgid "`goto' considered harmful!\n" msgstr "»goto« gilt als schlechter Stil!\n" -#: awkgram.y:3604 +#: awkgram.y:3619 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "Unzulässige Argumentzahl %d für %s" -#: awkgram.y:3639 awkgram.y:3642 -msgid "match: third argument is a gawk extension" -msgstr "match: Das dritte Argument ist eine gawk-Erweiterung" - -#: awkgram.y:3670 +#: awkgram.y:3654 #, 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:3675 +#: awkgram.y:3659 #, c-format msgid "%s third parameter is not a changeable object" msgstr "Der dritte Parameter von %s ist ein unveränderliches Objekt" -#: awkgram.y:3761 awkgram.y:3764 +#: awkgram.y:3732 awkgram.y:3735 +msgid "match: third argument is a gawk extension" +msgstr "match: Das dritte Argument ist eine gawk-Erweiterung" + +#: awkgram.y:3789 awkgram.y:3792 msgid "close: second argument is a gawk extension" msgstr "close: Das zweite Argument ist eine gawk-Erweiterung" -#: awkgram.y:3776 +#: awkgram.y:3804 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "Fehlerhafte Verwendung von dcgettext(_\"...\"): \n" "Entfernen Sie den führenden Unterstrich" -#: awkgram.y:3791 +#: awkgram.y:3819 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "Fehlerhafte Verwendung von dcngettext(_\"...\"): \n" "Entfernen Sie den führenden Unterstrich" -#: awkgram.y:3883 +#: awkgram.y:3911 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "Funktion »%s«: Parameter #%d, »%s« wiederholt Parameter #%d" -#: awkgram.y:3925 +#: awkgram.y:3953 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "Funktion »%s«: Parameter »%s« verdeckt eine globale Variable" -#: awkgram.y:4083 +#: awkgram.y:4111 #, c-format msgid "could not open `%s' for writing (%s)" -msgstr "Kann »%s« nicht zum Schreiben öffnen (%s)" +msgstr "»%s« kann nicht zum Schreiben geöffne werden(%s)" -#: awkgram.y:4084 -#, fuzzy +#: awkgram.y:4112 msgid "sending variable list to standard error" -msgstr "Das Profil wird auf der Stadard-Fehlerausgabe ausgegeben" +msgstr "Die Liste der Variablen wird auf der Standardfehlerausgabe ausgegeben" -#: awkgram.y:4090 +#: awkgram.y:4118 #, c-format msgid "%s: close failed (%s)" msgstr "%s: close ist gescheitert (%s)" -#: awkgram.y:4142 +#: awkgram.y:4170 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() zweimal aufgerufen!" -#: awkgram.y:4148 -#, fuzzy +#: awkgram.y:4176 msgid "there were shadowed variables." msgstr "es sind verdeckte Variablen vorhanden" -#: awkgram.y:4178 +#: awkgram.y:4206 #, c-format msgid "function `%s': can't use function name as parameter name" -msgstr "Funktion »%s«: Kann Funktionsnamen nicht als Parameternamen benutzen" +msgstr "Funktion »%s«: Funktionsnamen können nicht als Parameternamen benutzen" -#: awkgram.y:4182 +#: awkgram.y:4210 #, 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:4198 +#: awkgram.y:4226 #, c-format msgid "function name `%s' previously defined" msgstr "Funktion »%s« wurde bereits definiert" -#: awkgram.y:4366 awkgram.y:4372 +#: awkgram.y:4394 awkgram.y:4400 #, c-format msgid "function `%s' called but never defined" msgstr "Aufgerufene Funktion »%s« ist nirgends definiert" -#: awkgram.y:4375 +#: awkgram.y:4403 #, c-format msgid "function `%s' defined but never called directly" msgstr "Funktion »%s« wurde definiert aber nirgends aufgerufen" -#: awkgram.y:4407 +#: awkgram.y:4435 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "" -"Konstanter Regulärer Ausdruck für Parameter #%d ergibt einen \n" +"Regulärer-Ausdruck-Konstante für Parameter #%d ergibt einen \n" "logischen Wert" -#: awkgram.y:4516 +#: awkgram.y:4544 #, c-format msgid "" "function `%s' called with space between name and `(',\n" "or used as a variable or an array" msgstr "" "Funktion »%s« wird mit Leerzeichen zwischen Name und »(« aufgerufen, \n" -"oder als Variabler oder Feld verwendet" +"oder als Variable oder Feld verwendet" -#: awkgram.y:4763 eval.c:1964 +#: awkgram.y:4791 eval.c:2056 msgid "division by zero attempted" msgstr "Division durch Null wurde versucht" -#: awkgram.y:4772 eval.c:1980 +#: awkgram.y:4800 eval.c:2072 #, c-format msgid "division by zero attempted in `%%'" msgstr "Division durch Null versucht in »%%«" -#: builtin.c:117 +#: builtin.c:120 #, c-format msgid "%s to \"%s\" failed (%s)" msgstr "%s to \"%s\" fehlgeschlagen (%s)" -#: builtin.c:118 +#: builtin.c:121 msgid "standard output" msgstr "Standardausgabe" -#: builtin.c:132 +#: builtin.c:135 msgid "exp: received non-numeric argument" msgstr "exp: das Argument ist keine Zahl" -#: builtin.c:138 +#: builtin.c:141 #, c-format msgid "exp: argument %g is out of range" -msgstr "exp: das Argument %g ist außerhalb des gültigen Bereichs" +msgstr "exp: das Argument %g liegt außerhalb des gültigen Bereichs" -#: builtin.c:197 +#: builtin.c:200 #, 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:200 +#: builtin.c:203 #, 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:212 +#: builtin.c:215 #, 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:330 +#: builtin.c:333 msgid "index: received non-string first argument" msgstr "index: Erstes Argument ist kein String" -#: builtin.c:332 +#: builtin.c:335 msgid "index: received non-string second argument" msgstr "index: Zweites Argument ist kein string" -#: builtin.c:454 +#: builtin.c:457 msgid "int: received non-numeric argument" msgstr "Argument ist keine Zahl" -#: builtin.c:490 +#: builtin.c:493 msgid "length: received array argument" msgstr "length: Argument ist ein Feld" -#: builtin.c:493 +#: builtin.c:496 msgid "`length(array)' is a gawk extension" msgstr "»length(array)« ist eine gawk-Erweiterung" -#: builtin.c:501 +#: builtin.c:504 msgid "length: received non-string argument" msgstr "length: Argument ist kein String" -#: builtin.c:532 +#: builtin.c:535 msgid "log: received non-numeric argument" msgstr "log: Argument ist keine Zahl" -#: builtin.c:535 +#: builtin.c:538 #, c-format msgid "log: received negative argument %g" msgstr "log: Negatives Argument %g" -#: builtin.c:691 builtin.c:696 +#: builtin.c:694 builtin.c:699 msgid "fatal: must use `count$' on all formats or none" msgstr "Fatal: »count$« muss auf alle Formate angewandt werden oder auf keines" -#: builtin.c:758 +#: builtin.c:762 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "Feldbreite wird für die »%%«-Angabe ignoriert" -#: builtin.c:760 +#: builtin.c:764 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "Genauigkeit wird für die »%%«-Angabe ignoriert" -#: builtin.c:762 +#: builtin.c:766 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "Feldbreite und Genauigkeit werden für die »%%«-Angabe ignoriert" -#: builtin.c:813 +#: builtin.c:817 msgid "fatal: `$' is not permitted in awk formats" msgstr "Fatal: »$« ist in awk-Formaten nicht zulässig" -#: builtin.c:822 +#: builtin.c:826 msgid "fatal: arg count with `$' must be > 0" msgstr "Fatal: die Anzahl der Argumen bei »$« muss > 0 sein" -#: builtin.c:826 +#: builtin.c:830 #, 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:830 +#: builtin.c:834 msgid "fatal: `$' not permitted after period in format" msgstr "Fatal: »$« nach Punkt in Formatangabe nicht zulässig" -#: builtin.c:846 +#: builtin.c:850 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "Fatal: »$« fehlt in positionsabhängiger Feldbreite oder Genauigkeit" # -#: builtin.c:917 +#: builtin.c:921 msgid "`l' is meaningless in awk formats; ignored" msgstr "»l« ist in awk-Formaten bedeutungslos, ignoriert" -#: builtin.c:921 +#: builtin.c:925 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "Fatal: »l« ist in POSIX-awk-Formaten nicht zulässig" -#: builtin.c:934 +#: builtin.c:938 msgid "`L' is meaningless in awk formats; ignored" msgstr "»L« ist in awk-Formaten bedeutungslos, ignoriert" -#: builtin.c:938 +#: builtin.c:942 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "Fatal: »L« ist in POSIX-awk-Formaten nicht zulässig" -#: builtin.c:951 +#: builtin.c:955 msgid "`h' is meaningless in awk formats; ignored" msgstr "»h« ist in awk-Formaten bedeutungslos, ignoriert" -#: builtin.c:955 +#: builtin.c:959 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "Fatal: »h« ist in POSIX-awk-Formaten nicht zulässig" -#: builtin.c:1268 +#: builtin.c:1272 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: Wert %g ist außerhalb des Bereichs für Format »%%%c«" -#: builtin.c:1328 +#: builtin.c:1332 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" -"das unbekannte Zeichen »«%c in der Formatspezifikation wird ignoriert: keine " +"das unbekannte Zeichen »%c« in der Formatspezifikation wird ignoriert: keine " "Argumente umgewandelt" -#: builtin.c:1333 +#: builtin.c:1337 msgid "fatal: not enough arguments to satisfy format string" msgstr "Fatal: Nicht genügend Argumente für die Formatangabe" -#: builtin.c:1335 +#: builtin.c:1339 msgid "^ ran out for this one" msgstr "^ hierfür fehlte es" -#: builtin.c:1342 +#: builtin.c:1346 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: Format-Spezifikation hat keinen Controlcode" -#: builtin.c:1345 +#: builtin.c:1349 msgid "too many arguments supplied for format string" msgstr "Zu viele Argumente für den Formatstring" -#: builtin.c:1419 builtin.c:1430 +#: builtin.c:1423 builtin.c:1434 msgid "printf: no arguments" msgstr "printf: Keine Argumente" -#: builtin.c:1471 +#: builtin.c:1475 msgid "sqrt: received non-numeric argument" msgstr "sqrt: das Argument ist keine Zahl" -#: builtin.c:1475 +#: builtin.c:1479 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: das Argument %g ist negativ" -#: builtin.c:1499 +#: builtin.c:1503 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: Länge %g ist nicht >= 1" -#: builtin.c:1501 +#: builtin.c:1505 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: Länge %g ist nicht >= 0" -#: builtin.c:1508 +#: builtin.c:1512 #, c-format msgid "substr: non-integer length %g will be truncated" -msgstr "substr: Nicht-ganzzahlige Länge %g wird abgeschnitten" +msgstr "substr: Nicht ganzzahlige Länge %g wird abgeschnitten" -#: builtin.c:1513 +#: builtin.c:1517 #, 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:1525 +#: builtin.c:1529 #, c-format msgid "substr: start index %g is invalid, using 1" -msgstr "substr: Start-Index %g ist ungültig, 1 wird benutzt" +msgstr "substr: Start-Index %g ist ungültig, 1 wird verwendet" -#: builtin.c:1530 +#: builtin.c:1534 #, c-format msgid "substr: non-integer start index %g will be truncated" -msgstr "substr: Nicht-ganzzahliger Start-Wert %g wird abgeschnitten" +msgstr "substr: Nicht ganzzahliger Start-Wert %g wird abgeschnitten" -#: builtin.c:1555 +#: builtin.c:1559 msgid "substr: source string is zero length" msgstr "substr: Quellstring ist leer" -#: builtin.c:1571 +#: builtin.c:1575 #, 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:1579 +#: builtin.c:1583 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -780,225 +778,231 @@ "substr: Länge %g am Start-Wert %g überschreitet die Länge des ersten " "Arguments (%lu)" -#: builtin.c:1652 +#: builtin.c:1657 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: Formatwert in PROCINFO[\"strftime\"] ist numerischen Typs" -#: builtin.c:1675 +#: builtin.c:1680 msgid "strftime: received non-numeric second argument" msgstr "strftime: Das zweite Argument ist keine Zahl" -#: builtin.c:1682 +#: builtin.c:1683 +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:1690 msgid "strftime: received non-string first argument" msgstr "strftime: Das erste Argument ist kein String" -#: builtin.c:1688 +#: builtin.c:1696 msgid "strftime: received empty format string" msgstr "strftime: Der Format-String ist leer" -#: builtin.c:1754 +#: builtin.c:1762 msgid "mktime: received non-string argument" msgstr "mktime: Das Argument ist kein String" -#: builtin.c:1771 +#: builtin.c:1779 msgid "mktime: at least one of the values is out of the default range" -msgstr "" -"mktime: mindestens einer der Werte ist ausserhalb der normalen Bereichs" +msgstr "mktime: mindestens einer der Werte ist außerhalb des normalen Bereichs" -#: builtin.c:1806 +#: builtin.c:1814 msgid "'system' function not allowed in sandbox mode" msgstr "Die Funktion »system« ist im Sandbox-Modus nicht erlaubt" -#: builtin.c:1811 +#: builtin.c:1819 msgid "system: received non-string argument" msgstr "system: Das Argument ist kein String" -#: builtin.c:1866 eval.c:1165 eval.c:1698 eval.c:1711 +#: builtin.c:1874 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«" +msgstr "Referenz auf die nicht initialisierte Variable »%s«" -#: builtin.c:1933 +#: builtin.c:1941 #, c-format msgid "reference to uninitialized field `$%d'" -msgstr "Referenz auf das nicht-initialisierte Feld »$%d«" +msgstr "Referenz auf das nicht initialisierte Feld »$%d«" -#: builtin.c:2020 +#: builtin.c:2028 msgid "tolower: received non-string argument" msgstr "tolower: das Argument ist kein String" -#: builtin.c:2054 +#: builtin.c:2062 msgid "toupper: received non-string argument" msgstr "toupper: das Argument ist kein String" -#: builtin.c:2090 +#: builtin.c:2098 msgid "atan2: received non-numeric first argument" msgstr "atan2: das erste Argument ist keine Zahl" -#: builtin.c:2092 +#: builtin.c:2100 msgid "atan2: received non-numeric second argument" msgstr "atan2: das zweite Argument ist keine Zahl" -#: builtin.c:2111 +#: builtin.c:2119 msgid "sin: received non-numeric argument" msgstr "sin: das Argument ist keine Zahl" -#: builtin.c:2127 +#: builtin.c:2135 msgid "cos: received non-numeric argument" msgstr "cos: das Argument ist keine Zahl" -#: builtin.c:2180 +#: builtin.c:2188 msgid "srand: received non-numeric argument" msgstr "srand: das Argument ist keine Zahl" -#: builtin.c:2211 +#: builtin.c:2219 msgid "match: third argument is not an array" msgstr "match: das dritte Argument ist kein Array" -#: builtin.c:2718 +#: builtin.c:2483 msgid "gensub: third argument of 0 treated as 1" -msgstr "gensub: 0 als dritte Argument wird als 1 interpretiert" +msgstr "gensub: 0 als drittes Argument wird als 1 interpretiert" -#: builtin.c:2757 +#: builtin.c:2776 msgid "lshift: received non-numeric first argument" msgstr "lshift: das erste Argument ist keine Zahl" -#: builtin.c:2759 +#: builtin.c:2778 msgid "lshift: received non-numeric second argument" msgstr "lshift: das zweite Argument ist keine Zahl" -#: builtin.c:2765 +#: builtin.c:2784 #, c-format msgid "lshift(%lf, %lf): negative values will give strange results" -msgstr "lshift(%lf, %lf): Negative Werte führen zu merkwürdigen Ergebnissen" +msgstr "" +"lshift(%lf, %lf): Negative Werte werden zu merkwürdigen Ergebnissen führen" -#: builtin.c:2767 +#: builtin.c:2786 #, c-format msgid "lshift(%lf, %lf): fractional values will be truncated" msgstr "lshift(%lf, %lf): Dezimalteil wird abgeschnitten" -#: builtin.c:2769 +#: builtin.c:2788 #, c-format msgid "lshift(%lf, %lf): too large shift value will give strange results" msgstr "" -"lshift(%lf, %lf): Zu große Shift-Werte führen zu merkwürdigen Ergebnissen" +"lshift(%lf, %lf): Zu große Shift-Werte werden zu merkwürdigen Ergebnissen " +"führen" -#: builtin.c:2794 +#: builtin.c:2813 msgid "rshift: received non-numeric first argument" msgstr "rshift: das erste Argument ist keine Zahl" -#: builtin.c:2796 +#: builtin.c:2815 msgid "rshift: received non-numeric second argument" msgstr "rshift: das zweite Argument ist keine Zahl" -#: builtin.c:2802 +#: builtin.c:2821 #, 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:2804 +#: builtin.c:2823 #, c-format msgid "rshift(%lf, %lf): fractional values will be truncated" msgstr "rshift(%lf, %lf): Dezimalteil wird abgeschnitten" -#: builtin.c:2806 +#: builtin.c:2825 #, c-format msgid "rshift(%lf, %lf): too large shift value will give strange results" msgstr "" "rshift(%lf, %lf): Zu große Shift-Werte werden zu merkwürdigen Ergebnissen " -"fuhren" +"führen" -#: builtin.c:2831 +#: builtin.c:2850 msgid "and: received non-numeric first argument" msgstr "and: das erste Argument ist keine Zahl" -#: builtin.c:2833 +#: builtin.c:2852 msgid "and: received non-numeric second argument" msgstr "and: das zweite Argument ist keine Zahl" -#: builtin.c:2839 +#: builtin.c:2858 #, 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:2841 +#: builtin.c:2860 #, c-format msgid "and(%lf, %lf): fractional values will be truncated" msgstr "and(%lf, %lf): Dezimalteil wird abgeschnitten" -#: builtin.c:2866 +#: builtin.c:2885 msgid "or: received non-numeric first argument" msgstr "or: das erste Argument ist keine Zahl" -#: builtin.c:2868 +#: builtin.c:2887 msgid "or: received non-numeric second argument" msgstr "or: das zweite Argument ist keine Zahl" -#: builtin.c:2874 +#: builtin.c:2893 #, 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:2876 +#: builtin.c:2895 #, c-format msgid "or(%lf, %lf): fractional values will be truncated" msgstr "or(%lf, %lf): Dezimalteil wird abgeschnitten" -#: builtin.c:2904 +#: builtin.c:2923 msgid "xor: received non-numeric first argument" msgstr "xor: das erste Argument ist keine Zahl" -#: builtin.c:2906 +#: builtin.c:2925 msgid "xor: received non-numeric second argument" msgstr "xor: das zweite Argument ist keine Zahl" -#: builtin.c:2912 +#: builtin.c:2931 #, 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:2914 +#: builtin.c:2933 #, c-format msgid "xor(%lf, %lf): fractional values will be truncated" msgstr "xor(%lf, %lf): Dezimalteil wird abgeschnitten" -#: builtin.c:2938 builtin.c:2944 +#: builtin.c:2957 builtin.c:2963 msgid "compl: received non-numeric argument" msgstr "compl: das erste Argument ist keine Zahl" -#: builtin.c:2946 +#: builtin.c:2965 #, 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:2948 +#: builtin.c:2967 #, c-format msgid "compl(%lf): fractional value will be truncated" msgstr "compl(%lf): Dezimalteil wird abgeschnitten" -#: builtin.c:3117 +#: builtin.c:3136 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: »%s« ist keine gültige Locale-Kategorie" -#: eval.c:411 +#: eval.c:412 #, c-format msgid "unknown nodetype %d" msgstr "Unbekannter Knotentyp %d" -#: eval.c:422 eval.c:436 +#: eval.c:423 eval.c:437 #, c-format msgid "unknown opcode %d" msgstr "Unbekannter Opcode %d" -#: eval.c:433 +#: eval.c:434 #, c-format msgid "opcode %s not an operator or keyword" msgstr "Opcode %s ist weder ein Operator noch ein Schlüsselwort" -#: eval.c:487 +#: eval.c:488 msgid "buffer overflow in genflags2str" msgstr "Pufferüberlauf in genflags2str" @@ -1033,199 +1037,207 @@ #: eval.c:980 msgid "turning off `--lint' due to assignment to `LINT'" -msgstr "»--lint« wird abgeschaltet, da an »LINT« gesetzt ist" +msgstr "»--lint« wird abgeschaltet, da an »LINT« zugewiesen wird" -#: eval.c:1127 eval.c:1685 +#: eval.c:1127 eval.c:1777 #, c-format msgid "can't use function name `%s' as variable or array" -msgstr "Kann Funktion »%s« nicht als Variable oder Feld verwenden" - -#: eval.c:1155 -msgid "assignment is not allowed to result of builtin function" -msgstr "" -"Zuweisungen an das Ergebnis einer eingebauten Funktion sind nicht erlaubt" +msgstr "Funktion »%s« kann nicht als Variable oder Feld verwendet werden" -#: eval.c:1164 eval.c:1697 eval.c:1710 +#: eval.c:1158 eval.c:1789 eval.c:1802 #, c-format msgid "reference to uninitialized argument `%s'" -msgstr "Referenz auf nicht-initialisiertes Argument »%s«" +msgstr "Referenz auf nicht initialisiertes Argument »%s«" -#: eval.c:1183 +#: eval.c:1177 msgid "attempt to field reference from non-numeric value" -msgstr "Nicht-numerischer Wert für Feldreferenz verwendet" +msgstr "Nicht numerischer Wert für Feldreferenz verwendet" -#: eval.c:1185 +#: eval.c:1179 msgid "attempt to field reference from null string" msgstr "Referenz auf ein Feld von einem Null-String" -#: eval.c:1191 -#, fuzzy, c-format +#: eval.c:1185 +#, c-format msgid "attempt to access field %ld" -msgstr "Versuch des Zugriffs auf Feld %d" +msgstr "Versuch des Zugriffs auf Feld %ld" -#: eval.c:1200 +#: eval.c:1194 #, c-format msgid "reference to uninitialized field `$%ld'" -msgstr "Referenz auf das nicht-initialisierte Feld »$%ld«" +msgstr "Referenz auf das nicht initialisierte Feld »$%ld«" -#: eval.c:1262 +#: eval.c:1256 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "Funktion »%s« mit zu vielen Argumenten aufgerufen" -#: eval.c:1426 +#: eval.c:1437 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: unerwarteter Typ »%s«" -#: eval.c:1510 +#: eval.c:1532 msgid "division by zero attempted in `/='" msgstr "Division durch Null versucht in »/=«" -#: eval.c:1517 +#: eval.c:1539 #, c-format msgid "division by zero attempted in `%%='" msgstr "Division durch Null versucht in »%%=«" -#: eval.c:1784 eval.c:2030 +#: eval.c:1876 eval.c:2122 #, c-format msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" -msgstr "Versuch, das Feld »%s[\"%.*s\"]« in Skalarkontext zu verwenden" +msgstr "" +"Es wird versucht, das Feld »%s[\"%.*s\"]« in einem Skalarkontext zu verwenden" -#: eval.c:1815 +#: eval.c:1907 msgid "assignment used in conditional context" msgstr "Zuweisung in einer Bedingung" -#: eval.c:1819 +#: eval.c:1911 msgid "statement has no effect" msgstr "Anweisung hat keinen Effekt" -#: eval.c:2233 -#, fuzzy, c-format +#: 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 Größse von %d zu %ld innerhalb der Schleife" +"for-Schleife: Feld »%s« ändert seine Größe von %ld innerhalb der Schleife zu " +"%ld" -#: eval.c:2343 +#: eval.c:2458 #, c-format msgid "function called indirectly through `%s' does not exist" -msgstr "die durch »%s« indirekt aufgerufene Funktion exsistiert nicht" +msgstr "die durch »%s« indirekt aufgerufene Funktion existiert nicht" -#: eval.c:2355 +#: eval.c:2470 #, c-format msgid "function `%s' not defined" msgstr "Funktion »%s« ist nicht definiert" -#: eval.c:2416 +#: eval.c:2511 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" -msgstr "Nicht-umgelenktes »getline« ist innerhalb der »%s«-Aktion unzuässig" +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:2477 +#: 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:2532 +#: eval.c:2661 +msgid "`exit' cannot be called in the current context" +msgstr "»exit« kann im aktuellen Kontext nicht aufgerufen werden" + +#: eval.c:2700 #, c-format msgid "`next' cannot be called from a `%s' rule" -msgstr "»next« kann nicht in einer »%s«-Regel benutzt werden" +msgstr "»next« kann nicht in einer »%s«-Regel verwendet werden" -#: eval.c:2599 +#: eval.c:2766 #, 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:54 msgid "extensions are not allowed in sandbox mode" msgstr "Erweiterungen sind im Sandbox-Modus nicht erlaubt" -#: ext.c:70 ext.c:75 +#: ext.c:60 ext.c:65 msgid "`extension' is a gawk extension" msgstr "»extension« ist eine gawk-Erweiterung" -#: ext.c:85 +#: ext.c:75 #, c-format msgid "fatal: extension: cannot open `%s' (%s)\n" msgstr "Fatal: extension: »%s« kann nicht geöffnet werden (%s)\n" -#: ext.c:94 +#: ext.c:84 #, c-format msgid "" "fatal: extension: library `%s': does not define " "`plugin_is_GPL_compatible' (%s)\n" msgstr "" -"Fatal: extension: Bibliothek »%s«: definiert nicht " -"»plugin_is_GPL_compatible« (%s)\n" +"Fatal: Erweiterung: Bibliothek »%s«: definiert »plugin_is_GPL_compatible« " +"nicht (%s)\n" -#: ext.c:103 +#: ext.c:93 #, c-format msgid "fatal: extension: library `%s': cannot call function `%s' (%s)\n" msgstr "" -"Fatal: extension: Bibliothek »%s«: Funktion »%s« kann nicht aufrufen werden " -"(%s)\n" +"Fatal: Erweiterung: Bibliothek »%s«: Funktion »%s« kann nicht aufgerufen " +"werden (%s)\n" -#: ext.c:137 +#: ext.c:127 msgid "extension: missing function name" -msgstr "extension: Funktionsname fehlt" +msgstr "Erweiterung: Funktionsname fehlt" -#: ext.c:142 +#: ext.c:132 #, c-format msgid "extension: illegal character `%c' in function name `%s'" -msgstr "extension: unzulässiges Zeichen »%c« in Funktionsname »%s«" +msgstr "Erweiterung: unzulässiges Zeichen »%c« in Funktionsname »%s«" -#: ext.c:151 +#: ext.c:141 #, c-format msgid "extension: can't redefine function `%s'" -msgstr "extension: Funktion »%s« kann nicht neu definiert werden" +msgstr "Erweiterung: Funktion »%s« kann nicht neu definiert werden" -#: ext.c:155 +#: ext.c:145 #, c-format msgid "extension: function `%s' already defined" -msgstr "extgension: Funktion »%s« wurde bereits definiert" +msgstr "Erweiterung: Funktion »%s« wurde bereits definiert" -#: ext.c:160 +#: ext.c:150 #, c-format msgid "extension: function name `%s' previously defined" -msgstr "extension: Funktion »%s« wurde bereits vorher definiert" +msgstr "Erweiterung: Funktion »%s« wurde bereits vorher definiert" -#: ext.c:162 +#: ext.c:152 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" msgstr "" -"extension: die eingebaute Funktion »%s« kann nicht als Funktionsname benutzt " -"werden" +"Erweiterung: die eingebaute Funktion »%s« kann nicht als Funktionsname " +"verwendet werden" -#: ext.c:166 +#: ext.c:156 #, c-format msgid "make_builtin: negative argument count for function `%s'" -msgstr "make_builtin: negative Anzahl von Argumenten fÜr Funktion »%s«" +msgstr "make_builtin: negative Anzahl von Argumenten für Funktion »%s«" -#: ext.c:269 +#: ext.c:259 #, 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:262 #, c-format msgid "function `%s': missing argument #%d" msgstr "Funktion »%s«: fehlendes Argument #%d" -#: ext.c:289 +#: ext.c:279 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "" -"Funktion »%s«: Argument #%d: Versuch, einen Skalar als Feld zu verwenden" +"Funktion »%s«: Argument #%d: Es wird versucht, einen Skalar als Feld zu " +"verwenden" -#: ext.c:293 +#: ext.c:283 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "" -"Funktion »%s«: Argument #%d: Versuch, ein Feld als als Skalar zu verwenden" +"Funktion »%s«: Argument #%d: Es wird versucht, ein Feld als Skalar zu " +"verwenden" -#: ext.c:306 +#: ext.c:296 msgid "Operation Not Supported" msgstr "Die Operation wird nicht unterstützt" @@ -1233,178 +1245,173 @@ msgid "NF set to negative value" msgstr "NF wird ein negativer Wert zugewiesen" -#: field.c:950 field.c:957 field.c:961 +#: field.c:951 field.c:958 field.c:962 msgid "split: fourth argument is a gawk extension" msgstr "split: das vierte Argument ist eine gawk-Erweiterung" -#: field.c:954 +#: field.c:955 msgid "split: fourth argument is not an array" msgstr "split: das vierte Argument ist kein Feld" -#: field.c:968 +#: field.c:969 msgid "split: second argument is not an array" msgstr "split: das zweite Argument ist kein Feld" -#: field.c:972 +#: field.c:973 msgid "split: cannot use the same array for second and fourth args" msgstr "" -"split: für das zweite und vierte Argument kann nicht das gleiche Feld " +"split: als zweites und viertes Argument kann nicht das gleiche Feld " "verwendet werden" -#: field.c:977 +#: field.c:978 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:980 +#: field.c:981 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:1009 +#: field.c:1010 msgid "split: null string for third arg is a gawk extension" msgstr "split: Null-String als drittes Argument ist eine gawk-Erweiterung" -#: field.c:1049 +#: field.c:1050 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: Das vierte Argument ist kein Feld" -#: field.c:1054 +#: field.c:1055 msgid "patsplit: second argument is not an array" msgstr "patsplit: Das zweite Argument ist kein Feld" -#: field.c:1060 +#: field.c:1061 msgid "patsplit: third argument must be non-null" -msgstr "patsplit: Das dritte Argument ist kein Feld" +msgstr "patsplit: Das dritte Argument darf nicht Null sein" -#: field.c:1064 +#: field.c:1065 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "" -"patsplit: für das zweite und vierte Argument kann nicht das gleiche Feld " +"patsplit: als zweites und viertes Argument kann nicht das gleiche Feld " "verwendet werden" -#: field.c:1069 +#: field.c:1070 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:1072 +#: field.c:1073 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:1109 +#: field.c:1110 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "»FIELDWIDTHS« ist eine gawk-Erweiterung" -#: field.c:1172 +#: field.c:1173 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" -msgstr "ungültiger FIELDWIDTHS Wert nah bei »%s«" +msgstr "ungültiger FIELDWIDTHS-Wert nah bei »%s«" -#: field.c:1245 +#: field.c:1246 msgid "null string for `FS' is a gawk extension" msgstr "Null-String für »FS« ist eine gawk-Erweiterung" -#: field.c:1249 +#: field.c:1250 msgid "old awk does not support regexps as value of `FS'" -msgstr "Das alte awk erlaubt keine regulären Ausdrücke als Wert von »FS«" +msgstr "Das alte awk unterstützt keine regulären Ausdrücke als Wert von »FS«" -#: field.c:1368 +#: field.c:1369 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:282 +#: io.c:280 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "" "das Kommandozeilen-Argument »%s« ist ein Verzeichnis: wird übersprungen" -#: io.c:285 io.c:384 +#: io.c:283 io.c:385 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "Die Datei »%s« kann nicht zum Lesen geöffnet werden (%s)" -#: io.c:431 -#, c-format -msgid "error reading input file `%s': %s" -msgstr "Fehler beim Lesen der Eingabedatei »%s«: %s" - -#: io.c:500 +#: io.c:501 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "Das Schließen des Dateideskriptors %d (»%s«) ist gescheitert (%s)" -#: io.c:577 +#: io.c:578 msgid "redirection not allowed in sandbox mode" msgstr "Umlenkungen sind im Sandbox-Modus nicht erlaubt" -#: io.c:611 +#: io.c:612 #, 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:617 +#: io.c:618 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "Der Ausdruck für eine Umlenkung mittels »%s« ist ein leerer String" @@ -1413,7 +1420,7 @@ #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" msgstr "" -"Der Dateiname »%s« für eine Umlekung mittels »%s« kann das Ergebnis eines " +"Der Dateiname »%s« für eine Umlenkung mittels »%s« kann das Ergebnis eines " "logischen Ausdrucks sein" #: io.c:666 @@ -1441,7 +1448,7 @@ #: io.c:834 #, c-format msgid "can't redirect from `%s' (%s)" -msgstr "Von »%s« kann nicht umlenkt werden (%s)" +msgstr "Von »%s« kann nicht umgelenkt werden (%s)" #: io.c:837 #, c-format @@ -1453,12 +1460,12 @@ "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "Die Systemgrenze offener Dateien ist erreicht, daher werden nun " -"Dateideskriptoren gemultiplext" +"Dateideskriptoren mehrfach verwendet" #: io.c:904 -#, fuzzy, c-format +#, c-format msgid "close of `%s' failed (%s)." -msgstr "Das Schließen von »%s« ist gescheitert (%s)" +msgstr "Das Schließen von »%s« ist gescheitert (%s)." #: io.c:912 msgid "too many pipes or input files open" @@ -1514,28 +1521,28 @@ msgid "no explicit close of file `%s' provided" msgstr "Das explizite Schließen der Datei »%s« fehlt" -#: io.c:1129 io.c:1184 main.c:795 main.c:832 +#: io.c:1129 io.c:1184 main.c:794 main.c:831 #, c-format msgid "error writing standard output (%s)" -msgstr "Fehler beim Schreiben auf stdout (%s)" +msgstr "Fehler beim Schreiben auf die Standardausgabe (%s)" #: io.c:1133 io.c:1189 #, c-format msgid "error writing standard error (%s)" -msgstr "Fehler beim Schreiben auf stderr (%s)" +msgstr "Fehler beim Schreiben auf die Standardfehlerausgabe (%s)" #: io.c:1141 -#, fuzzy, c-format +#, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "Das Leeren der Pipe »%s« ist gescheitert (%s)" #: io.c:1144 -#, fuzzy, c-format +#, 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:1147 -#, fuzzy, c-format +#, c-format msgid "file flush of `%s' failed (%s)." msgstr "Das Leeren der Datei »%s« ist gescheitert (%s)" @@ -1552,7 +1559,7 @@ #: io.c:1431 #, c-format msgid "no (known) protocol supplied in special filename `%s'" -msgstr "Es wurde kein (bekanntes) Protokoll in Dateinamen »%s« angegeben" +msgstr "Es wurde kein (bekanntes) Protokoll im Dateinamen »%s« angegeben" #: io.c:1445 #, c-format @@ -1561,11 +1568,11 @@ #: io.c:1462 msgid "must supply a remote hostname to `/inet'" -msgstr "Sie müssen einen Rechnernamen in »/inet« angeben" +msgstr "Sie müssen in /inet einen Rechnernamen angeben" #: io.c:1480 msgid "must supply a remote port to `/inet'" -msgstr "Sie müssen einen Port in »/inet« angeben" +msgstr "Sie müssen in »/inet« einen Port angeben" #: io.c:1526 msgid "TCP/IP communications are not supported" @@ -1576,97 +1583,99 @@ msgid "could not open `%s', mode `%s'" msgstr "»%s« konnte nicht geöffnet werden, Modus »%s«" -#: io.c:1744 +#: io.c:1747 #, c-format msgid "close of master pty failed (%s)" msgstr "" "Das Schließen der übergeordneten Terminal-Gerätedatei ist gescheitert (%s)" -#: io.c:1746 io.c:1914 io.c:2071 +#: io.c:1749 io.c:1917 io.c:2074 #, c-format msgid "close of stdout in child failed (%s)" -msgstr "Das Schließen von stdout im Kindprozess ist gescheitert (%s)" +msgstr "Das Schließen der Standardausgabe im Kindprozess ist gescheitert (%s)" -#: io.c:1749 +#: io.c:1752 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" -"Das Verschieben der untergeordneten Terminal-Gerätedatei zu stdout im " -"Kindprozess ist gescheitert (dup: %s)" +"Das Verschieben der untergeordneten Terminal-Gerätedatei zur Standardausgabe " +"im Kindprozess ist gescheitert (dup: %s)" -#: io.c:1751 io.c:1919 +#: io.c:1754 io.c:1922 #, c-format msgid "close of stdin in child failed (%s)" msgstr "Schließen von stdin im Kindprozess gescheitert (%s)" -#: io.c:1754 +#: io.c:1757 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" -"Das Verschieben der untergeordneten Terminal-Gerätedatei zu stdin im " -"Kindprozess ist gescheitert (dup: %s)" +"Das Verschieben der untergeordneten Terminal-Gerätedatei zur Standardeingabe " +"im Kindprozess ist gescheitert (dup: %s)" -#: io.c:1756 io.c:1777 +#: io.c:1759 io.c:1780 #, c-format msgid "close of slave pty failed (%s)" msgstr "" "Das Schließen der untergeordneten Terminal-Gerätedatei ist gescheitert (%s)" -#: io.c:1855 io.c:1917 io.c:2049 io.c:2074 +#: io.c:1858 io.c:1920 io.c:2052 io.c:2077 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" -"Das Verschieben der Pipe zu stdout im Kindprozess ist gescheitert (dup: %s)" +"Das Verschieben der Pipe zur Standardausgabe im Kindprozess ist gescheitert " +"(dup: %s)" -#: io.c:1862 io.c:1922 +#: io.c:1865 io.c:1925 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" -"Das Verschieben der Pipe zu stdin im Kindprozess ist gescheitert (dup: %s)" +"Das Verschieben der Pipe zur Standardeingabe im Kindprozess ist gescheitert " +"(dup: %s)" -#: io.c:1882 io.c:2064 +#: io.c:1885 io.c:2067 msgid "restoring stdout in parent process failed\n" msgstr "" "Das Wiederherstellen der Standardausgabe im Elternprozess ist gescheitert\n" -#: io.c:1890 +#: io.c:1893 msgid "restoring stdin in parent process failed\n" msgstr "" "Das Wiederherstellen der Standardeingabe im Elternprozess ist gescheitert\n" -#: io.c:1925 io.c:2076 io.c:2090 +#: io.c:1928 io.c:2079 io.c:2093 #, c-format msgid "close of pipe failed (%s)" msgstr "Das Schließen der Pipe ist gescheitert (%s)" -#: io.c:1970 +#: io.c:1973 msgid "`|&' not supported" msgstr "»|&« wird nicht unterstützt" -#: io.c:2036 +#: io.c:2039 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "Pipe »%s« kann nicht geöffnet werden (%s)" -#: io.c:2084 +#: io.c:2087 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "Kindprozess für »%s« kann nicht erzeugt werden (fork: %s)" -#: io.c:2517 +#: io.c:2520 #, c-format msgid "data file `%s' is empty" msgstr "Die Datei »%s« ist leer" -#: io.c:2558 io.c:2566 +#: io.c:2561 io.c:2569 msgid "could not allocate more input memory" -msgstr "Es konnte kein weiterer Speicher für die Eingabe beschafft" +msgstr "Es konnte kein weiterer Speicher für die Eingabe beschafft werden" -#: io.c:3119 +#: io.c:3127 msgid "multicharacter value of `RS' is a gawk extension" msgstr "Multicharacter-Wert von »RS« ist eine gawk-Erweiterung" -#: io.c:3224 +#: io.c:3232 msgid "IPv6 communication is not supported" msgstr "IPv6-Verbindungen werden nicht unterstützt" @@ -1696,7 +1705,7 @@ msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "Die Umgebungsvariable »POSIXLY_CORRECT« ist gesetzt: »--posix« wird " -"angeschaltet" +"eingeschaltet" #: main.c:542 msgid "`--posix' overrides `--traditional'" @@ -1718,135 +1727,137 @@ #: main.c:613 #, c-format msgid "can't set binary mode on stdin (%s)" -msgstr "Das Setzen des Binärermodus für Stdin ist nicht möglich (%s)" +msgstr "" +"Das Setzen des Binärermodus für die Standardeingabe ist nicht möglich (%s)" #: main.c:616 #, c-format msgid "can't set binary mode on stdout (%s)" -msgstr "Das Setzen des Binärermodus für Stdout ist nicht möglich (%s)" +msgstr "" +"Das Setzen des Binärermodus für die Standardausgabe ist nicht möglich (%s)" #: main.c:618 #, c-format msgid "can't set binary mode on stderr (%s)" -msgstr "Das Setzen des Binärermodus für Stderr ist nicht möglich (%s)" +msgstr "" +"Das Setzen des Binärermodus für die Standardfehlerausgabe ist nicht möglich " +"(%s)" #: main.c:657 msgid "no program text at all!" msgstr "Es wurde überhaupt kein Programmtext angegeben!" -#: main.c:735 +#: main.c:734 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" -msgstr "Aufruf: %s [POSIX- oder GNU-Optionen] -f PROGRAM [--] Datei ...\n" +msgstr "Aufruf: %s [POSIX- oder GNU-Optionen] -f PROGRAMM [--] Datei ...\n" -#: main.c:737 +#: main.c:736 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" -msgstr "Aufruf: %s [POSIX- oder GNU-Optionen] -- %cPROGRAM%c Datei ...\n" +msgstr "Aufruf: %s [POSIX- oder GNU-Optionen] -- %cPROGRAMM%c Datei ...\n" -#: main.c:742 +#: main.c:741 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX-Optionen\t\tlange GNU-Optionen: (standard)\n" -#: main.c:743 +#: main.c:742 msgid "\t-f progfile\t\t--file=progfile\n" -msgstr "\t-f PROGRAM\t\t--file=PROGRAM\n" +msgstr "\t-f PROGRAMM\t\t--file=PROGRAMM\n" -#: main.c:744 +#: main.c:743 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F Feldtrenner\t\t\t--field-separator=Feldtrenner\n" -#: main.c:745 +#: main.c:744 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=Wert\t\t--assign=var=Wert\n" -#: main.c:746 +#: main.c:745 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "POSIX-Optionen\t\tGNU-Optionen (lang): (Erweiterungen)\n" -#: main.c:747 +#: main.c:746 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:748 +#: main.c:747 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:749 +#: main.c:748 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:750 -#, fuzzy +#: main.c:749 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d [Datei]\t\t--dump-variables[=Datei]\n" -#: main.c:751 +#: main.c:750 msgid "\t-e 'program-text'\t--source='program-text'\n" -msgstr "\t-e Programmtext\t--source=Programmtext\n" +msgstr "\t-e 'Programmtext'\t--source=Programmtext\n" -#: main.c:752 +#: main.c:751 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E Datei\t\t\t--exec=Datei\n" -#: main.c:753 +#: main.c:752 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:754 +#: main.c:753 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:755 +#: main.c:754 msgid "\t-L [fatal]\t\t--lint[=fatal]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: main.c:756 +#: main.c:755 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:757 +#: main.c:756 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:758 +#: main.c:757 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:759 -#, fuzzy +#: main.c:758 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p [Datei]\t\t--profile[=Datei]\n" -#: main.c:760 +#: main.c:759 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:761 +#: main.c:760 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:763 +#: main.c:762 msgid "\t-R file\t\t\t--command=file\n" msgstr "\t-R Datei\t\t\t--command=Datei\n" -#: main.c:764 +#: main.c:763 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:765 +#: main.c:764 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:766 +#: main.c:765 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:768 +#: main.c:767 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:771 +#: main.c:770 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -1855,7 +1866,7 @@ #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:780 +#: main.c:779 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -1867,22 +1878,22 @@ "in »gawk.info«, den Sie als Kapitel »Reporting Problems and Bugs«\n" "in der gedruckten Version finden.\n" "\n" -"Fehler in der Übersetzuung senden Sie bitte alos E-Mail an\n" +"Fehler in der Übersetzuung senden Sie bitte als E-Mail an\n" "an translation-team-de@lists.sourceforge.net\n" "\n" -#: main.c:784 +#: main.c:783 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" "\n" msgstr "" "gawk ist eine Sprache zur Suche nach und dem Verarbeiten von Mustern.\n" -"Normalerweise liesst das Programm von der Standardeingabe und gibt\n" +"Normalerweise ließt das Programm von der Standardeingabe und gibt\n" "auf der Standardausgabe aus.\n" "\n" -#: main.c:788 +#: main.c:787 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -1892,7 +1903,7 @@ "\tgawk '{ sum += $1 }; END { print sum }' file\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:808 +#: main.c:807 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -1912,7 +1923,7 @@ "spätere Version.\n" "\n" -#: main.c:816 +#: main.c:815 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" @@ -1920,12 +1931,12 @@ "GNU General Public License for more details.\n" "\n" msgstr "" -"Dieses Programm wird weitergegeben in der Hoffnung das es nützlich ist,\n" +"Dieses Programm wird weitergegeben in der Hoffnung, dass es nützlich ist,\n" "aber OHNE JEDE GEWÄHRLEISTUNG; nicht einmal mit der impliziten Gewähr-\n" "leistung einer HANDELBARKEIT oder der EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.\n" "Sehen Sie bitte die GNU General Public License für weitere Details.\n" -#: main.c:822 +#: main.c:821 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" @@ -1934,16 +1945,16 @@ "diesem Programm erhalten haben. Wenn nicht, lesen Sie bitte\n" "http://www.gnu.org/licenses/.\n" -#: main.c:857 +#: main.c:856 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft setzt FS im POSIX-awk nicht auf Tab" -#: main.c:1091 +#: main.c:1090 #, c-format msgid "unknown value for field spec: %d\n" msgstr "unbekannter Wert für eine Feldangabe: %d\n" -#: main.c:1152 +#: main.c:1171 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -1952,58 +1963,53 @@ "%s: Argument »%s« von »-v« ist nicht in der Form »Variable=Wert«\n" "\n" -#: main.c:1178 +#: main.c:1197 #, c-format msgid "`%s' is not a legal variable name" msgstr "»%s« ist kein gültiger Variablenname" -#: main.c:1181 +#: main.c:1200 #, 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:1185 -#, fuzzy, c-format +#: main.c:1204 +#, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "" -"extension: die eingebaute Funktion »%s« kann nicht als Funktionsname benutzt " -"werden" +"die eingebaute Funktion »%s« kann nicht als Variablenname verwendet werden" -#: main.c:1190 -#, fuzzy, c-format +# c-format +#: main.c:1209 +#, c-format msgid "cannot use function `%s' as variable name" -msgstr "Kann Funktion »%s« nicht als Variable oder Feld verwenden" +msgstr "Funktion »%s« kann nicht als Name einer Variablen verwendet werden" -#: main.c:1243 +#: main.c:1262 msgid "floating point exception" msgstr "Fließkomma-Ausnahme" -#: main.c:1250 +#: main.c:1269 msgid "fatal error: internal error" msgstr "Fataler Fehler: interner Fehler" -#: main.c:1265 +#: main.c:1284 msgid "fatal error: internal error: segfault" msgstr "Fataler Fehler: interner Fehler: Speicherbegrenzungsfehler" -#: main.c:1277 +#: main.c:1296 msgid "fatal error: internal error: stack overflow" msgstr "Fataler Fehler: interner Fehler: Stapelüberlauf" -#: main.c:1327 +#: main.c:1346 #, c-format msgid "no pre-opened fd %d" msgstr "Kein bereits geöffneter Dateideskriptor %d" -#: main.c:1334 +#: main.c:1353 #, c-format msgid "could not pre-open /dev/null for fd %d" -msgstr "Konnte /dev/null nicht für Dateideskriptor %d öffnen" - -#: main.c:1357 main.c:1366 -#, c-format -msgid "could not find groups: %s" -msgstr "Die Gruppen konnten nicht gefunden werden: %s" +msgstr "/dev/null konnte nicht für Dateideskriptor %d geöffnet werden" #: msg.c:63 #, c-format @@ -2021,15 +2027,15 @@ #: node.c:517 #, c-format msgid "old awk does not support the `\\%c' escape sequence" -msgstr "Das alte awk unterstützt die Fluchsequenz »\\%c« nicht" +msgstr "Das alte awk unterstützt die Fluchsequenz »\\%c« nicht" #: node.c:568 msgid "POSIX does not allow `\\x' escapes" -msgstr "POSIX erlabut keine »\\x«-Escapes" +msgstr "POSIX erlaubt keine »\\x«-Escapes" #: node.c:574 msgid "no hex digits in `\\x' escape sequence" -msgstr "In der »\\x«-Fluchsequenz sind keine hexadezimalen Zahlen" +msgstr "In der »\\x«-Fluchtsequenz sind keine hexadezimalen Zahlen" #: node.c:596 #, c-format @@ -2037,7 +2043,7 @@ "hex escape \\x%.*s of %d characters probably not interpreted the way you " "expect" msgstr "" -"Die Hex-Sequenz \\x%.*s aus %d Zeichen wird wird wahrscheinlich nicht wie " +"Die Hex-Sequenz \\x%.*s aus %d Zeichen wird wahrscheinlich nicht wie " "gewünscht interpretiert" #: node.c:611 @@ -2046,7 +2052,6 @@ msgstr "Fluchtsequenz »\\%c« wird wie ein normales »%c« behandelt" #: node.c:750 -#, fuzzy msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -2074,7 +2079,7 @@ #: profile.c:85 msgid "sending profile to standard error" -msgstr "Das Profil wird auf der Stadard-Fehlerausgabe ausgegeben" +msgstr "Das Profil wird auf der Standardfehlerausgabe ausgegeben" #: profile.c:203 #, c-format @@ -2099,12 +2104,12 @@ msgid "internal error: %s with null vname" msgstr "Interner Fehler: %s mit null vname" -#: profile.c:938 +#: profile.c:952 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawk-Profil, erzeugt %s\n" -#: profile.c:1317 +#: profile.c:1331 #, c-format msgid "" "\n" @@ -2113,250 +2118,98 @@ "\n" "\t# Funktionen in alphabetischer Reihenfolge\n" -#: profile.c:1356 +#: profile.c:1370 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: unbekannter Umlenkungstyp %d" -#: re.c:572 +#: re.c:573 #, c-format -msgid "range of the form `[%c-%c]' is locale dependant" +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:600 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" -msgstr "Regexp-Komponente »%.*s« sollte wahrscheinlich »[%.*s]« sein" +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 Referenze" +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 "delete: illegal use of variable `%s' as array" -#~ msgstr "delete: Benutzung der Variablen »%s« als Array ist nicht zulässig" - -#~ msgid "%s: illegal option -- %c\n" -#~ msgstr "%s: Illegale Option -- %c.\n" - -#~ msgid "\t-m[fr] val\n" -#~ msgstr "\t-m[fr] Wert\n" - -#~ msgid "\t-W compat\t\t--compat\n" -#~ msgstr "\t-W compat\t\t--compat\n" - -#~ msgid "\t-W copyleft\t\t--copyleft\n" -#~ msgstr "\t-W copyleft\t\t--copyleft\n" - -#~ msgid "\t-W usage\t\t--usage\n" -#~ msgstr "\t-W usage\t\t--usage\n" - -#~ msgid "" -#~ "\n" -#~ "To report bugs, see node `Bugs' in `gawk.info', which is\n" -#~ msgstr "" -#~ "\n" -#~ "Um Fehler zu melden, lesen Sie bitte den Abschnitt 'Bugs' in " -#~ "'gawk_info',\n" - -#~ msgid "invalid syntax in name `%s' for variable assignment" -#~ msgstr "Ungültige Syntax im Namen '%s' für Variablenzuweisung" - -#~ msgid "internal error: Node_var_array with null vname" -#~ msgstr "Interner Fehler: Node_var_array with null vname" - -#~ msgid "or used in other expression context" -#~ msgstr "or in anderem Kontext benutzt" - -#~ msgid "illegal type (%s) in tree_eval" -#~ msgstr "Illegaler Typ (%s) in tree_eval" - -#~ msgid "`%s' is a function, assignment is not allowed" -#~ msgstr "'%s' ist eine Funktion, Zuweisungen sind nicht erlaubt" - -#~ msgid "" -#~ "\t# BEGIN block(s)\n" -#~ "\n" -#~ msgstr "" -#~ "\t# BEGIN block(s)\n" -#~ "\n" - -#~ msgid "unexpected type %s in prec_level" -#~ msgstr "Unerwarteter Typ %s in prec_level" - -#~ msgid "BEGIN blocks must have an action part" -#~ msgstr "BEGIN-Blöcke müssen einen Aktionsteil haben" - -#~ msgid "statement may have no effect" -#~ msgstr "Statement möglicherweise ohne Effekt" - -#~ msgid "non-redirected `getline' undefined inside BEGIN or END action" -#~ msgstr "" -#~ "Nicht-umgelenktes 'getline' ist innerhalb der BEGIN- und END-Aktion nicht " -#~ "definiert" - -#~ msgid "call of `length' without parentheses is deprecated by POSIX" -#~ msgstr "Aufruf von 'length' ohne Klammern ist in POSIX-Mode veraltet" - -#~ msgid "fptr %x not in tokentab\n" -#~ msgstr "fptr %x nicht in tokentab\n" - -#~ msgid "gsub third parameter is not a changeable object" -#~ msgstr "Der dritte Parameter von gsub ist ein unveränderliches Objekt" - -#~ msgid "Unfinished \\ escape" -#~ msgstr "Nicht-beendetes \\\\-Escape" - -#~ msgid "unfinished repeat count" -#~ msgstr "Nicht-beendeter Wiederholungszähler" - -#~ msgid "malformed repeat count" -#~ msgstr "Fehlerhafter Wiederholungszähler" - -#~ msgid "Unbalanced [" -#~ msgstr "[ wird nicht geschlossen" - -#~ msgid "Unbalanced (" -#~ msgstr "( wird nicht geschlossen" - -#~ msgid "No regexp syntax bits specified" -#~ msgstr "Kein Regulärer Ausdruck angegeben" +#~ msgid "could not find groups: %s" +#~ msgstr "Die Gruppen konnten nicht gefunden werden: %s" -#~ msgid "Unbalanced )" -#~ msgstr ") wird nicht geöffnet" - -#~ msgid "out of memory" -#~ msgstr "Kein Speicher mehr" - -#~ msgid "field %d in FIELDWIDTHS, must be > 0" -#~ msgstr "Feld %d in FIELDWIDTHS muss > 0 sein" - -#~ msgid "`break' outside a loop is not portable" -#~ msgstr "'break' außerhalb einer Schleife ist nicht portabel" - -#~ msgid "`continue' outside a loop is not portable" -#~ msgstr "'continue' außerhalb einer Schleife ist nicht portabel" - -#~ msgid "`next' cannot be called from a BEGIN rule" -#~ msgstr "'next' kann nicht in einer BEGIN-Regel benutzt werden" - -#~ msgid "`nextfile' cannot be called from a BEGIN rule" -#~ msgstr "'nextfile' kann nicht in einer BEGIN-Regel benutzt werden" - -#~ msgid "" -#~ "concatenation: side effects in one expression have changed the length of " -#~ "another!" +#~ msgid "assignment is not allowed to result of builtin function" #~ msgstr "" -#~ "Konkatenierung: Seiteneffekte in einem Ausdruck haben die Länge des " -#~ "anderen\n" -#~ "geändert!" - -#~ msgid "function %s called\n" -#~ msgstr "Funktion %s aufgerufen\n" - -#~ msgid "\t# -- main --\n" -#~ msgstr "\t# -- main --\n" - -#~ msgid "invalid tree type %s in redirect()" -#~ msgstr "Ungültiger Tree-Typ %s in redirect()" - -#~ msgid "can't open two way socket `%s' for input/output (%s)" -#~ msgstr "Kann bidirektionalen Socket '%s' nicht für Ein-/Ausgabe öffnen (%s)" - -#~ msgid "/inet/raw client not ready yet, sorry" -#~ msgstr "/inet/raw Client noch nicht fertig" - -#~ msgid "only root may use `/inet/raw'" -#~ msgstr "Nur root darf '/inet/raw' benutzen" - -#~ msgid "/inet/raw server not ready yet, sorry" -#~ msgstr "'/inet/raw'-Server noch nicht fertig" - -#~ msgid "file `%s' is a directory" -#~ msgstr "Datei '%s' ist ein Verzeichnis" - -#~ msgid "use `PROCINFO[\"%s\"]' instead of `%s'" -#~ msgstr "Benutzen Sie 'PROCINFO[\"%s\"]' statt '%s'" - -#~ msgid "use `PROCINFO[...]' instead of `/dev/user'" -#~ msgstr "Benutzen Sie 'PROCINFO[...] statt '/dev/user'" - -#~ msgid "pipe from `%s': could not set close-on-exec (fcntl: %s)" -#~ msgstr "Pipe von '%s': Konnte close-on-exec nicht setzen (fcntl: %s)" - -#~ msgid "pipe to `%s': could not set close-on-exec (fcntl: %s)" -#~ msgstr "Pipe zu '%s': Konnte close-on-exec nicht setzen (fcntl: %s)" - -#~ msgid "internal error: file `%s', line %d\n" -#~ msgstr "Interner Fehler: Datei '%s', Zeile %d\n" - -#~ msgid "can't convert string to float" -#~ msgstr "Kann String nicht in Gleitkommazahl konvertieren" +#~ "Zuweisungen an das Ergebnis einer eingebauten Funktion sind nicht erlaubt" diff -urN gawk-4.0.0/po/es.po gawk-4.0.1/po/es.po --- gawk-4.0.0/po/es.po 2011-06-23 09:46:20.000000000 +0300 +++ gawk-4.0.1/po/es.po 2012-03-28 22:03:46.000000000 +0200 @@ -1,19 +1,19 @@ -# Mensajes en español para gawk-3.1.83. -# 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 , 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011. +# Cristian Othón Martínez Vera , 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012. # 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-06-23 09:46+0300\n" -"PO-Revision-Date: 2011-05-22 23:33-0500\n" -"Last-Translator: Cristian Othón Martínez Vera \n" +"POT-Creation-Date: 2012-03-28 22:03+0200\n" +"PO-Revision-Date: 2012-01-30 07:42-0600\n" +"Last-Translator: Cristian Othón Martínez Vera \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: array.c:140 @@ -23,29 +23,29 @@ #: array.c:248 msgid "attempt to use a scalar value as array" -msgstr "se intentó usar un valor escalar como una matriz" +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" +msgstr "se intentó usar la función `%s' como una matriz" #: array.c:254 #, c-format msgid "attempt to use scalar parameter `%s' as an array" -msgstr "se intentó usar el parámetro escalar `%s como una matriz'" +msgstr "se intentó usar el parámetro escalar `%s como una matriz'" #: array.c:257 #, c-format msgid "attempt to use scalar `%s' as an array" -msgstr "se intentó usar el escalar `%s' como una matriz" +msgstr "se intentó usar el escalar `%s' como una matriz" -#: array.c:302 array.c:707 builtin.c:81 builtin.c:1381 builtin.c:1423 -#: builtin.c:1436 builtin.c:1851 builtin.c:1863 eval.c:1135 eval.c:1139 -#: eval.c:1473 eval.c:1720 +#: array.c:302 array.c:707 builtin.c:84 builtin.c:1385 builtin.c:1427 +#: builtin.c:1440 builtin.c:1859 builtin.c:1871 eval.c:1135 eval.c:1139 +#: eval.c:1495 eval.c:1812 #, c-format msgid "attempt to use array `%s' in a scalar context" -msgstr "se intentó usar la matriz `%s' en un contexto escalar" +msgstr "se intentó usar la matriz `%s' en un contexto escalar" #: array.c:513 #, c-format @@ -55,37 +55,37 @@ #: 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" +msgstr "el subíndice de la matriz `%s' es la cadena nula" #: array.c:723 #, c-format msgid "delete: index `%s' not in array `%s'" -msgstr "delete: el índice `%s' no está en la matriz `%s'" +msgstr "delete: el índice `%s' no está en la matriz `%s'" -#: array.c:734 eval.c:1773 +#: array.c:734 eval.c:1865 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" -msgstr "se intentó usar el dato escalar `%s[\"%.*s\"]' como una matriz" +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" +msgstr "%s: vacío (nulo)\n" #: array.c:915 #, c-format msgid "%s: empty (zero)\n" -msgstr "%s: vacío (cero)\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" +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" +msgstr "%s: es un parámetro\n" #: array.c:958 #, c-format @@ -136,45 +136,45 @@ "asorti: no se puede usar una submatriz del segundo argumento para el primer " "argumento" -#: array.c:1659 +#: array.c:1655 #, c-format msgid "`%s' is invalid as a function name" -msgstr "`%s' es inválido como un nombre de función" +msgstr "`%s' es inválido como un nombre de función" -#: array.c:1663 +#: array.c:1659 #, c-format msgid "sort comparison function `%s' is not defined" -msgstr "la función de comparación de ordenamiento `%s' no está definida" +msgstr "la función de comparación de ordenamiento `%s' no está definida" #: awkgram.y:249 #, c-format msgid "%s blocks must have an action part" -msgstr "los bloques %s deben tener una parte de acción" +msgstr "los bloques %s deben tener una parte de acción" #: awkgram.y:252 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" +msgstr "cada regla debe tener un patrón o una parte de acción" #: awkgram.y:323 awkgram.y:334 msgid "old awk does not support multiple `BEGIN' or `END' rules" -msgstr "el awk antiguo no admite múltiples reglas `BEGIN' o `END'" +msgstr "el awk antiguo no admite múltiples reglas `BEGIN' o `END'" #: awkgram.y:371 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" -msgstr "`%s' es una función interna, no se puede redefinir" +msgstr "`%s' es una función interna, no se puede redefinir" #: awkgram.y:432 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 " +"la constante de expresión regular `//' parece un comentario de C++, pero no " "lo es" #: awkgram.y:436 #, 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 " +"la constante de expresión regular `/%s/' parece un comentario de C, pero no " "lo es" #: awkgram.y:528 @@ -184,817 +184,822 @@ #: awkgram.y:549 msgid "duplicate `default' detected in switch body" -msgstr "se detectó un `default' duplicado en el cuerpo de un switch" +msgstr "se detectó un `default' duplicado en el cuerpo de un switch" -#: awkgram.y:811 +#: awkgram.y:809 msgid "`break' is not allowed outside a loop or switch" msgstr "no se permite `break' fuera de un bucle o switch" -#: awkgram.y:820 +#: awkgram.y:818 msgid "`continue' is not allowed outside a loop" msgstr "no se permite `continue' fuera de un bucle" -#: awkgram.y:830 +#: awkgram.y:828 #, c-format msgid "`next' used in %s action" -msgstr "se usó `next' en la acción %s" +msgstr "se usó `next' en la acción %s" -#: awkgram.y:838 +#: awkgram.y:836 msgid "`nextfile' is a gawk extension" -msgstr "`nextfile' es una extensión de gawk" +msgstr "`nextfile' es una extensión de gawk" -#: awkgram.y:843 +#: awkgram.y:841 #, c-format msgid "`nextfile' used in %s action" -msgstr "se usó `nextfile' en la acción %s" +msgstr "se usó `nextfile' en la acción %s" -#: awkgram.y:867 +#: awkgram.y:865 msgid "`return' used outside function context" -msgstr "se usó `return' fuera del contexto de la función" +msgstr "se usó `return' fuera del contexto de la función" -#: awkgram.y:927 +#: awkgram.y:925 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:997 awkgram.y:1001 awkgram.y:1025 +#: awkgram.y:995 awkgram.y:999 awkgram.y:1023 msgid "`delete array' is a gawk extension" -msgstr "`delete array' es una extensión de gawk" +msgstr "`delete array' es una extensión de gawk" -#: awkgram.y:1021 +#: awkgram.y:1019 msgid "`delete(array)' is a non-portable tawk extension" -msgstr "`delete(array)' es una extensión de tawk que no es transportable" +msgstr "`delete(array)' es una extensión de tawk que no es transportable" -#: awkgram.y:1137 +#: awkgram.y:1135 msgid "multistage two-way pipelines don't work" -msgstr "las líneas de trabajo de dos vías multiestado no funcionan" +msgstr "las líneas de trabajo de dos vías multiestado no funcionan" -#: awkgram.y:1240 +#: awkgram.y:1238 msgid "regular expression on right of assignment" -msgstr "expresión regular del lado derecho de una asignación" +msgstr "expresión regular del lado derecho de una asignación" -#: awkgram.y:1251 +#: awkgram.y:1249 msgid "regular expression on left of `~' or `!~' operator" -msgstr "expresión regular a la izquierda del operador `~' o `!~'" +msgstr "expresión regular a la izquierda del operador `~' o `!~'" -#: awkgram.y:1267 awkgram.y:1421 +#: awkgram.y:1265 awkgram.y:1419 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'" +"el awk antiguo no admite la palabra clave `in' excepto después de `for'" -#: awkgram.y:1277 +#: awkgram.y:1275 msgid "regular expression on right of comparison" -msgstr "expresión regular a la derecha de una comparación" +msgstr "expresión regular a la derecha de una comparación" -#: awkgram.y:1396 +#: awkgram.y:1394 #, c-format msgid "`getline var' invalid inside `%s' rule" -msgstr "`getline var' inválido dentro de la regla `%s'" +msgstr "`getline var' inválido dentro de la regla `%s'" -#: awkgram.y:1399 eval.c:2409 +#: awkgram.y:1397 eval.c:2504 #, c-format msgid "`getline' invalid inside `%s' rule" -msgstr "`getline' inválido dentro de la regla `%s'" +msgstr "`getline' inválido dentro de la regla `%s'" -#: awkgram.y:1404 +#: awkgram.y:1402 msgid "non-redirected `getline' undefined inside END action" -msgstr "`getline' no redirigido indefinido dentro de la acción de END" +msgstr "`getline' no redirigido indefinido dentro de la acción de END" -#: awkgram.y:1423 +#: awkgram.y:1421 msgid "old awk does not support multidimensional arrays" msgstr "el awk antiguo no admite matrices multidimensionales" -#: awkgram.y:1519 +#: awkgram.y:1517 msgid "call of `length' without parentheses is not portable" -msgstr "la llamada de `length' sin paréntesis no es transportable" +msgstr "la llamada de `length' sin paréntesis no es transportable" -#: awkgram.y:1582 +#: awkgram.y:1580 msgid "indirect function calls are a gawk extension" -msgstr "las llamadas indirectas a función son una extensión de gawk" +msgstr "las llamadas indirectas a función son una extensión de gawk" -#: awkgram.y:1595 +#: awkgram.y:1593 #, 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" +"no se puede usar la variable especial `%s' como llamada indirecta a función" -#: awkgram.y:1673 +#: awkgram.y:1671 msgid "invalid subscript expression" -msgstr "expresión de subíndice inválida" +msgstr "expresión de subíndice inválida" -#: awkgram.y:1713 +#: awkgram.y:1711 msgid "use of non-array as array" msgstr "uso de una matriz que no es matriz" -#: awkgram.y:1977 awkgram.y:1997 msg.c:98 +#: awkgram.y:1975 awkgram.y:1995 msg.c:98 msgid "warning: " msgstr "aviso: " -#: awkgram.y:1995 msg.c:130 +#: awkgram.y:1993 msg.c:130 msgid "fatal: " msgstr "fatal: " -#: awkgram.y:2045 +#: awkgram.y:2043 msgid "unexpected newline or end of string" -msgstr "nueva línea o fin de la cadena inesperados" +msgstr "nueva línea o fin de la cadena inesperados" -#: awkgram.y:2301 awkgram.y:2359 awkgram.y:2543 +#: awkgram.y:2300 awkgram.y:2358 awkgram.y:2542 #, 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:2302 awkgram.y:2360 builtin.c:119 +#: awkgram.y:2301 awkgram.y:2359 builtin.c:122 msgid "reason unknown" -msgstr "razón desconocida" +msgstr "razón desconocida" -#: awkgram.y:2318 +#: awkgram.y:2317 #, c-format msgid "already included source file `%s'" -msgstr "ya se incluyó el fichero fuente `%s'" +msgstr "ya se incluyó el fichero fuente `%s'" -#: awkgram.y:2344 +#: awkgram.y:2343 msgid "@include is a gawk extension" -msgstr "@include es una extensión de gawk" +msgstr "@include es una extensión de gawk" -#: awkgram.y:2350 +#: awkgram.y:2349 msgid "empty filename after @include" -msgstr "nombre de fichero vacío después de @include" +msgstr "nombre de fichero vacío después de @include" -#: awkgram.y:2495 +#: awkgram.y:2494 msgid "empty program text on command line" -msgstr "texto de programa vacío en la linea de órdenes" +msgstr "texto de programa vacío en la linea de órdenes" -#: awkgram.y:2610 +#: awkgram.y:2609 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "no se puede leer el fichero fuente `%s' (%s)" -#: awkgram.y:2621 +#: awkgram.y:2620 #, c-format msgid "source file `%s' is empty" -msgstr "el fichero fuente `%s' está vacío" +msgstr "el fichero fuente `%s' está vacío" -#: awkgram.y:2806 +#: awkgram.y:2797 msgid "source file does not end in newline" -msgstr "el fichero fuente no termina con línea nueva" +msgstr "el fichero fuente no termina con línea nueva" -#: awkgram.y:2883 +#: awkgram.y:2900 msgid "unterminated regexp ends with `\\' at end of file" -msgstr "expresión regular sin terminar termina con `\\` al final del fichero" +msgstr "expresión regular sin terminar termina con `\\` al final del fichero" -#: awkgram.y:2907 +#: awkgram.y:2924 #, 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 " +"%s: %d: el modificador de expresión regular `/.../%c` de tawk no funciona en " "gawk" -#: awkgram.y:2911 +#: awkgram.y:2928 #, 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" +"el modificador de expresión regular `/.../%c` de tawk no funciona en gawk" -#: awkgram.y:2918 +#: awkgram.y:2935 msgid "unterminated regexp" -msgstr "expresión regular sin terminar" +msgstr "expresión regular sin terminar" -#: awkgram.y:2922 +#: awkgram.y:2939 msgid "unterminated regexp at end of file" -msgstr "expresión regular sin terminar al final del fichero" +msgstr "expresión regular sin terminar al final del fichero" -#: awkgram.y:2981 +#: awkgram.y:2998 msgid "use of `\\ #...' line continuation is not portable" -msgstr "el uso de la continuación de línea `\\ #...' no es transportable" +msgstr "el uso de la continuación de línea `\\ #...' no es transportable" -#: awkgram.y:2997 +#: awkgram.y:3014 msgid "backslash not last character on line" -msgstr "la barra invertida no es el último caracter en la línea" +msgstr "la barra invertida no es el último caracter en la línea" -#: awkgram.y:3058 +#: awkgram.y:3075 msgid "POSIX does not allow operator `**='" msgstr "POSIX no permite el operador `**='" -#: awkgram.y:3060 +#: awkgram.y:3077 msgid "old awk does not support operator `**='" msgstr "el awk antiguo no admite el operador `**='" -#: awkgram.y:3069 +#: awkgram.y:3086 msgid "POSIX does not allow operator `**'" msgstr "POSIX no permite el operador `**'" -#: awkgram.y:3071 +#: awkgram.y:3088 msgid "old awk does not support operator `**'" msgstr "el awk antiguo no admite el operador `**='" -#: awkgram.y:3106 +#: awkgram.y:3123 msgid "operator `^=' is not supported in old awk" msgstr "el operador `^=' no se admite en el awk antiguo" -#: awkgram.y:3114 +#: awkgram.y:3131 msgid "operator `^' is not supported in old awk" msgstr "el operador `^' no se admite en el awk antiguo" -#: awkgram.y:3207 awkgram.y:3223 +#: awkgram.y:3224 awkgram.y:3240 msgid "unterminated string" msgstr "cadena sin terminar" -#: awkgram.y:3419 +#: awkgram.y:3436 #, c-format msgid "invalid char '%c' in expression" -msgstr "caracter '%c' inválido en la expresión" +msgstr "caracter '%c' inválido en la expresión" -#: awkgram.y:3466 +#: awkgram.y:3483 #, c-format msgid "`%s' is a gawk extension" -msgstr "`%s' es una extensión de gawk" +msgstr "`%s' es una extensión de gawk" -#: awkgram.y:3471 +#: awkgram.y:3488 #, c-format msgid "`%s' is a Bell Labs extension" -msgstr "`%s' es una extensión de Bell Labs" +msgstr "`%s' es una extensión de Bell Labs" -#: awkgram.y:3476 +#: awkgram.y:3493 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX no permite `%s'" -#: awkgram.y:3484 +#: awkgram.y:3501 #, c-format msgid "`%s' is not supported in old awk" msgstr "`%s' no se admite en el awk antiguo" -#: awkgram.y:3551 +#: awkgram.y:3568 msgid "`goto' considered harmful!\n" -msgstr "¡`goto' se considera dañino!\n" +msgstr "¡`goto' se considera dañino!\n" -#: awkgram.y:3604 +#: awkgram.y:3619 #, 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:3639 awkgram.y:3642 -msgid "match: third argument is a gawk extension" -msgstr "match: el tercer argumento es una extensión de gawk" +msgstr "%d es inválido como número de argumentos para %s" -#: awkgram.y:3670 +#: awkgram.y:3654 #, 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" +"%s: la literal de cadena como último argumento de substitute no tiene efecto" -#: awkgram.y:3675 +#: awkgram.y:3659 #, c-format msgid "%s third parameter is not a changeable object" msgstr "el tercer argumento de %s no es un objecto modificable" -#: awkgram.y:3761 awkgram.y:3764 +#: awkgram.y:3732 awkgram.y:3735 +msgid "match: third argument is a gawk extension" +msgstr "match: el tercer argumento es una extensión de gawk" + +#: awkgram.y:3789 awkgram.y:3792 msgid "close: second argument is a gawk extension" -msgstr "close: el segundo argumento es una extensión de gawk" +msgstr "close: el segundo argumento es una extensión de gawk" -#: awkgram.y:3776 +#: awkgram.y:3804 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "el uso de dcgettext(_\"...\") es incorrecto: quite el subrayado inicial" -#: awkgram.y:3791 +#: awkgram.y:3819 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "el uso de dcngettext(_\"...\") es incorrecto: quite el subrayado inicial" -#: awkgram.y:3883 +#: awkgram.y:3911 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" -msgstr "función `%s': parámetro #%d, `%s', duplica el parámetro #%d" +msgstr "función `%s': parámetro #%d, `%s', duplica el parámetro #%d" -#: awkgram.y:3925 +#: awkgram.y:3953 #, c-format msgid "function `%s': parameter `%s' shadows global variable" -msgstr "función `%s': parámetro `%s' oscurece la variable global" +msgstr "función `%s': parámetro `%s' oscurece la variable global" -#: awkgram.y:4083 +#: awkgram.y:4111 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "no se puede abrir `%s' para escritura (%s)" -#: awkgram.y:4084 +#: awkgram.y:4112 msgid "sending variable list to standard error" -msgstr "se envía la lista de variables a la salida estándar de error" +msgstr "se envía la lista de variables a la salida estándar de error" -#: awkgram.y:4090 +#: awkgram.y:4118 #, c-format msgid "%s: close failed (%s)" -msgstr "%s: falló close (%s)" +msgstr "%s: falló close (%s)" -#: awkgram.y:4142 +#: awkgram.y:4170 msgid "shadow_funcs() called twice!" -msgstr "¡se llamó shadow_funcs() dos veces!" +msgstr "¡se llamó shadow_funcs() dos veces!" -#: awkgram.y:4148 +#: awkgram.y:4176 msgid "there were shadowed variables." msgstr "hay variables opacadas." -#: awkgram.y:4178 +#: awkgram.y:4206 #, 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" +"función `%s': no se puede usar un nombre de función como nombre de parámetro" -#: awkgram.y:4182 +#: awkgram.y:4210 #, 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" +"función `%s': no se puede usar la variable especial `%s' como un parámetro " +"de función" -#: awkgram.y:4198 +#: awkgram.y:4226 #, c-format msgid "function name `%s' previously defined" -msgstr "el nombre de función `%s' se definió previamente" +msgstr "el nombre de función `%s' se definió previamente" -#: awkgram.y:4366 awkgram.y:4372 +#: awkgram.y:4394 awkgram.y:4400 #, c-format msgid "function `%s' called but never defined" -msgstr "se llamó a la función `%s' pero nunca se definió" +msgstr "se llamó a la función `%s' pero nunca se definió" -#: awkgram.y:4375 +#: awkgram.y:4403 #, c-format msgid "function `%s' defined but never called directly" -msgstr "se definió la función `%s' pero nunca se llamó directamente" +msgstr "se definió la función `%s' pero nunca se llamó directamente" -#: awkgram.y:4407 +#: awkgram.y:4435 #, 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" +"la constante de expresión regular para el parámetro #%d da un valor booleano" -#: awkgram.y:4516 +#: awkgram.y:4544 #, c-format msgid "" "function `%s' called with space between name and `(',\n" "or used as a variable or an array" msgstr "" -"se llamó la función `%s' con espacio entre el nombre y el `(',\n" -"o se usó como una variable o una matriz" +"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:4763 eval.c:1964 +#: awkgram.y:4791 eval.c:2056 msgid "division by zero attempted" -msgstr "se intentó una división por cero" +msgstr "se intentó una división por cero" -#: awkgram.y:4772 eval.c:1980 +#: awkgram.y:4800 eval.c:2072 #, c-format msgid "division by zero attempted in `%%'" -msgstr "se intentó una división por cero en `%%'" +msgstr "se intentó una división por cero en `%%'" -#: builtin.c:117 +#: builtin.c:120 #, c-format msgid "%s to \"%s\" failed (%s)" -msgstr "falló %s a \"%s\" (%s)" +msgstr "falló %s a \"%s\" (%s)" -#: builtin.c:118 +#: builtin.c:121 msgid "standard output" -msgstr "salida estándar" +msgstr "salida estándar" -#: builtin.c:132 +#: builtin.c:135 msgid "exp: received non-numeric argument" -msgstr "exp: se recibió un argumento que no es númerico" +msgstr "exp: se recibió un argumento que no es númerico" -#: builtin.c:138 +#: builtin.c:141 #, c-format msgid "exp: argument %g is out of range" -msgstr "exp: el argumento %g está fuera de rango" +msgstr "exp: el argumento %g está fuera de rango" -#: builtin.c:197 +#: builtin.c:200 #, 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 " +"fflush: no se puede limpiar: se abrió la tubería `%s' para lectura, no para " "escritura" -#: builtin.c:200 +#: builtin.c:203 #, 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 " +"fflush: no se puede limpiar: se abrió el fichero `%s' para lectura, no para " "escritura" -#: builtin.c:212 +#: builtin.c:215 #, 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" +msgstr "fflush: `%s' no es un fichero abierto, tubería o co-proceso" -#: builtin.c:330 +#: builtin.c:333 msgid "index: received non-string first argument" msgstr "index: el primer argumento recibido no es una cadena" -#: builtin.c:332 +#: builtin.c:335 msgid "index: received non-string second argument" msgstr "index: el segundo argumento recibido no es una cadena" -#: builtin.c:454 +#: builtin.c:457 msgid "int: received non-numeric argument" -msgstr "int: se recibió un argumento que no es númerico" +msgstr "int: se recibió un argumento que no es númerico" -#: builtin.c:490 +#: builtin.c:493 msgid "length: received array argument" -msgstr "length: se recibió un argumento de matriz" +msgstr "length: se recibió un argumento de matriz" -#: builtin.c:493 +#: builtin.c:496 msgid "`length(array)' is a gawk extension" -msgstr "`length(array)' es una extensión de gawk" +msgstr "`length(array)' es una extensión de gawk" -#: builtin.c:501 +#: builtin.c:504 msgid "length: received non-string argument" -msgstr "length: se recibió un argumento que no es una cadena" +msgstr "length: se recibió un argumento que no es una cadena" -#: builtin.c:532 +#: builtin.c:535 msgid "log: received non-numeric argument" -msgstr "log: se recibió un argumento que no es númerico" +msgstr "log: se recibió un argumento que no es númerico" -#: builtin.c:535 +#: builtin.c:538 #, c-format msgid "log: received negative argument %g" -msgstr "log: se recibió el argumento negativo %g" +msgstr "log: se recibió el argumento negativo %g" -#: builtin.c:691 builtin.c:696 +#: builtin.c:694 builtin.c:699 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:758 +#: builtin.c:762 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "se descarta la anchura del campo para el especificador `%%'" -#: builtin.c:760 +#: builtin.c:764 #, c-format msgid "precision is ignored for `%%' specifier" -msgstr "se descarta la precisión para el especificador `%%'" +msgstr "se descarta la precisión para el especificador `%%'" -#: builtin.c:762 +#: builtin.c:766 #, 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 `%%'" +"se descartan la anchura del campo y la precisión para el especificador `%%'" -#: builtin.c:813 +#: builtin.c:817 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal: no se permite `$' en los formatos de awk" -#: builtin.c:822 +#: builtin.c:826 msgid "fatal: arg count with `$' must be > 0" msgstr "fatal: la cuenta de argumentos con `$' debe ser > 0" -#: builtin.c:826 +#: builtin.c:830 #, 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 " +"fatal: la cuenta de argumentos %ld es mayor que el número total de " "argumentos proporcionados" -#: builtin.c:830 +#: builtin.c:834 msgid "fatal: `$' not permitted after period in format" -msgstr "fatal: no se permite `$' después de un punto en el formato" +msgstr "fatal: no se permite `$' después de un punto en el formato" -#: builtin.c:846 +#: builtin.c:850 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" -"fatal: no se proporciona `$' para la anchura o la precisión del campo " +"fatal: no se proporciona `$' para la anchura o la precisión del campo " "posicional" -#: builtin.c:917 +#: builtin.c:921 msgid "`l' is meaningless in awk formats; ignored" msgstr "`l' no tiene significado en los formatos de awk; se descarta" -#: builtin.c:921 +#: builtin.c:925 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fatal: no se permite `l' en los formatos POSIX de awk" -#: builtin.c:934 +#: builtin.c:938 msgid "`L' is meaningless in awk formats; ignored" msgstr "`L' no tiene significado en los formatos de awk; se descarta" -#: builtin.c:938 +#: builtin.c:942 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "fatal: no se permite `L' en los formatos POSIX de awk" -#: builtin.c:951 +#: builtin.c:955 msgid "`h' is meaningless in awk formats; ignored" msgstr "`h' no tiene significado en los formatos de awk; se descarta" -#: builtin.c:955 +#: builtin.c:959 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fatal: no se permite `h' en los formatos POSIX de awk" -#: builtin.c:1268 +#: builtin.c:1272 #, 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'" +msgstr "[s]printf: el valor %g está fuera del rango para el formato `%%%c'" -#: builtin.c:1328 +#: builtin.c:1332 #, 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" +"se descarta el carácter especificador de formato `%c' desconocido: no se " +"convirtió ningún argumento" -#: builtin.c:1333 +#: builtin.c:1337 msgid "fatal: not enough arguments to satisfy format string" msgstr "" "fatal: no hay suficientes argumentos para satisfacer a la cadena de formato" -#: builtin.c:1335 +#: builtin.c:1339 msgid "^ ran out for this one" -msgstr "se acabó ^ para éste" +msgstr "se acabó ^ para éste" -#: builtin.c:1342 +#: builtin.c:1346 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: el especificador de formato no tiene letras de control" -#: builtin.c:1345 +#: builtin.c:1349 msgid "too many arguments supplied for format string" msgstr "se proporcionaron demasiados argumentos para la cadena de formato" -#: builtin.c:1419 builtin.c:1430 +#: builtin.c:1423 builtin.c:1434 msgid "printf: no arguments" msgstr "printf: sin argumentos" -#: builtin.c:1471 +#: builtin.c:1475 msgid "sqrt: received non-numeric argument" -msgstr "sqrt: se recibió un argumento que no es un númerico" +msgstr "sqrt: se recibió un argumento que no es un númerico" -#: builtin.c:1475 +#: builtin.c:1479 #, c-format msgid "sqrt: called with negative argument %g" -msgstr "sqrt: se llamó con el argumento negativo %g" +msgstr "sqrt: se llamó con el argumento negativo %g" -#: builtin.c:1499 +#: builtin.c:1503 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: la longitud %g no es >= 1" -#: builtin.c:1501 +#: builtin.c:1505 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: la longitud %g no es >= 0" -#: builtin.c:1508 +#: builtin.c:1512 #, c-format msgid "substr: non-integer length %g will be truncated" -msgstr "substr: se truncará la longitud no entera %g" +msgstr "substr: se truncará la longitud no entera %g" -#: builtin.c:1513 +#: builtin.c:1517 #, 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 " +"substr: la longitud %g es demasiado grande para ser índice de cadena, se " "trunca a %g" -#: builtin.c:1525 +#: builtin.c:1529 #, c-format msgid "substr: start index %g is invalid, using 1" -msgstr "substr: el índice de inicio %g es inválido, se usa 1" +msgstr "substr: el índice de inicio %g es inválido, se usa 1" -#: builtin.c:1530 +#: builtin.c:1534 #, c-format msgid "substr: non-integer start index %g will be truncated" -msgstr "substr: se truncará el índice de inicio no entero %g" +msgstr "substr: se truncará el índice de inicio no entero %g" -#: builtin.c:1555 +#: builtin.c:1559 msgid "substr: source string is zero length" msgstr "substr: la cadena de origen es de longitud cero" -#: builtin.c:1571 +#: builtin.c:1575 #, 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" +msgstr "substr: el índice de inicio %g está después del fin de la cadena" -#: builtin.c:1579 +#: builtin.c:1583 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" msgstr "" -"substr: la cadena %g en el índice de inicio %g excede la longitud del primer " +"substr: la cadena %g en el índice de inicio %g excede la longitud del primer " "argumento (%lu)" -#: builtin.c:1652 +#: builtin.c:1657 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" -"strftime: el valor de formato en PROCINFO[\"strftime\"] tiene tipo numérico" +"strftime: el valor de formato en PROCINFO[\"strftime\"] tiene tipo numérico" -#: builtin.c:1675 +#: builtin.c:1680 msgid "strftime: received non-numeric second argument" -msgstr "strftime: el segundo argumento recibido no es númerico" +msgstr "strftime: el segundo argumento recibido no es númerico" + +#: builtin.c:1683 +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:1682 +#: builtin.c:1690 msgid "strftime: received non-string first argument" msgstr "strftime: el primer argumento recibido no es una cadena" -#: builtin.c:1688 +#: builtin.c:1696 msgid "strftime: received empty format string" -msgstr "strftime: se recibió una cadena de formato vacía" +msgstr "strftime: se recibió una cadena de formato vacía" -#: builtin.c:1754 +#: builtin.c:1762 msgid "mktime: received non-string argument" -msgstr "mktime: se recibió un argumento que no es una cadena" +msgstr "mktime: se recibió un argumento que no es una cadena" -#: builtin.c:1771 +#: builtin.c:1779 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" +"mktime: por lo menos uno de los valores está fuera del rango por defecto" -#: builtin.c:1806 +#: builtin.c:1814 msgid "'system' function not allowed in sandbox mode" -msgstr "no se permite la función 'system' en modo sandbox" +msgstr "no se permite la función 'system' en modo sandbox" -#: builtin.c:1811 +#: builtin.c:1819 msgid "system: received non-string argument" -msgstr "system: se recibió un argumento que no es una cadena" +msgstr "system: se recibió un argumento que no es una cadena" -#: builtin.c:1866 eval.c:1165 eval.c:1698 eval.c:1711 +#: builtin.c:1874 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:1933 +#: builtin.c:1941 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "referencia al campo sin inicializar `$%d'" -#: builtin.c:2020 +#: builtin.c:2028 msgid "tolower: received non-string argument" -msgstr "tolower: se recibió un argumento que no es una cadena" +msgstr "tolower: se recibió un argumento que no es una cadena" -#: builtin.c:2054 +#: builtin.c:2062 msgid "toupper: received non-string argument" -msgstr "toupper: se recibió un argumento que no es una cadena" +msgstr "toupper: se recibió un argumento que no es una cadena" -#: builtin.c:2090 +#: builtin.c:2098 msgid "atan2: received non-numeric first argument" -msgstr "atan2: el primer argumento recibido no es númerico" +msgstr "atan2: el primer argumento recibido no es númerico" -#: builtin.c:2092 +#: builtin.c:2100 msgid "atan2: received non-numeric second argument" -msgstr "atan2: el segundo argumento recibido no es númerico" +msgstr "atan2: el segundo argumento recibido no es númerico" -#: builtin.c:2111 +#: builtin.c:2119 msgid "sin: received non-numeric argument" -msgstr "sin: se recibió un argumento que no es númerico" +msgstr "sin: se recibió un argumento que no es númerico" -#: builtin.c:2127 +#: builtin.c:2135 msgid "cos: received non-numeric argument" -msgstr "cos: se recibió un argumento que no es númerico" +msgstr "cos: se recibió un argumento que no es númerico" -#: builtin.c:2180 +#: builtin.c:2188 msgid "srand: received non-numeric argument" -msgstr "srand: se recibió un argumento que no es númerico" +msgstr "srand: se recibió un argumento que no es númerico" -#: builtin.c:2211 +#: builtin.c:2219 msgid "match: third argument is not an array" msgstr "match: el tercer argumento no es una matriz" -#: builtin.c:2718 +#: builtin.c:2483 msgid "gensub: third argument of 0 treated as 1" msgstr "gensub: el tercer argumento de 0 se trata como 1" -#: builtin.c:2757 +#: builtin.c:2776 msgid "lshift: received non-numeric first argument" -msgstr "lshift: el primer argumento recibido no es númerico" +msgstr "lshift: el primer argumento recibido no es númerico" -#: builtin.c:2759 +#: builtin.c:2778 msgid "lshift: received non-numeric second argument" -msgstr "lshift: el segundo argumento recibido no es númerico" +msgstr "lshift: el segundo argumento recibido no es númerico" -#: builtin.c:2765 +#: builtin.c:2784 #, c-format msgid "lshift(%lf, %lf): negative values will give strange results" -msgstr "lshift(%lf, %lf): los valores negativos darán resultados extraños" +msgstr "lshift(%lf, %lf): los valores negativos darán resultados extraños" -#: builtin.c:2767 +#: builtin.c:2786 #, c-format msgid "lshift(%lf, %lf): fractional values will be truncated" -msgstr "lshift(%lf, %lf): los valores fraccionarios se truncarán" +msgstr "lshift(%lf, %lf): los valores fraccionarios se truncarán" -#: builtin.c:2769 +#: builtin.c:2788 #, 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" +"lshift(%lf, %lf): un valor de desplazamiento muy grande dará resultados " +"extraños" -#: builtin.c:2794 +#: builtin.c:2813 msgid "rshift: received non-numeric first argument" -msgstr "rshift: el primer argumento recibido no es númerico" +msgstr "rshift: el primer argumento recibido no es númerico" -#: builtin.c:2796 +#: builtin.c:2815 msgid "rshift: received non-numeric second argument" -msgstr "rshift: el segundo argumento recibido no es númerico" +msgstr "rshift: el segundo argumento recibido no es númerico" -#: builtin.c:2802 +#: builtin.c:2821 #, c-format msgid "rshift(%lf, %lf): negative values will give strange results" -msgstr "rshift(%lf, %lf): los valores negativos darán resultados extraños" +msgstr "rshift(%lf, %lf): los valores negativos darán resultados extraños" -#: builtin.c:2804 +#: builtin.c:2823 #, c-format msgid "rshift(%lf, %lf): fractional values will be truncated" -msgstr "rshift(%lf, %lf): los valores fraccionarios serán truncados" +msgstr "rshift(%lf, %lf): los valores fraccionarios serán truncados" -#: builtin.c:2806 +#: builtin.c:2825 #, 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" +"rshift(%lf, %lf): un valor de desplazamiento muy grande dará resultados " +"extraños" -#: builtin.c:2831 +#: builtin.c:2850 msgid "and: received non-numeric first argument" -msgstr "and: el primer argumento recibido no es númerico" +msgstr "and: el primer argumento recibido no es númerico" -#: builtin.c:2833 +#: builtin.c:2852 msgid "and: received non-numeric second argument" -msgstr "and: el segundo argumento recibido no es númerico" +msgstr "and: el segundo argumento recibido no es númerico" -#: builtin.c:2839 +#: builtin.c:2858 #, c-format msgid "and(%lf, %lf): negative values will give strange results" -msgstr "and(%lf, %lf): los valores negativos darán resultados extraños" +msgstr "and(%lf, %lf): los valores negativos darán resultados extraños" -#: builtin.c:2841 +#: builtin.c:2860 #, c-format msgid "and(%lf, %lf): fractional values will be truncated" -msgstr "and(%lf, %lf): los valores fraccionarios serán truncados" +msgstr "and(%lf, %lf): los valores fraccionarios serán truncados" -#: builtin.c:2866 +#: builtin.c:2885 msgid "or: received non-numeric first argument" -msgstr "or: el primer argumento recibido no es númerico" +msgstr "or: el primer argumento recibido no es númerico" -#: builtin.c:2868 +#: builtin.c:2887 msgid "or: received non-numeric second argument" -msgstr "or: el segundo argumento recibido no es númerico" +msgstr "or: el segundo argumento recibido no es númerico" -#: builtin.c:2874 +#: builtin.c:2893 #, c-format msgid "or(%lf, %lf): negative values will give strange results" -msgstr "or(%lf, %lf): los valores negativos darán resultados extraños" +msgstr "or(%lf, %lf): los valores negativos darán resultados extraños" -#: builtin.c:2876 +#: builtin.c:2895 #, c-format msgid "or(%lf, %lf): fractional values will be truncated" -msgstr "or(%lf, %lf): los valores fraccionarios serán truncados" +msgstr "or(%lf, %lf): los valores fraccionarios serán truncados" -#: builtin.c:2904 +#: builtin.c:2923 msgid "xor: received non-numeric first argument" -msgstr "xor: el primer argumento recibido no es númerico" +msgstr "xor: el primer argumento recibido no es númerico" -#: builtin.c:2906 +#: builtin.c:2925 msgid "xor: received non-numeric second argument" -msgstr "xor: el segundo argumento recibido no es númerico" +msgstr "xor: el segundo argumento recibido no es númerico" -#: builtin.c:2912 +#: builtin.c:2931 #, c-format msgid "xor(%lf, %lf): negative values will give strange results" -msgstr "xor(%lf, %lf): los valores negativos darán resultados extraños" +msgstr "xor(%lf, %lf): los valores negativos darán resultados extraños" -#: builtin.c:2914 +#: builtin.c:2933 #, c-format msgid "xor(%lf, %lf): fractional values will be truncated" -msgstr "xor(%lf, %lf): los valores fraccionarios se truncarán" +msgstr "xor(%lf, %lf): los valores fraccionarios se truncarán" -#: builtin.c:2938 builtin.c:2944 +#: builtin.c:2957 builtin.c:2963 msgid "compl: received non-numeric argument" -msgstr "compl: se recibió un argumento que no es númerico" +msgstr "compl: se recibió un argumento que no es númerico" -#: builtin.c:2946 +#: builtin.c:2965 #, c-format msgid "compl(%lf): negative value will give strange results" -msgstr "compl(%lf): el valor negativo dará resultados extraños" +msgstr "compl(%lf): el valor negativo dará resultados extraños" -#: builtin.c:2948 +#: builtin.c:2967 #, c-format msgid "compl(%lf): fractional value will be truncated" -msgstr "compl(%lf): el valor fraccionario se truncará" +msgstr "compl(%lf): el valor fraccionario se truncará" -#: builtin.c:3117 +#: builtin.c:3136 #, c-format msgid "dcgettext: `%s' is not a valid locale category" -msgstr "dcgettext: `%s' no es una categoría local válida" +msgstr "dcgettext: `%s' no es una categoría local válida" -#: eval.c:411 +#: eval.c:412 #, c-format msgid "unknown nodetype %d" msgstr "tipo de nodo %d desconocido" -#: eval.c:422 eval.c:436 +#: eval.c:423 eval.c:437 #, c-format msgid "unknown opcode %d" -msgstr "código de operación %d desconocido" +msgstr "código de operación %d desconocido" -#: eval.c:433 +#: eval.c:434 #, 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" +msgstr "el código de operación %s no es un operador o una palabra clave" -#: eval.c:487 +#: eval.c:488 msgid "buffer overflow in genflags2str" msgstr "desbordamiento de almacenamiento temporal en genflags2str" @@ -1011,141 +1016,146 @@ #: eval.c:725 msgid "`IGNORECASE' is a gawk extension" -msgstr "`IGNORECASE' es una extensión de gawk" +msgstr "`IGNORECASE' es una extensión de gawk" #: eval.c:754 msgid "`BINMODE' is a gawk extension" -msgstr "`BINMODE' es una extensión de gawk" +msgstr "`BINMODE' es una extensión de gawk" #: eval.c:812 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" -msgstr "el valor BINMODE `%s' es inválido; se trata como 3" +msgstr "el valor BINMODE `%s' es inválido; se trata como 3" #: eval.c:902 #, c-format msgid "bad `%sFMT' specification `%s'" -msgstr "especificación `%sFMT' `%s' errónea" +msgstr "especificación `%sFMT' `%s' errónea" #: eval.c:980 msgid "turning off `--lint' due to assignment to `LINT'" -msgstr "se desactiva `--lint' debido a una asignación a `LINT'" +msgstr "se desactiva `--lint' debido a una asignación a `LINT'" -#: eval.c:1127 eval.c:1685 +#: 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" +msgstr "no se puede usar el nombre de la función `%s' como variable o matriz" -#: eval.c:1155 -msgid "assignment is not allowed to result of builtin function" -msgstr "no se permite la asignación como resultado de una función interna" - -#: eval.c:1164 eval.c:1697 eval.c:1710 +#: eval.c:1158 eval.c:1789 eval.c:1802 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "referencia al argumento sin inicializar `%s'" -#: eval.c:1183 +#: eval.c:1177 msgid "attempt to field reference from non-numeric value" -msgstr "se intentó una referencia de campo desde un valor que no es númerico" +msgstr "se intentó una referencia de campo desde un valor que no es númerico" -#: eval.c:1185 +#: eval.c:1179 msgid "attempt to field reference from null string" -msgstr "se intentó una referencia de campo desde una cadena nula" +msgstr "se intentó una referencia de campo desde una cadena nula" -#: eval.c:1191 +#: eval.c:1185 #, c-format msgid "attempt to access field %ld" -msgstr "se intentó acceder al campo %ld" +msgstr "se intentó acceder al campo %ld" -#: eval.c:1200 +#: eval.c:1194 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "referencia al campo sin inicializar `$%ld'" -#: eval.c:1262 +#: eval.c:1256 #, 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" +msgstr "se llamó a la función `%s' con más argumentos de los declarados" -#: eval.c:1426 +#: eval.c:1437 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: tipo `%s' inesperado" -#: eval.c:1510 +#: eval.c:1532 msgid "division by zero attempted in `/='" -msgstr "se intentó una división por cero en `/='" +msgstr "se intentó una división por cero en `/='" -#: eval.c:1517 +#: eval.c:1539 #, c-format msgid "division by zero attempted in `%%='" -msgstr "se intentó una división por cero en `%%='" +msgstr "se intentó una división por cero en `%%='" -#: eval.c:1784 eval.c:2030 +#: 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" +msgstr "se intentó usar la matriz `%s[\"%.*s\"]' en un contexto escalar" -#: eval.c:1815 +#: eval.c:1907 msgid "assignment used in conditional context" -msgstr "se usó una asignación en un contexto condicional" +msgstr "se usó una asignación en un contexto condicional" -#: eval.c:1819 +#: eval.c:1911 msgid "statement has no effect" -msgstr "la declaración no tiene efecto" +msgstr "la declaración no tiene efecto" -#: eval.c:2233 +#: 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 " +"bucle for: la matriz `%s' cambió de tamaño de %ld a %ld durante la ejecución " "del bucle" -#: eval.c:2343 +#: 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'" +msgstr "no existe la función llamada indirectamente a través de `%s'" -#: eval.c:2355 +#: eval.c:2470 #, c-format msgid "function `%s' not defined" -msgstr "la función `%s' no está definida" +msgstr "la función `%s' no está definida" -#: eval.c:2416 +#: 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'" +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:2477 +#: 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:2532 +#: eval.c:2661 +msgid "`exit' cannot be called in the current context" +msgstr "`exit' no se puede llamar en el contexto actual" + +#: eval.c:2700 #, c-format msgid "`next' cannot be called from a `%s' rule" msgstr "`next' no se puede llamar desde una regla `%s'" -#: eval.c:2599 +#: eval.c:2766 #, c-format msgid "Sorry, don't know how to interpret `%s'" -msgstr "Perdón, no se cómo interpretar `%s'" +msgstr "Perdón, no se cómo interpretar `%s'" -#: ext.c:64 +#: ext.c:54 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:60 ext.c:65 msgid "`extension' is a gawk extension" -msgstr "`extension' es una extensión de gawk" +msgstr "`extension' es una extensión de gawk" -#: ext.c:85 +#: ext.c:75 #, c-format msgid "fatal: extension: cannot open `%s' (%s)\n" msgstr "fatal: extension: no se puede abrir `%s' (%s)\n" -#: ext.c:94 +#: ext.c:84 #, c-format msgid "" "fatal: extension: library `%s': does not define " @@ -1154,259 +1164,254 @@ "fatal: extension: la biblioteca `%s': no define " "`plugin_is_GPL_compatible' (%s)\n" -#: ext.c:103 +#: ext.c:93 #, c-format msgid "fatal: extension: library `%s': cannot call function `%s' (%s)\n" msgstr "" -"fatal: extension: la biblioteca `%s': no puede llamar a la función `" +"fatal: extension: la biblioteca `%s': no puede llamar a la función `" "%s' (%s)\n" -#: ext.c:137 +#: ext.c:127 msgid "extension: missing function name" -msgstr "extension: falta el nombre de la función" +msgstr "extension: falta el nombre de la función" -#: ext.c:142 +#: ext.c:132 #, 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'" +msgstr "extension: carácter ilegal `%c' en el nombre de la función `%s'" -#: ext.c:151 +#: ext.c:141 #, c-format msgid "extension: can't redefine function `%s'" -msgstr "extension: no se puede redefinir la función `%s'" +msgstr "extension: no se puede redefinir la función `%s'" -#: ext.c:155 +#: ext.c:145 #, c-format msgid "extension: function `%s' already defined" -msgstr "extension: la función `%s' ya está definida" +msgstr "extension: la función `%s' ya está definida" -#: ext.c:160 +#: ext.c:150 #, c-format msgid "extension: function name `%s' previously defined" -msgstr "extension: el nombre de función `%s' se definió previamente" +msgstr "extension: el nombre de función `%s' se definió previamente" -#: ext.c:162 +#: ext.c:152 #, 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" +"función" -#: ext.c:166 +#: ext.c:156 #, c-format msgid "make_builtin: negative argument count for function `%s'" -msgstr "make_builtin: cuenta de argumento negativa para la función `%s'" +msgstr "make_builtin: cuenta de argumento negativa para la función `%s'" -#: ext.c:269 +#: ext.c:259 #, 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)" +msgstr "la función `%s' se definió para tomar no más de %d argumento(s)" -#: ext.c:272 +#: ext.c:262 #, c-format msgid "function `%s': missing argument #%d" -msgstr "función `%s': falta el argumento #%d" +msgstr "función `%s': falta el argumento #%d" -#: ext.c:289 +#: ext.c:279 #, 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" +"función `%s': argumento #%d: se intentó usar un escalar como una matriz" -#: ext.c:293 +#: ext.c:283 #, 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" +"función `%s': argumento #%d: se intentó usar una matriz como un escalar" -#: ext.c:306 +#: ext.c:296 msgid "Operation Not Supported" -msgstr "No Se Admite La Operación" +msgstr "No Se Admite La Operación" #: field.c:328 msgid "NF set to negative value" -msgstr "se definió NF con un valor negativo" +msgstr "se definió NF con un valor negativo" -#: field.c:950 field.c:957 field.c:961 +#: field.c:951 field.c:958 field.c:962 msgid "split: fourth argument is a gawk extension" -msgstr "split: el cuarto argumento es una extensión de gawk" +msgstr "split: el cuarto argumento es una extensión de gawk" -#: field.c:954 +#: field.c:955 msgid "split: fourth argument is not an array" msgstr "split: el cuarto argumento no es una matriz" -#: field.c:968 +#: field.c:969 msgid "split: second argument is not an array" msgstr "split: el segundo argumento no es una matriz" -#: field.c:972 +#: field.c:973 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:977 +#: field.c:978 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:980 +#: field.c:981 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:1009 +#: field.c:1010 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" +"split: la cadena nula para el tercer argumento es una extensión de gawk" -#: field.c:1049 +#: field.c:1050 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: el cuarto argumento no es una matriz" -#: field.c:1054 +#: field.c:1055 msgid "patsplit: second argument is not an array" msgstr "patsplit: el segundo argumento no es una matriz" -#: field.c:1060 +#: field.c:1061 msgid "patsplit: third argument must be non-null" msgstr "patsplit: el tercer argumento no debe ser nulo" -#: field.c:1064 +#: field.c:1065 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:1069 +#: field.c:1070 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:1072 +#: field.c:1073 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:1109 +#: field.c:1110 msgid "`FIELDWIDTHS' is a gawk extension" -msgstr "`FIELDWIDTHS' es una extensión gawk" +msgstr "`FIELDWIDTHS' es una extensión gawk" -#: field.c:1172 +#: field.c:1173 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" -msgstr "valor de FIELDWIDTHS inválido, cerca de `%s'" +msgstr "valor de FIELDWIDTHS inválido, cerca de `%s'" -#: field.c:1245 +#: field.c:1246 msgid "null string for `FS' is a gawk extension" -msgstr "la cadena nula para `FS' es una extensión de gawk" +msgstr "la cadena nula para `FS' es una extensión de gawk" -#: field.c:1249 +#: field.c:1250 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:1368 +#: field.c:1369 msgid "`FPAT' is a gawk extension" -msgstr "`FPAT' es una extensión de gawk" +msgstr "`FPAT' es una extensión de gawk" -#: getopt.c:574 getopt.c:590 -#, c-format -msgid "%s: option '%s' is ambiguous\n" -msgstr "%s: la opción '%s' es ambigua\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" +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" +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" +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" +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" +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" +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" +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" +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" +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" +msgstr "%s: la opción '-W %s' requiere un argumento\n" -#: io.c:282 +#: io.c:280 #, 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" +msgstr "el argumento de la línea de órdenes `%s' es un directorio: se salta" -#: io.c:285 io.c:384 +#: io.c:283 io.c:385 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "no se puede abrir el fichero `%s' para lectura (%s)" -#: io.c:431 -#, c-format -msgid "error reading input file `%s': %s" -msgstr "error al leer el fichero de entrada `%s': %s" - -#: io.c:500 +#: io.c:501 #, c-format msgid "close of fd %d (`%s') failed (%s)" -msgstr "falló al cerrar el df %d (`%s') (%s)" +msgstr "falló al cerrar el df %d (`%s') (%s)" -#: io.c:577 +#: io.c:578 msgid "redirection not allowed in sandbox mode" -msgstr "no se permite la redirección en modo sandbox" +msgstr "no se permite la redirección en modo sandbox" -#: io.c:611 +#: io.c:612 #, 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" +msgstr "la expresión en la redirección `%s' sólo tiene valor numérico" -#: io.c:617 +#: io.c:618 #, 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" +msgstr "la expresión para la redirección `%s' tiene un valor de cadena nula" #: io.c:623 #, 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" +"el fichero `%s' para la redirección `%s' puede ser resultado de una " +"expresión lógica" #: io.c:666 #, c-format @@ -1416,17 +1421,17 @@ #: io.c:719 #, c-format msgid "can't open pipe `%s' for output (%s)" -msgstr "no se puede abrir la tubería `%s' para la salida (%s)" +msgstr "no se puede abrir la tubería `%s' para la salida (%s)" #: io.c:729 #, c-format msgid "can't open pipe `%s' for input (%s)" -msgstr "no se puede abrir la tubería `%s' para la entrada (%s)" +msgstr "no se puede abrir la tubería `%s' para la entrada (%s)" #: io.c:752 #, 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)" +msgstr "no se puede abrir la tubería de dos vías `%s' para entrada/salida (%s)" #: io.c:834 #, c-format @@ -1442,17 +1447,17 @@ 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 " +"se alcanzó el límite del sistema para ficheros abiertos: comenzando a " "multiplexar los descriptores de fichero" #: io.c:904 #, c-format msgid "close of `%s' failed (%s)." -msgstr "falló al cerrar `%s' (%s)." +msgstr "falló al cerrar `%s' (%s)." #: io.c:912 msgid "too many pipes or input files open" -msgstr "demasiadas tuberías o ficheros de entrada abiertos" +msgstr "demasiadas tuberías o ficheros de entrada abiertos" #: io.c:934 msgid "close: second argument must be `to' or `from'" @@ -1461,23 +1466,23 @@ #: io.c:951 #, 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" +msgstr "close: `%.*s' no es un fichero abierto, tubería o co-proceso" #: io.c:956 msgid "close of redirection that was never opened" -msgstr "se cerró una redirección que nunca se abrió" +msgstr "se cerró una redirección que nunca se abrió" #: io.c:1053 #, 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 " +"close: la redirección `%s' no se abrió con `|&', se descarta el segundo " "argumento" #: io.c:1069 #, 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)" +msgstr "estado de fallo (%d) al cerrar la tubería de `%s' (%s)" #: io.c:1072 #, c-format @@ -1487,73 +1492,73 @@ #: io.c:1092 #, c-format msgid "no explicit close of socket `%s' provided" -msgstr "no se provee el cerrado explícito del `socket' `%s'" +msgstr "no se provee el cerrado explícito del `socket' `%s'" #: io.c:1095 #, c-format msgid "no explicit close of co-process `%s' provided" -msgstr "no se provee el cerrado explícito del co-proceso `%s'" +msgstr "no se provee el cerrado explícito del co-proceso `%s'" #: io.c:1098 #, c-format msgid "no explicit close of pipe `%s' provided" -msgstr "no se provee el cerrado explícito del la tubería `%s'" +msgstr "no se provee el cerrado explícito del la tubería `%s'" #: io.c:1101 #, c-format msgid "no explicit close of file `%s' provided" -msgstr "no se provee el cerrado explícito del fichero `%s'" +msgstr "no se provee el cerrado explícito del fichero `%s'" -#: io.c:1129 io.c:1184 main.c:795 main.c:832 +#: io.c:1129 io.c:1184 main.c:794 main.c:831 #, c-format msgid "error writing standard output (%s)" -msgstr "error al escribir en la salida estándar (%s)" +msgstr "error al escribir en la salida estándar (%s)" #: io.c:1133 io.c:1189 #, c-format msgid "error writing standard error (%s)" -msgstr "error al escribir en la salida estándar de error (%s)" +msgstr "error al escribir en la salida estándar de error (%s)" #: io.c:1141 #, c-format msgid "pipe flush of `%s' failed (%s)." -msgstr "falló la limpieza de la tubería de `%s' (%s)." +msgstr "falló la limpieza de la tubería de `%s' (%s)." #: io.c:1144 #, 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)." +msgstr "falló la limpieza del co-proceso de la tubería a `%s' (%s)." #: io.c:1147 #, c-format msgid "file flush of `%s' failed (%s)." -msgstr "falló la limpieza del fichero de `%s' (%s)." +msgstr "falló la limpieza del fichero de `%s' (%s)." #: io.c:1262 #, c-format msgid "local port %s invalid in `/inet'" -msgstr "puerto local %s inválido en `/inet'" +msgstr "puerto local %s inválido en `/inet'" #: io.c:1279 #, c-format msgid "remote host and port information (%s, %s) invalid" -msgstr "anfitrión remoto e información de puerto (%s, %s) inválidos" +msgstr "anfitrión remoto e información de puerto (%s, %s) inválidos" #: io.c:1431 #, c-format msgid "no (known) protocol supplied in special filename `%s'" msgstr "" -"no se proporciona algún protocolo (conocido) en el nombre de fichero " +"no se proporciona algún protocolo (conocido) en el nombre de fichero " "especial `%s'" #: io.c:1445 #, c-format msgid "special file name `%s' is incomplete" -msgstr "el nombre de fichero especial `%s' está incompleto" +msgstr "el nombre de fichero especial `%s' está incompleto" #: io.c:1462 msgid "must supply a remote hostname to `/inet'" -msgstr "se debe proporcionar a `/inet' un nombre de anfitrión remoto" +msgstr "se debe proporcionar a `/inet' un nombre de anfitrión remoto" #: io.c:1480 msgid "must supply a remote port to `/inet'" @@ -1568,120 +1573,120 @@ msgid "could not open `%s', mode `%s'" msgstr "no se puede abrir `%s', modo `%s'" -#: io.c:1744 +#: io.c:1747 #, c-format msgid "close of master pty failed (%s)" -msgstr "falló al cerrar el pty maestro (%s)" +msgstr "falló al cerrar el pty maestro (%s)" -#: io.c:1746 io.c:1914 io.c:2071 +#: io.c:1749 io.c:1917 io.c:2074 #, c-format msgid "close of stdout in child failed (%s)" -msgstr "falló al cerrar la salida estándar en el hijo (%s)" +msgstr "falló al cerrar la salida estándar en el hijo (%s)" -#: io.c:1749 +#: io.c:1752 #, 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)" +"falló el movimiento del pty esclavo a la salida estándar en el hijo (dup: %s)" -#: io.c:1751 io.c:1919 +#: io.c:1754 io.c:1922 #, c-format msgid "close of stdin in child failed (%s)" -msgstr "falló al cerrar la entrada estándar en el hijo (%s)" +msgstr "falló al cerrar la entrada estándar en el hijo (%s)" -#: io.c:1754 +#: io.c:1757 #, 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: " +"falló el movimiento del pty esclavo a la entrada estándar en el hijo (dup: " "%s)" -#: io.c:1756 io.c:1777 +#: io.c:1759 io.c:1780 #, c-format msgid "close of slave pty failed (%s)" -msgstr "falló al cerrar el pty esclavo (%s)" +msgstr "falló al cerrar el pty esclavo (%s)" -#: io.c:1855 io.c:1917 io.c:2049 io.c:2074 +#: io.c:1858 io.c:1920 io.c:2052 io.c:2077 #, 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)" +msgstr "falló el movimiento a la salida estándar en el hijo (dup: %s)" -#: io.c:1862 io.c:1922 +#: io.c:1865 io.c:1925 #, 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)" +"falló el movimiento de la tubería a la entrada estándar en el hijo (dup: %s)" -#: io.c:1882 io.c:2064 +#: io.c:1885 io.c:2067 msgid "restoring stdout in parent process failed\n" -msgstr "falló la restauración de la salida estándar en el proceso padre\n" +msgstr "falló la restauración de la salida estándar en el proceso padre\n" -#: io.c:1890 +#: io.c:1893 msgid "restoring stdin in parent process failed\n" -msgstr "falló la restauración de la entrada estándar en el proceso padre\n" +msgstr "falló la restauración de la entrada estándar en el proceso padre\n" -#: io.c:1925 io.c:2076 io.c:2090 +#: io.c:1928 io.c:2079 io.c:2093 #, c-format msgid "close of pipe failed (%s)" -msgstr "falló al cerrar la tubería (%s)" +msgstr "falló al cerrar la tubería (%s)" -#: io.c:1970 +#: io.c:1973 msgid "`|&' not supported" msgstr "no se admite `|&'" -#: io.c:2036 +#: io.c:2039 #, c-format msgid "cannot open pipe `%s' (%s)" -msgstr "no se puede abrir la tubería `%s' (%s)" +msgstr "no se puede abrir la tubería `%s' (%s)" -#: io.c:2084 +#: io.c:2087 #, 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:2517 +#: io.c:2520 #, c-format msgid "data file `%s' is empty" -msgstr "el fichero de datos `%s' está vacío" +msgstr "el fichero de datos `%s' está vacío" -#: io.c:2558 io.c:2566 +#: io.c:2561 io.c:2569 msgid "could not allocate more input memory" -msgstr "no se puede reservar más memoria de entrada" +msgstr "no se puede reservar más memoria de entrada" -#: io.c:3119 +#: io.c:3127 msgid "multicharacter value of `RS' is a gawk extension" -msgstr "el valor multicaracter de `RS' es una extensión de gawk" +msgstr "el valor multicaracter de `RS' es una extensión de gawk" -#: io.c:3224 +#: io.c:3232 msgid "IPv6 communication is not supported" -msgstr "no se admite la comunicación IPv6" +msgstr "no se admite la comunicación IPv6" #: main.c:366 msgid "`-m[fr]' option irrelevant in gawk" -msgstr "la opción -m[fr] es irrelevante en gawk" +msgstr "la opción -m[fr] es irrelevante en gawk" #: main.c:368 msgid "-m option usage: `-m[fr] nnn'" -msgstr "uso de la opción -m: `-m[fr]' nnn" +msgstr "uso de la opción -m: `-m[fr]' nnn" #: main.c:391 msgid "empty argument to `-e/--source' ignored" -msgstr "se descarta el argumento vacío para `-e/--source'" +msgstr "se descarta el argumento vacío para `-e/--source'" #: main.c:462 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" -msgstr "%s: no se reconoce la opción `-W %s', se descarta\n" +msgstr "%s: no se reconoce la opción `-W %s', se descarta\n" #: main.c:515 #, c-format msgid "%s: option requires an argument -- %c\n" -msgstr "%s: la opción requiere un argumento -- %c\n" +msgstr "%s: la opción requiere un argumento -- %c\n" #: main.c:536 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" -"la variable de ambiente `POSIXLY_CORRECT' está definida: se activa `--posix'" +"la variable de ambiente `POSIXLY_CORRECT' está definida: se activa `--posix'" #: main.c:542 msgid "`--posix' overrides `--traditional'" @@ -1703,140 +1708,140 @@ #: main.c:613 #, 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)" +msgstr "no se puede establecer el modo binario en la entrada estándar (%s)" #: main.c:616 #, 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)" +msgstr "no se puede establecer el modo binario en la salida estándar (%s)" #: main.c:618 #, 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)" +"no se puede establecer el modo binario en la salida estándar de error (%s)" #: main.c:657 msgid "no program text at all!" -msgstr "¡No hay ningún programa de texto!" +msgstr "¡No hay ningún programa de texto!" -#: main.c:735 +#: main.c:734 #, 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:737 +#: main.c:736 #, 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:742 +#: main.c:741 msgid "POSIX options:\t\tGNU long options: (standard)\n" -msgstr "Opciones POSIX:\t\tOpciones largas GNU: (estándar)\n" +msgstr "Opciones POSIX:\t\tOpciones largas GNU: (estándar)\n" -#: main.c:743 +#: main.c:742 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f fichprog\t\t--file=fichprog\n" -#: main.c:744 +#: main.c:743 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F sc\t\t\t--field-separator=sc\n" -#: main.c:745 +#: main.c:744 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=valor\t\t--assign=var=valor\n" -#: main.c:746 +#: main.c:745 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Opciones cortas:\t\tOpciones largas GNU: (extensiones)\n" -#: main.c:747 +#: main.c:746 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:748 +#: main.c:747 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:749 +#: main.c:748 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:750 +#: main.c:749 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[fichero]\t\t--dump-variables[=fichero]\n" -# Esta es la línea más larga de la lista de argumentos. +# Esta es la línea más larga de la lista de argumentos. # Probar con gawk para revisar tabuladores. cfuga -#: main.c:751 +#: main.c:750 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'texto-prog'\t--source='texto-prog'\n" -#: main.c:752 +#: main.c:751 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E fichero\t\t--exec=fichero\n" -#: main.c:753 +#: main.c:752 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:754 +#: main.c:753 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:755 +#: main.c:754 msgid "\t-L [fatal]\t\t--lint[=fatal]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: main.c:756 +#: main.c:755 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:757 +#: main.c:756 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:758 +#: main.c:757 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:759 +#: main.c:758 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[fichero]\t\t--profile[=fichero]\n" -#: main.c:760 +#: main.c:759 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:761 +#: main.c:760 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:763 +#: main.c:762 msgid "\t-R file\t\t\t--command=file\n" msgstr "\t-R fichero\t\t\t--command=fichero\n" -#: main.c:764 +#: main.c:763 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:765 +#: main.c:764 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:766 +#: main.c:765 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:768 +#: main.c:767 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:771 +#: main.c:770 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -1845,7 +1850,7 @@ #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:780 +#: main.c:779 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -1854,22 +1859,22 @@ msgstr "" "\n" "Para reportar bichos, consulte el nodo `Bugs' en `gawk.info', el cual\n" -"corresponde a la sección `Reporting Problems and Bugs' en la versión " +"corresponde a la sección `Reporting Problems and Bugs' en la versión " "impresa.\n" -"Reporte los errores de los mensajes en español a .\n" +"Reporte los errores de los mensajes en español a .\n" "\n" -#: main.c:784 +#: main.c:783 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" "\n" msgstr "" "gawk es un lenguaje de reconocimiento y procesamiento de patrones.\n" -"Por defecto lee la entrada estándar y escribe en la salida estándar.\n" +"Por defecto lee la entrada estándar y escribe en la salida estándar.\n" "\n" -#: main.c:788 +#: main.c:787 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -1879,7 +1884,7 @@ "\tgawk '{ sum += $1 }; END { print sum }' fichero\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:808 +#: main.c:807 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -1893,13 +1898,13 @@ "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" "\n" "Este programa es software libre; se puede redistribuir y/o modificar\n" -"bajo los términos de la Licencia Pública General de GNU tal como es " +"bajo los términos de la Licencia Pública General de GNU tal como es " "publicada\n" -"por la Free Software Foundation; ya sea por la versión 3 de la Licencia, o\n" -"(a su elección) cualquier versión posterior.\n" +"por la Free Software Foundation; ya sea por la versión 3 de la Licencia, o\n" +"(a su elección) cualquier versión posterior.\n" "\n" -#: main.c:816 +#: main.c:815 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" @@ -1907,31 +1912,31 @@ "GNU General Public License for more details.\n" "\n" msgstr "" -"Este programa se distribuye con la esperanza que será útil,\n" -"pero SIN NINGUNA GARANTÍA; aún sin la garantía implícita de\n" +"Este programa se distribuye con la esperanza que será útil,\n" +"pero SIN NINGUNA GARANTÃA; aún sin la garantía implícita de\n" "COMERCIABILIDAD o IDONEIDAD PARA UN FIN DETERMINADO. Vea la\n" -"Licencia Pública General de GNU para más detalles.\n" +"Licencia Pública General de GNU para más detalles.\n" "\n" -#: main.c:822 +#: main.c:821 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 "" -"Debió recibir una copia de la Licencia Pública General de GNU\n" -"junto con este programa. Si no es así, consulte\n" +"Debió recibir una copia de la Licencia Pública General de GNU\n" +"junto con este programa. Si no es así, consulte\n" "http://www.gnu.org/licenses/.\n" -#: main.c:857 +#: main.c:856 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:1091 +#: main.c:1090 #, c-format msgid "unknown value for field spec: %d\n" -msgstr "valor desconocido para la especificación de campo: %d\n" +msgstr "valor desconocido para la especificación de campo: %d\n" -#: main.c:1152 +#: main.c:1171 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -1940,63 +1945,57 @@ "%s: el argumento `%s' para `-v' no es de la forma `var=valor'\n" "\n" -#: main.c:1178 +#: main.c:1197 #, c-format msgid "`%s' is not a legal variable name" msgstr "`%s' no es un nombre de variable legal" -#: main.c:1181 +#: main.c:1200 #, 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:1185 -#, fuzzy, c-format +#: main.c:1204 +#, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "" -"extension: no se puede utilizar la orden interna de gawk `%s' como nombre de " -"función" +"no se puede utilizar la orden interna de gawk `%s' como nombre de variable" -#: main.c:1190 -#, fuzzy, c-format +#: main.c:1209 +#, c-format msgid "cannot use function `%s' as variable name" -msgstr "no se puede usar el nombre de la función `%s' como variable o matriz" +msgstr "no se puede usar la función `%s' como nombre de variable" -#: main.c:1243 +#: main.c:1262 msgid "floating point exception" -msgstr "excepción de coma flotante" +msgstr "excepción de coma flotante" -#: main.c:1250 +#: main.c:1269 msgid "fatal error: internal error" msgstr "error fatal: error interno" -#: main.c:1265 +#: main.c:1284 msgid "fatal error: internal error: segfault" -msgstr "error fatal: error interno: falla de segmentación" +msgstr "error fatal: error interno: falla de segmentación" -#: main.c:1277 +#: main.c:1296 msgid "fatal error: internal error: stack overflow" msgstr "error fatal: error interno: desbordamiento de pila" -#: main.c:1327 +#: main.c:1346 #, c-format msgid "no pre-opened fd %d" msgstr "no existe el df %d abierto previamente" -#: main.c:1334 +#: main.c:1353 #, 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:1357 main.c:1366 -#, c-format -msgid "could not find groups: %s" -msgstr "no se pueden encontrar los grupos: %s" - #: msg.c:63 #, c-format msgid "cmd. line:" -msgstr "línea ord.:" +msgstr "línea ord.:" #: msg.c:107 msgid "error: " @@ -2017,7 +2016,7 @@ #: node.c:574 msgid "no hex digits in `\\x' escape sequence" -msgstr "no hay dígitos hexadecimales en la secuencia de escape `\\x'" +msgstr "no hay dígitos hexadecimales en la secuencia de escape `\\x'" #: node.c:596 #, c-format @@ -2038,7 +2037,7 @@ "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." msgstr "" -"Se detectaron datos multibyte inválidos. Puede ser que no coincidan sus " +"Se detectaron datos multibyte inválidos. Puede ser que no coincidan sus " "datos con su local." #: posix/gawkmisc.c:176 @@ -2059,7 +2058,7 @@ #: profile.c:85 msgid "sending profile to standard error" -msgstr "se envía el perfil a la salida estándar de error" +msgstr "se envía el perfil a la salida estándar de error" #: profile.c:203 #, c-format @@ -2084,110 +2083,116 @@ msgid "internal error: %s with null vname" msgstr "error interno: %s con vname nulo" -#: profile.c:938 +#: profile.c:952 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# perfil de gawk, creado %s\n" -#: profile.c:1317 +#: profile.c:1331 #, c-format msgid "" "\n" "\t# Functions, listed alphabetically\n" msgstr "" "\n" -"\t# Funciones, enumeradas alfabéticamente\n" +"\t# Funciones, enumeradas alfabéticamente\n" -#: profile.c:1356 +#: profile.c:1370 #, c-format msgid "redir2str: unknown redirection type %d" -msgstr "redir2str: tipo de redirección %d desconocida" +msgstr "redir2str: tipo de redirección %d desconocida" -#: re.c:572 +#: re.c:573 #, c-format -msgid "range of the form `[%c-%c]' is locale dependant" -msgstr "el rango de la forma [%c-%c] depende del local" +msgid "range of the form `[%c-%c]' is locale dependent" +msgstr "el rango de la forma `[%c-%c]' depende del local" -#: re.c:599 +#: re.c:600 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" -"el componente de expresión regular `%.*s' probablemente debe ser `[%.*s]'" +"el componente de expresión regular `%.*s' probablemente debe ser `[%.*s]'" -#: regcomp.c:132 +#: regcomp.c:131 msgid "Success" -msgstr "Éxito" +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" +msgstr "Expresión regular inválida" -#: regcomp.c:141 +#: regcomp.c:140 msgid "Invalid collation character" -msgstr "Caracter de ordenación inválido" +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" +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" +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 \\{\\}" +msgstr "Contenido inválido de \\{\\}" -#: regcomp.c:165 +#: regcomp.c:164 msgid "Invalid range end" -msgstr "Final de rango inválido" +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" +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" +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" +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" +msgstr "No hay una expresión regular previa" + +#~ 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" #~ msgid "attempt to use array in a scalar context" -#~ msgstr "se intentó usar una matriz en un contexto escalar" +#~ msgstr "se intentó usar una matriz en un contexto escalar" #~ msgid "statement may have no effect" #~ msgstr "la sentencia puede no tener efecto" @@ -2196,22 +2201,22 @@ #~ msgstr "memoria agotada" #~ msgid "attempt to use scalar `%s' as array" -#~ msgstr "se intentó usar el dato escalar `%s' como una matriz" +#~ msgstr "se intentó usar el dato escalar `%s' como una matriz" #~ msgid "attempt to use array `%s' in scalar context" -#~ msgstr "se intentó usar la matriz `%s' en un contexto escalar" +#~ msgstr "se intentó usar la matriz `%s' en un contexto escalar" #~ msgid "call of `length' without parentheses is deprecated by POSIX" -#~ msgstr "la llamada de `length' sin paréntesis está obsoleta por POSIX" +#~ msgstr "la llamada de `length' sin paréntesis está obsoleta por POSIX" #~ msgid "division by zero attempted in `/'" -#~ msgstr "se intentó una división por cero en `/'" +#~ msgstr "se intentó una división por cero en `/'" #~ msgid "length: untyped parameter argument will be forced to scalar" -#~ msgstr "length: un argumento de parámetro sin tipo se forzará a escalar" +#~ msgstr "length: un argumento de parámetro sin tipo se forzará a escalar" #~ msgid "length: untyped argument will be forced to scalar" -#~ msgstr "length: un argumento sin tipo se forzará a escalar" +#~ msgstr "length: un argumento sin tipo se forzará a escalar" #~ msgid "`break' outside a loop is not portable" #~ msgstr "`break' fuera de un ciclo no es transportable" @@ -2229,7 +2234,7 @@ #~ "concatenation: side effects in one expression have changed the length of " #~ "another!" #~ msgstr "" -#~ "concatenación: ¡Los efectos laterales en una expresión han cambiado la " +#~ "concatenación: ¡Los efectos laterales en una expresión han cambiado la " #~ "longitud de otra!" #~ msgid "illegal type (%s) in tree_eval" @@ -2239,16 +2244,16 @@ #~ msgstr "\t# -- principal --\n" #~ msgid "invalid tree type %s in redirect()" -#~ msgstr "tipo de árbol %s inválido en redirect()" +#~ msgstr "tipo de árbol %s inválido en redirect()" #~ msgid "/inet/raw client not ready yet, sorry" -#~ msgstr "el cliente /inet/raw no está listo aún, perdón" +#~ msgstr "el cliente /inet/raw no está listo aún, perdón" #~ msgid "only root may use `/inet/raw'." -#~ msgstr "sólo root puede utilizar `/inet/raw'." +#~ msgstr "sólo root puede utilizar `/inet/raw'." #~ msgid "/inet/raw server not ready yet, sorry" -#~ msgstr "el servidor /inet/raw no está listo aún, perdón" +#~ msgstr "el servidor /inet/raw no está listo aún, perdón" #~ msgid "file `%s' is a directory" #~ msgstr "el fichero `%s' es un directorio" @@ -2278,7 +2283,7 @@ #~ msgstr "# se trata internamente como `delete'" #~ msgid "# this is a dynamically loaded extension function" -#~ msgstr "# esta es una función de extensión cargada dinámicamente" +#~ msgstr "# esta es una función de extensión cargada dinámicamente" #~ msgid "" #~ "\t# BEGIN block(s)\n" @@ -2295,26 +2300,26 @@ #~ msgid "can't open two way socket `%s' for input/output (%s)" #~ msgstr "" -#~ "no se puede abrir el `socket' de dos vías `%s' para entrada/salida (%s)" +#~ "no se puede abrir el `socket' de dos vías `%s' para entrada/salida (%s)" #~ msgid "%s: illegal option -- %c\n" -#~ msgstr "%s: opción ilegal -- %c\n" +#~ msgstr "%s: opción ilegal -- %c\n" #~ msgid "function %s called\n" -#~ msgstr "se llamó a la función %s\n" +#~ msgstr "se llamó a la función %s\n" #~ msgid "field %d in FIELDWIDTHS, must be > 0" #~ msgstr "el campo %d en FIELDWIDTHS, debe ser > 0" #~ msgid "or used as a variable or an array" -#~ msgstr "o se usó como una variable o una matriz" +#~ msgstr "o se usó como una variable o una matriz" #~ msgid "substr: length %g is < 0" #~ msgstr "substr: la longitud %g es < 0" #~ msgid "regex match failed, not enough memory to match string \"%.*s%s\"" #~ msgstr "" -#~ "falló la coincidencia de la expresión regular, no hay suficiente memoria " +#~ "falló la coincidencia de la expresión regular, no hay suficiente memoria " #~ "para que coincida la cadena \"%.*s%s\"" #~ msgid "delete: illegal use of variable `%s' as array" @@ -2324,27 +2329,27 @@ #~ msgstr "error interno: Node_var_array con vname nulo" #~ msgid "invalid syntax in name `%s' for variable assignment" -#~ msgstr "sintaxis inválida en el nombre `%s' para la asignación de variable" +#~ msgstr "sintaxis inválida en el nombre `%s' para la asignación de variable" #~ msgid "or used in other expression context" -#~ msgstr "se usó or en otro contexto de la expresión" +#~ msgstr "se usó or en otro contexto de la expresión" #~ msgid "`%s' is a function, assignment is not allowed" -#~ msgstr "`%s' es una función, no se permite asignación" +#~ msgstr "`%s' es una función, no se permite asignación" #~ msgid "BEGIN blocks must have an action part" -#~ msgstr "Los bloques BEGIN deben tener una parte de acción" +#~ msgstr "Los bloques BEGIN deben tener una parte de acción" #~ msgid "`nextfile' used in BEGIN or END action" -#~ msgstr "`nextfile' es usado en la acción de BEGIN o END" +#~ msgstr "`nextfile' es usado en la acción de BEGIN o END" #~ msgid "non-redirected `getline' undefined inside BEGIN or END action" #~ msgstr "" -#~ "`getline' no redirigido indefinido dentro de la acción de BEGIN o END" +#~ "`getline' no redirigido indefinido dentro de la acción de BEGIN o END" # tokentab? cfuga #~ msgid "fptr %x not in tokentab\n" -#~ msgstr "fptr %x no está en tokentab\n" +#~ msgstr "fptr %x no está en tokentab\n" #~ msgid "gsub third parameter is not a changeable object" #~ msgstr "el tercer argumento de gsub no es un objecto que se puede cambiar" @@ -2356,22 +2361,22 @@ #~ msgstr "Escape \\ sin terminar" #~ msgid "unfinished repeat count" -#~ msgstr "cuenta de repetición sin terminar" +#~ msgstr "cuenta de repetición sin terminar" #~ msgid "malformed repeat count" -#~ msgstr "cuenta de repetición malformada" +#~ msgstr "cuenta de repetición malformada" #~ msgid "Unbalanced (" #~ msgstr "( desbalanceado" #~ msgid "No regexp syntax bits specified" -#~ msgstr "No se especifican los bits de sintaxis de la expresión regular" +#~ msgstr "No se especifican los bits de sintaxis de la expresión regular" #~ msgid "Unbalanced )" #~ msgstr ") desbalanceado" #~ msgid "internal error: file `%s', line %d\n" -#~ msgstr "error interno: fichero `%s', línea %d\n" +#~ msgstr "error interno: fichero `%s', línea %d\n" #~ msgid "" #~ "\n" @@ -2381,7 +2386,7 @@ #~ "Para reportar `bugs', vea el nodo `Bugs' en gawk.info, que es\n" #~ msgid "pipe from `%s': could not set close-on-exec (fcntl: %s)" -#~ msgstr "tubería de `%s': no se puede establecer close-on-exec (fcntl: %s)" +#~ msgstr "tubería de `%s': no se puede establecer close-on-exec (fcntl: %s)" #~ msgid "pipe to `%s': could not set close-on-exec (fcntl: %s)" -#~ msgstr "tubería a `%s': no se puede establecer close-on-exec (fcntl: %s)" +#~ msgstr "tubería a `%s': no se puede establecer close-on-exec (fcntl: %s)" diff -urN gawk-4.0.0/po/fi.po gawk-4.0.1/po/fi.po --- gawk-4.0.0/po/fi.po 2011-06-23 09:46:20.000000000 +0300 +++ gawk-4.0.1/po/fi.po 2012-03-28 22:03:47.000000000 +0200 @@ -1,14 +1,14 @@ # Finnish messages for gawk. -# Copyright © 2010 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 , 2010-2011. +# Jorma Karvonen , 2010-2012. # 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-06-23 09:46+0300\n" -"PO-Revision-Date: 2011-05-22 11:32+0200\n" +"POT-Creation-Date: 2012-03-28 22:03+0200\n" +"PO-Revision-Date: 2012-03-13 18:00+0200\n" "Last-Translator: Jorma Karvonen \n" "Language-Team: Finnish \n" "Language: fi\n" @@ -41,9 +41,9 @@ msgid "attempt to use scalar `%s' as an array" msgstr "yritettiin käyttää skalaaria â€%s†taulukkona" -#: array.c:302 array.c:707 builtin.c:81 builtin.c:1381 builtin.c:1423 -#: builtin.c:1436 builtin.c:1851 builtin.c:1863 eval.c:1135 eval.c:1139 -#: eval.c:1473 eval.c:1720 +#: array.c:302 array.c:707 builtin.c:84 builtin.c:1385 builtin.c:1427 +#: builtin.c:1440 builtin.c:1859 builtin.c:1871 eval.c:1135 eval.c:1139 +#: eval.c:1495 eval.c:1812 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "yritettiin käyttää taulukkoa â€%s†skalaarikontekstissa" @@ -63,7 +63,7 @@ msgid "delete: index `%s' not in array `%s'" msgstr "delete: indeksi â€%s†ei ole taulukossa â€%sâ€" -#: array.c:734 eval.c:1773 +#: array.c:734 eval.c:1865 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "yritettiin käyttää skalaaria â€%s[\"%.*s\"]†taulukkona" @@ -137,12 +137,12 @@ "asorti: ei voida käyttää toisen argumentin alitaulukkoa ensimmäiselle " "argumentille" -#: array.c:1659 +#: array.c:1655 #, c-format msgid "`%s' is invalid as a function name" msgstr "â€%s†on virheellinen funktionimenä" -#: array.c:1663 +#: array.c:1659 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "lajitteluvertailufunktiota â€%s†ei ole määritelty" @@ -185,340 +185,340 @@ msgid "duplicate `default' detected in switch body" msgstr "kaksoiskappale â€default†havaittu switch-rungossa" -#: awkgram.y:811 +#: awkgram.y:809 msgid "`break' is not allowed outside a loop or switch" msgstr "â€break†ei ole sallittu silmukan tai switch-lauseen ulkopuolella" -#: awkgram.y:820 +#: awkgram.y:818 msgid "`continue' is not allowed outside a loop" msgstr "â€continue†ei ole sallittu silmukan ulkopuolella" -#: awkgram.y:830 +#: awkgram.y:828 #, c-format msgid "`next' used in %s action" msgstr "â€next†käytetty %s-toiminnossa" -#: awkgram.y:838 +#: awkgram.y:836 msgid "`nextfile' is a gawk extension" msgstr "â€nextfile†on gawk-laajennus" -#: awkgram.y:843 +#: awkgram.y:841 #, c-format msgid "`nextfile' used in %s action" msgstr "â€nextfile†käytetty %s-toiminnossa" -#: awkgram.y:867 +#: awkgram.y:865 msgid "`return' used outside function context" msgstr "â€return†käytetty funktiokontekstin ulkopuolella" -#: awkgram.y:927 +#: awkgram.y:925 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:997 awkgram.y:1001 awkgram.y:1025 +#: awkgram.y:995 awkgram.y:999 awkgram.y:1023 msgid "`delete array' is a gawk extension" msgstr "â€delete array†on gawk-laajennus" -#: awkgram.y:1021 +#: awkgram.y:1019 msgid "`delete(array)' is a non-portable tawk extension" msgstr "â€delete(array)†ei ole siirrettävä tawk-laajennus" -#: awkgram.y:1137 +#: awkgram.y:1135 msgid "multistage two-way pipelines don't work" msgstr "monivaiheiset kaksisuuntaiset putket eivät toimi" -#: awkgram.y:1240 +#: awkgram.y:1238 msgid "regular expression on right of assignment" msgstr "säännöllinen lauseke sijoituksen oikealla puolella" -#: awkgram.y:1251 +#: awkgram.y:1249 msgid "regular expression on left of `~' or `!~' operator" msgstr "säännöllinen lauseke â€~â€- tai â€!~â€-operaattorin vasemmalla puolella" -#: awkgram.y:1267 awkgram.y:1421 +#: awkgram.y:1265 awkgram.y:1419 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:1277 +#: awkgram.y:1275 msgid "regular expression on right of comparison" msgstr "säännöllinen lauseke vertailun oikealla puolella" -#: awkgram.y:1396 +#: awkgram.y:1394 #, c-format msgid "`getline var' invalid inside `%s' rule" msgstr "â€getline var†virheellinen säännön â€%s†sisällä" -#: awkgram.y:1399 eval.c:2409 +#: awkgram.y:1397 eval.c:2504 #, c-format msgid "`getline' invalid inside `%s' rule" msgstr "â€getline†virheellinen säännön â€%s†sisällä" -#: awkgram.y:1404 +#: awkgram.y:1402 msgid "non-redirected `getline' undefined inside END action" msgstr "edelleenohjaamaton â€getline†määrittelemätön END-toiminnon sisällä" -#: awkgram.y:1423 +#: awkgram.y:1421 msgid "old awk does not support multidimensional arrays" msgstr "vanha awk ei tue moniulotteisia taulukkoja" -#: awkgram.y:1519 +#: awkgram.y:1517 msgid "call of `length' without parentheses is not portable" msgstr "â€lengthâ€-kutsu ilman sulkumerkkejä ei ole siirrettävä" -#: awkgram.y:1582 +#: awkgram.y:1580 msgid "indirect function calls are a gawk extension" msgstr "epäsuorat funktiokutsut ovat gawk-laajennus" -#: awkgram.y:1595 +#: awkgram.y:1593 #, 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:1673 +#: awkgram.y:1671 msgid "invalid subscript expression" msgstr "virheellinen indeksointilauseke" -#: awkgram.y:1713 +#: awkgram.y:1711 msgid "use of non-array as array" msgstr "ei-taulukon käyttö taulukkona" -#: awkgram.y:1977 awkgram.y:1997 msg.c:98 +#: awkgram.y:1975 awkgram.y:1995 msg.c:98 msgid "warning: " msgstr "varoitus:" -#: awkgram.y:1995 msg.c:130 +#: awkgram.y:1993 msg.c:130 msgid "fatal: " msgstr "tuhoisa:" -#: awkgram.y:2045 +#: awkgram.y:2043 msgid "unexpected newline or end of string" msgstr "odottamaton rivinvaihto tai merkkijonon loppu" -#: awkgram.y:2301 awkgram.y:2359 awkgram.y:2543 +#: awkgram.y:2300 awkgram.y:2358 awkgram.y:2542 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "ei voi avata lähdetiedostoa â€%s†lukemista varten (%s)" -#: awkgram.y:2302 awkgram.y:2360 builtin.c:119 +#: awkgram.y:2301 awkgram.y:2359 builtin.c:122 msgid "reason unknown" msgstr "syy tuntematon" -#: awkgram.y:2318 +#: awkgram.y:2317 #, c-format msgid "already included source file `%s'" msgstr "on jo sisällytetty lähdetiedostoon â€%sâ€" -#: awkgram.y:2344 +#: awkgram.y:2343 msgid "@include is a gawk extension" msgstr "@include on gawk-laajennus" -#: awkgram.y:2350 +#: awkgram.y:2349 msgid "empty filename after @include" msgstr "tyhjä tiedostonimi @include:n jälkeen" -#: awkgram.y:2495 +#: awkgram.y:2494 msgid "empty program text on command line" msgstr "tyhjä ohjelmateksti komentorivillä" -#: awkgram.y:2610 +#: awkgram.y:2609 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "ei voi lukea lähdetiedostoa â€%s†(%s)" -#: awkgram.y:2621 +#: awkgram.y:2620 #, c-format msgid "source file `%s' is empty" msgstr "lähdetiedosto â€%s†on tyhjä" -#: awkgram.y:2806 +#: awkgram.y:2797 msgid "source file does not end in newline" msgstr "lähdetiedoston lopussa ei ole rivinvaihtoa" -#: awkgram.y:2883 +#: awkgram.y:2900 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:2907 +#: awkgram.y:2924 #, 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:2911 +#: awkgram.y:2928 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "tawkin regex-määre â€/.../%c†ei toimi gawkissa" -#: awkgram.y:2918 +#: awkgram.y:2935 msgid "unterminated regexp" msgstr "päättämätön säännöllinen lauseke" -#: awkgram.y:2922 +#: awkgram.y:2939 msgid "unterminated regexp at end of file" msgstr "päättämätön säännöllinen lauseke tiedoston lopussa" -#: awkgram.y:2981 +#: awkgram.y:2998 msgid "use of `\\ #...' line continuation is not portable" msgstr "â€\\ #...â€-rivijatkamisen käyttö ei ole siirrettävä" -#: awkgram.y:2997 +#: awkgram.y:3014 msgid "backslash not last character on line" msgstr "kenoviiva ei ole rivin viimeinen merkki" -#: awkgram.y:3058 +#: awkgram.y:3075 msgid "POSIX does not allow operator `**='" msgstr "POSIX ei salli operaattoria â€**=â€" -#: awkgram.y:3060 +#: awkgram.y:3077 msgid "old awk does not support operator `**='" msgstr "vanha awk ei tue operaattoria â€**=â€" -#: awkgram.y:3069 +#: awkgram.y:3086 msgid "POSIX does not allow operator `**'" msgstr "POSIX ei salli operaattoria â€**â€" -#: awkgram.y:3071 +#: awkgram.y:3088 msgid "old awk does not support operator `**'" msgstr "vanha awk ei tue operaattoria â€**â€" -#: awkgram.y:3106 +#: awkgram.y:3123 msgid "operator `^=' is not supported in old awk" msgstr "operaattoria â€^=†ei tueta vanhassa awk:ssa" -#: awkgram.y:3114 +#: awkgram.y:3131 msgid "operator `^' is not supported in old awk" msgstr "operaattoria â€^†ei tueta vanhassa awk:ssa" -#: awkgram.y:3207 awkgram.y:3223 +#: awkgram.y:3224 awkgram.y:3240 msgid "unterminated string" msgstr "päättämätön merkkijono" -#: awkgram.y:3419 +#: awkgram.y:3436 #, c-format msgid "invalid char '%c' in expression" msgstr "virheellinen merkki ’%c’ lausekkeessa" -#: awkgram.y:3466 +#: awkgram.y:3483 #, c-format msgid "`%s' is a gawk extension" msgstr "â€%s†on gawk-laajennus" -#: awkgram.y:3471 +#: awkgram.y:3488 #, c-format msgid "`%s' is a Bell Labs extension" msgstr "â€%s†on Bell Labs -laajennus" -#: awkgram.y:3476 +#: awkgram.y:3493 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX ei salli operaattori â€%sâ€" -#: awkgram.y:3484 +#: awkgram.y:3501 #, c-format msgid "`%s' is not supported in old awk" msgstr "â€%s†ei ole tuettu vanhassa awk-ohjelmassa" -#: awkgram.y:3551 +#: awkgram.y:3568 msgid "`goto' considered harmful!\n" msgstr "â€gotoâ€-käskyä pidetään haitallisena!\n" -#: awkgram.y:3604 +#: awkgram.y:3619 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d on virheellinen argumenttilukumäärä operaattorille %s" -#: awkgram.y:3639 awkgram.y:3642 -msgid "match: third argument is a gawk extension" -msgstr "match: kolmas argumentti on gawk-laajennus" - -#: awkgram.y:3670 +#: awkgram.y:3654 #, 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:3675 +#: awkgram.y:3659 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s kolmas parametri ei ole vaihdettava objekti" -#: awkgram.y:3761 awkgram.y:3764 +#: awkgram.y:3732 awkgram.y:3735 +msgid "match: third argument is a gawk extension" +msgstr "match: kolmas argumentti on gawk-laajennus" + +#: awkgram.y:3789 awkgram.y:3792 msgid "close: second argument is a gawk extension" msgstr "close: toinen argumentti on gawk-laajennus" -#: awkgram.y:3776 +#: awkgram.y:3804 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "dcgettext(_\"...\")-käyttö on virheellinen: poista alaviiva alusta" -#: awkgram.y:3791 +#: awkgram.y:3819 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "dcngettext(_\"...\")-käyttö on virheellinen: poista alaviiva alusta" -#: awkgram.y:3883 +#: awkgram.y:3911 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funktio â€%sâ€: parametri #%d, â€%sâ€, samanlainen parametri #%d" -#: awkgram.y:3925 +#: awkgram.y:3953 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funktio â€%sâ€: parametri â€%s†varjostaa yleismuuttujaa" -#: awkgram.y:4083 +#: awkgram.y:4111 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "ei voitu avata tiedostoa â€%s†kirjoittamista varten (%s)" -#: awkgram.y:4084 +#: awkgram.y:4112 msgid "sending variable list to standard error" msgstr "lähetetään muuttujaluettelo vakiovirheeseen" -#: awkgram.y:4090 +#: awkgram.y:4118 #, c-format msgid "%s: close failed (%s)" msgstr "%s: sulkeminen epäonnistui (%s)" -#: awkgram.y:4142 +#: awkgram.y:4170 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() kutsuttu kahdesti!" -#: awkgram.y:4148 +#: awkgram.y:4176 msgid "there were shadowed variables." msgstr "siellä oli varjostettuja muuttujia." -#: awkgram.y:4178 +#: awkgram.y:4206 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "funktio â€%sâ€: ei voi käyttää funktionimeä parametrinimenä" -#: awkgram.y:4182 +#: awkgram.y:4210 #, 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:4198 +#: awkgram.y:4226 #, c-format msgid "function name `%s' previously defined" msgstr "funktionimi â€%s†on jo aikaisemmin määritelty" -#: awkgram.y:4366 awkgram.y:4372 +#: awkgram.y:4394 awkgram.y:4400 #, c-format msgid "function `%s' called but never defined" msgstr "funktiota â€%s†kutsuttiin, mutta sitä ei ole koskaan määritelty" -#: awkgram.y:4375 +#: awkgram.y:4403 #, c-format msgid "function `%s' defined but never called directly" msgstr "funktio â€%s†määriteltiin, mutta sitä ei ole koskaan kutsuttu suoraan" -#: awkgram.y:4407 +#: awkgram.y:4435 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "säännöllisen lausekkeen vakio parametrille #%d antaa boolean-arvon" -#: awkgram.y:4516 +#: awkgram.y:4544 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -527,235 +527,235 @@ "funktio â€%s†kutsuttu välilyönnillä nimen ja â€(â€-merkin\n" "välillä, tai käytetty muuttujana tai taulukkona" -#: awkgram.y:4763 eval.c:1964 +#: awkgram.y:4791 eval.c:2056 msgid "division by zero attempted" msgstr "nollalla jakoa yritettiin" -#: awkgram.y:4772 eval.c:1980 +#: awkgram.y:4800 eval.c:2072 #, c-format msgid "division by zero attempted in `%%'" msgstr "jakoa nollalla yritettiin operaattorissa â€%%â€" # kohteena voi olla vakiotuloste tai joku muu -#: builtin.c:117 +#: builtin.c:120 #, c-format msgid "%s to \"%s\" failed (%s)" msgstr "%s kohteeseen â€%s†epäonnistui (%s)" -#: builtin.c:118 +#: builtin.c:121 msgid "standard output" msgstr "vakiotuloste" -#: builtin.c:132 +#: builtin.c:135 msgid "exp: received non-numeric argument" msgstr "exp: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:138 +#: builtin.c:141 #, c-format msgid "exp: argument %g is out of range" msgstr "exp: argumentti %g on lukualueen ulkopuolella" -#: builtin.c:197 +#: builtin.c:200 #, 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:200 +#: builtin.c:203 #, 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:212 +#: builtin.c:215 #, 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:330 +#: builtin.c:333 msgid "index: received non-string first argument" msgstr "index: ensimmäinen vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:332 +#: builtin.c:335 msgid "index: received non-string second argument" msgstr "index: toinen vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:454 +#: builtin.c:457 msgid "int: received non-numeric argument" msgstr "int: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:490 +#: builtin.c:493 msgid "length: received array argument" msgstr "length: vastaanotettu taulukkoargumentti" -#: builtin.c:493 +#: builtin.c:496 msgid "`length(array)' is a gawk extension" msgstr "â€length(array)†on gawk-laajennus" -#: builtin.c:501 +#: builtin.c:504 msgid "length: received non-string argument" msgstr "length: vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:532 +#: builtin.c:535 msgid "log: received non-numeric argument" msgstr "log: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:535 +#: builtin.c:538 #, c-format msgid "log: received negative argument %g" msgstr "log: vastaanotettu negatiivinen argumentti %g" -#: builtin.c:691 builtin.c:696 +#: builtin.c:694 builtin.c:699 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:758 +#: builtin.c:762 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "kenttäleveys ohitetaan â€%%%%â€-määritteelle" -#: builtin.c:760 +#: builtin.c:764 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "tarkkuus ohitetaan â€%%%%â€-määritteelle" -#: builtin.c:762 +#: builtin.c:766 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "kenttäleveys ja tarkkuus ohitetaan â€%%%%â€-määritteelle" -#: builtin.c:813 +#: builtin.c:817 msgid "fatal: `$' is not permitted in awk formats" msgstr "kohtalokas: â€$â€-argumentti ei ole sallittu awk-muodoissa" -#: builtin.c:822 +#: builtin.c:826 msgid "fatal: arg count with `$' must be > 0" msgstr "kohtalokas: argumenttilukumäärän argumentilla â€$†on oltava > 0" -#: builtin.c:826 +#: builtin.c:830 #, 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:830 +#: builtin.c:834 msgid "fatal: `$' not permitted after period in format" msgstr "kohtalokas: â€$â€-argumentti ei ole sallittu pisteen jälkeen muodossa" -#: builtin.c:846 +#: builtin.c:850 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" "kohtalokas: ei â€$â€-argumenttia tarjottu sijantikenttäleveydelle tai " "tarkkuudelle" -#: builtin.c:917 +#: builtin.c:921 msgid "`l' is meaningless in awk formats; ignored" msgstr "â€l†on merkityksetön awk-muodoissa; ohitetaan" -#: builtin.c:921 +#: builtin.c:925 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "kohtalokas: â€l†ei ole sallittu POSIX awk -muodoissa" -#: builtin.c:934 +#: builtin.c:938 msgid "`L' is meaningless in awk formats; ignored" msgstr "â€L†on merkityksetön awk-muodoissa; ohitetaan" -#: builtin.c:938 +#: builtin.c:942 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "kohtalokas: â€L†ei ole sallittu POSIX awk -muodoissa" -#: builtin.c:951 +#: builtin.c:955 msgid "`h' is meaningless in awk formats; ignored" msgstr "â€h†on merkityksetön awk-muodoissa; ohitetaan" -#: builtin.c:955 +#: builtin.c:959 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "kohtalokas: â€h†ei ole sallittu POSIX awk -muodoissa" -#: builtin.c:1268 +#: builtin.c:1272 #, 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:1328 +#: builtin.c:1332 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "ohitetaan tuntematon muotoargumenttimerkki â€%câ€: ei muunnettu argumenttia" -#: builtin.c:1333 +#: builtin.c:1337 msgid "fatal: not enough arguments to satisfy format string" msgstr "kohtalokas: ei kylliksi argumentteja muotomerkkijonon tyydyttämiseksi" -#: builtin.c:1335 +#: builtin.c:1339 msgid "^ ran out for this one" msgstr "^ tällainen loppui kesken" -#: builtin.c:1342 +#: builtin.c:1346 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: muotoargumentilla ei ole ohjauskirjainta" -#: builtin.c:1345 +#: builtin.c:1349 msgid "too many arguments supplied for format string" msgstr "muotomerkkijonoon toimitettu liian monta argumenttia" -#: builtin.c:1419 builtin.c:1430 +#: builtin.c:1423 builtin.c:1434 msgid "printf: no arguments" msgstr "printf: ei argumentteja" -#: builtin.c:1471 +#: builtin.c:1475 msgid "sqrt: received non-numeric argument" msgstr "sqrt: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:1475 +#: builtin.c:1479 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: kutsuttu negatiivisella argumentilla %g" -#: builtin.c:1499 +#: builtin.c:1503 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: pituus %g ei ole >= 1" -#: builtin.c:1501 +#: builtin.c:1505 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: pituus %g ei ole >= 0" -#: builtin.c:1508 +#: builtin.c:1512 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: typistetään pituus %g, joka ei ole kokonaisluku" -#: builtin.c:1513 +#: builtin.c:1517 #, 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:1525 +#: builtin.c:1529 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: aloitusindeksi %g on virheellinen, käytetään 1:tä" -#: builtin.c:1530 +#: builtin.c:1534 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: typistetään aloitusindeksi %g, joka ei ole kokonaisluku" -#: builtin.c:1555 +#: builtin.c:1559 msgid "substr: source string is zero length" msgstr "substr: lähdemerkkijono on nollapituinen" -#: builtin.c:1571 +#: builtin.c:1575 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: aloitusindeksi %g on merkkijonon lopun jälkeen" -#: builtin.c:1579 +#: builtin.c:1583 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -763,220 +763,226 @@ "substr: pituus %g alkuindeksissä %g ylittää ensimmäisen argumentin pituuden " "(%lu)" -#: builtin.c:1652 +#: builtin.c:1657 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" "strftime: muotoarvolla kohteessa PROCINFO[\"strftime\"] on numerotyyppi" -#: builtin.c:1675 +#: builtin.c:1680 msgid "strftime: received non-numeric second argument" msgstr "strftime: toinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:1682 +#: builtin.c:1683 +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:1690 msgid "strftime: received non-string first argument" msgstr "strftime: ensimmäinen vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:1688 +#: builtin.c:1696 msgid "strftime: received empty format string" msgstr "strftime: vastaanotettu tyhjä muotomerkkijono" -#: builtin.c:1754 +#: builtin.c:1762 msgid "mktime: received non-string argument" msgstr "mktime: vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:1771 +#: builtin.c:1779 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:1806 +#: builtin.c:1814 msgid "'system' function not allowed in sandbox mode" msgstr "â€systemâ€-funktio ei ole sallittu hiekkalaatikkotilassa" -#: builtin.c:1811 +#: builtin.c:1819 msgid "system: received non-string argument" msgstr "system: vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:1866 eval.c:1165 eval.c:1698 eval.c:1711 +#: builtin.c:1874 eval.c:1159 eval.c:1790 eval.c:1803 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "viite alustamattomaan muuttujaan â€%sâ€" -#: builtin.c:1933 +#: builtin.c:1941 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "viite alustamattomaan kenttään â€$%dâ€" -#: builtin.c:2020 +#: builtin.c:2028 msgid "tolower: received non-string argument" msgstr "tolower: vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:2054 +#: builtin.c:2062 msgid "toupper: received non-string argument" msgstr "toupper: vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:2090 +#: builtin.c:2098 msgid "atan2: received non-numeric first argument" msgstr "atan2: ensimmäinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2092 +#: builtin.c:2100 msgid "atan2: received non-numeric second argument" msgstr "atan2: toinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2111 +#: builtin.c:2119 msgid "sin: received non-numeric argument" msgstr "sin: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2127 +#: builtin.c:2135 msgid "cos: received non-numeric argument" msgstr "cos: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2180 +#: builtin.c:2188 msgid "srand: received non-numeric argument" msgstr "srand: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2211 +#: builtin.c:2219 msgid "match: third argument is not an array" msgstr "match: kolmas argumentti ei ole taulukko" -#: builtin.c:2718 +#: builtin.c:2483 msgid "gensub: third argument of 0 treated as 1" msgstr "gensub: 0-arvoinen kolmas argumentti käsitellään kuin 1" -#: builtin.c:2757 +#: builtin.c:2776 msgid "lshift: received non-numeric first argument" msgstr "lshift: ensimmäinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2759 +#: builtin.c:2778 msgid "lshift: received non-numeric second argument" msgstr "lshift: toinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2765 +#: builtin.c:2784 #, c-format msgid "lshift(%lf, %lf): negative values will give strange results" msgstr "lshift(%lf, %lf): negatiiviset arvot antavat outoja tuloksia" -#: builtin.c:2767 +#: builtin.c:2786 #, c-format msgid "lshift(%lf, %lf): fractional values will be truncated" msgstr "lshift(%lf, %lf): jaosarvot typistetään" -#: builtin.c:2769 +#: builtin.c:2788 #, 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:2794 +#: builtin.c:2813 msgid "rshift: received non-numeric first argument" msgstr "rshift: ensimmäinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2796 +#: builtin.c:2815 msgid "rshift: received non-numeric second argument" msgstr "rshift: toinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2802 +#: builtin.c:2821 #, c-format msgid "rshift(%lf, %lf): negative values will give strange results" msgstr "rshift(%lf, %lf): negatiiviset arvot antavat outoja tuloksia" -#: builtin.c:2804 +#: builtin.c:2823 #, c-format msgid "rshift(%lf, %lf): fractional values will be truncated" msgstr "rshift(%lf, %lf): jaosarvot typistetään" -#: builtin.c:2806 +#: builtin.c:2825 #, 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:2831 +#: builtin.c:2850 msgid "and: received non-numeric first argument" msgstr "and: ensimmäinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2833 +#: builtin.c:2852 msgid "and: received non-numeric second argument" msgstr "and: toinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2839 +#: builtin.c:2858 #, c-format msgid "and(%lf, %lf): negative values will give strange results" msgstr "and(%lf, %lf): negatiiviset arvot antavat outoja tuloksia" -#: builtin.c:2841 +#: builtin.c:2860 #, c-format msgid "and(%lf, %lf): fractional values will be truncated" msgstr "and(%lf, %lf): jaosarvot typistetään" -#: builtin.c:2866 +#: builtin.c:2885 msgid "or: received non-numeric first argument" msgstr "or: ensimmäinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2868 +#: builtin.c:2887 msgid "or: received non-numeric second argument" msgstr "or: toinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2874 +#: builtin.c:2893 #, c-format msgid "or(%lf, %lf): negative values will give strange results" msgstr "or(%lf, %lf): negatiiviset arvot antavat outoja tuloksia" -#: builtin.c:2876 +#: builtin.c:2895 #, c-format msgid "or(%lf, %lf): fractional values will be truncated" msgstr "or(%lf, %lf): jaosarvot typistetään" -#: builtin.c:2904 +#: builtin.c:2923 msgid "xor: received non-numeric first argument" msgstr "xor: ensimmäinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2906 +#: builtin.c:2925 msgid "xor: received non-numeric second argument" msgstr "xor: toinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2912 +#: builtin.c:2931 #, c-format msgid "xor(%lf, %lf): negative values will give strange results" msgstr "xor(%lf, %lf): negatiiviset arvot antavat outoja tuloksia" -#: builtin.c:2914 +#: builtin.c:2933 #, c-format msgid "xor(%lf, %lf): fractional values will be truncated" msgstr "xor(%lf, %lf): jaosarvot typistetään" -#: builtin.c:2938 builtin.c:2944 +#: builtin.c:2957 builtin.c:2963 msgid "compl: received non-numeric argument" msgstr "compl: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2946 +#: builtin.c:2965 #, c-format msgid "compl(%lf): negative value will give strange results" msgstr "compl(%lf): negatiiviset arvot antavat outoja tuloksia" -#: builtin.c:2948 +#: builtin.c:2967 #, c-format msgid "compl(%lf): fractional value will be truncated" msgstr "compl(%lf): jaosarvo typistetään" -#: builtin.c:3117 +#: builtin.c:3136 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: â€%s†ei ole kelvollinen paikallinen kategoria" -#: eval.c:411 +#: eval.c:412 #, c-format msgid "unknown nodetype %d" msgstr "tuntematon solmutyyppi %d" -#: eval.c:422 eval.c:436 +#: eval.c:423 eval.c:437 #, c-format msgid "unknown opcode %d" msgstr "tuntematon käskykoodi %d" -#: eval.c:433 +#: eval.c:434 #, c-format msgid "opcode %s not an operator or keyword" msgstr "käskykoodi %s ei ole operaattori tai avainsana" -#: eval.c:487 +#: eval.c:488 msgid "buffer overflow in genflags2str" msgstr "puskurin ylivuoto funktiossa genflags2str" @@ -1013,121 +1019,126 @@ msgid "turning off `--lint' due to assignment to `LINT'" msgstr "käännetään pois â€--lintâ€-valitsin â€LINTâ€-sijoituksen vuoksi" -#: eval.c:1127 eval.c:1685 +#: 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:1155 -msgid "assignment is not allowed to result of builtin function" -msgstr "sijoitusta ei sallita sisäänrakennetun funktion tulokselle" - -#: eval.c:1164 eval.c:1697 eval.c:1710 +#: eval.c:1158 eval.c:1789 eval.c:1802 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "viite alustamattomaan argumenttiin â€%sâ€" -#: eval.c:1183 +#: eval.c:1177 msgid "attempt to field reference from non-numeric value" msgstr "yritettiin kenttäviitettä arvosta, joka ei ole numeerinen" -#: eval.c:1185 +#: eval.c:1179 msgid "attempt to field reference from null string" msgstr "yritettiin kenttäviitettä null-merkkijonosta" -#: eval.c:1191 +#: eval.c:1185 #, c-format msgid "attempt to access field %ld" msgstr "yritettiin saantia kenttään %ld" -#: eval.c:1200 +#: eval.c:1194 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "viite alustamattomaan kenttään â€$%ldâ€" -#: eval.c:1262 +#: eval.c:1256 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "funktio â€%s†kutsuttiin useammalla argumentilla kuin esiteltiin" -#: eval.c:1426 +#: eval.c:1437 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: odottamaton tyyppi â€%sâ€" -#: eval.c:1510 +#: eval.c:1532 msgid "division by zero attempted in `/='" msgstr "jakoa nollalla yritettiin operaatiossa â€/=â€" -#: eval.c:1517 +#: eval.c:1539 #, c-format msgid "division by zero attempted in `%%='" msgstr "jakoa nollalla yritettiin operaatiossa â€%%=â€" -#: eval.c:1784 eval.c:2030 +#: 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:1815 +#: eval.c:1907 msgid "assignment used in conditional context" msgstr "sijoitusta käytetty ehdollisessa kontekstissa" -#: eval.c:1819 +#: eval.c:1911 msgid "statement has no effect" msgstr "käskyllä ei ole vaikutusta" -#: eval.c:2233 +#: 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:2343 +#: 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:2355 +#: eval.c:2470 #, c-format msgid "function `%s' not defined" msgstr "funktio â€%s†ei ole määritelty" -#: eval.c:2416 +#: 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:2477 +#: 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:2532 +#: eval.c:2661 +msgid "`exit' cannot be called in the current context" +msgstr "â€exit†ei voida kutsua nykyisessä asiayhteydessä" + +#: eval.c:2700 #, c-format msgid "`next' cannot be called from a `%s' rule" msgstr "â€next†ei voida kutsua â€%sâ€-säännöstä" -#: eval.c:2599 +#: eval.c:2766 #, c-format msgid "Sorry, don't know how to interpret `%s'" msgstr "Ei osata tulkita kohdetta â€%sâ€" -#: ext.c:64 +#: ext.c:54 msgid "extensions are not allowed in sandbox mode" msgstr "laajennuksia ei sallita hiekkalaatikkotilassa" -#: ext.c:70 ext.c:75 +#: ext.c:60 ext.c:65 msgid "`extension' is a gawk extension" msgstr "â€extension†on gawk-laajennus" -#: ext.c:85 +#: ext.c:75 #, c-format msgid "fatal: extension: cannot open `%s' (%s)\n" msgstr "tuhoisa: extension: ei voi avata solmua â€%s†(%s)\n" -#: ext.c:94 +#: ext.c:84 #, c-format msgid "" "fatal: extension: library `%s': does not define " @@ -1136,68 +1147,68 @@ "tuhoisa: extension: kirjasto â€%sâ€: ei määrittele " "â€plugin_is_GPL_compatible†(%s)\n" -#: ext.c:103 +#: ext.c:93 #, c-format msgid "fatal: 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:127 msgid "extension: missing function name" msgstr "extension: puuttuva funktionimi" -#: ext.c:142 +#: ext.c:132 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: virheellinen merkki â€%c†funktionimessä â€%sâ€" -#: ext.c:151 +#: ext.c:141 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: ei voi määritellä uudelleen funktiota â€%sâ€" -#: ext.c:155 +#: ext.c:145 #, c-format msgid "extension: function `%s' already defined" msgstr "extension: funktio â€%s†on jo määritelty" -#: ext.c:160 +#: ext.c:150 #, c-format msgid "extension: function name `%s' previously defined" msgstr "extension: funktionimi â€%s†on määritelty jo aiemmin" -#: ext.c:162 +#: ext.c:152 #, 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:156 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: negatiivinen argumenttilukumäärä funktiolle â€%sâ€" -#: ext.c:269 +#: ext.c:259 #, 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:262 #, c-format msgid "function `%s': missing argument #%d" msgstr "function â€%sâ€: puuttuva argumentti #%d" -#: ext.c:289 +#: ext.c:279 #, 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:283 #, 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:296 msgid "Operation Not Supported" msgstr "Toimintoa ei tueta" @@ -1205,175 +1216,170 @@ msgid "NF set to negative value" msgstr "NF asetettu negatiiviseen arvoon" -#: field.c:950 field.c:957 field.c:961 +#: field.c:951 field.c:958 field.c:962 msgid "split: fourth argument is a gawk extension" msgstr "split: neljäs argumentti on gawk-laajennus" -#: field.c:954 +#: field.c:955 msgid "split: fourth argument is not an array" msgstr "split: neljäs argumentti ei ole taulukko" -#: field.c:968 +#: field.c:969 msgid "split: second argument is not an array" msgstr "split: toinen argumentti ei ole taulukko" -#: field.c:972 +#: field.c:973 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:977 +#: field.c:978 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:980 +#: field.c:981 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:1009 +#: field.c:1010 msgid "split: null string for third arg is a gawk extension" msgstr "split: null-merkkijono kolmantena argumenttina on gawk-laajennus" -#: field.c:1049 +#: field.c:1050 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: neljäs argumentti ei ole taulukko" -#: field.c:1054 +#: field.c:1055 msgid "patsplit: second argument is not an array" msgstr "patsplit: toinen argumentti ei ole taulukko" -#: field.c:1060 +#: field.c:1061 msgid "patsplit: third argument must be non-null" msgstr "patsplit: kolmas argumentti ei ole taulukko" -#: field.c:1064 +#: field.c:1065 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:1069 +#: field.c:1070 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:1072 +#: field.c:1073 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:1109 +#: field.c:1110 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "â€FIELDWIDTHS†on gawk-laajennus" -#: field.c:1172 +#: field.c:1173 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "virheellinen FIELDWIDTHS-arvo, lähellä â€%sâ€" -#: field.c:1245 +#: field.c:1246 msgid "null string for `FS' is a gawk extension" msgstr "null-merkkijono â€FSâ€-kenttäerotinmuuttujalle on gawk-laajennus" -#: field.c:1249 +#: field.c:1250 msgid "old awk does not support regexps as value of `FS'" msgstr "vanha awk ei tue regexp-arvoja â€FSâ€-kenttäerotinmuuttujana" -#: field.c:1368 +#: field.c:1369 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:282 +#: io.c:280 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "komentoriviargumentti â€%s†on hakemisto: ohitettiin" -#: io.c:285 io.c:384 +#: io.c:283 io.c:385 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "ei voi avata tiedostoa â€%s†lukemista varten (%s)" -#: io.c:431 -#, c-format -msgid "error reading input file `%s': %s" -msgstr "virhe luettaessa syötetiedostoa â€%sâ€: %s" - -#: io.c:500 +#: io.c:501 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "tiedostomäärittelijän %d (â€%sâ€) sulkeminen epäonnistui (%s)" -#: io.c:577 +#: io.c:578 msgid "redirection not allowed in sandbox mode" msgstr "edelleenohjaus ei ole sallittua hiekkalaatikkotilassa" -#: io.c:611 +#: io.c:612 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "lausekkeella â€%sâ€-uudellenohjauksessa on vain numeerinen arvo" -#: io.c:617 +#: io.c:618 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "lausekkeella â€%sâ€-uudelleenohjauksessa on null-merkkijonoarvo" @@ -1481,7 +1487,7 @@ msgid "no explicit close of file `%s' provided" msgstr "tiedoston â€%s†eksplisiittistä sulkemista ei tarjota" -#: io.c:1129 io.c:1184 main.c:795 main.c:832 +#: io.c:1129 io.c:1184 main.c:794 main.c:831 #, c-format msgid "error writing standard output (%s)" msgstr "virhe kirjoitettaessa vakiotulosteeseen (%s)" @@ -1543,93 +1549,93 @@ msgid "could not open `%s', mode `%s'" msgstr "ei voitu avata laitetta â€%sâ€, tila â€%sâ€" -#: io.c:1744 +#: io.c:1747 #, c-format msgid "close of master pty failed (%s)" msgstr "â€master ptyâ€-sulkeminen epäonnistui (%s)" -#: io.c:1746 io.c:1914 io.c:2071 +#: io.c:1749 io.c:1917 io.c:2074 #, c-format msgid "close of stdout in child failed (%s)" msgstr "vakiotulosteen sulkeminen lapsiprosessissa epäonnistui (%s)" -#: io.c:1749 +#: io.c:1752 #, 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:1751 io.c:1919 +#: io.c:1754 io.c:1922 #, c-format msgid "close of stdin in child failed (%s)" msgstr "vakiosyötteen sulkeminen lapsiprosessissa epäonnistui (%s)" -#: io.c:1754 +#: io.c:1757 #, 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:1756 io.c:1777 +#: io.c:1759 io.c:1780 #, c-format msgid "close of slave pty failed (%s)" msgstr "â€slave ptyâ€:n sulkeminen epäonnistui (%s)" -#: io.c:1855 io.c:1917 io.c:2049 io.c:2074 +#: io.c:1858 io.c:1920 io.c:2052 io.c:2077 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" "putken siirtäminen vakiotulosteeseen lapsiprosessissa epäonnistui (dup: %s)" -#: io.c:1862 io.c:1922 +#: io.c:1865 io.c:1925 #, 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:1882 io.c:2064 +#: io.c:1885 io.c:2067 msgid "restoring stdout in parent process failed\n" msgstr "vakiotulosteen palauttaminen äitiprosessissa epäonnistui\n" -#: io.c:1890 +#: io.c:1893 msgid "restoring stdin in parent process failed\n" msgstr "vakiosyötön palauttaminen äitiprosessissa epäonnistui\n" -#: io.c:1925 io.c:2076 io.c:2090 +#: io.c:1928 io.c:2079 io.c:2093 #, c-format msgid "close of pipe failed (%s)" msgstr "putken sulkeminen epäonnistui (%s)" -#: io.c:1970 +#: io.c:1973 msgid "`|&' not supported" msgstr "â€|&†ei tueta" -#: io.c:2036 +#: io.c:2039 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "ei voi avata putkea â€%s†(%s)" -#: io.c:2084 +#: io.c:2087 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "ei voida luoda lapsiprosessia komennolle â€%s†(fork: %s)" -#: io.c:2517 +#: io.c:2520 #, c-format msgid "data file `%s' is empty" msgstr "data-tiedosto â€%s†on tyhjä" -#: io.c:2558 io.c:2566 +#: io.c:2561 io.c:2569 msgid "could not allocate more input memory" msgstr "ei voitu varata lisää syötemuistia" -#: io.c:3119 +#: io.c:3127 msgid "multicharacter value of `RS' is a gawk extension" msgstr "â€RSâ€-monimerkkiarvo on gawk-laajennus" -#: io.c:3224 +#: io.c:3232 msgid "IPv6 communication is not supported" msgstr "IPv6-viestintää ei tueta" @@ -1698,121 +1704,121 @@ msgid "no program text at all!" msgstr "ei ohjelmatekstiä ollenkaan!" -#: main.c:735 +#: main.c:734 #, 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:737 +#: main.c:736 #, 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:742 +#: main.c:741 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX-valitsimet:\t\tGNU-pitkät valitsimet: (vakio)\n" -#: main.c:743 +#: main.c:742 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f ohjelmatiedosto\t\t--file=ohjelmatiedosto\n" -#: main.c:744 +#: main.c:743 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:745 +#: main.c:744 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=arvo\t\t--assign=muuttuja=arvo\n" -#: main.c:746 +#: main.c:745 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Lyhyet valitsimet:\t\tGNU-pitkät valitsimet: (laajennukset)\n" -#: main.c:747 +#: main.c:746 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:748 +#: main.c:747 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:749 +#: main.c:748 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:750 +#: main.c:749 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[tiedosto]\t\t--dump-variables[=tiedosto]\n" -#: main.c:751 +#: main.c:750 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'program-text'\t--source='program-text'\n" -#: main.c:752 +#: main.c:751 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E file\t\t\t--exec=tiedosto\n" -#: main.c:753 +#: main.c:752 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-po\n" -#: main.c:754 +#: main.c:753 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:755 +#: main.c:754 msgid "\t-L [fatal]\t\t--lint[=fatal]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: main.c:756 +#: main.c:755 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:757 +#: main.c:756 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:758 +#: main.c:757 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:759 +#: main.c:758 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[tiedosto]\t\t--profile[=tiedosto]\n" -#: main.c:760 +#: main.c:759 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:761 +#: main.c:760 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:763 +#: main.c:762 msgid "\t-R file\t\t\t--command=file\n" msgstr "\t-R tiedosto\t\t\t--exec=tiedosto\n" -#: main.c:764 +#: main.c:763 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:765 +#: main.c:764 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:766 +#: main.c:765 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:768 +#: main.c:767 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:771 +#: main.c:770 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -1821,7 +1827,7 @@ #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:780 +#: main.c:779 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -1834,7 +1840,7 @@ "joka on kappale â€Reporting Problems and Bugs†painetussa versiossa.\n" "\n" -#: main.c:784 +#: main.c:783 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -1844,7 +1850,7 @@ "Oletuksena se lukee vakiosyötettä ja kirjoittaa vakiotulosteeseen.\n" "\n" -#: main.c:788 +#: main.c:787 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -1854,7 +1860,7 @@ "\tgawk '{ sum += $1 }; END { print sum }' tiedosto\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:808 +#: main.c:807 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -1873,7 +1879,7 @@ "ehtojen mukaisesti.\n" "\n" -#: main.c:816 +#: main.c:815 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 +1893,7 @@ "GNU General Public License-ehdoista.\n" "\n" -#: main.c:822 +#: main.c:821 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 +1901,16 @@ "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:857 +#: main.c:856 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft ei aseta FS välilehteen POSIX awk:ssa" -#: main.c:1091 +#: main.c:1090 #, c-format msgid "unknown value for field spec: %d\n" msgstr "tuntematon arvo kenttämääritteelle: %d\n" -#: main.c:1152 +#: main.c:1171 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -1913,59 +1919,52 @@ "%s: â€%s†argumentti valitsimelle â€-v†ei ole â€var=arvoâ€-muodossa\n" "\n" -#: main.c:1178 +#: main.c:1197 #, c-format msgid "`%s' is not a legal variable name" msgstr "â€%s†ei ole laillinen muuttujanimi" -#: main.c:1181 +#: main.c:1200 #, 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:1185 -#, fuzzy, c-format +#: main.c:1204 +#, c-format msgid "cannot use gawk builtin `%s' as variable name" -msgstr "" -"extension: ei voi käyttää gawk-ohjelman sisäistä muuttujanimeä â€%s†" -"funktionimenä" +msgstr "ei voi käyttää gawk-ohjelman sisäistä â€%sâ€-määrittelyä muuttujanimenä" -#: main.c:1190 -#, fuzzy, c-format +#: main.c:1209 +#, c-format msgid "cannot use function `%s' as variable name" -msgstr "funktionimeä â€%s†ei voi käyttää muuttujana tai taulukkona" +msgstr "funktionimeä â€%s†ei voi käyttää muuttujanimenä" -#: main.c:1243 +#: main.c:1262 msgid "floating point exception" msgstr "liukulukupoikkeus" -#: main.c:1250 +#: main.c:1269 msgid "fatal error: internal error" msgstr "tuhoisa virhe: sisäinen virhe" -#: main.c:1265 +#: main.c:1284 msgid "fatal error: internal error: segfault" msgstr "tuhoisa virhe: sisäinen virhe: segmenttivirhe" -#: main.c:1277 +#: main.c:1296 msgid "fatal error: internal error: stack overflow" msgstr "tuhoisa virhe: sisäinen virhe: pinoylivuoto" -#: main.c:1327 +#: main.c:1346 #, c-format msgid "no pre-opened fd %d" msgstr "ei avattu uudelleen tiedostomäärittelijää %d" -#: main.c:1334 +#: main.c:1353 #, 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:1357 main.c:1366 -#, c-format -msgid "could not find groups: %s" -msgstr "ei voitu löytää ryhmiä: %s" - #: msg.c:63 #, c-format msgid "cmd. line:" @@ -2056,12 +2055,12 @@ msgid "internal error: %s with null vname" msgstr "sisäinen virhe: %s null vname-arvolla" -#: profile.c:938 +#: profile.c:952 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawk-profiili, luotu %s\n" -#: profile.c:1317 +#: profile.c:1331 #, c-format msgid "" "\n" @@ -2070,94 +2069,100 @@ "\n" "\t# Funktiot, luetteloitu aakkosjärjestyksessä\n" -#: profile.c:1356 +#: profile.c:1370 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: tuntematon edelleenohjaustyyppi %d" -#: re.c:572 +#: re.c:573 #, c-format -msgid "range of the form `[%c-%c]' is locale dependant" +msgid "range of the form `[%c-%c]' is locale dependent" msgstr "muodon â€[%c-%c]†lukualue on paikallisasetuksesta riippuvainen" -#: re.c:599 +#: re.c:600 #, 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 "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" + #~ msgid "attempt to use array in a scalar context" #~ msgstr "yritettiin käyttää taulukkoa skalaarikontekstissa" diff -urN gawk-4.0.0/po/fr.po gawk-4.0.1/po/fr.po --- gawk-4.0.0/po/fr.po 2011-06-23 09:46:20.000000000 +0300 +++ gawk-4.0.1/po/fr.po 2012-03-28 22:03:47.000000000 +0200 @@ -7,10 +7,10 @@ # 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-06-23 09:46+0300\n" -"PO-Revision-Date: 2011-05-22 09:31+0200\n" +"POT-Creation-Date: 2012-03-28 22:03+0200\n" +"PO-Revision-Date: 2012-01-30 23:52+0100\n" "Last-Translator: Jean-Philippe Guérard \n" "Language-Team: French \n" @@ -44,9 +44,9 @@ 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:81 builtin.c:1381 builtin.c:1423 -#: builtin.c:1436 builtin.c:1851 builtin.c:1863 eval.c:1135 eval.c:1139 -#: eval.c:1473 eval.c:1720 +#: array.c:302 array.c:707 builtin.c:84 builtin.c:1385 builtin.c:1427 +#: builtin.c:1440 builtin.c:1859 builtin.c:1871 eval.c:1135 eval.c:1139 +#: eval.c:1495 eval.c:1812 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "tentative d'utilisation du tableau « %s » dans un contexte scalaire" @@ -66,7 +66,7 @@ msgid "delete: index `%s' not in array `%s'" msgstr "delete : l'indice « %s » est absent du tableau « %s »" -#: array.c:734 eval.c:1773 +#: array.c:734 eval.c:1865 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "tentative d'utiliser le scalaire « %s[\"%.*s\"] » comme tableau" @@ -132,12 +132,12 @@ 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:1655 #, 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:1659 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "la fonction de comparaison « %s » du tri n'est pas définie" @@ -178,354 +178,354 @@ msgid "duplicate `default' detected in switch body" msgstr "plusieurs « default » ont été détectés dans le corps du switch" -#: awkgram.y:811 +#: awkgram.y:809 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:820 +#: awkgram.y:818 msgid "`continue' is not allowed outside a loop" msgstr "« continue » est interdit en dehors d'une boucle ou d'un switch" -#: awkgram.y:830 +#: awkgram.y:828 #, c-format msgid "`next' used in %s action" msgstr "« next » est utilisé dans l'action %s" -#: awkgram.y:838 +#: awkgram.y:836 msgid "`nextfile' is a gawk extension" msgstr "« nextfile » est une extension gawk" -#: awkgram.y:843 +#: awkgram.y:841 #, c-format msgid "`nextfile' used in %s action" msgstr "« nextfile » est utilisé dans l'action %s" -#: awkgram.y:867 +#: awkgram.y:865 msgid "`return' used outside function context" msgstr "« return » est utilisé hors du contexte d'une fonction" -#: awkgram.y:927 +#: awkgram.y:925 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:997 awkgram.y:1001 awkgram.y:1025 +#: awkgram.y:995 awkgram.y:999 awkgram.y:1023 msgid "`delete array' is a gawk extension" msgstr "« delete array » est une extension gawk" -#: awkgram.y:1021 +#: awkgram.y:1019 msgid "`delete(array)' is a non-portable tawk extension" msgstr "« delete(array) » est une extension non portable de tawk" -#: awkgram.y:1137 +#: awkgram.y:1135 msgid "multistage two-way pipelines don't work" msgstr "impossible d'utiliser des tubes bidirectionnels en série" -#: awkgram.y:1240 +#: awkgram.y:1238 msgid "regular expression on right of assignment" msgstr "expression rationnelle à droite d'une affectation" -#: awkgram.y:1251 +#: awkgram.y:1249 msgid "regular expression on left of `~' or `!~' operator" msgstr "expression rationnelle à gauche d'un opérateur « ~ » ou « !~ »" -#: awkgram.y:1267 awkgram.y:1421 +#: awkgram.y:1265 awkgram.y:1419 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:1277 +#: awkgram.y:1275 msgid "regular expression on right of comparison" msgstr "expression rationnelle à droite d'une comparaison" -#: awkgram.y:1396 +#: awkgram.y:1394 #, c-format msgid "`getline var' invalid inside `%s' rule" msgstr "« getline var » n'est pas valable dans une règle « %s »" -#: awkgram.y:1399 eval.c:2409 +#: awkgram.y:1397 eval.c:2504 #, c-format msgid "`getline' invalid inside `%s' rule" msgstr "« getline » n'est pas valable dans une règle « %s »" -#: awkgram.y:1404 +#: awkgram.y:1402 msgid "non-redirected `getline' undefined inside END action" msgstr "dans une action END, un « getline » non redirigé n'est pas défini" -#: awkgram.y:1423 +#: awkgram.y:1421 msgid "old awk does not support multidimensional arrays" msgstr "l'ancien awk ne dispose pas des tableaux multidimensionnels" -#: awkgram.y:1519 +#: awkgram.y:1517 msgid "call of `length' without parentheses is not portable" msgstr "l'appel de « length » sans parenthèses n'est pas portable" -#: awkgram.y:1582 +#: awkgram.y:1580 msgid "indirect function calls are a gawk extension" msgstr "les appels indirects de fonctions sont une extension gawk" -#: awkgram.y:1595 +#: awkgram.y:1593 #, 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:1673 +#: awkgram.y:1671 msgid "invalid subscript expression" msgstr "expression indice non valide" -#: awkgram.y:1713 +#: awkgram.y:1711 msgid "use of non-array as array" msgstr "utilisation d'un non tableau comme tableau" -#: awkgram.y:1977 awkgram.y:1997 msg.c:98 +#: awkgram.y:1975 awkgram.y:1995 msg.c:98 msgid "warning: " msgstr "avertissement : " -#: awkgram.y:1995 msg.c:130 +#: awkgram.y:1993 msg.c:130 msgid "fatal: " msgstr "fatal : " -#: awkgram.y:2045 +#: awkgram.y:2043 msgid "unexpected newline or end of string" msgstr "fin de chaîne ou passage à la ligne inattendu" -#: awkgram.y:2301 awkgram.y:2359 awkgram.y:2543 +#: awkgram.y:2300 awkgram.y:2358 awkgram.y:2542 #, 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:2302 awkgram.y:2360 builtin.c:119 +#: awkgram.y:2301 awkgram.y:2359 builtin.c:122 msgid "reason unknown" msgstr "raison inconnue" -#: awkgram.y:2318 +#: awkgram.y:2317 #, c-format msgid "already included source file `%s'" msgstr "le fichier source « %s » a déjà été intégré" -#: awkgram.y:2344 +#: awkgram.y:2343 msgid "@include is a gawk extension" msgstr "@include est une extension gawk" -#: awkgram.y:2350 +#: awkgram.y:2349 msgid "empty filename after @include" msgstr "Le nom de fichier après @include est vide" -#: awkgram.y:2495 +#: awkgram.y:2494 msgid "empty program text on command line" msgstr "le programme indiqué en ligne de commande est vide" -#: awkgram.y:2610 +#: awkgram.y:2609 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "impossible de lire le fichier source « %s » (%s)" -#: awkgram.y:2621 +#: awkgram.y:2620 #, c-format msgid "source file `%s' is empty" msgstr "le fichier source « %s » est vide" -#: awkgram.y:2806 +#: awkgram.y:2797 msgid "source file does not end in newline" msgstr "le fichier source ne se termine pas par un passage à la ligne" -#: awkgram.y:2883 +#: awkgram.y:2900 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:2907 +#: awkgram.y:2924 #, 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:2911 +#: awkgram.y:2928 #, 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:2918 +#: awkgram.y:2935 msgid "unterminated regexp" msgstr "expression rationnelle non refermée" -#: awkgram.y:2922 +#: awkgram.y:2939 msgid "unterminated regexp at end of file" msgstr "expression rationnelle non refermée en fin de fichier" -#: awkgram.y:2981 +#: awkgram.y:2998 msgid "use of `\\ #...' line continuation is not portable" msgstr "" "l'utilisation de « \\ #... » pour prolonger une ligne n'est pas portable" -#: awkgram.y:2997 +#: awkgram.y:3014 msgid "backslash not last character on line" msgstr "la barre oblique inverse n'est pas le dernier caractère de la ligne" -#: awkgram.y:3058 +#: awkgram.y:3075 msgid "POSIX does not allow operator `**='" msgstr "POSIX n'autorise pas l'opérateur « **= »" -#: awkgram.y:3060 +#: awkgram.y:3077 msgid "old awk does not support operator `**='" msgstr "l'ancien awk ne dispose pas de l'opérateur « **= »" -#: awkgram.y:3069 +#: awkgram.y:3086 msgid "POSIX does not allow operator `**'" msgstr "POSIX n'autorise pas l'opérateur « ** »" -#: awkgram.y:3071 +#: awkgram.y:3088 msgid "old awk does not support operator `**'" msgstr "l'ancien awk ne dispose pas de l'opérateur « ** »" -#: awkgram.y:3106 +#: awkgram.y:3123 msgid "operator `^=' is not supported in old awk" msgstr "l'ancien awk ne dispose pas de l'opérateur « ^= »" -#: awkgram.y:3114 +#: awkgram.y:3131 msgid "operator `^' is not supported in old awk" msgstr "l'ancien awk ne dispose pas de l'opérateur « ^ »" -#: awkgram.y:3207 awkgram.y:3223 +#: awkgram.y:3224 awkgram.y:3240 msgid "unterminated string" msgstr "chaîne non refermée" -#: awkgram.y:3419 +#: awkgram.y:3436 #, c-format msgid "invalid char '%c' in expression" msgstr "caractère non valide « %c » dans l'expression" -#: awkgram.y:3466 +#: awkgram.y:3483 #, c-format msgid "`%s' is a gawk extension" msgstr "« %s » est une extension gawk" -#: awkgram.y:3471 +#: awkgram.y:3488 #, c-format msgid "`%s' is a Bell Labs extension" msgstr "« %s » est une extension Bell Labs" -#: awkgram.y:3476 +#: awkgram.y:3493 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX n'autorise pas « %s »" -#: awkgram.y:3484 +#: awkgram.y:3501 #, c-format msgid "`%s' is not supported in old awk" msgstr "l'ancien awk ne dispose pas de « %s »" -#: awkgram.y:3551 +#: awkgram.y:3568 msgid "`goto' considered harmful!\n" msgstr "« goto est jugé dangereux ! » (Edsger W. Dijkstra)\n" -#: awkgram.y:3604 +#: awkgram.y:3619 #, 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:3639 awkgram.y:3642 -msgid "match: third argument is a gawk extension" -msgstr "match : le 3e argument est une extension gawk" - -#: awkgram.y:3670 +#: awkgram.y:3654 #, 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:3675 +#: awkgram.y:3659 #, 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:3761 awkgram.y:3764 +#: awkgram.y:3732 awkgram.y:3735 +msgid "match: third argument is a gawk extension" +msgstr "match : le 3e argument est une extension gawk" + +#: awkgram.y:3789 awkgram.y:3792 msgid "close: second argument is a gawk extension" msgstr "close : le 2e argument est une extension gawk" -#: awkgram.y:3776 +#: awkgram.y:3804 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "utilisation incorrecte de dcgettext(_\"...\") : enlevez le souligné de tête" -#: awkgram.y:3791 +#: awkgram.y:3819 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "utilisation incorrecte de dcngettext(_\"...\") : enlevez le souligné de tête" -#: awkgram.y:3883 +#: awkgram.y:3911 #, 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:3925 +#: awkgram.y:3953 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "fonction « %s » : le paramètre « %s » masque la variable globale" -#: awkgram.y:4083 +#: awkgram.y:4111 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "impossible d'ouvrir « %s » en écriture (%s)" -#: awkgram.y:4084 +#: awkgram.y:4112 msgid "sending variable list to standard error" msgstr "envoi de la liste des variables vers la sortie d'erreur standard" -#: awkgram.y:4090 +#: awkgram.y:4118 #, c-format msgid "%s: close failed (%s)" msgstr "%s : échec de la fermeture (%s)" -#: awkgram.y:4142 +#: awkgram.y:4170 msgid "shadow_funcs() called twice!" msgstr "shadows_funcs() a été appelé deux fois !" -#: awkgram.y:4148 +#: awkgram.y:4176 msgid "there were shadowed variables." msgstr "il y avait des variables masquées." -#: awkgram.y:4178 +#: awkgram.y:4206 #, 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:4182 +#: awkgram.y:4210 #, 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:4198 +#: awkgram.y:4226 #, c-format msgid "function name `%s' previously defined" msgstr "nom de fonction « %s » déjà défini" -#: awkgram.y:4366 awkgram.y:4372 +#: awkgram.y:4394 awkgram.y:4400 #, c-format msgid "function `%s' called but never defined" msgstr "fonction « %s » appelée sans être définie" -#: awkgram.y:4375 +#: awkgram.y:4403 #, c-format msgid "function `%s' defined but never called directly" msgstr "fonction « %s » définie mais jamais appelée directement" -#: awkgram.y:4407 +#: awkgram.y:4435 #, 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:4516 +#: awkgram.y:4544 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -534,232 +534,232 @@ "fonction « %s » appelée avec un espace entre son nom\n" "et « ( », ou utilisée comme variable ou tableau" -#: awkgram.y:4763 eval.c:1964 +#: awkgram.y:4791 eval.c:2056 msgid "division by zero attempted" msgstr "tentative de division par zéro" -#: awkgram.y:4772 eval.c:1980 +#: awkgram.y:4800 eval.c:2072 #, c-format msgid "division by zero attempted in `%%'" msgstr "tentative de division par zéro dans « %% »" -#: builtin.c:117 +#: builtin.c:120 #, c-format msgid "%s to \"%s\" failed (%s)" msgstr "échec de %s vers « %s » (%s)" -#: builtin.c:118 +#: builtin.c:121 msgid "standard output" msgstr "sortie standard" -#: builtin.c:132 +#: builtin.c:135 msgid "exp: received non-numeric argument" msgstr "exp : l'argument n'est pas numérique" -#: builtin.c:138 +#: builtin.c:141 #, c-format msgid "exp: argument %g is out of range" msgstr "exp : l'argument %g est hors limite" -#: builtin.c:197 +#: builtin.c:200 #, 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:200 +#: builtin.c:203 #, 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:212 +#: builtin.c:215 #, 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:330 +#: builtin.c:333 msgid "index: received non-string first argument" msgstr "index : le premier argument n'est pas une chaîne" -#: builtin.c:332 +#: builtin.c:335 msgid "index: received non-string second argument" msgstr "index : le second argument n'est pas une chaîne" -#: builtin.c:454 +#: builtin.c:457 msgid "int: received non-numeric argument" msgstr "int : l'argument n'est pas numérique" -#: builtin.c:490 +#: builtin.c:493 msgid "length: received array argument" msgstr "length : l'argument reçu est un tableau" -#: builtin.c:493 +#: builtin.c:496 msgid "`length(array)' is a gawk extension" msgstr "« length(tableau) » est une extension gawk" -#: builtin.c:501 +#: builtin.c:504 msgid "length: received non-string argument" msgstr "length : l'argument n'est pas une chaîne" -#: builtin.c:532 +#: builtin.c:535 msgid "log: received non-numeric argument" msgstr "log : l'argument n'est pas numérique" -#: builtin.c:535 +#: builtin.c:538 #, c-format msgid "log: received negative argument %g" msgstr "log : l'argument est négatif %g" -#: builtin.c:691 builtin.c:696 +#: builtin.c:694 builtin.c:699 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:758 +#: builtin.c:762 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "taille du champ de la spécification « %% » ignorée" -#: builtin.c:760 +#: builtin.c:764 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "précision de la spécification « %% » ignorée" -#: builtin.c:762 +#: builtin.c:766 #, 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:813 +#: builtin.c:817 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal : « $ » n'est pas autorisé dans les formats awk" -#: builtin.c:822 +#: builtin.c:826 msgid "fatal: arg count with `$' must be > 0" msgstr "fatal : le numéro d'argument de « $ » doit être > 0" -#: builtin.c:826 +#: builtin.c:830 #, 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:830 +#: builtin.c:834 msgid "fatal: `$' not permitted after period in format" msgstr "fatal : dans un format, « $ » ne doit pas suivre un point" -#: builtin.c:846 +#: builtin.c:850 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:917 +#: builtin.c:921 msgid "`l' is meaningless in awk formats; ignored" msgstr "« l » n'a aucun sens dans un format awk ; ignoré" -#: builtin.c:921 +#: builtin.c:925 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fatal : « l » est interdit dans un format awk POSIX" -#: builtin.c:934 +#: builtin.c:938 msgid "`L' is meaningless in awk formats; ignored" msgstr "« L » n'a aucun sens dans un format awk ; ignoré" -#: builtin.c:938 +#: builtin.c:942 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "fatal : « L » est interdit dans un format awk POSIX" -#: builtin.c:951 +#: builtin.c:955 msgid "`h' is meaningless in awk formats; ignored" msgstr "« h » n'a aucun sens dans un format awk ; ignoré" -#: builtin.c:955 +#: builtin.c:959 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fatal : « h » est interdit dans un format awk POSIX" -#: builtin.c:1268 +#: builtin.c:1272 #, 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:1328 +#: builtin.c:1332 #, 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:1333 +#: builtin.c:1337 msgid "fatal: not enough arguments to satisfy format string" msgstr "fatal : pas assez d'arguments pour satisfaire la chaîne de formatage" -#: builtin.c:1335 +#: builtin.c:1339 msgid "^ ran out for this one" msgstr "^ à court pour celui-ci" -#: builtin.c:1342 +#: builtin.c:1346 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf : spécification de format sans lettre de contrôle" -#: builtin.c:1345 +#: builtin.c:1349 msgid "too many arguments supplied for format string" msgstr "trop d'arguments pour la chaîne de formatage" -#: builtin.c:1419 builtin.c:1430 +#: builtin.c:1423 builtin.c:1434 msgid "printf: no arguments" msgstr "printf : aucun argument" -#: builtin.c:1471 +#: builtin.c:1475 msgid "sqrt: received non-numeric argument" msgstr "sqrt : l'argument n'est pas numérique" -#: builtin.c:1475 +#: builtin.c:1479 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt : appelé avec un argument négatif %g" -#: builtin.c:1499 +#: builtin.c:1503 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr : la longueur %g n'est pas >= 1" -#: builtin.c:1501 +#: builtin.c:1505 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr : la longueur %g n'est pas >= 0" -#: builtin.c:1508 +#: builtin.c:1512 #, 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:1513 +#: builtin.c:1517 #, 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:1525 +#: builtin.c:1529 #, 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:1530 +#: builtin.c:1534 #, 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:1555 +#: builtin.c:1559 msgid "substr: source string is zero length" msgstr "substr : la chaîne source est de longueur nulle" -#: builtin.c:1571 +#: builtin.c:1575 #, 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:1579 +#: builtin.c:1583 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -767,229 +767,233 @@ "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:1652 +#: builtin.c:1657 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:1675 +#: builtin.c:1680 msgid "strftime: received non-numeric second argument" msgstr "strftime : le second argument n'est pas numérique" -#: builtin.c:1682 +#: builtin.c:1683 +msgid "strftime: second argument less than 0 or too big for time_t" +msgstr "strftime: second argument négatif ou trop grand pour time_t" + +#: builtin.c:1690 msgid "strftime: received non-string first argument" msgstr "strftim : le premier argument n'est pas une chaîne" -#: builtin.c:1688 +#: builtin.c:1696 msgid "strftime: received empty format string" msgstr "strftime : la chaîne de formatage est vide" -#: builtin.c:1754 +#: builtin.c:1762 msgid "mktime: received non-string argument" msgstr "mktime : l'argument n'est pas une chaîne" -#: builtin.c:1771 +#: builtin.c:1779 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:1806 +#: builtin.c:1814 msgid "'system' function not allowed in sandbox mode" msgstr "La fonction « system » est interdite en isolement (mode sandbox)" -#: builtin.c:1811 +#: builtin.c:1819 msgid "system: received non-string argument" msgstr "system : l'argument n'est pas une chaîne" -#: builtin.c:1866 eval.c:1165 eval.c:1698 eval.c:1711 +#: builtin.c:1874 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:1933 +#: builtin.c:1941 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "référence à un champ non initialisé « $%d »" -#: builtin.c:2020 +#: builtin.c:2028 msgid "tolower: received non-string argument" msgstr "tolower : l'argument n'est pas une chaîne" -#: builtin.c:2054 +#: builtin.c:2062 msgid "toupper: received non-string argument" msgstr "toupper : l'argument n'est pas une chaîne" -#: builtin.c:2090 +#: builtin.c:2098 msgid "atan2: received non-numeric first argument" msgstr "atan2 : le premier argument n'est pas numérique" -#: builtin.c:2092 +#: builtin.c:2100 msgid "atan2: received non-numeric second argument" msgstr "atan2 : le second argument n'est pas numérique" -#: builtin.c:2111 +#: builtin.c:2119 msgid "sin: received non-numeric argument" msgstr "sin : l'argument n'est pas numérique" -#: builtin.c:2127 +#: builtin.c:2135 msgid "cos: received non-numeric argument" msgstr "cos : l'argument n'est pas numérique" -#: builtin.c:2180 +#: builtin.c:2188 msgid "srand: received non-numeric argument" msgstr "srand : l'argument n'est pas numérique" -#: builtin.c:2211 +#: builtin.c:2219 msgid "match: third argument is not an array" msgstr "match : le 3e argument n'est pas un tableau" -#: builtin.c:2718 +#: builtin.c:2483 msgid "gensub: third argument of 0 treated as 1" msgstr "gensub : le 3e argument vaut 0, il sera traité comme un 1" -#: builtin.c:2757 +#: builtin.c:2776 msgid "lshift: received non-numeric first argument" msgstr "lshift : le premier argument n'est pas numérique" -#: builtin.c:2759 +#: builtin.c:2778 msgid "lshift: received non-numeric second argument" msgstr "lshift : le second argument reçu n'est pas numérique" -#: builtin.c:2765 +#: builtin.c:2784 #, 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:2767 +#: builtin.c:2786 #, 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:2769 +#: builtin.c:2788 #, 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:2794 +#: builtin.c:2813 msgid "rshift: received non-numeric first argument" msgstr "rshift : le premier argument n'est pas numérique" -#: builtin.c:2796 +#: builtin.c:2815 msgid "rshift: received non-numeric second argument" msgstr "rshift : le second argument reçu n'est pas numérique" -#: builtin.c:2802 +#: builtin.c:2821 #, 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:2804 +#: builtin.c:2823 #, 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:2806 +#: builtin.c:2825 #, 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:2831 +#: builtin.c:2850 msgid "and: received non-numeric first argument" msgstr "and : le premier argument n'est pas numérique" -#: builtin.c:2833 +#: builtin.c:2852 msgid "and: received non-numeric second argument" msgstr "and : le second argument reçu n'est pas numérique" -#: builtin.c:2839 +#: builtin.c:2858 #, 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:2841 +#: builtin.c:2860 #, 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:2866 +#: builtin.c:2885 msgid "or: received non-numeric first argument" msgstr "or : le premier argument n'est pas numérique" -#: builtin.c:2868 +#: builtin.c:2887 msgid "or: received non-numeric second argument" msgstr "or : le second argument reçu n'est pas numérique" -#: builtin.c:2874 +#: builtin.c:2893 #, 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:2876 +#: builtin.c:2895 #, 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:2904 +#: builtin.c:2923 msgid "xor: received non-numeric first argument" msgstr "xor : le premier argument n'est pas numérique" -#: builtin.c:2906 +#: builtin.c:2925 msgid "xor: received non-numeric second argument" msgstr "xor : le second argument reçu n'est pas numérique" -#: builtin.c:2912 +#: builtin.c:2931 #, 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:2914 +#: builtin.c:2933 #, 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:2938 builtin.c:2944 +#: builtin.c:2957 builtin.c:2963 msgid "compl: received non-numeric argument" msgstr "compl : l'argument n'est pas numérique" -#: builtin.c:2946 +#: builtin.c:2965 #, 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:2948 +#: builtin.c:2967 #, c-format msgid "compl(%lf): fractional value will be truncated" msgstr "compl(%lf) : les valeurs non entières seront tronquées" -#: builtin.c:3117 +#: builtin.c:3136 #, 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:411 +#: eval.c:412 #, c-format msgid "unknown nodetype %d" msgstr "type de nÅ“ud %d inconnu" -#: eval.c:422 eval.c:436 +#: eval.c:423 eval.c:437 #, c-format msgid "unknown opcode %d" msgstr "code opération %d inconnu" -#: eval.c:433 +#: eval.c:434 #, 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:487 +#: eval.c:488 msgid "buffer overflow in genflags2str" msgstr "débordement de tampon dans genflag2str" @@ -1026,120 +1030,125 @@ 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:1685 +#: 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:1155 -msgid "assignment is not allowed to result of builtin function" -msgstr "impossible d'affecter au résultat d'une fonction interne" - -#: eval.c:1164 eval.c:1697 eval.c:1710 +#: eval.c:1158 eval.c:1789 eval.c:1802 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "référence à un argument non initialisé « %s »" -#: eval.c:1183 +#: eval.c:1177 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:1185 +#: eval.c:1179 msgid "attempt to field reference from null string" msgstr "tentative de référence à un champ via une chaîne nulle" -#: eval.c:1191 +#: eval.c:1185 #, c-format msgid "attempt to access field %ld" msgstr "tentative d'accès au champ %ld" -#: eval.c:1200 +#: eval.c:1194 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "référence à un champ non initialisé « $%ld »" -#: eval.c:1262 +#: eval.c:1256 #, 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:1426 +#: eval.c:1437 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: type « %s » inattendu" -#: eval.c:1510 +#: eval.c:1532 msgid "division by zero attempted in `/='" msgstr "tentative de division par zéro dans « /= »" -#: eval.c:1517 +#: eval.c:1539 #, c-format msgid "division by zero attempted in `%%='" msgstr "tentative de division par zéro dans « %%= »" -#: eval.c:1784 eval.c:2030 +#: 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:1815 +#: eval.c:1907 msgid "assignment used in conditional context" msgstr "affectation utilisée dans un contexte conditionnel" -#: eval.c:1819 +#: eval.c:1911 msgid "statement has no effect" msgstr "la déclaration est sans effet" -#: eval.c:2233 +#: 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:2343 +#: 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:2355 +#: eval.c:2470 #, c-format msgid "function `%s' not defined" msgstr "fonction « %s » non définie" -#: eval.c:2416 +#: 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:2477 +#: 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:2532 +#: eval.c:2661 +msgid "`exit' cannot be called in the current context" +msgstr "« exit » ne peut pas être appelé dans ce contexte" + +#: eval.c:2700 #, 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:2599 +#: eval.c:2766 #, 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:54 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:60 ext.c:65 msgid "`extension' is a gawk extension" msgstr "« extension » est une extension gawk" -#: ext.c:85 +#: ext.c:75 #, c-format msgid "fatal: extension: cannot open `%s' (%s)\n" msgstr "fatal : extension : impossible d'ouvrir « %s » (%s)\n" -#: ext.c:94 +#: ext.c:84 #, c-format msgid "" "fatal: extension: library `%s': does not define " @@ -1148,74 +1157,74 @@ "fatal : extension : la bibliothèque « %s »ne définit pas " "« plugin_is_GPL_compatible » (%s)\n" -#: ext.c:103 +#: ext.c:93 #, c-format msgid "fatal: 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:127 msgid "extension: missing function name" msgstr "extension : nom de fonction manquant" -#: ext.c:142 +#: ext.c:132 #, 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:141 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension : impossible de redéfinir la fonction « %s »" -#: ext.c:155 +#: ext.c:145 #, c-format msgid "extension: function `%s' already defined" msgstr "extension : fonction « %s » est déjà définie" -#: ext.c:160 +#: ext.c:150 #, 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:152 #, 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:156 #, 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:259 #, 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:262 #, c-format msgid "function `%s': missing argument #%d" msgstr "fonction « %s » : argument #%d manquant" -#: ext.c:289 +#: ext.c:279 #, 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:283 #, 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:296 msgid "Operation Not Supported" msgstr "Opération non disponible" @@ -1223,172 +1232,167 @@ msgid "NF set to negative value" msgstr "une valeur négative a été assignée à NF" -#: field.c:950 field.c:957 field.c:961 +#: field.c:951 field.c:958 field.c:962 msgid "split: fourth argument is a gawk extension" msgstr "split : le 4e argument est une extension gawk" -#: field.c:954 +#: field.c:955 msgid "split: fourth argument is not an array" msgstr "split : le 4e argument n'est pas un tableau" -#: field.c:968 +#: field.c:969 msgid "split: second argument is not an array" msgstr "split : le 2e argument n'est pas un tableau" -#: field.c:972 +#: field.c:973 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:977 +#: field.c:978 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:980 +#: field.c:981 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:1009 +#: field.c:1010 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:1049 +#: field.c:1050 msgid "patsplit: fourth argument is not an array" msgstr "patsplit : le 4e argument n'est pas un tableau" -#: field.c:1054 +#: field.c:1055 msgid "patsplit: second argument is not an array" msgstr "patsplit : le 2e argument n'est pas un tableau" -#: field.c:1060 +#: field.c:1061 msgid "patsplit: third argument must be non-null" msgstr "patsplit : le 3e argument n'est pas un tableau" -#: field.c:1064 +#: field.c:1065 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:1069 +#: field.c:1070 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:1072 +#: field.c:1073 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:1109 +#: field.c:1110 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "« FIELDWIDTHS » est une extension gawk" -#: field.c:1172 +#: field.c:1173 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "valeur de FIELDWIDTHS non valide, près de « %s »" -#: field.c:1245 +#: field.c:1246 msgid "null string for `FS' is a gawk extension" msgstr "utiliser une chaîne vide pour « FS » est une extension gawk" -#: field.c:1249 +#: field.c:1250 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:1368 +#: field.c:1369 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:282 +#: io.c:280 #, 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:285 io.c:384 +#: io.c:283 io.c:385 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "impossible d'ouvrir le fichier « %s » en lecture (%s)" -#: io.c:431 -#, c-format -msgid "error reading input file `%s': %s" -msgstr "erreur lors de la lecture du fichier en entrée « %s » : %s" - -#: io.c:500 +#: io.c:501 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "échec de la fermeture du fd %d (« %s ») : %s" -#: io.c:577 +#: io.c:578 msgid "redirection not allowed in sandbox mode" msgstr "les redirections sont interdites en isolement (mode sandbox)" -#: io.c:611 +#: io.c:612 #, 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:617 +#: io.c:618 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "l'expression dans la redirection « %s » donne une chaîne nulle" @@ -1498,7 +1502,7 @@ msgid "no explicit close of file `%s' provided" msgstr "aucune fermeture explicite du fichier « %s » fournie" -#: io.c:1129 io.c:1184 main.c:795 main.c:832 +#: io.c:1129 io.c:1184 main.c:794 main.c:831 #, c-format msgid "error writing standard output (%s)" msgstr "erreur lors de l'écriture vers la sortie standard (%s)" @@ -1562,92 +1566,92 @@ msgid "could not open `%s', mode `%s'" msgstr "impossible d'ouvrir « %s », mode « %s »" -#: io.c:1744 +#: io.c:1747 #, c-format msgid "close of master pty failed (%s)" msgstr "échec de la fermeture du pty maître (%s)" -#: io.c:1746 io.c:1914 io.c:2071 +#: io.c:1749 io.c:1917 io.c:2074 #, c-format msgid "close of stdout in child failed (%s)" msgstr "échec de la fermeture de stdout du processus fils (%s)" -#: io.c:1749 +#: io.c:1752 #, 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:1751 io.c:1919 +#: io.c:1754 io.c:1922 #, c-format msgid "close of stdin in child failed (%s)" msgstr "échec de fermeture du stdin du processus fils (%s)" -#: io.c:1754 +#: io.c:1757 #, 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:1756 io.c:1777 +#: io.c:1759 io.c:1780 #, c-format msgid "close of slave pty failed (%s)" msgstr "échec de la fermeture du pty esclave (%s)" -#: io.c:1855 io.c:1917 io.c:2049 io.c:2074 +#: io.c:1858 io.c:1920 io.c:2052 io.c:2077 #, 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:1862 io.c:1922 +#: io.c:1865 io.c:1925 #, 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:1882 io.c:2064 +#: io.c:1885 io.c:2067 msgid "restoring stdout in parent process failed\n" msgstr "échec de la restauration du stdout dans le processus parent\n" -#: io.c:1890 +#: io.c:1893 msgid "restoring stdin in parent process failed\n" msgstr "échec de la restauration du stdin dans le processus parent\n" -#: io.c:1925 io.c:2076 io.c:2090 +#: io.c:1928 io.c:2079 io.c:2093 #, c-format msgid "close of pipe failed (%s)" msgstr "échec de la fermeture du tube (%s)" -#: io.c:1970 +#: io.c:1973 msgid "`|&' not supported" msgstr "« |& » non disponible" -#: io.c:2036 +#: io.c:2039 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "impossible d'ouvrir le tube « %s » (%s)" -#: io.c:2084 +#: io.c:2087 #, 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:2517 +#: io.c:2520 #, c-format msgid "data file `%s' is empty" msgstr "le fichier de données « %s » est vide" -#: io.c:2558 io.c:2566 +#: io.c:2561 io.c:2569 msgid "could not allocate more input memory" msgstr "impossible d'allouer plus de mémoire d'entrée" -#: io.c:3119 +#: io.c:3127 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:3224 +#: io.c:3232 msgid "IPv6 communication is not supported" msgstr "les communications IPv6 ne sont pas disponibles" @@ -1717,119 +1721,119 @@ msgid "no program text at all!" msgstr "aucun programme !" -#: main.c:735 +#: main.c:734 #, 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:737 +#: main.c:736 #, 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:742 +#: main.c:741 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Options POSIX :\t\tOptions longues GNU : (standard)\n" -#: main.c:743 +#: main.c:742 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f fichier_prog\t\t--file=fichier_prog\n" -#: main.c:744 +#: main.c:743 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:745 +#: main.c:744 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=valeur\t\t--assign=var=valeur\n" -#: main.c:746 +#: main.c:745 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Options POSIX :\t\tOptions longues GNU : (extensions)\n" -#: main.c:747 +#: main.c:746 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:748 +#: main.c:747 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:749 +#: main.c:748 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:750 +#: main.c:749 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[fichier]\t\t--dump-variables[=fichier]\n" -#: main.c:751 +#: main.c:750 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'programme'\t\t--source='programme'\n" -#: main.c:752 +#: main.c:751 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E fichier\t\t--exec=fichier\n" -#: main.c:753 +#: main.c:752 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:754 +#: main.c:753 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:755 +#: main.c:754 msgid "\t-L [fatal]\t\t--lint[=fatal]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: main.c:756 +#: main.c:755 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:757 +#: main.c:756 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:758 +#: main.c:757 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:759 +#: main.c:758 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[fichier]\t\t--profile[=fichier]\n" -#: main.c:760 +#: main.c:759 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:761 +#: main.c:760 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:763 +#: main.c:762 msgid "\t-R file\t\t\t--command=file\n" msgstr "\t-R fichier\t\t\t--command=fichier\n" -#: main.c:764 +#: main.c:763 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:765 +#: main.c:764 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:766 +#: main.c:765 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:768 +#: main.c:767 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:771 +#: main.c:770 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -1838,7 +1842,7 @@ #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:780 +#: main.c:779 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -1853,7 +1857,7 @@ ".\n" "\n" -#: main.c:784 +#: main.c:783 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -1863,7 +1867,7 @@ "Par défaut, il lit l'entrée standard et écrit sur la sortie standard.\n" "\n" -#: main.c:788 +#: main.c:787 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -1873,7 +1877,7 @@ "\tgawk '{ somme += $1 }; END { print somme }' fichier\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:808 +#: main.c:807 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -1893,7 +1897,7 @@ "version ultérieure de votre choix.\n" "\n" -#: main.c:816 +#: main.c:815 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 +1912,7 @@ "General Public License).\n" "\n" -#: main.c:822 +#: main.c:821 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 +1921,16 @@ "(GNU General Public License) avec ce programme. Sinon, consultez\n" "http://www.gnu.org/licenses/.\n" -#: main.c:857 +#: main.c:856 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft ne définit pas le FS comme étant une tabulation en awk POSIX" -#: main.c:1091 +#: main.c:1090 #, c-format msgid "unknown value for field spec: %d\n" msgstr "valeur inconnue pour la définition de champ : %d\n" -#: main.c:1152 +#: main.c:1171 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -1935,59 +1939,52 @@ "%s : « %s » l'argument de « -v » ne respecte pas la forme « var=valeur »\n" "\n" -#: main.c:1178 +#: main.c:1197 #, c-format msgid "`%s' is not a legal variable name" msgstr "« %s » n'est pas un nom de variable valide" -#: main.c:1181 +#: main.c:1200 #, 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:1185 -#, fuzzy, c-format +#: main.c:1204 +#, c-format msgid "cannot use gawk builtin `%s' as variable name" -msgstr "" -"extension : impossible d'utiliser la fonction interne gawk « %s » comme nom " -"de fonction" +msgstr "impossible d'utiliser le mot clef gawk « %s » comme variable" -#: main.c:1190 -#, fuzzy, c-format +#: main.c:1209 +#, c-format msgid "cannot use function `%s' as variable name" -msgstr "impossible d'utiliser la fonction « %s » comme variable ou tableau" +msgstr "impossible d'utiliser la fonction « %s » comme variable" -#: main.c:1243 +#: main.c:1262 msgid "floating point exception" msgstr "exception du traitement en virgule flottante" -#: main.c:1250 +#: main.c:1269 msgid "fatal error: internal error" msgstr "fatal : erreur interne" -#: main.c:1265 +#: main.c:1284 msgid "fatal error: internal error: segfault" msgstr "fatal : erreur interne : erreur de segmentation" -#: main.c:1277 +#: main.c:1296 msgid "fatal error: internal error: stack overflow" msgstr "fatal : erreur interne : débordement de la pile" -#: main.c:1327 +#: main.c:1346 #, c-format msgid "no pre-opened fd %d" msgstr "aucun descripteur fd %d pré-ouvert" -#: main.c:1334 +#: main.c:1353 #, 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:1357 main.c:1366 -#, c-format -msgid "could not find groups: %s" -msgstr "impossible de trouver les groupes : %s" - #: msg.c:63 #, c-format msgid "cmd. line:" @@ -2080,12 +2077,12 @@ msgid "internal error: %s with null vname" msgstr "erreur interne : %s avec un vname nul" -#: profile.c:938 +#: profile.c:952 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# profile gawk, créé %s\n" -#: profile.c:1317 +#: profile.c:1331 #, c-format msgid "" "\n" @@ -2094,93 +2091,97 @@ "\n" "\t# Fonctions, par ordre alphabétique\n" -#: profile.c:1356 +#: profile.c:1370 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str : type de redirection %d inconnu" -#: re.c:572 +#: re.c:573 #, c-format -msgid "range of the form `[%c-%c]' is locale dependant" -msgstr "" -"les plages de type « [%c-%c] » sont dépendantes des paramètres régionaux " -"(locale)" +msgid "range of the form `[%c-%c]' is locale dependent" +msgstr "les plages « [%c-%c] » sont dépendantes des paramètres régionaux" -#: re.c:599 +#: re.c:600 #, 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 "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 -urN gawk-4.0.0/po/gawk.pot gawk-4.0.1/po/gawk.pot --- gawk-4.0.0/po/gawk.pot 2011-06-23 09:46:19.000000000 +0300 +++ gawk-4.0.1/po/gawk.pot 2012-03-28 22:03:46.000000000 +0200 @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gawk 4.0.0\n" +"Project-Id-Version: gawk 4.0.1\n" "Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2011-06-23 09:46+0300\n" +"POT-Creation-Date: 2012-03-28 22:03+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -41,9 +41,9 @@ msgid "attempt to use scalar `%s' as an array" msgstr "" -#: array.c:302 array.c:707 builtin.c:81 builtin.c:1381 builtin.c:1423 -#: builtin.c:1436 builtin.c:1851 builtin.c:1863 eval.c:1135 eval.c:1139 -#: eval.c:1473 eval.c:1720 +#: array.c:302 array.c:707 builtin.c:84 builtin.c:1385 builtin.c:1427 +#: builtin.c:1440 builtin.c:1859 builtin.c:1871 eval.c:1135 eval.c:1139 +#: eval.c:1495 eval.c:1812 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "" @@ -63,7 +63,7 @@ msgid "delete: index `%s' not in array `%s'" msgstr "" -#: array.c:734 eval.c:1773 +#: array.c:734 eval.c:1865 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "" @@ -129,12 +129,12 @@ msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "" -#: array.c:1659 +#: array.c:1655 #, c-format msgid "`%s' is invalid as a function name" msgstr "" -#: array.c:1663 +#: array.c:1659 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "" @@ -175,778 +175,782 @@ msgid "duplicate `default' detected in switch body" msgstr "" -#: awkgram.y:811 +#: awkgram.y:809 msgid "`break' is not allowed outside a loop or switch" msgstr "" -#: awkgram.y:820 +#: awkgram.y:818 msgid "`continue' is not allowed outside a loop" msgstr "" -#: awkgram.y:830 +#: awkgram.y:828 #, c-format msgid "`next' used in %s action" msgstr "" -#: awkgram.y:838 +#: awkgram.y:836 msgid "`nextfile' is a gawk extension" msgstr "" -#: awkgram.y:843 +#: awkgram.y:841 #, c-format msgid "`nextfile' used in %s action" msgstr "" -#: awkgram.y:867 +#: awkgram.y:865 msgid "`return' used outside function context" msgstr "" -#: awkgram.y:927 +#: awkgram.y:925 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" -#: awkgram.y:997 awkgram.y:1001 awkgram.y:1025 +#: awkgram.y:995 awkgram.y:999 awkgram.y:1023 msgid "`delete array' is a gawk extension" msgstr "" -#: awkgram.y:1021 +#: awkgram.y:1019 msgid "`delete(array)' is a non-portable tawk extension" msgstr "" -#: awkgram.y:1137 +#: awkgram.y:1135 msgid "multistage two-way pipelines don't work" msgstr "" -#: awkgram.y:1240 +#: awkgram.y:1238 msgid "regular expression on right of assignment" msgstr "" -#: awkgram.y:1251 +#: awkgram.y:1249 msgid "regular expression on left of `~' or `!~' operator" msgstr "" -#: awkgram.y:1267 awkgram.y:1421 +#: awkgram.y:1265 awkgram.y:1419 msgid "old awk does not support the keyword `in' except after `for'" msgstr "" -#: awkgram.y:1277 +#: awkgram.y:1275 msgid "regular expression on right of comparison" msgstr "" -#: awkgram.y:1396 +#: awkgram.y:1394 #, c-format msgid "`getline var' invalid inside `%s' rule" msgstr "" -#: awkgram.y:1399 eval.c:2409 +#: awkgram.y:1397 eval.c:2504 #, c-format msgid "`getline' invalid inside `%s' rule" msgstr "" -#: awkgram.y:1404 +#: awkgram.y:1402 msgid "non-redirected `getline' undefined inside END action" msgstr "" -#: awkgram.y:1423 +#: awkgram.y:1421 msgid "old awk does not support multidimensional arrays" msgstr "" -#: awkgram.y:1519 +#: awkgram.y:1517 msgid "call of `length' without parentheses is not portable" msgstr "" -#: awkgram.y:1582 +#: awkgram.y:1580 msgid "indirect function calls are a gawk extension" msgstr "" -#: awkgram.y:1595 +#: awkgram.y:1593 #, c-format msgid "can not use special variable `%s' for indirect function call" msgstr "" -#: awkgram.y:1673 +#: awkgram.y:1671 msgid "invalid subscript expression" msgstr "" -#: awkgram.y:1713 +#: awkgram.y:1711 msgid "use of non-array as array" msgstr "" -#: awkgram.y:1977 awkgram.y:1997 msg.c:98 +#: awkgram.y:1975 awkgram.y:1995 msg.c:98 msgid "warning: " msgstr "" -#: awkgram.y:1995 msg.c:130 +#: awkgram.y:1993 msg.c:130 msgid "fatal: " msgstr "" -#: awkgram.y:2045 +#: awkgram.y:2043 msgid "unexpected newline or end of string" msgstr "" -#: awkgram.y:2301 awkgram.y:2359 awkgram.y:2543 +#: awkgram.y:2300 awkgram.y:2358 awkgram.y:2542 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "" -#: awkgram.y:2302 awkgram.y:2360 builtin.c:119 +#: awkgram.y:2301 awkgram.y:2359 builtin.c:122 msgid "reason unknown" msgstr "" -#: awkgram.y:2318 +#: awkgram.y:2317 #, c-format msgid "already included source file `%s'" msgstr "" -#: awkgram.y:2344 +#: awkgram.y:2343 msgid "@include is a gawk extension" msgstr "" -#: awkgram.y:2350 +#: awkgram.y:2349 msgid "empty filename after @include" msgstr "" -#: awkgram.y:2495 +#: awkgram.y:2494 msgid "empty program text on command line" msgstr "" -#: awkgram.y:2610 +#: awkgram.y:2609 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "" -#: awkgram.y:2621 +#: awkgram.y:2620 #, c-format msgid "source file `%s' is empty" msgstr "" -#: awkgram.y:2806 +#: awkgram.y:2797 msgid "source file does not end in newline" msgstr "" -#: awkgram.y:2883 +#: awkgram.y:2900 msgid "unterminated regexp ends with `\\' at end of file" msgstr "" -#: awkgram.y:2907 +#: awkgram.y:2924 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" -#: awkgram.y:2911 +#: awkgram.y:2928 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" -#: awkgram.y:2918 +#: awkgram.y:2935 msgid "unterminated regexp" msgstr "" -#: awkgram.y:2922 +#: awkgram.y:2939 msgid "unterminated regexp at end of file" msgstr "" -#: awkgram.y:2981 +#: awkgram.y:2998 msgid "use of `\\ #...' line continuation is not portable" msgstr "" -#: awkgram.y:2997 +#: awkgram.y:3014 msgid "backslash not last character on line" msgstr "" -#: awkgram.y:3058 +#: awkgram.y:3075 msgid "POSIX does not allow operator `**='" msgstr "" -#: awkgram.y:3060 +#: awkgram.y:3077 msgid "old awk does not support operator `**='" msgstr "" -#: awkgram.y:3069 +#: awkgram.y:3086 msgid "POSIX does not allow operator `**'" msgstr "" -#: awkgram.y:3071 +#: awkgram.y:3088 msgid "old awk does not support operator `**'" msgstr "" -#: awkgram.y:3106 +#: awkgram.y:3123 msgid "operator `^=' is not supported in old awk" msgstr "" -#: awkgram.y:3114 +#: awkgram.y:3131 msgid "operator `^' is not supported in old awk" msgstr "" -#: awkgram.y:3207 awkgram.y:3223 +#: awkgram.y:3224 awkgram.y:3240 msgid "unterminated string" msgstr "" -#: awkgram.y:3419 +#: awkgram.y:3436 #, c-format msgid "invalid char '%c' in expression" msgstr "" -#: awkgram.y:3466 +#: awkgram.y:3483 #, c-format msgid "`%s' is a gawk extension" msgstr "" -#: awkgram.y:3471 +#: awkgram.y:3488 #, c-format msgid "`%s' is a Bell Labs extension" msgstr "" -#: awkgram.y:3476 +#: awkgram.y:3493 #, c-format msgid "POSIX does not allow `%s'" msgstr "" -#: awkgram.y:3484 +#: awkgram.y:3501 #, c-format msgid "`%s' is not supported in old awk" msgstr "" -#: awkgram.y:3551 +#: awkgram.y:3568 msgid "`goto' considered harmful!\n" msgstr "" -#: awkgram.y:3604 +#: awkgram.y:3619 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "" -#: awkgram.y:3639 awkgram.y:3642 -msgid "match: third argument is a gawk extension" -msgstr "" - -#: awkgram.y:3670 +#: awkgram.y:3654 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "" -#: awkgram.y:3675 +#: awkgram.y:3659 #, c-format msgid "%s third parameter is not a changeable object" msgstr "" -#: awkgram.y:3761 awkgram.y:3764 +#: awkgram.y:3732 awkgram.y:3735 +msgid "match: third argument is a gawk extension" +msgstr "" + +#: awkgram.y:3789 awkgram.y:3792 msgid "close: second argument is a gawk extension" msgstr "" -#: awkgram.y:3776 +#: awkgram.y:3804 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" -#: awkgram.y:3791 +#: awkgram.y:3819 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" -#: awkgram.y:3883 +#: awkgram.y:3911 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "" -#: awkgram.y:3925 +#: awkgram.y:3953 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "" -#: awkgram.y:4083 +#: awkgram.y:4111 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "" -#: awkgram.y:4084 +#: awkgram.y:4112 msgid "sending variable list to standard error" msgstr "" -#: awkgram.y:4090 +#: awkgram.y:4118 #, c-format msgid "%s: close failed (%s)" msgstr "" -#: awkgram.y:4142 +#: awkgram.y:4170 msgid "shadow_funcs() called twice!" msgstr "" -#: awkgram.y:4148 +#: awkgram.y:4176 msgid "there were shadowed variables." msgstr "" -#: awkgram.y:4178 +#: awkgram.y:4206 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "" -#: awkgram.y:4182 +#: awkgram.y:4210 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "" -#: awkgram.y:4198 +#: awkgram.y:4226 #, c-format msgid "function name `%s' previously defined" msgstr "" -#: awkgram.y:4366 awkgram.y:4372 +#: awkgram.y:4394 awkgram.y:4400 #, c-format msgid "function `%s' called but never defined" msgstr "" -#: awkgram.y:4375 +#: awkgram.y:4403 #, c-format msgid "function `%s' defined but never called directly" msgstr "" -#: awkgram.y:4407 +#: awkgram.y:4435 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "" -#: awkgram.y:4516 +#: awkgram.y:4544 #, c-format msgid "" "function `%s' called with space between name and `(',\n" "or used as a variable or an array" msgstr "" -#: awkgram.y:4763 eval.c:1964 +#: awkgram.y:4791 eval.c:2056 msgid "division by zero attempted" msgstr "" -#: awkgram.y:4772 eval.c:1980 +#: awkgram.y:4800 eval.c:2072 #, c-format msgid "division by zero attempted in `%%'" msgstr "" -#: builtin.c:117 +#: builtin.c:120 #, c-format msgid "%s to \"%s\" failed (%s)" msgstr "" -#: builtin.c:118 +#: builtin.c:121 msgid "standard output" msgstr "" -#: builtin.c:132 +#: builtin.c:135 msgid "exp: received non-numeric argument" msgstr "" -#: builtin.c:138 +#: builtin.c:141 #, c-format msgid "exp: argument %g is out of range" msgstr "" -#: builtin.c:197 +#: builtin.c:200 #, c-format msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing" msgstr "" -#: builtin.c:200 +#: builtin.c:203 #, c-format msgid "fflush: cannot flush: file `%s' opened for reading, not writing" msgstr "" -#: builtin.c:212 +#: builtin.c:215 #, c-format msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "" -#: builtin.c:330 +#: builtin.c:333 msgid "index: received non-string first argument" msgstr "" -#: builtin.c:332 +#: builtin.c:335 msgid "index: received non-string second argument" msgstr "" -#: builtin.c:454 +#: builtin.c:457 msgid "int: received non-numeric argument" msgstr "" -#: builtin.c:490 +#: builtin.c:493 msgid "length: received array argument" msgstr "" -#: builtin.c:493 +#: builtin.c:496 msgid "`length(array)' is a gawk extension" msgstr "" -#: builtin.c:501 +#: builtin.c:504 msgid "length: received non-string argument" msgstr "" -#: builtin.c:532 +#: builtin.c:535 msgid "log: received non-numeric argument" msgstr "" -#: builtin.c:535 +#: builtin.c:538 #, c-format msgid "log: received negative argument %g" msgstr "" -#: builtin.c:691 builtin.c:696 +#: builtin.c:694 builtin.c:699 msgid "fatal: must use `count$' on all formats or none" msgstr "" -#: builtin.c:758 +#: builtin.c:762 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "" -#: builtin.c:760 +#: builtin.c:764 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "" -#: builtin.c:762 +#: builtin.c:766 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "" -#: builtin.c:813 +#: builtin.c:817 msgid "fatal: `$' is not permitted in awk formats" msgstr "" -#: builtin.c:822 +#: builtin.c:826 msgid "fatal: arg count with `$' must be > 0" msgstr "" -#: builtin.c:826 +#: builtin.c:830 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "" -#: builtin.c:830 +#: builtin.c:834 msgid "fatal: `$' not permitted after period in format" msgstr "" -#: builtin.c:846 +#: builtin.c:850 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" -#: builtin.c:917 +#: builtin.c:921 msgid "`l' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:921 +#: builtin.c:925 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:934 +#: builtin.c:938 msgid "`L' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:938 +#: builtin.c:942 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:951 +#: builtin.c:955 msgid "`h' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:955 +#: builtin.c:959 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:1268 +#: builtin.c:1272 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "" -#: builtin.c:1328 +#: builtin.c:1332 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" -#: builtin.c:1333 +#: builtin.c:1337 msgid "fatal: not enough arguments to satisfy format string" msgstr "" -#: builtin.c:1335 +#: builtin.c:1339 msgid "^ ran out for this one" msgstr "" -#: builtin.c:1342 +#: builtin.c:1346 msgid "[s]printf: format specifier does not have control letter" msgstr "" -#: builtin.c:1345 +#: builtin.c:1349 msgid "too many arguments supplied for format string" msgstr "" -#: builtin.c:1419 builtin.c:1430 +#: builtin.c:1423 builtin.c:1434 msgid "printf: no arguments" msgstr "" -#: builtin.c:1471 +#: builtin.c:1475 msgid "sqrt: received non-numeric argument" msgstr "" -#: builtin.c:1475 +#: builtin.c:1479 #, c-format msgid "sqrt: called with negative argument %g" msgstr "" -#: builtin.c:1499 +#: builtin.c:1503 #, c-format msgid "substr: length %g is not >= 1" msgstr "" -#: builtin.c:1501 +#: builtin.c:1505 #, c-format msgid "substr: length %g is not >= 0" msgstr "" -#: builtin.c:1508 +#: builtin.c:1512 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "" -#: builtin.c:1513 +#: builtin.c:1517 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" -#: builtin.c:1525 +#: builtin.c:1529 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "" -#: builtin.c:1530 +#: builtin.c:1534 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "" -#: builtin.c:1555 +#: builtin.c:1559 msgid "substr: source string is zero length" msgstr "" -#: builtin.c:1571 +#: builtin.c:1575 #, c-format msgid "substr: start index %g is past end of string" msgstr "" -#: builtin.c:1579 +#: builtin.c:1583 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" msgstr "" -#: builtin.c:1652 +#: builtin.c:1657 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" -#: builtin.c:1675 +#: builtin.c:1680 msgid "strftime: received non-numeric second argument" msgstr "" -#: builtin.c:1682 +#: builtin.c:1683 +msgid "strftime: second argument less than 0 or too big for time_t" +msgstr "" + +#: builtin.c:1690 msgid "strftime: received non-string first argument" msgstr "" -#: builtin.c:1688 +#: builtin.c:1696 msgid "strftime: received empty format string" msgstr "" -#: builtin.c:1754 +#: builtin.c:1762 msgid "mktime: received non-string argument" msgstr "" -#: builtin.c:1771 +#: builtin.c:1779 msgid "mktime: at least one of the values is out of the default range" msgstr "" -#: builtin.c:1806 +#: builtin.c:1814 msgid "'system' function not allowed in sandbox mode" msgstr "" -#: builtin.c:1811 +#: builtin.c:1819 msgid "system: received non-string argument" msgstr "" -#: builtin.c:1866 eval.c:1165 eval.c:1698 eval.c:1711 +#: builtin.c:1874 eval.c:1159 eval.c:1790 eval.c:1803 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "" -#: builtin.c:1933 +#: builtin.c:1941 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "" -#: builtin.c:2020 +#: builtin.c:2028 msgid "tolower: received non-string argument" msgstr "" -#: builtin.c:2054 +#: builtin.c:2062 msgid "toupper: received non-string argument" msgstr "" -#: builtin.c:2090 +#: builtin.c:2098 msgid "atan2: received non-numeric first argument" msgstr "" -#: builtin.c:2092 +#: builtin.c:2100 msgid "atan2: received non-numeric second argument" msgstr "" -#: builtin.c:2111 +#: builtin.c:2119 msgid "sin: received non-numeric argument" msgstr "" -#: builtin.c:2127 +#: builtin.c:2135 msgid "cos: received non-numeric argument" msgstr "" -#: builtin.c:2180 +#: builtin.c:2188 msgid "srand: received non-numeric argument" msgstr "" -#: builtin.c:2211 +#: builtin.c:2219 msgid "match: third argument is not an array" msgstr "" -#: builtin.c:2718 +#: builtin.c:2483 msgid "gensub: third argument of 0 treated as 1" msgstr "" -#: builtin.c:2757 +#: builtin.c:2776 msgid "lshift: received non-numeric first argument" msgstr "" -#: builtin.c:2759 +#: builtin.c:2778 msgid "lshift: received non-numeric second argument" msgstr "" -#: builtin.c:2765 +#: builtin.c:2784 #, c-format msgid "lshift(%lf, %lf): negative values will give strange results" msgstr "" -#: builtin.c:2767 +#: builtin.c:2786 #, c-format msgid "lshift(%lf, %lf): fractional values will be truncated" msgstr "" -#: builtin.c:2769 +#: builtin.c:2788 #, c-format msgid "lshift(%lf, %lf): too large shift value will give strange results" msgstr "" -#: builtin.c:2794 +#: builtin.c:2813 msgid "rshift: received non-numeric first argument" msgstr "" -#: builtin.c:2796 +#: builtin.c:2815 msgid "rshift: received non-numeric second argument" msgstr "" -#: builtin.c:2802 +#: builtin.c:2821 #, c-format msgid "rshift(%lf, %lf): negative values will give strange results" msgstr "" -#: builtin.c:2804 +#: builtin.c:2823 #, c-format msgid "rshift(%lf, %lf): fractional values will be truncated" msgstr "" -#: builtin.c:2806 +#: builtin.c:2825 #, c-format msgid "rshift(%lf, %lf): too large shift value will give strange results" msgstr "" -#: builtin.c:2831 +#: builtin.c:2850 msgid "and: received non-numeric first argument" msgstr "" -#: builtin.c:2833 +#: builtin.c:2852 msgid "and: received non-numeric second argument" msgstr "" -#: builtin.c:2839 +#: builtin.c:2858 #, c-format msgid "and(%lf, %lf): negative values will give strange results" msgstr "" -#: builtin.c:2841 +#: builtin.c:2860 #, c-format msgid "and(%lf, %lf): fractional values will be truncated" msgstr "" -#: builtin.c:2866 +#: builtin.c:2885 msgid "or: received non-numeric first argument" msgstr "" -#: builtin.c:2868 +#: builtin.c:2887 msgid "or: received non-numeric second argument" msgstr "" -#: builtin.c:2874 +#: builtin.c:2893 #, c-format msgid "or(%lf, %lf): negative values will give strange results" msgstr "" -#: builtin.c:2876 +#: builtin.c:2895 #, c-format msgid "or(%lf, %lf): fractional values will be truncated" msgstr "" -#: builtin.c:2904 +#: builtin.c:2923 msgid "xor: received non-numeric first argument" msgstr "" -#: builtin.c:2906 +#: builtin.c:2925 msgid "xor: received non-numeric second argument" msgstr "" -#: builtin.c:2912 +#: builtin.c:2931 #, c-format msgid "xor(%lf, %lf): negative values will give strange results" msgstr "" -#: builtin.c:2914 +#: builtin.c:2933 #, c-format msgid "xor(%lf, %lf): fractional values will be truncated" msgstr "" -#: builtin.c:2938 builtin.c:2944 +#: builtin.c:2957 builtin.c:2963 msgid "compl: received non-numeric argument" msgstr "" -#: builtin.c:2946 +#: builtin.c:2965 #, c-format msgid "compl(%lf): negative value will give strange results" msgstr "" -#: builtin.c:2948 +#: builtin.c:2967 #, c-format msgid "compl(%lf): fractional value will be truncated" msgstr "" -#: builtin.c:3117 +#: builtin.c:3136 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "" -#: eval.c:411 +#: eval.c:412 #, c-format msgid "unknown nodetype %d" msgstr "" -#: eval.c:422 eval.c:436 +#: eval.c:423 eval.c:437 #, c-format msgid "unknown opcode %d" msgstr "" -#: eval.c:433 +#: eval.c:434 #, c-format msgid "opcode %s not an operator or keyword" msgstr "" -#: eval.c:487 +#: eval.c:488 msgid "buffer overflow in genflags2str" msgstr "" @@ -980,185 +984,190 @@ msgid "turning off `--lint' due to assignment to `LINT'" msgstr "" -#: eval.c:1127 eval.c:1685 +#: eval.c:1127 eval.c:1777 #, c-format msgid "can't use function name `%s' as variable or array" msgstr "" -#: eval.c:1155 -msgid "assignment is not allowed to result of builtin function" -msgstr "" - -#: eval.c:1164 eval.c:1697 eval.c:1710 +#: eval.c:1158 eval.c:1789 eval.c:1802 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "" -#: eval.c:1183 +#: eval.c:1177 msgid "attempt to field reference from non-numeric value" msgstr "" -#: eval.c:1185 +#: eval.c:1179 msgid "attempt to field reference from null string" msgstr "" -#: eval.c:1191 +#: eval.c:1185 #, c-format msgid "attempt to access field %ld" msgstr "" -#: eval.c:1200 +#: eval.c:1194 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "" -#: eval.c:1262 +#: eval.c:1256 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "" -#: eval.c:1426 +#: eval.c:1437 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "" -#: eval.c:1510 +#: eval.c:1532 msgid "division by zero attempted in `/='" msgstr "" -#: eval.c:1517 +#: eval.c:1539 #, c-format msgid "division by zero attempted in `%%='" msgstr "" -#: eval.c:1784 eval.c:2030 +#: eval.c:1876 eval.c:2122 #, c-format msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" msgstr "" -#: eval.c:1815 +#: eval.c:1907 msgid "assignment used in conditional context" msgstr "" -#: eval.c:1819 +#: eval.c:1911 msgid "statement has no effect" msgstr "" -#: eval.c:2233 +#: eval.c:2343 #, c-format msgid "for loop: array `%s' changed size from %ld to %ld during loop execution" msgstr "" -#: eval.c:2343 +#: eval.c:2458 #, c-format msgid "function called indirectly through `%s' does not exist" msgstr "" -#: eval.c:2355 +#: eval.c:2470 #, c-format msgid "function `%s' not defined" msgstr "" -#: eval.c:2416 +#: eval.c:2511 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "" -#: eval.c:2477 +#: 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:2532 +#: eval.c:2661 +msgid "`exit' cannot be called in the current context" +msgstr "" + +#: eval.c:2700 #, c-format msgid "`next' cannot be called from a `%s' rule" msgstr "" -#: eval.c:2599 +#: eval.c:2766 #, c-format msgid "Sorry, don't know how to interpret `%s'" msgstr "" -#: ext.c:64 +#: ext.c:54 msgid "extensions are not allowed in sandbox mode" msgstr "" -#: ext.c:70 ext.c:75 +#: ext.c:60 ext.c:65 msgid "`extension' is a gawk extension" msgstr "" -#: ext.c:85 +#: ext.c:75 #, c-format msgid "fatal: extension: cannot open `%s' (%s)\n" msgstr "" -#: ext.c:94 +#: ext.c:84 #, c-format msgid "" "fatal: extension: library `%s': does not define " "`plugin_is_GPL_compatible' (%s)\n" msgstr "" -#: ext.c:103 +#: ext.c:93 #, c-format msgid "fatal: extension: library `%s': cannot call function `%s' (%s)\n" msgstr "" -#: ext.c:137 +#: ext.c:127 msgid "extension: missing function name" msgstr "" -#: ext.c:142 +#: ext.c:132 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "" -#: ext.c:151 +#: ext.c:141 #, c-format msgid "extension: can't redefine function `%s'" msgstr "" -#: ext.c:155 +#: ext.c:145 #, c-format msgid "extension: function `%s' already defined" msgstr "" -#: ext.c:160 +#: ext.c:150 #, c-format msgid "extension: function name `%s' previously defined" msgstr "" -#: ext.c:162 +#: ext.c:152 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" msgstr "" -#: ext.c:166 +#: ext.c:156 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "" -#: ext.c:269 +#: ext.c:259 #, c-format msgid "function `%s' defined to take no more than %d argument(s)" msgstr "" -#: ext.c:272 +#: ext.c:262 #, c-format msgid "function `%s': missing argument #%d" msgstr "" -#: ext.c:289 +#: ext.c:279 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "" -#: ext.c:293 +#: ext.c:283 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "" -#: ext.c:306 +#: ext.c:296 msgid "Operation Not Supported" msgstr "" @@ -1166,164 +1175,159 @@ msgid "NF set to negative value" msgstr "" -#: field.c:950 field.c:957 field.c:961 +#: field.c:951 field.c:958 field.c:962 msgid "split: fourth argument is a gawk extension" msgstr "" -#: field.c:954 +#: field.c:955 msgid "split: fourth argument is not an array" msgstr "" -#: field.c:968 +#: field.c:969 msgid "split: second argument is not an array" msgstr "" -#: field.c:972 +#: field.c:973 msgid "split: cannot use the same array for second and fourth args" msgstr "" -#: field.c:977 +#: field.c:978 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" -#: field.c:980 +#: field.c:981 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" -#: field.c:1009 +#: field.c:1010 msgid "split: null string for third arg is a gawk extension" msgstr "" -#: field.c:1049 +#: field.c:1050 msgid "patsplit: fourth argument is not an array" msgstr "" -#: field.c:1054 +#: field.c:1055 msgid "patsplit: second argument is not an array" msgstr "" -#: field.c:1060 +#: field.c:1061 msgid "patsplit: third argument must be non-null" msgstr "" -#: field.c:1064 +#: field.c:1065 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "" -#: field.c:1069 +#: field.c:1070 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" -#: field.c:1072 +#: field.c:1073 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" -#: field.c:1109 +#: field.c:1110 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "" -#: field.c:1172 +#: field.c:1173 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "" -#: field.c:1245 +#: field.c:1246 msgid "null string for `FS' is a gawk extension" msgstr "" -#: field.c:1249 +#: field.c:1250 msgid "old awk does not support regexps as value of `FS'" msgstr "" -#: field.c:1368 +#: field.c:1369 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:282 +#: io.c:280 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "" -#: io.c:285 io.c:384 +#: io.c:283 io.c:385 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "" -#: io.c:431 -#, c-format -msgid "error reading input file `%s': %s" -msgstr "" - -#: io.c:500 +#: io.c:501 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "" -#: io.c:577 +#: io.c:578 msgid "redirection not allowed in sandbox mode" msgstr "" -#: io.c:611 +#: io.c:612 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "" -#: io.c:617 +#: io.c:618 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "" @@ -1425,7 +1429,7 @@ msgid "no explicit close of file `%s' provided" msgstr "" -#: io.c:1129 io.c:1184 main.c:795 main.c:832 +#: io.c:1129 io.c:1184 main.c:794 main.c:831 #, c-format msgid "error writing standard output (%s)" msgstr "" @@ -1487,87 +1491,87 @@ msgid "could not open `%s', mode `%s'" msgstr "" -#: io.c:1744 +#: io.c:1747 #, c-format msgid "close of master pty failed (%s)" msgstr "" -#: io.c:1746 io.c:1914 io.c:2071 +#: io.c:1749 io.c:1917 io.c:2074 #, c-format msgid "close of stdout in child failed (%s)" msgstr "" -#: io.c:1749 +#: io.c:1752 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" -#: io.c:1751 io.c:1919 +#: io.c:1754 io.c:1922 #, c-format msgid "close of stdin in child failed (%s)" msgstr "" -#: io.c:1754 +#: io.c:1757 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" -#: io.c:1756 io.c:1777 +#: io.c:1759 io.c:1780 #, c-format msgid "close of slave pty failed (%s)" msgstr "" -#: io.c:1855 io.c:1917 io.c:2049 io.c:2074 +#: io.c:1858 io.c:1920 io.c:2052 io.c:2077 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" -#: io.c:1862 io.c:1922 +#: io.c:1865 io.c:1925 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" -#: io.c:1882 io.c:2064 +#: io.c:1885 io.c:2067 msgid "restoring stdout in parent process failed\n" msgstr "" -#: io.c:1890 +#: io.c:1893 msgid "restoring stdin in parent process failed\n" msgstr "" -#: io.c:1925 io.c:2076 io.c:2090 +#: io.c:1928 io.c:2079 io.c:2093 #, c-format msgid "close of pipe failed (%s)" msgstr "" -#: io.c:1970 +#: io.c:1973 msgid "`|&' not supported" msgstr "" -#: io.c:2036 +#: io.c:2039 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "" -#: io.c:2084 +#: io.c:2087 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "" -#: io.c:2517 +#: io.c:2520 #, c-format msgid "data file `%s' is empty" msgstr "" -#: io.c:2558 io.c:2566 +#: io.c:2561 io.c:2569 msgid "could not allocate more input memory" msgstr "" -#: io.c:3119 +#: io.c:3127 msgid "multicharacter value of `RS' is a gawk extension" msgstr "" -#: io.c:3224 +#: io.c:3232 msgid "IPv6 communication is not supported" msgstr "" @@ -1633,117 +1637,117 @@ msgid "no program text at all!" msgstr "" -#: main.c:735 +#: main.c:734 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" -#: main.c:737 +#: main.c:736 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" -#: main.c:742 +#: main.c:741 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "" -#: main.c:743 +#: main.c:742 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "" -#: main.c:744 +#: main.c:743 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "" -#: main.c:745 +#: main.c:744 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "" -#: main.c:746 +#: main.c:745 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "" -#: main.c:747 +#: main.c:746 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "" -#: main.c:748 +#: main.c:747 msgid "\t-c\t\t\t--traditional\n" msgstr "" -#: main.c:749 +#: main.c:748 msgid "\t-C\t\t\t--copyright\n" msgstr "" -#: main.c:750 +#: main.c:749 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "" -#: main.c:751 +#: main.c:750 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "" -#: main.c:752 +#: main.c:751 msgid "\t-E file\t\t\t--exec=file\n" msgstr "" -#: main.c:753 +#: main.c:752 msgid "\t-g\t\t\t--gen-pot\n" msgstr "" -#: main.c:754 +#: main.c:753 msgid "\t-h\t\t\t--help\n" msgstr "" -#: main.c:755 +#: main.c:754 msgid "\t-L [fatal]\t\t--lint[=fatal]\n" msgstr "" -#: main.c:756 +#: main.c:755 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "" -#: main.c:757 +#: main.c:756 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "" -#: main.c:758 +#: main.c:757 msgid "\t-O\t\t\t--optimize\n" msgstr "" -#: main.c:759 +#: main.c:758 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "" -#: main.c:760 +#: main.c:759 msgid "\t-P\t\t\t--posix\n" msgstr "" -#: main.c:761 +#: main.c:760 msgid "\t-r\t\t\t--re-interval\n" msgstr "" -#: main.c:763 +#: main.c:762 msgid "\t-R file\t\t\t--command=file\n" msgstr "" -#: main.c:764 +#: main.c:763 msgid "\t-S\t\t\t--sandbox\n" msgstr "" -#: main.c:765 +#: main.c:764 msgid "\t-t\t\t\t--lint-old\n" msgstr "" -#: main.c:766 +#: main.c:765 msgid "\t-V\t\t\t--version\n" msgstr "" -#: main.c:768 +#: main.c:767 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "" -#: main.c:771 +#: main.c:770 msgid "\t-Y\t\t--parsedebug\n" msgstr "" @@ -1752,7 +1756,7 @@ #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:780 +#: main.c:779 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -1760,21 +1764,21 @@ "\n" msgstr "" -#: main.c:784 +#: main.c:783 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:788 +#: main.c:787 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" msgstr "" -#: main.c:808 +#: main.c:807 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -1786,7 +1790,7 @@ "\n" msgstr "" -#: main.c:816 +#: main.c:815 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,79 +1799,74 @@ "\n" msgstr "" -#: main.c:822 +#: main.c:821 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:857 +#: main.c:856 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "" -#: main.c:1091 +#: main.c:1090 #, c-format msgid "unknown value for field spec: %d\n" msgstr "" -#: main.c:1152 +#: main.c:1171 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" "\n" msgstr "" -#: main.c:1178 +#: main.c:1197 #, c-format msgid "`%s' is not a legal variable name" msgstr "" -#: main.c:1181 +#: main.c:1200 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "" -#: main.c:1185 +#: main.c:1204 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "" -#: main.c:1190 +#: main.c:1209 #, c-format msgid "cannot use function `%s' as variable name" msgstr "" -#: main.c:1243 +#: main.c:1262 msgid "floating point exception" msgstr "" -#: main.c:1250 +#: main.c:1269 msgid "fatal error: internal error" msgstr "" -#: main.c:1265 +#: main.c:1284 msgid "fatal error: internal error: segfault" msgstr "" -#: main.c:1277 +#: main.c:1296 msgid "fatal error: internal error: stack overflow" msgstr "" -#: main.c:1327 +#: main.c:1346 #, c-format msgid "no pre-opened fd %d" msgstr "" -#: main.c:1334 +#: main.c:1353 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "" -#: main.c:1357 main.c:1366 -#, c-format -msgid "could not find groups: %s" -msgstr "" - #: msg.c:63 #, c-format msgid "cmd. line:" @@ -1950,101 +1949,101 @@ msgid "internal error: %s with null vname" msgstr "" -#: profile.c:938 +#: profile.c:952 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "" -#: profile.c:1317 +#: profile.c:1331 #, c-format msgid "" "\n" "\t# Functions, listed alphabetically\n" msgstr "" -#: profile.c:1356 +#: profile.c:1370 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "" -#: re.c:572 +#: re.c:573 #, c-format -msgid "range of the form `[%c-%c]' is locale dependant" +msgid "range of the form `[%c-%c]' is locale dependent" msgstr "" -#: re.c:599 +#: re.c:600 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" -#: regcomp.c:132 +#: regcomp.c:131 msgid "Success" msgstr "" -#: regcomp.c:135 +#: regcomp.c:134 msgid "No match" msgstr "" -#: regcomp.c:138 +#: regcomp.c:137 msgid "Invalid regular expression" msgstr "" -#: regcomp.c:141 +#: regcomp.c:140 msgid "Invalid collation character" msgstr "" -#: regcomp.c:144 +#: regcomp.c:143 msgid "Invalid character class name" msgstr "" -#: regcomp.c:147 +#: regcomp.c:146 msgid "Trailing backslash" msgstr "" -#: regcomp.c:150 +#: regcomp.c:149 msgid "Invalid back reference" msgstr "" -#: regcomp.c:153 +#: regcomp.c:152 msgid "Unmatched [ or [^" msgstr "" -#: regcomp.c:156 +#: regcomp.c:155 msgid "Unmatched ( or \\(" msgstr "" -#: regcomp.c:159 +#: regcomp.c:158 msgid "Unmatched \\{" msgstr "" -#: regcomp.c:162 +#: regcomp.c:161 msgid "Invalid content of \\{\\}" msgstr "" -#: regcomp.c:165 +#: regcomp.c:164 msgid "Invalid range end" msgstr "" -#: regcomp.c:168 +#: regcomp.c:167 msgid "Memory exhausted" msgstr "" -#: regcomp.c:171 +#: regcomp.c:170 msgid "Invalid preceding regular expression" msgstr "" -#: regcomp.c:174 +#: regcomp.c:173 msgid "Premature end of regular expression" msgstr "" -#: regcomp.c:177 +#: regcomp.c:176 msgid "Regular expression too big" msgstr "" -#: regcomp.c:180 +#: regcomp.c:179 msgid "Unmatched ) or \\)" msgstr "" -#: regcomp.c:701 +#: regcomp.c:700 msgid "No previous regular expression" msgstr "" diff -urN gawk-4.0.0/po/it.po gawk-4.0.1/po/it.po --- gawk-4.0.0/po/it.po 2011-06-23 09:46:20.000000000 +0300 +++ gawk-4.0.1/po/it.po 2012-03-28 22:03:47.000000000 +0200 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: gawk 3.1.81\n" "Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2011-06-23 09:46+0300\n" +"POT-Creation-Date: 2012-03-28 22:03+0200\n" "PO-Revision-Date: 2011-03-19 16:52+0100\n" "Last-Translator: Antonio Colombo \n" "Language-Team: Italian \n" @@ -39,9 +39,9 @@ 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:81 builtin.c:1381 builtin.c:1423 -#: builtin.c:1436 builtin.c:1851 builtin.c:1863 eval.c:1135 eval.c:1139 -#: eval.c:1473 eval.c:1720 +#: array.c:302 array.c:707 builtin.c:84 builtin.c:1385 builtin.c:1427 +#: builtin.c:1440 builtin.c:1859 builtin.c:1871 eval.c:1135 eval.c:1139 +#: eval.c:1495 eval.c:1812 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "tentativo di usare vettore `%s' in un contesto scalare" @@ -61,7 +61,7 @@ msgid "delete: index `%s' not in array `%s'" msgstr "delete: indice `%s' non presente nel vettore `%s'" -#: array.c:734 eval.c:1773 +#: array.c:734 eval.c:1865 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "tentativo di usare scalare`%s[\"%.*s\"]' come vettore" @@ -135,12 +135,12 @@ msgstr "" "split: non si può usare lo stesso vettore come secondo e quarto argomento" -#: array.c:1659 +#: array.c:1655 #, fuzzy, c-format msgid "`%s' is invalid as a function name" msgstr "estensione: manca nome di funzione" -#: array.c:1663 +#: array.c:1659 #, fuzzy, c-format msgid "sort comparison function `%s' is not defined" msgstr "funzione `%s' non definita" @@ -181,347 +181,347 @@ msgid "duplicate `default' detected in switch body" msgstr "valori di default doppi all'interno di uno 'switch'" -#: awkgram.y:811 +#: awkgram.y:809 msgid "`break' is not allowed outside a loop or switch" msgstr "`break' non permesso fuori da un ciclo o da uno 'switch'" -#: awkgram.y:820 +#: awkgram.y:818 msgid "`continue' is not allowed outside a loop" msgstr "`continue' non permesso fuori da un un ciclo" -#: awkgram.y:830 +#: awkgram.y:828 #, c-format msgid "`next' used in %s action" msgstr "`next' usato in 'azione' %s" -#: awkgram.y:838 +#: awkgram.y:836 msgid "`nextfile' is a gawk extension" msgstr "`nextfile' è un'estensione gawk" -#: awkgram.y:843 +#: awkgram.y:841 #, c-format msgid "`nextfile' used in %s action" msgstr "`nextfile' usato in 'azione' %s" -#: awkgram.y:867 +#: awkgram.y:865 msgid "`return' used outside function context" msgstr "`return' usato fuori da una funzione" -#: awkgram.y:927 +#: awkgram.y:925 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:997 awkgram.y:1001 awkgram.y:1025 +#: awkgram.y:995 awkgram.y:999 awkgram.y:1023 msgid "`delete array' is a gawk extension" msgstr "`delete array' è un'estensione gawk" -#: awkgram.y:1021 +#: awkgram.y:1019 msgid "`delete(array)' is a non-portable tawk extension" msgstr "`delete(array)' è un'estensione tawk non-portabile" -#: awkgram.y:1137 +#: awkgram.y:1135 msgid "multistage two-way pipelines don't work" msgstr "'pipeline' multistadio bidirezionali non funzionano" -#: awkgram.y:1240 +#: awkgram.y:1238 msgid "regular expression on right of assignment" msgstr "espressione regolare usata per assegnare un valore" -#: awkgram.y:1251 +#: awkgram.y:1249 msgid "regular expression on left of `~' or `!~' operator" msgstr "espressione regolare prima di operatore `~' o `!~'" -#: awkgram.y:1267 awkgram.y:1421 +#: awkgram.y:1265 awkgram.y:1419 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:1277 +#: awkgram.y:1275 msgid "regular expression on right of comparison" msgstr "espressione regolare a destra in un confronto" -#: awkgram.y:1396 +#: awkgram.y:1394 #, c-format msgid "`getline var' invalid inside `%s' rule" msgstr "`getline var' invalida all'interno della regola `%s'" -#: awkgram.y:1399 eval.c:2409 +#: awkgram.y:1397 eval.c:2504 #, c-format msgid "`getline' invalid inside `%s' rule" msgstr "`getline' invalida all'interno della regola `%s'" -#: awkgram.y:1404 +#: awkgram.y:1402 msgid "non-redirected `getline' undefined inside END action" msgstr "`getline' non re-diretta indefinita dentro 'azione' END" -#: awkgram.y:1423 +#: awkgram.y:1421 msgid "old awk does not support multidimensional arrays" msgstr "il vecchio awk non supporta vettori multidimensionali" -#: awkgram.y:1519 +#: awkgram.y:1517 msgid "call of `length' without parentheses is not portable" msgstr "chiamata a `length' senza parentesi non portabile" -#: awkgram.y:1582 +#: awkgram.y:1580 msgid "indirect function calls are a gawk extension" msgstr "chiamate a funzione indirette sono un'estensione gawk" -#: awkgram.y:1595 +#: awkgram.y:1593 #, 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:1673 +#: awkgram.y:1671 msgid "invalid subscript expression" msgstr "espressione indice invalida" -#: awkgram.y:1713 +#: awkgram.y:1711 msgid "use of non-array as array" msgstr "uso di non-vettore come vettore" -#: awkgram.y:1977 awkgram.y:1997 msg.c:98 +#: awkgram.y:1975 awkgram.y:1995 msg.c:98 msgid "warning: " msgstr "attenzione: " -#: awkgram.y:1995 msg.c:130 +#: awkgram.y:1993 msg.c:130 msgid "fatal: " msgstr "fatale: " -#: awkgram.y:2045 +#: awkgram.y:2043 msgid "unexpected newline or end of string" msgstr "carattere 'a capo' o fine stringa inaspettati" -#: awkgram.y:2301 awkgram.y:2359 awkgram.y:2543 +#: awkgram.y:2300 awkgram.y:2358 awkgram.y:2542 #, 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:2302 awkgram.y:2360 builtin.c:119 +#: awkgram.y:2301 awkgram.y:2359 builtin.c:122 msgid "reason unknown" msgstr "ragione indeterminata" -#: awkgram.y:2318 +#: awkgram.y:2317 #, c-format msgid "already included source file `%s'" msgstr "file sorgente `%s' già incluso" -#: awkgram.y:2344 +#: awkgram.y:2343 msgid "@include is a gawk extension" msgstr "@include è un'estensione gawk" -#: awkgram.y:2350 +#: awkgram.y:2349 msgid "empty filename after @include" msgstr "nome-file mancante dopo @include" -#: awkgram.y:2495 +#: awkgram.y:2494 msgid "empty program text on command line" msgstr "programma nullo sulla linea comandi" -#: awkgram.y:2610 +#: awkgram.y:2609 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "non riesco a leggere file sorgente `%s' (%s)" -#: awkgram.y:2621 +#: awkgram.y:2620 #, c-format msgid "source file `%s' is empty" msgstr "file sorgente `%s' vuoto" -#: awkgram.y:2806 +#: awkgram.y:2797 msgid "source file does not end in newline" msgstr "file sorgente non termina con carattere 'a capo'" -#: awkgram.y:2883 +#: awkgram.y:2900 msgid "unterminated regexp ends with `\\' at end of file" msgstr "espressione regolare non completata termina con `\\' a fine file" -#: awkgram.y:2907 +#: awkgram.y:2924 #, 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:2911 +#: awkgram.y:2928 #, 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:2918 +#: awkgram.y:2935 msgid "unterminated regexp" msgstr "espressione regolare non completata" -#: awkgram.y:2922 +#: awkgram.y:2939 msgid "unterminated regexp at end of file" msgstr "espressione regolare non completata a fine file" -#: awkgram.y:2981 +#: awkgram.y:2998 msgid "use of `\\ #...' line continuation is not portable" msgstr "uso di `\\ #...' continuazione linea non portabile" -#: awkgram.y:2997 +#: awkgram.y:3014 msgid "backslash not last character on line" msgstr "'\\' non è l'ultimo carattere della linea" -#: awkgram.y:3058 +#: awkgram.y:3075 msgid "POSIX does not allow operator `**='" msgstr "POSIX non permette l'operatore `**='" -#: awkgram.y:3060 +#: awkgram.y:3077 msgid "old awk does not support operator `**='" msgstr "il vecchio awk non supporta l'operatore `**='" -#: awkgram.y:3069 +#: awkgram.y:3086 msgid "POSIX does not allow operator `**'" msgstr "POSIX non permette l'operatore `**'" -#: awkgram.y:3071 +#: awkgram.y:3088 msgid "old awk does not support operator `**'" msgstr "il vecchio awk non supporta l'operatore `**'" -#: awkgram.y:3106 +#: awkgram.y:3123 msgid "operator `^=' is not supported in old awk" msgstr "l'operatore `^=' non è supportato nel vecchio awk" -#: awkgram.y:3114 +#: awkgram.y:3131 msgid "operator `^' is not supported in old awk" msgstr "l'operatore `^' non è supportato nel vecchio awk" -#: awkgram.y:3207 awkgram.y:3223 +#: awkgram.y:3224 awkgram.y:3240 msgid "unterminated string" msgstr "stringa non terminata" -#: awkgram.y:3419 +#: awkgram.y:3436 #, c-format msgid "invalid char '%c' in expression" msgstr "carattere '%c' non valido in un'espressione" -#: awkgram.y:3466 +#: awkgram.y:3483 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s' è un'estensione gawk" -#: awkgram.y:3471 +#: awkgram.y:3488 #, c-format msgid "`%s' is a Bell Labs extension" msgstr "`%s' è un'estensione Bell Labs" -#: awkgram.y:3476 +#: awkgram.y:3493 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX non permette `%s'" -#: awkgram.y:3484 +#: awkgram.y:3501 #, c-format msgid "`%s' is not supported in old awk" msgstr "`%s' non è supportato nel vecchio awk" -#: awkgram.y:3551 +#: awkgram.y:3568 msgid "`goto' considered harmful!\n" msgstr "`goto' considerato pericoloso!\n" -#: awkgram.y:3604 +#: awkgram.y:3619 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d non valido come numero di argomenti per %s" -#: awkgram.y:3639 awkgram.y:3642 -msgid "match: third argument is a gawk extension" -msgstr "match: il terzo argomento è un'estensione gawk" - -#: awkgram.y:3670 +#: awkgram.y:3654 #, 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:3675 +#: awkgram.y:3659 #, c-format msgid "%s third parameter is not a changeable object" msgstr "il terzo parametro di '%s' non è un oggetto modificabile" -#: awkgram.y:3761 awkgram.y:3764 +#: awkgram.y:3732 awkgram.y:3735 +msgid "match: third argument is a gawk extension" +msgstr "match: il terzo argomento è un'estensione gawk" + +#: awkgram.y:3789 awkgram.y:3792 msgid "close: second argument is a gawk extension" msgstr "close: il secondo argomento è un'estensione gawk" -#: awkgram.y:3776 +#: awkgram.y:3804 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "uso scorretto di dcgettext(_\"...\"): togliere il carattere '_' iniziale" -#: awkgram.y:3791 +#: awkgram.y:3819 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "uso scorretto di dcngettext(_\"...\"): togliere il carattere '_' iniziale" -#: awkgram.y:3883 +#: awkgram.y:3911 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funzione `%s': parametro #%d, `%s', duplica parametro #%d" -#: awkgram.y:3925 +#: awkgram.y:3953 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funzione `%s': parametro `%s' nasconde variabile globale" -#: awkgram.y:4083 +#: awkgram.y:4111 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "non riesco ad aprire `%s' in scrittura (%s)" -#: awkgram.y:4084 +#: awkgram.y:4112 #, fuzzy msgid "sending variable list to standard error" msgstr "mando profilo a 'standard error'" -#: awkgram.y:4090 +#: awkgram.y:4118 #, c-format msgid "%s: close failed (%s)" msgstr "%s: 'close' fallita (%s)" -#: awkgram.y:4142 +#: awkgram.y:4170 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() chiamata due volte!" -#: awkgram.y:4148 +#: awkgram.y:4176 msgid "there were shadowed variables." msgstr "c'erano variabili nascoste." -#: awkgram.y:4178 +#: awkgram.y:4206 #, 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:4182 +#: awkgram.y:4210 #, 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:4198 +#: awkgram.y:4226 #, c-format msgid "function name `%s' previously defined" msgstr "funzione di nome `%s' definita in precedenza" -#: awkgram.y:4366 awkgram.y:4372 +#: awkgram.y:4394 awkgram.y:4400 #, c-format msgid "function `%s' called but never defined" msgstr "funzione `%s' chiamata ma mai definita" -#: awkgram.y:4375 +#: awkgram.y:4403 #, c-format msgid "function `%s' defined but never called directly" msgstr "funzione `%s' definita ma mai chiamata direttamente" -#: awkgram.y:4407 +#: awkgram.y:4435 #, 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:4516 +#: awkgram.y:4544 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -530,227 +530,227 @@ "funzione `%s' chiamata con spazio tra il nome e `(',\n" "o usata come variabile o vettore" -#: awkgram.y:4763 eval.c:1964 +#: awkgram.y:4791 eval.c:2056 msgid "division by zero attempted" msgstr "tentativo di dividere per zero" -#: awkgram.y:4772 eval.c:1980 +#: awkgram.y:4800 eval.c:2072 #, c-format msgid "division by zero attempted in `%%'" msgstr "tentativo di dividere per zero in `%%'" -#: builtin.c:117 +#: builtin.c:120 #, c-format msgid "%s to \"%s\" failed (%s)" msgstr "%s a \"%s\" fallita (%s)" -#: builtin.c:118 +#: builtin.c:121 msgid "standard output" msgstr "standard output" -#: builtin.c:132 +#: builtin.c:135 msgid "exp: received non-numeric argument" msgstr "exp: argomento non numerico" -#: builtin.c:138 +#: builtin.c:141 #, c-format msgid "exp: argument %g is out of range" msgstr "exp: argomento %g non accettabile" -#: builtin.c:197 +#: builtin.c:200 #, 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:200 +#: builtin.c:203 #, 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:212 +#: builtin.c:215 #, 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:330 +#: builtin.c:333 msgid "index: received non-string first argument" msgstr "index: il primo argomento non è una stringa" -#: builtin.c:332 +#: builtin.c:335 msgid "index: received non-string second argument" msgstr "index: il secondo argomento non è una stringa" -#: builtin.c:454 +#: builtin.c:457 msgid "int: received non-numeric argument" msgstr "int: argomento non numerico" -#: builtin.c:490 +#: builtin.c:493 msgid "length: received array argument" msgstr "length: l'argomento fornito è un vettore" -#: builtin.c:493 +#: builtin.c:496 msgid "`length(array)' is a gawk extension" msgstr "`length(array)' è un'estensione gawk" -#: builtin.c:501 +#: builtin.c:504 msgid "length: received non-string argument" msgstr "length: l'argomento non è una stringa" -#: builtin.c:532 +#: builtin.c:535 msgid "log: received non-numeric argument" msgstr "log: argomento non numerico" -#: builtin.c:535 +#: builtin.c:538 #, c-format msgid "log: received negative argument %g" msgstr "log: argomento negativo %g" -#: builtin.c:691 builtin.c:696 +#: builtin.c:694 builtin.c:699 msgid "fatal: must use `count$' on all formats or none" msgstr "" -#: builtin.c:758 +#: builtin.c:762 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "" -#: builtin.c:760 +#: builtin.c:764 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "" -#: builtin.c:762 +#: builtin.c:766 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "" -#: builtin.c:813 +#: builtin.c:817 #, fuzzy msgid "fatal: `$' is not permitted in awk formats" msgstr "l'operatore `^' non è supportato nel vecchio awk" -#: builtin.c:822 +#: builtin.c:826 msgid "fatal: arg count with `$' must be > 0" msgstr "" -#: builtin.c:826 +#: builtin.c:830 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "" -#: builtin.c:830 +#: builtin.c:834 msgid "fatal: `$' not permitted after period in format" msgstr "" -#: builtin.c:846 +#: builtin.c:850 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" -#: builtin.c:917 +#: builtin.c:921 msgid "`l' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:921 +#: builtin.c:925 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:934 +#: builtin.c:938 msgid "`L' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:938 +#: builtin.c:942 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:951 +#: builtin.c:955 msgid "`h' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:955 +#: builtin.c:959 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:1268 +#: builtin.c:1272 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "" -#: builtin.c:1328 +#: builtin.c:1332 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" -#: builtin.c:1333 +#: builtin.c:1337 msgid "fatal: not enough arguments to satisfy format string" msgstr "" -#: builtin.c:1335 +#: builtin.c:1339 msgid "^ ran out for this one" msgstr "" -#: builtin.c:1342 +#: builtin.c:1346 msgid "[s]printf: format specifier does not have control letter" msgstr "" -#: builtin.c:1345 +#: builtin.c:1349 msgid "too many arguments supplied for format string" msgstr "" -#: builtin.c:1419 builtin.c:1430 +#: builtin.c:1423 builtin.c:1434 msgid "printf: no arguments" msgstr "printf: manca argomento" -#: builtin.c:1471 +#: builtin.c:1475 msgid "sqrt: received non-numeric argument" msgstr "sqrt: argomento non numerico" -#: builtin.c:1475 +#: builtin.c:1479 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: chiamata con argomento negativo %g" -#: builtin.c:1499 +#: builtin.c:1503 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: lunghezza %g non >= 1" -#: builtin.c:1501 +#: builtin.c:1505 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: lunghezza %g non >= 0" -#: builtin.c:1508 +#: builtin.c:1512 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: lunghezza non intera %g: sarà troncata" -#: builtin.c:1513 +#: builtin.c:1517 #, 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:1525 +#: builtin.c:1529 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: indice di partenza %g non valido, uso 1" -#: builtin.c:1530 +#: builtin.c:1534 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: indice di partenza non intero %g: sarà troncato" -#: builtin.c:1555 +#: builtin.c:1559 msgid "substr: source string is zero length" msgstr "substr: stringa di partenza lunga zero" -#: builtin.c:1571 +#: builtin.c:1575 #, 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:1579 +#: builtin.c:1583 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -758,220 +758,224 @@ "substr: lunghezza %g all'indice di partenza %g supera la lunghezza del primo " "argomento (%lu)" -#: builtin.c:1652 +#: builtin.c:1657 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" "strftime: il valore del 'format' in PROCINFO[\"strftime\"] è di tipo numerico" -#: builtin.c:1675 +#: builtin.c:1680 msgid "strftime: received non-numeric second argument" msgstr "strftime: il secondo argomento non è numerico" -#: builtin.c:1682 +#: builtin.c:1683 +msgid "strftime: second argument less than 0 or too big for time_t" +msgstr "" + +#: builtin.c:1690 msgid "strftime: received non-string first argument" msgstr "strftime: il primo argomento non è una stringa" -#: builtin.c:1688 +#: builtin.c:1696 msgid "strftime: received empty format string" msgstr "strftime: 'format' è una stringa nulla" -#: builtin.c:1754 +#: builtin.c:1762 msgid "mktime: received non-string argument" msgstr "mktime: l'argomento non è una stringa" -#: builtin.c:1771 +#: builtin.c:1779 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:1806 +#: builtin.c:1814 msgid "'system' function not allowed in sandbox mode" msgstr "la funzione 'system' non è permessa in modo 'sandbox'" -#: builtin.c:1811 +#: builtin.c:1819 msgid "system: received non-string argument" msgstr "system: l'argomento non è una stringa" -#: builtin.c:1866 eval.c:1165 eval.c:1698 eval.c:1711 +#: builtin.c:1874 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:1933 +#: builtin.c:1941 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "riferimento a variabile non inizializzata `$%d'" -#: builtin.c:2020 +#: builtin.c:2028 msgid "tolower: received non-string argument" msgstr "tolower: l'argomento non è una stringa" -#: builtin.c:2054 +#: builtin.c:2062 msgid "toupper: received non-string argument" msgstr "toupper: l'argomento non è una stringa" -#: builtin.c:2090 +#: builtin.c:2098 msgid "atan2: received non-numeric first argument" msgstr "atan2: il primo argomento non è numerico" -#: builtin.c:2092 +#: builtin.c:2100 msgid "atan2: received non-numeric second argument" msgstr "atan2: il secondo argomento non è numerico" -#: builtin.c:2111 +#: builtin.c:2119 msgid "sin: received non-numeric argument" msgstr "sin: l'argomento non è numerico" -#: builtin.c:2127 +#: builtin.c:2135 msgid "cos: received non-numeric argument" msgstr "cos: l'argomento non è numerico" -#: builtin.c:2180 +#: builtin.c:2188 msgid "srand: received non-numeric argument" msgstr "srand: l'argomento non è numerico" -#: builtin.c:2211 +#: builtin.c:2219 msgid "match: third argument is not an array" msgstr "match: il terzo argomento non è un vettore" -#: builtin.c:2718 +#: builtin.c:2483 msgid "gensub: third argument of 0 treated as 1" msgstr "gensub: il terzo argomento è 0, trattato come 1" -#: builtin.c:2757 +#: builtin.c:2776 msgid "lshift: received non-numeric first argument" msgstr "lshift: il primo argomento non è numerico" -#: builtin.c:2759 +#: builtin.c:2778 msgid "lshift: received non-numeric second argument" msgstr "lshift: il secondo argomento non è numerico" -#: builtin.c:2765 +#: builtin.c:2784 #, c-format msgid "lshift(%lf, %lf): negative values will give strange results" msgstr "lshift(%lf, %lf): valori negativi daranno risultati strani" -#: builtin.c:2767 +#: builtin.c:2786 #, c-format msgid "lshift(%lf, %lf): fractional values will be truncated" msgstr "lshift(%lf, %lf): valori con decimali verranno troncati" -#: builtin.c:2769 +#: builtin.c:2788 #, 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:2794 +#: builtin.c:2813 msgid "rshift: received non-numeric first argument" msgstr "rshift: il primo argomento non è numerico" -#: builtin.c:2796 +#: builtin.c:2815 msgid "rshift: received non-numeric second argument" msgstr "rshift: il secondo argomento non è numerico" -#: builtin.c:2802 +#: builtin.c:2821 #, c-format msgid "rshift(%lf, %lf): negative values will give strange results" msgstr "rshift(%lf, %lf): valori negativi daranno risultati strani" -#: builtin.c:2804 +#: builtin.c:2823 #, c-format msgid "rshift(%lf, %lf): fractional values will be truncated" msgstr "rshift(%lf, %lf): valori con decimali verranno troncati" -#: builtin.c:2806 +#: builtin.c:2825 #, 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:2831 +#: builtin.c:2850 msgid "and: received non-numeric first argument" msgstr "and: il primo argomento non è numerico" -#: builtin.c:2833 +#: builtin.c:2852 msgid "and: received non-numeric second argument" msgstr "and: il secondo argomento non è numerico" -#: builtin.c:2839 +#: builtin.c:2858 #, c-format msgid "and(%lf, %lf): negative values will give strange results" msgstr "and(%lf, %lf): valori negativi daranno risultati strani" -#: builtin.c:2841 +#: builtin.c:2860 #, c-format msgid "and(%lf, %lf): fractional values will be truncated" msgstr "and(%lf, %lf): valori con decimali verranno troncati" -#: builtin.c:2866 +#: builtin.c:2885 msgid "or: received non-numeric first argument" msgstr "or: il primo argomento non è numerico" -#: builtin.c:2868 +#: builtin.c:2887 msgid "or: received non-numeric second argument" msgstr "or: il secondo argomento non è numerico" -#: builtin.c:2874 +#: builtin.c:2893 #, c-format msgid "or(%lf, %lf): negative values will give strange results" msgstr "or(%lf, %lf): valori negativi daranno risultati strani" -#: builtin.c:2876 +#: builtin.c:2895 #, c-format msgid "or(%lf, %lf): fractional values will be truncated" msgstr "or(%lf, %lf): valori con decimali verranno troncati" -#: builtin.c:2904 +#: builtin.c:2923 msgid "xor: received non-numeric first argument" msgstr "xor: il primo argomento non è numerico" -#: builtin.c:2906 +#: builtin.c:2925 msgid "xor: received non-numeric second argument" msgstr "xor: il secondo argomento non è numerico" -#: builtin.c:2912 +#: builtin.c:2931 #, c-format msgid "xor(%lf, %lf): negative values will give strange results" msgstr "xor(%lf, %lf): valori negativi daranno risultati strani" -#: builtin.c:2914 +#: builtin.c:2933 #, c-format msgid "xor(%lf, %lf): fractional values will be truncated" msgstr "xor(%lf, %lf): valori con decimali verranno troncati" -#: builtin.c:2938 builtin.c:2944 +#: builtin.c:2957 builtin.c:2963 msgid "compl: received non-numeric argument" msgstr "compl: l'argomento non è numerico" -#: builtin.c:2946 +#: builtin.c:2965 #, c-format msgid "compl(%lf): negative value will give strange results" msgstr "compl(%lf): valore negativo darà risultati strani" -#: builtin.c:2948 +#: builtin.c:2967 #, c-format msgid "compl(%lf): fractional value will be truncated" msgstr "compl(%lf): valore con decimali verrà troncato" -#: builtin.c:3117 +#: builtin.c:3136 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s' non è una categoria 'locale' valida" -#: eval.c:411 +#: eval.c:412 #, c-format msgid "unknown nodetype %d" msgstr "tipo nodo sconosciuto %d" -#: eval.c:422 eval.c:436 +#: eval.c:423 eval.c:437 #, c-format msgid "unknown opcode %d" msgstr "codice operativo sconosciuto %d" -#: eval.c:433 +#: eval.c:434 #, c-format msgid "opcode %s not an operator or keyword" msgstr "codice operativo %s non è un operatore o una parola chiave" -#: eval.c:487 +#: eval.c:488 msgid "buffer overflow in genflags2str" msgstr "superamento limiti buffer in 'genflags2str'" @@ -1008,121 +1012,127 @@ msgid "turning off `--lint' due to assignment to `LINT'" msgstr "disabilito `--lint' a causa di assegnamento a `LINT'" -#: eval.c:1127 eval.c:1685 +#: 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:1155 -msgid "assignment is not allowed to result of builtin function" -msgstr "assegnamento non permesso al risultato di una funzione interna" - -#: eval.c:1164 eval.c:1697 eval.c:1710 +#: eval.c:1158 eval.c:1789 eval.c:1802 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "riferimento ad argomento non inizializzato `%s'" -#: eval.c:1183 +#: eval.c:1177 msgid "attempt to field reference from non-numeric value" msgstr "tentativo di riferimento a un campo da valore non numerico" -#: eval.c:1185 +#: eval.c:1179 msgid "attempt to field reference from null string" msgstr "tentativo di riferimento a un campo da una stringa nulla" -#: eval.c:1191 +#: eval.c:1185 #, c-format msgid "attempt to access field %ld" msgstr "tentativo di accedere al campo %ld" -#: eval.c:1200 +#: eval.c:1194 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "riferimento a campo non inizializzato `$%ld'" -#: eval.c:1262 +#: eval.c:1256 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "funzione `%s' chiamata con più argomenti di quelli previsti" -#: eval.c:1426 +#: eval.c:1437 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: tipo non previsto `%s'" -#: eval.c:1510 +#: eval.c:1532 msgid "division by zero attempted in `/='" msgstr "divisione per zero tentata in `/='" -#: eval.c:1517 +#: eval.c:1539 #, c-format msgid "division by zero attempted in `%%='" msgstr "divisione per zero tentata in `%%='" -#: eval.c:1784 eval.c:2030 +#: 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:1815 +#: eval.c:1907 msgid "assignment used in conditional context" msgstr "assegnamento usato nel contesto di un test condizionale" -#: eval.c:1819 +#: eval.c:1911 msgid "statement has no effect" msgstr "istruzione che non fa nulla" -#: eval.c:2233 +#: 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:2343 +#: 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:2355 +#: eval.c:2470 #, c-format msgid "function `%s' not defined" msgstr "funzione `%s' non definita" -#: eval.c:2416 +#: eval.c:2511 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "`getline' non-diretta indefinita dentro regola '%s'" -#: eval.c:2477 +#: 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:2532 +#: eval.c:2661 +#, fuzzy +msgid "`exit' cannot be called in the current context" +msgstr "`next' non può essere chiamato da una regola `%s'" + +#: eval.c:2700 #, c-format msgid "`next' cannot be called from a `%s' rule" msgstr "`next' non può essere chiamato da una regola `%s'" -#: eval.c:2599 +#: eval.c:2766 #, c-format msgid "Sorry, don't know how to interpret `%s'" msgstr "Spiacente, non so come interpretare `%s'" -#: ext.c:64 +#: ext.c:54 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:60 ext.c:65 msgid "`extension' is a gawk extension" msgstr "`extension' è un'estensione gawk" -#: ext.c:85 +#: ext.c:75 #, c-format msgid "fatal: extension: cannot open `%s' (%s)\n" msgstr "fatale: estensione: non riesco ad aprire `%s' (%s)\n" -#: ext.c:94 +#: ext.c:84 #, c-format msgid "" "fatal: extension: library `%s': does not define " @@ -1131,68 +1141,68 @@ "fatale: estensione: libreria `%s': non definisce " "`plugin_is_GPL_compatible' (%s)\n" -#: ext.c:103 +#: ext.c:93 #, c-format msgid "fatal: extension: library `%s': cannot call function `%s' (%s)\n" msgstr "" "fatale: estensione: libreria `%s': non riesco a chiamare funzione `%s' (%s)\n" -#: ext.c:137 +#: ext.c:127 msgid "extension: missing function name" msgstr "estensione: manca nome di funzione" -#: ext.c:142 +#: ext.c:132 #, 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:141 #, c-format msgid "extension: can't redefine function `%s'" msgstr "estensione: non riesco a ridefinire funzione `%s'" -#: ext.c:155 +#: ext.c:145 #, c-format msgid "extension: function `%s' already defined" msgstr "estensione: funzione `%s' già definita" -#: ext.c:160 +#: ext.c:150 #, c-format msgid "extension: function name `%s' previously defined" msgstr "estensione: funzione di nome `%s' definita in precedenza" -#: ext.c:162 +#: ext.c:152 #, 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:156 #, 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:259 #, 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:262 #, c-format msgid "function `%s': missing argument #%d" msgstr "funzione `%s': manca argomento #%d" -#: ext.c:289 +#: ext.c:279 #, 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:283 #, 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:296 msgid "Operation Not Supported" msgstr "Operazione Non Supportata" @@ -1200,176 +1210,171 @@ msgid "NF set to negative value" msgstr "NF impostato a un valore negativo" -#: field.c:950 field.c:957 field.c:961 +#: field.c:951 field.c:958 field.c:962 msgid "split: fourth argument is a gawk extension" msgstr "split: il quarto argomento è un'estensione gawk" -#: field.c:954 +#: field.c:955 msgid "split: fourth argument is not an array" msgstr "split: il quarto argomento non è un vettore" -#: field.c:968 +#: field.c:969 msgid "split: second argument is not an array" msgstr "split: il secondo argomento non è un vettore" -#: field.c:972 +#: field.c:973 #, fuzzy 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" -#: field.c:977 +#: field.c:978 #, fuzzy 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" -#: field.c:980 +#: field.c:981 #, fuzzy 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" -#: field.c:1009 +#: field.c:1010 msgid "split: null string for third arg is a gawk extension" msgstr "split: la stringa nulla come terzo arg. è un'estensione gawk" -#: field.c:1049 +#: field.c:1050 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: il secondo argomento non è un vettore" -#: field.c:1054 +#: field.c:1055 msgid "patsplit: second argument is not an array" msgstr "patsplit: il secondo argomento non è un vettore" -#: field.c:1060 +#: field.c:1061 msgid "patsplit: third argument must be non-null" msgstr "patsplit: il terzo argomento non può essere nullo" -#: field.c:1064 +#: field.c:1065 #, fuzzy 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" -#: field.c:1069 +#: field.c:1070 #, fuzzy 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" -#: field.c:1072 +#: field.c:1073 #, fuzzy 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" -#: field.c:1109 +#: field.c:1110 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "`FIELDWIDTHS' è un'estensione gawk" -#: field.c:1172 +#: field.c:1173 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "valore di FIELDWIDTHS non valido, vicino a `%s'" -#: field.c:1245 +#: field.c:1246 msgid "null string for `FS' is a gawk extension" msgstr "la stringa nulla usata come `FS' è un'estensione gawk" -#: field.c:1249 +#: field.c:1250 msgid "old awk does not support regexps as value of `FS'" msgstr "il vecchio awk non supporta espressioni come valori di `FS'" -#: field.c:1368 +#: field.c:1369 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" +#: getopt.c:604 getopt.c:633 +#, fuzzy, c-format +msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: opzione '%s' 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: 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:282 +#: io.c:280 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "l'argomento in linea comando `%s' è una directory: saltato" -#: io.c:285 io.c:384 +#: io.c:283 io.c:385 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "non riesco ad aprire file `%s' in lettura (%s)" -#: io.c:431 -#, c-format -msgid "error reading input file `%s': %s" -msgstr "errore leggendo file di input `%s': %s" - -#: io.c:500 +#: io.c:501 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "chiusura di fd %d (`%s') fallita (%s)" -#: io.c:577 +#: io.c:578 msgid "redirection not allowed in sandbox mode" msgstr "re-direzione non permessa in modo 'sandbox'" -#: io.c:611 +#: io.c:612 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "espressione nella re-direzione `%s' ha solo un valore numerico" -#: io.c:617 +#: io.c:618 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "espressione nella re-direzione `%s' ha per valore la stringa nulla" @@ -1475,7 +1480,7 @@ msgid "no explicit close of file `%s' provided" msgstr "nessuna chiusura esplicita richiesta per file `%s'" -#: io.c:1129 io.c:1184 main.c:795 main.c:832 +#: io.c:1129 io.c:1184 main.c:794 main.c:831 #, c-format msgid "error writing standard output (%s)" msgstr "errore scrivendo 'standard output' (%s)" @@ -1537,91 +1542,91 @@ msgid "could not open `%s', mode `%s'" msgstr "non riesco ad aprire `%s', modo `%s'" -#: io.c:1744 +#: io.c:1747 #, c-format msgid "close of master pty failed (%s)" msgstr "fallita chiusura di 'pty' principale (%s)" -#: io.c:1746 io.c:1914 io.c:2071 +#: io.c:1749 io.c:1917 io.c:2074 #, c-format msgid "close of stdout in child failed (%s)" msgstr "fallita chiusura di 'stdout' nel processo-figlio (%s)" -#: io.c:1749 +#: io.c:1752 #, 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:1751 io.c:1919 +#: io.c:1754 io.c:1922 #, c-format msgid "close of stdin in child failed (%s)" msgstr "fallita chiusura di 'stdin' nel processo-figlio (%s)" -#: io.c:1754 +#: io.c:1757 #, 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:1756 io.c:1777 +#: io.c:1759 io.c:1780 #, c-format msgid "close of slave pty failed (%s)" msgstr "fallita chiusura di 'pty' secondaria (%s)" -#: io.c:1855 io.c:1917 io.c:2049 io.c:2074 +#: io.c:1858 io.c:1920 io.c:2052 io.c:2077 #, 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:1862 io.c:1922 +#: io.c:1865 io.c:1925 #, 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:1882 io.c:2064 +#: io.c:1885 io.c:2067 msgid "restoring stdout in parent process failed\n" msgstr "fallito ripristino di 'stdout' nel processo-padre\n" -#: io.c:1890 +#: io.c:1893 msgid "restoring stdin in parent process failed\n" msgstr "fallito ripristino di 'stdin' nel processo-padre\n" -#: io.c:1925 io.c:2076 io.c:2090 +#: io.c:1928 io.c:2079 io.c:2093 #, c-format msgid "close of pipe failed (%s)" msgstr "fallita chiusura di 'pipe' (%s)" -#: io.c:1970 +#: io.c:1973 msgid "`|&' not supported" msgstr "`|&' non supportato" -#: io.c:2036 +#: io.c:2039 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "non riesco ad aprire 'pipe' `%s' (%s)" -#: io.c:2084 +#: io.c:2087 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "non riesco a creare processo-figlio per `%s' (fork: %s)" -#: io.c:2517 +#: io.c:2520 #, c-format msgid "data file `%s' is empty" msgstr "file dati `%s' vuoto" -#: io.c:2558 io.c:2566 +#: io.c:2561 io.c:2569 msgid "could not allocate more input memory" msgstr "non riesco ad allocare ulteriore memoria per l'input" -#: io.c:3119 +#: io.c:3127 msgid "multicharacter value of `RS' is a gawk extension" msgstr "valore multicarattere per `RS' è un'estensione gawk" -#: io.c:3224 +#: io.c:3232 msgid "IPv6 communication is not supported" msgstr "comunicazioni IPv6 non supportate" @@ -1687,119 +1692,119 @@ msgid "no program text at all!" msgstr "manca del tutto il testo del programma!" -#: main.c:735 +#: main.c:734 #, 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:737 +#: main.c:736 #, 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:742 +#: main.c:741 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Opzioni POSIX:\t\topzioni lunghe GNU: (standard)\n" -#: main.c:743 +#: main.c:742 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f fileprog\t\t--file=file-prog.\n" -#: main.c:744 +#: main.c:743 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:745 +#: main.c:744 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=valore\t\t--assign=var=valore\n" -#: main.c:746 +#: main.c:745 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Opzioni brevi:\t\topzioni lunghe GNU: (estensioni)\n" -#: main.c:747 +#: main.c:746 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:748 +#: main.c:747 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:749 +#: main.c:748 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:750 +#: main.c:749 #, fuzzy msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d [file]\t\t--dump-variables[=file]\n" -#: main.c:751 +#: main.c:750 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'testo-del-programma'\t--source='testo-del-programma'\n" -#: main.c:752 +#: main.c:751 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E file\t\t\t--exec=file\n" -#: main.c:753 +#: main.c:752 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:754 +#: main.c:753 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:755 +#: main.c:754 msgid "\t-L [fatal]\t\t--lint[=fatal]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: main.c:756 +#: main.c:755 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:757 +#: main.c:756 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:758 +#: main.c:757 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:759 +#: main.c:758 #, fuzzy msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p [file]\t\t--profile[=file]\n" -#: main.c:760 +#: main.c:759 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:761 +#: main.c:760 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:763 +#: main.c:762 msgid "\t-R file\t\t\t--command=file\n" msgstr "\t-R file\t\t\t--command=file\n" -#: main.c:764 +#: main.c:763 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:765 +#: main.c:764 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:766 +#: main.c:765 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:768 +#: main.c:767 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:771 +#: main.c:770 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -1808,7 +1813,7 @@ #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:780 +#: main.c:779 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -1820,7 +1825,7 @@ "sezione `Reporting Problems and Bugs' nella versione a stampa.\n" "\n" -#: main.c:784 +#: main.c:783 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -1830,7 +1835,7 @@ "Senza parametri, legge da 'standard input' e scrive su 'standard output'.\n" "\n" -#: main.c:788 +#: main.c:787 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -1840,7 +1845,7 @@ "\tgawk '{ sum += $1 }; END { print sum }' file\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:808 +#: main.c:807 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -1859,7 +1864,7 @@ "Licenza, o (a tua scelta) a una qualsiasi versione successiva.\n" "\n" -#: main.c:816 +#: main.c:815 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 +1878,7 @@ "Vedi la 'GNU General Public License' per ulteriori dettagli.\n" "\n" -#: main.c:822 +#: main.c:821 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 +1887,16 @@ "assieme a questo programma; se non è così, vedi http://www.gnu.org/" "licenses/.\n" -#: main.c:857 +#: main.c:856 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft non imposta FS a 'tab' nell'awk POSIX" -#: main.c:1091 +#: main.c:1090 #, c-format msgid "unknown value for field spec: %d\n" msgstr "valore non noto per specifica campo: %d\n" -#: main.c:1152 +#: main.c:1171 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -1900,58 +1905,53 @@ "%s: `%s' argomento di `-v' non in forma `var=valore'\n" "\n" -#: main.c:1178 +#: main.c:1197 #, c-format msgid "`%s' is not a legal variable name" msgstr "`%s' non è un nome di variabile ammesso" -#: main.c:1181 +#: main.c:1200 #, 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:1185 +#: main.c:1204 #, fuzzy, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "" "estensione: nome funzione interna gawk `%s' non ammesso come nome funzione" -#: main.c:1190 +#: main.c:1209 #, fuzzy, c-format msgid "cannot use function `%s' as variable name" msgstr "non posso usare nome di funzione `%s' come variabile o vettore" -#: main.c:1243 +#: main.c:1262 msgid "floating point exception" msgstr "eccezione floating point" -#: main.c:1250 +#: main.c:1269 msgid "fatal error: internal error" msgstr "errore fatale: errore interno" -#: main.c:1265 +#: main.c:1284 msgid "fatal error: internal error: segfault" msgstr "errore fatale: errore interno: segfault" -#: main.c:1277 +#: main.c:1296 msgid "fatal error: internal error: stack overflow" msgstr "errore fatale: errore interno: stack overflow" -#: main.c:1327 +#: main.c:1346 #, c-format msgid "no pre-opened fd %d" msgstr "manca 'fd' pre-aperta %d" -#: main.c:1334 +#: main.c:1353 #, 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:1357 main.c:1366 -#, c-format -msgid "could not find groups: %s" -msgstr "non riesco a trovare gruppi: %s" - #: msg.c:63 #, c-format msgid "cmd. line:" @@ -2043,12 +2043,12 @@ msgid "internal error: %s with null vname" msgstr "errore interno: %s con 'vname' nullo" -#: profile.c:938 +#: profile.c:952 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# profilo gawk, creato %s\n" -#: profile.c:1317 +#: profile.c:1331 #, c-format msgid "" "\n" @@ -2057,94 +2057,100 @@ "\n" "\t# Funzioni, listate in ordine alfabetico\n" -#: profile.c:1356 +#: profile.c:1370 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: tipo di re-direzione non noto %d" -#: re.c:572 -#, c-format -msgid "range of the form `[%c-%c]' is locale dependant" +#: re.c:573 +#, fuzzy, c-format +msgid "range of the form `[%c-%c]' is locale dependent" msgstr "intervallo nella forma `[%c-%c]' dipende da 'locale'" -#: re.c:599 +#: re.c:600 #, 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 "could not find groups: %s" +#~ msgstr "non riesco a trovare gruppi: %s" + +#~ 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" diff -urN gawk-4.0.0/po/ja.po gawk-4.0.1/po/ja.po --- gawk-4.0.0/po/ja.po 2011-06-23 09:46:20.000000000 +0300 +++ gawk-4.0.1/po/ja.po 2012-03-28 22:03:47.000000000 +0200 @@ -6,10 +6,10 @@ # msgid "" msgstr "" -"Project-Id-Version: gawk 3.1.83\n" +"Project-Id-Version: gawk 4.0.0\n" "Report-Msgid-Bugs-To: arnold@skeeve.com\n" -"POT-Creation-Date: 2011-06-23 09:46+0300\n" -"PO-Revision-Date: 2011-05-25 09:44+0900\n" +"POT-Creation-Date: 2012-03-28 22:03+0200\n" +"PO-Revision-Date: 2011-07-17 08:28+0900\n" "Last-Translator: Yasuaki Taniguchi \n" "Language-Team: Japanese \n" "Language: ja\n" @@ -42,9 +42,9 @@ msgid "attempt to use scalar `%s' as an array" msgstr "スカラー `%s' ã‚’é…列ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™" -#: array.c:302 array.c:707 builtin.c:81 builtin.c:1381 builtin.c:1423 -#: builtin.c:1436 builtin.c:1851 builtin.c:1863 eval.c:1135 eval.c:1139 -#: eval.c:1473 eval.c:1720 +#: array.c:302 array.c:707 builtin.c:84 builtin.c:1385 builtin.c:1427 +#: builtin.c:1440 builtin.c:1859 builtin.c:1871 eval.c:1135 eval.c:1139 +#: eval.c:1495 eval.c:1812 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "スカラーコンテキストã§é…列 `%s' を使用ã™ã‚‹è©¦ã¿ã§ã™" @@ -64,7 +64,7 @@ msgid "delete: index `%s' not in array `%s'" msgstr "delete: é…列 `%2$s' 内ã«ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ `%1$s' ãŒã‚りã¾ã›ã‚“" -#: array.c:734 eval.c:1773 +#: array.c:734 eval.c:1865 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "スカラー `%s[\"%.*s\"]' ã‚’é…列ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™" @@ -130,12 +130,12 @@ msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "asorti: 第二引数ã®éƒ¨åˆ†é…列を第一引数用ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“" -#: array.c:1659 +#: array.c:1655 #, c-format msgid "`%s' is invalid as a function name" msgstr "`%s' ã¯é–¢æ•°åã¨ã—ã¦ã¯ç„¡åйã§ã™" -#: array.c:1663 +#: array.c:1659 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "ソート比較関数 `%s' ãŒå®šç¾©ã•れã¦ã„ã¾ã›ã‚“" @@ -176,341 +176,341 @@ msgid "duplicate `default' detected in switch body" msgstr "switch æ–‡ã®ä¸­ã§é‡è¤‡ã—㟠`default' ãŒæ¤œå‡ºã•れã¾ã—ãŸ" -#: awkgram.y:811 +#: awkgram.y:809 msgid "`break' is not allowed outside a loop or switch" msgstr "`break' ã¯ãƒ«ãƒ¼ãƒ—ã¾ãŸã¯ switch ã®å¤–ã§ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" -#: awkgram.y:820 +#: awkgram.y:818 msgid "`continue' is not allowed outside a loop" msgstr "`continue' ã¯ãƒ«ãƒ¼ãƒ—ã®å¤–ã§ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" -#: awkgram.y:830 +#: awkgram.y:828 #, c-format msgid "`next' used in %s action" msgstr "%s アクション内㧠`next' ãŒä½¿ç”¨ã•れã¾ã—ãŸ" -#: awkgram.y:838 +#: awkgram.y:836 msgid "`nextfile' is a gawk extension" msgstr "`nextfile' 㯠gawk æ‹¡å¼µã§ã™" -#: awkgram.y:843 +#: awkgram.y:841 #, c-format msgid "`nextfile' used in %s action" msgstr "`nextfile' ㌠%s アクション内ã§ä½¿ç”¨ã•れã¾ã—ãŸ" -#: awkgram.y:867 +#: awkgram.y:865 msgid "`return' used outside function context" msgstr "`return' ãŒé–¢æ•°å®šç¾©æ–‡ã®å¤–ã§ä½¿ã‚れã¾ã—ãŸ" -#: awkgram.y:927 +#: awkgram.y:925 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" "BEGIN ã¾ãŸã¯ END ルール内ã®å¼•æ•°ã®ç„¡ã„ `print' 㯠`print \"\"' ã ã¨æ€ã‚れã¾ã™" -#: awkgram.y:997 awkgram.y:1001 awkgram.y:1025 +#: awkgram.y:995 awkgram.y:999 awkgram.y:1023 msgid "`delete array' is a gawk extension" msgstr "`delete array' 㯠gawk æ‹¡å¼µã§ã™" -#: awkgram.y:1021 +#: awkgram.y:1019 msgid "`delete(array)' is a non-portable tawk extension" msgstr "`delete(array)' ã¯ç§»æ¤æ€§ã®ç„¡ã„ tawk æ‹¡å¼µã§ã™" -#: awkgram.y:1137 +#: awkgram.y:1135 msgid "multistage two-way pipelines don't work" msgstr "多段階ã§åŒæ–¹å‘パイプを利用ã—ãŸå¼ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“" -#: awkgram.y:1240 +#: awkgram.y:1238 msgid "regular expression on right of assignment" msgstr "æ­£è¦è¡¨ç¾ãŒä»£å…¥å¼ã®å³è¾ºã«ä½¿ç”¨ã•れã¦ã„ã¾ã™" -#: awkgram.y:1251 +#: awkgram.y:1249 msgid "regular expression on left of `~' or `!~' operator" msgstr "`~' ã‚„ `!~' 演算å­ã®å·¦è¾ºã«æ­£è¦è¡¨ç¾ãŒä½¿ç”¨ã•れã¦ã„ã¾ã™" -#: awkgram.y:1267 awkgram.y:1421 +#: awkgram.y:1265 awkgram.y:1419 msgid "old awk does not support the keyword `in' except after `for'" msgstr "å¤ã„ awk ã§ã¯ `in' 予約語㯠`for' ã®å¾Œã‚’除ãサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“" -#: awkgram.y:1277 +#: awkgram.y:1275 msgid "regular expression on right of comparison" msgstr "比較å¼ã®å³è¾ºã«æ­£è¦è¡¨ç¾ãŒä½¿ç”¨ã•れã¦ã„ã¾ã™ã€‚" -#: awkgram.y:1396 +#: awkgram.y:1394 #, c-format msgid "`getline var' invalid inside `%s' rule" msgstr "`%s' ルールã®å†…部ã§ã¯ `getline var' ã¯ç„¡åйã§ã™" -#: awkgram.y:1399 eval.c:2409 +#: awkgram.y:1397 eval.c:2504 #, c-format msgid "`getline' invalid inside `%s' rule" msgstr "`%s' ルールã®å†…部ã§ã¯ `getline' ã¯ç„¡åйã§ã™" -#: awkgram.y:1404 +#: awkgram.y:1402 msgid "non-redirected `getline' undefined inside END action" msgstr "リダイレクトã•れã¦ã„ãªã„ `getline' 㯠END アクションã§ã¯æœªå®šç¾©ã§ã™ã€‚" -#: awkgram.y:1423 +#: awkgram.y:1421 msgid "old awk does not support multidimensional arrays" msgstr "å¤ã„ awk ã¯å¤šæ¬¡å…ƒé…列をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“" -#: awkgram.y:1519 +#: awkgram.y:1517 msgid "call of `length' without parentheses is not portable" msgstr "å°æ‹¬å¼§ãŒç„¡ã„ `length' ã¯ç§»æ¤æ€§ãŒã‚りã¾ã›ã‚“" -#: awkgram.y:1582 +#: awkgram.y:1580 msgid "indirect function calls are a gawk extension" msgstr "間接関数呼ã³å‡ºã—㯠gawk æ‹¡å¼µã§ã™" -#: awkgram.y:1595 +#: awkgram.y:1593 #, c-format msgid "can not use special variable `%s' for indirect function call" msgstr "特別ãªå¤‰æ•° `%s' ã¯é–“接関数呼ã³å‡ºã—用ã«ã¯ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“" -#: awkgram.y:1673 +#: awkgram.y:1671 msgid "invalid subscript expression" msgstr "添字ã®å¼ãŒç„¡åйã§ã™" -#: awkgram.y:1713 +#: awkgram.y:1711 msgid "use of non-array as array" msgstr "é…列ã§ãªã„ã‚‚ã®ã‚’é…列ã¨ã—ã¦ä½¿ç”¨ã—ã¦ã„ã¾ã™" -#: awkgram.y:1977 awkgram.y:1997 msg.c:98 +#: awkgram.y:1975 awkgram.y:1995 msg.c:98 msgid "warning: " msgstr "警告: " -#: awkgram.y:1995 msg.c:130 +#: awkgram.y:1993 msg.c:130 msgid "fatal: " msgstr "致命的: " -#: awkgram.y:2045 +#: awkgram.y:2043 msgid "unexpected newline or end of string" msgstr "予期ã—ãªã„改行ã¾ãŸã¯æ–‡å­—列終端ã§ã™" -#: awkgram.y:2301 awkgram.y:2359 awkgram.y:2543 +#: awkgram.y:2300 awkgram.y:2358 awkgram.y:2542 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "ソースファイル `%s' を読ã¿è¾¼ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“ (%s)" -#: awkgram.y:2302 awkgram.y:2360 builtin.c:119 +#: awkgram.y:2301 awkgram.y:2359 builtin.c:122 msgid "reason unknown" msgstr "åŽŸå› ä¸æ˜Ž" -#: awkgram.y:2318 +#: awkgram.y:2317 #, c-format msgid "already included source file `%s'" msgstr "ソースファイル `%s' ã¯æ—¢ã«èª­ã¿è¾¼ã¾ã‚Œã¦ã„ã¾ã™" -#: awkgram.y:2344 +#: awkgram.y:2343 msgid "@include is a gawk extension" msgstr "@include 㯠gawk æ‹¡å¼µã§ã™" -#: awkgram.y:2350 +#: awkgram.y:2349 msgid "empty filename after @include" msgstr "@include ã®å¾Œã«ç©ºã®ãƒ•ァイルåãŒã‚りã¾ã™" -#: awkgram.y:2495 +#: awkgram.y:2494 msgid "empty program text on command line" msgstr "コマンド行ã®ãƒ—ログラム表記ãŒç©ºã§ã™" -#: awkgram.y:2610 +#: awkgram.y:2609 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "ソースファイル `%s' を読ã¿è¾¼ã‚ã¾ã›ã‚“ (%s)" -#: awkgram.y:2621 +#: awkgram.y:2620 #, c-format msgid "source file `%s' is empty" msgstr "ソースファイル `%s' ã¯ç©ºã§ã™" -#: awkgram.y:2806 +#: awkgram.y:2797 msgid "source file does not end in newline" msgstr "ã‚½ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ãŒæ”¹è¡Œã§çµ‚ã£ã¦ã„ã¾ã›ã‚“" -#: awkgram.y:2883 +#: awkgram.y:2900 msgid "unterminated regexp ends with `\\' at end of file" msgstr "終端ã•れã¦ã„ãªã„æ­£è¦è¡¨ç¾ãŒãƒ•ァイル最後㮠`\\' ã§çµ‚ã£ã¦ã„ã¾ã™ã€‚" -#: awkgram.y:2907 +#: awkgram.y:2924 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "%s: %d: tawk ã®æ­£è¦è¡¨ç¾ä¿®é£¾å­ `/.../%c' 㯠gawk ã§ä½¿ç”¨ã§ãã¾ã›ã‚“" -#: awkgram.y:2911 +#: awkgram.y:2928 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "tawk ã®æ­£è¦è¡¨ç¾ä¿®é£¾å­ `/.../%c' 㯠gawk ã§ä½¿ç”¨ã§ãã¾ã›ã‚“" -#: awkgram.y:2918 +#: awkgram.y:2935 msgid "unterminated regexp" msgstr "æ­£è¦è¡¨ç¾ãŒçµ‚端ã•れã¦ã„ã¾ã›ã‚“" -#: awkgram.y:2922 +#: awkgram.y:2939 msgid "unterminated regexp at end of file" msgstr "ファイルã®ä¸­ã§æ­£è¦è¡¨ç¾ãŒçµ‚端ã•れã¦ã„ã¾ã›ã‚“" -#: awkgram.y:2981 +#: awkgram.y:2998 msgid "use of `\\ #...' line continuation is not portable" msgstr "`\\ #...' å½¢å¼ã®è¡Œç¶™ç¶šã¯ç§»æ¤æ€§ãŒã‚りã¾ã›ã‚“" -#: awkgram.y:2997 +#: awkgram.y:3014 msgid "backslash not last character on line" msgstr "ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ãŒè¡Œæœ€å¾Œã®æ–‡å­—ã«ãªã£ã¦ã„ã¾ã›ã‚“。" -#: awkgram.y:3058 +#: awkgram.y:3075 msgid "POSIX does not allow operator `**='" msgstr "POSIX ã§ã¯æ¼”ç®—å­ `**=' ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" -#: awkgram.y:3060 +#: awkgram.y:3077 msgid "old awk does not support operator `**='" msgstr "å¤ã„ awk ã¯æ¼”ç®—å­ `**=' をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“" -#: awkgram.y:3069 +#: awkgram.y:3086 msgid "POSIX does not allow operator `**'" msgstr "POSIX ã§ã¯æ¼”ç®—å­ `**' ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" -#: awkgram.y:3071 +#: awkgram.y:3088 msgid "old awk does not support operator `**'" msgstr "å¤ã„ awk ã¯æ¼”ç®—å­ `**' をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“" -#: awkgram.y:3106 +#: awkgram.y:3123 msgid "operator `^=' is not supported in old awk" msgstr "å¤ã„ awk ã¯æ¼”ç®—å­ `^=' をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“" -#: awkgram.y:3114 +#: awkgram.y:3131 msgid "operator `^' is not supported in old awk" msgstr "å¤ã„ awk ã¯æ¼”ç®—å­ `^' をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“" -#: awkgram.y:3207 awkgram.y:3223 +#: awkgram.y:3224 awkgram.y:3240 msgid "unterminated string" msgstr "文字列ãŒçµ‚端ã•れã¦ã„ã¾ã›ã‚“" -#: awkgram.y:3419 +#: awkgram.y:3436 #, c-format msgid "invalid char '%c' in expression" msgstr "å¼å†…ã«ç„¡åŠ¹ãªæ–‡å­— '%c' ãŒã‚りã¾ã™" -#: awkgram.y:3466 +#: awkgram.y:3483 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s' 㯠gawk æ‹¡å¼µã§ã™" -#: awkgram.y:3471 +#: awkgram.y:3488 #, c-format msgid "`%s' is a Bell Labs extension" msgstr "`%s' ã¯ãƒ™ãƒ«ç ”究所ã«ã‚ˆã‚‹æ‹¡å¼µã§ã™" -#: awkgram.y:3476 +#: awkgram.y:3493 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX ã§ã¯ `%s' ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" -#: awkgram.y:3484 +#: awkgram.y:3501 #, c-format msgid "`%s' is not supported in old awk" msgstr "å¤ã„ awk 㯠`%s' をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“" -#: awkgram.y:3551 +#: awkgram.y:3568 msgid "`goto' considered harmful!\n" msgstr "`goto' ã¯æœ‰å®³ã ã¨è¦‹ãªã•れã¦ã„ã¾ã™!\n" -#: awkgram.y:3604 +#: awkgram.y:3619 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d 㯠%s 用ã®å¼•æ•°ã®æ•°ã¨ã—ã¦ã¯ç„¡åйã§ã™" -#: awkgram.y:3639 awkgram.y:3642 -msgid "match: third argument is a gawk extension" -msgstr "match: 第三引数㯠gawk æ‹¡å¼µã§ã™" - -#: awkgram.y:3670 +#: awkgram.y:3654 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "%s: æ–‡å­—åˆ—ãƒªãƒ†ãƒ©ãƒ«ã‚’ç½®ãæ›ãˆæœ€å¾Œã®å¼•æ•°ã«ä½¿ç”¨ã™ã‚‹ã¨åŠ¹æžœãŒã‚りã¾ã›ã‚“" -#: awkgram.y:3675 +#: awkgram.y:3659 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s 第三仮引数ã¯å¯å¤‰ã‚ªãƒ–ジェクトã§ã¯ã‚りã¾ã›ã‚“" -#: awkgram.y:3761 awkgram.y:3764 +#: awkgram.y:3732 awkgram.y:3735 +msgid "match: third argument is a gawk extension" +msgstr "match: 第三引数㯠gawk æ‹¡å¼µã§ã™" + +#: awkgram.y:3789 awkgram.y:3792 msgid "close: second argument is a gawk extension" msgstr "close: 第二引数㯠gawk æ‹¡å¼µã§ã™" -#: awkgram.y:3776 +#: awkgram.y:3804 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "dcgettext(_\"...\")ã®ä½¿ç”¨æ³•ãŒé–“é•ã£ã¦ã„ã¾ã™: 先頭ã®ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢(_)を削除ã—" "ã¦ãã ã•ã„" -#: awkgram.y:3791 +#: awkgram.y:3819 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "dcngettext(_\"...\")ã®ä½¿ç”¨æ³•ãŒé–“é•ã£ã¦ã„ã¾ã™: 先頭ã®ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢(_)を削除ã—" "ã¦ãã ã•ã„" -#: awkgram.y:3883 +#: awkgram.y:3911 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "関数 `%s': 仮引数 #%d, `%s' ãŒä»®å¼•æ•° #%d ã¨é‡è¤‡ã—ã¦ã„ã¾ã™" -#: awkgram.y:3925 +#: awkgram.y:3953 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "関数 `%s': 仮引数 `%s' ãŒå¤§åŸŸå¤‰æ•°ã‚’覆ã„éš ã—ã¦ã„ã¾ã™" -#: awkgram.y:4083 +#: awkgram.y:4111 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "`%s' を書込ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“ã§ã—㟠(%s)" -#: awkgram.y:4084 +#: awkgram.y:4112 msgid "sending variable list to standard error" msgstr "変数リストを標準エラーã«é€ã£ã¦ã„ã¾ã™" -#: awkgram.y:4090 +#: awkgram.y:4118 #, c-format msgid "%s: close failed (%s)" msgstr "%s: é–‰ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)" -#: awkgram.y:4142 +#: awkgram.y:4170 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() を二回呼ã³å‡ºã—ã¦ã„ã¾ã™!" -#: awkgram.y:4148 +#: awkgram.y:4176 msgid "there were shadowed variables." msgstr "覆ã„éš ã•れãŸå¤‰æ•°ãŒã‚りã¾ã—ãŸ" -#: awkgram.y:4178 +#: awkgram.y:4206 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "関数 `%s': 関数åを仮引数åã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“" -#: awkgram.y:4182 +#: awkgram.y:4210 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "関数 `%s': 特別ãªå¤‰æ•° `%s' ã¯é–¢æ•°ã®ä»®å¼•æ•°ã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“" -#: awkgram.y:4198 +#: awkgram.y:4226 #, c-format msgid "function name `%s' previously defined" msgstr "関数å `%s' ã¯å‰ã«å®šç¾©ã•れã¦ã„ã¾ã™" -#: awkgram.y:4366 awkgram.y:4372 +#: awkgram.y:4394 awkgram.y:4400 #, c-format msgid "function `%s' called but never defined" msgstr "未定義ã®é–¢æ•° `%s' を呼ã³å‡ºã—ã¾ã—ãŸ" -#: awkgram.y:4375 +#: awkgram.y:4403 #, c-format msgid "function `%s' defined but never called directly" msgstr "関数 `%s' ã¯å®šç¾©ã•れã¦ã„ã¾ã™ãŒã€ä¸€åº¦ã‚‚直接呼ã³å‡ºã•れã¦ã„ã¾ã›ã‚“" -#: awkgram.y:4407 +#: awkgram.y:4435 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "仮引数 #%d ç”¨ã®æ­£è¦è¡¨ç¾å®šæ•°ã¯çœŸå½å€¤ã‚’出力ã—ã¾ã™" -#: awkgram.y:4516 +#: awkgram.y:4544 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -519,230 +519,230 @@ "関数å㨠`(' ã®é–“ã«ã‚¹ãƒšãƒ¼ã‚¹ã‚’入れã¦é–¢æ•° `%s' を呼ã³å‡ºã—ã¦ã„ã¾ã™ã€‚\n" "ã¾ãŸã¯ã€å¤‰æ•°ã‹é…列ã¨ã—ã¦ä½¿ã‚れã¦ã„ã¾ã™ã€‚" -#: awkgram.y:4763 eval.c:1964 +#: awkgram.y:4791 eval.c:2056 msgid "division by zero attempted" msgstr "ゼロã«ã‚ˆã‚‹é™¤ç®—ãŒè©¦ã¿ã‚‰ã‚Œã¾ã—ãŸ" -#: awkgram.y:4772 eval.c:1980 +#: awkgram.y:4800 eval.c:2072 #, c-format msgid "division by zero attempted in `%%'" msgstr "`%%' 内ã§ã‚¼ãƒ­ã«ã‚ˆã‚‹é™¤ç®—ãŒè©¦ã¿ã‚‰ã‚Œã¾ã—ãŸ" -#: builtin.c:117 +#: builtin.c:120 #, c-format msgid "%s to \"%s\" failed (%s)" msgstr "%s ã‹ã‚‰ \"%s\" ã¸å‡ºåŠ›ã§ãã¾ã›ã‚“ (%s)。" -#: builtin.c:118 +#: builtin.c:121 msgid "standard output" msgstr "標準出力" -#: builtin.c:132 +#: builtin.c:135 msgid "exp: received non-numeric argument" msgstr "exp: å¼•æ•°ãŒæ•°å€¤ã§ã¯ã‚りã¾ã›ã‚“" -#: builtin.c:138 +#: builtin.c:141 #, c-format msgid "exp: argument %g is out of range" msgstr "exp: 引数 %g ãŒç¯„囲外ã§ã™" -#: builtin.c:197 +#: builtin.c:200 #, c-format msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing" msgstr "" "fflush: flush ã§ãã¾ã›ã‚“: パイプ `%s' ã¯èª­ã¿è¾¼ã¿ç”¨ã«é–‹ã‹ã‚Œã¦ã„ã¾ã™ã€‚書ãè¾¼ã¿" "用ã§ã¯ã‚りã¾ã›ã‚“" -#: builtin.c:200 +#: builtin.c:203 #, c-format msgid "fflush: cannot flush: file `%s' opened for reading, not writing" msgstr "" "fflush: flush ã§ãã¾ã›ã‚“: ファイル `%s' ã¯èª­ã¿è¾¼ã¿ç”¨ã«é–‹ã‹ã‚Œã¦ã„ã¾ã™ã€‚書ãè¾¼" "ã¿ç”¨ã§ã¯ã‚りã¾ã›ã‚“" -#: builtin.c:212 +#: builtin.c:215 #, c-format msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "fflush: `%s' ãŒé–‹ã‹ã‚ŒãŸãƒ•ァイルã€ãƒ‘イプã€ãƒ—ロセス共有ã§ã¯ã‚りã¾ã›ã‚“" -#: builtin.c:330 +#: builtin.c:333 msgid "index: received non-string first argument" msgstr "index: 文字列ã§ã¯ç„¡ã„第一引数をå—ã‘å–りã¾ã—ãŸ" -#: builtin.c:332 +#: builtin.c:335 msgid "index: received non-string second argument" msgstr "index: 文字列ã§ã¯ç„¡ã„第二引数をå—ã‘å–りã¾ã—ãŸ" -#: builtin.c:454 +#: builtin.c:457 msgid "int: received non-numeric argument" msgstr "int: 数値ã§ã¯ç„¡ã„引数をå—ã‘å–りã¾ã—ãŸ" -#: builtin.c:490 +#: builtin.c:493 msgid "length: received array argument" msgstr "length: é…列引数をå—ã‘å–りã¾ã—ãŸ" -#: builtin.c:493 +#: builtin.c:496 msgid "`length(array)' is a gawk extension" msgstr "`length(array)' 㯠gawk æ‹¡å¼µã§ã™" -#: builtin.c:501 +#: builtin.c:504 msgid "length: received non-string argument" msgstr "length: 文字列ã§ã¯ç„¡ã„引数をå—ã‘å–りã¾ã—ãŸ" -#: builtin.c:532 +#: builtin.c:535 msgid "log: received non-numeric argument" msgstr "log: 数値ã§ã¯ç„¡ã„引数をå—ã‘å–りã¾ã—ãŸ" -#: builtin.c:535 +#: builtin.c:538 #, c-format msgid "log: received negative argument %g" msgstr "log: è² ã®å¼•æ•° %g ã‚’å—ã‘å–りã¾ã—ãŸ" -#: builtin.c:691 builtin.c:696 +#: builtin.c:694 builtin.c:699 msgid "fatal: must use `count$' on all formats or none" msgstr "" "致命的: `count$’ ã¯å…¨ã¦ã®æ›¸å¼ä½¿ç”¨ã™ã‚‹ã€ã¾ãŸã¯å…¨ã¦ã«ä½¿ç”¨ã—ãªã„ã®ã„ãšã‚Œã‹ã§ãªã‘" "れã°ã„ã‘ã¾ã›ã‚“" -#: builtin.c:758 +#: builtin.c:762 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "`%%' 指定用ã®ãƒ•ィールド幅ã¯ç„¡è¦–ã•れã¾ã™" -#: builtin.c:760 +#: builtin.c:764 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "`%%' 指定用ã®ãƒ•ィールド幅ã¯ç„¡è¦–ã•れã¾ã™" -#: builtin.c:762 +#: builtin.c:766 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "`%%' 指定用ã®ãƒ•ィールド幅ãŠã‚ˆã³ç²¾åº¦ã¯ç„¡è¦–ã•れã¾ã™" -#: builtin.c:813 +#: builtin.c:817 msgid "fatal: `$' is not permitted in awk formats" msgstr "致命的: `$' 㯠awk å½¢å¼å†…ã§ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" -#: builtin.c:822 +#: builtin.c:826 msgid "fatal: arg count with `$' must be > 0" msgstr "致命的: `$' ã§æŒ‡å®šã™ã‚‹å¼•æ•°ã®ç•ªå·ã¯æ­£ã§ãªã‘れã°ã„ã‘ã¾ã›ã‚“" -#: builtin.c:826 +#: builtin.c:830 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "致命的: 引数ã®ç•ªå· %ld ã¯å¼•æ•°ã¨ã—ã¦ä¸Žãˆã‚‰ã‚ŒãŸæ•°ã‚ˆã‚Šå¤§ãã„ã§ã™" -#: builtin.c:830 +#: builtin.c:834 msgid "fatal: `$' not permitted after period in format" msgstr "致命的: `$' ã¯æ›¸å¼æŒ‡å®šå†…ã®ãƒ”リオド `.' ã®å¾Œã«ä½¿ç”¨ã§ãã¾ã›ã‚“" -#: builtin.c:846 +#: builtin.c:850 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "致命的: フィールド幅ã€ã¾ãŸã¯ç²¾åº¦ã®æŒ‡å®šå­ã« `$' ãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã¾ã›ã‚“" -#: builtin.c:917 +#: builtin.c:921 msgid "`l' is meaningless in awk formats; ignored" msgstr "awk ã®æ›¸å¼æŒ‡å®šã§ã¯ `l' ã¯ç„¡æ„味ã§ã™ã€‚無視ã—ã¾ã™" -#: builtin.c:921 +#: builtin.c:925 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "致命的: POSIX awk 書å¼å†…ã§ã¯ `l' ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" -#: builtin.c:934 +#: builtin.c:938 msgid "`L' is meaningless in awk formats; ignored" msgstr "awk ã®æ›¸å¼æŒ‡å®šã§ã¯ `L' ã¯ç„¡æ„味ã§ã™ã€‚無視ã—ã¾ã™ã€‚" -#: builtin.c:938 +#: builtin.c:942 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "致命的: POSIX awk 書å¼å†…ã§ã¯ `L' ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" -#: builtin.c:951 +#: builtin.c:955 msgid "`h' is meaningless in awk formats; ignored" msgstr "awk ã®æ›¸å¼æŒ‡å®šã§ã¯ `h' ã¯ç„¡æ„味ã§ã™ã€‚無視ã—ã¾ã™ã€‚" -#: builtin.c:955 +#: builtin.c:959 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "致命的: POSIX awk 書å¼å†…ã§ã¯ `h' ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" -#: builtin.c:1268 +#: builtin.c:1272 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: 値 %g ã¯æ›¸å¼ `%%%c' ã®ç¯„囲外ã§ã™" -#: builtin.c:1328 +#: builtin.c:1332 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "䏿˜Žãªæ›¸å¼æŒ‡å®šæ–‡å­— `%c' を無視ã—ã¦ã„ã¾ã™: 変æ›ã•れる引数ã¯ã‚りã¾ã›ã‚“" -#: builtin.c:1333 +#: builtin.c:1337 msgid "fatal: not enough arguments to satisfy format string" msgstr "致命的: æ›¸å¼æ–‡å­—列を満ãŸã™ååˆ†ãªæ•°ã®å¼•æ•°ãŒã‚りã¾ã›ã‚“" -#: builtin.c:1335 +#: builtin.c:1339 msgid "^ ran out for this one" msgstr "^ ã“ã“ã‹ã‚‰è¶³ã‚Šã¾ã›ã‚“" -#: builtin.c:1342 +#: builtin.c:1346 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: æ›¸å¼æŒ‡å®šå­ã«åˆ¶å¾¡æ–‡å­—ãŒã‚りã¾ã›ã‚“" -#: builtin.c:1345 +#: builtin.c:1349 msgid "too many arguments supplied for format string" msgstr "æ›¸å¼æ–‡å­—列ã«ä¸Žãˆã‚‰ã‚Œã¦ã„る引数ãŒå¤šã™ãŽã¾ã™" -#: builtin.c:1419 builtin.c:1430 +#: builtin.c:1423 builtin.c:1434 msgid "printf: no arguments" msgstr "printf: 引数ãŒã‚りã¾ã›ã‚“" -#: builtin.c:1471 +#: builtin.c:1475 msgid "sqrt: received non-numeric argument" msgstr "sqrt: 数値ã§ã¯ç„¡ã„引数をå—ã‘å–りã¾ã—ãŸ" -#: builtin.c:1475 +#: builtin.c:1479 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•れã¾ã—ãŸ" -#: builtin.c:1499 +#: builtin.c:1503 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: é•·ã• %g ㌠1 以上ã§ã¯ã‚りã¾ã›ã‚“" -#: builtin.c:1501 +#: builtin.c:1505 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: é•·ã• %g ㌠0 以上ã§ã¯ã‚りã¾ã›ã‚“" -#: builtin.c:1508 +#: builtin.c:1512 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: 文字数 %g ã®å°æ•°ç‚¹ä»¥ä¸‹ã¯åˆ‡ã‚Šæ¨ã¦ã¾ã™ã€‚" -#: builtin.c:1513 +#: builtin.c:1517 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "substr: 文字数 %g ã¯æœ€å¤§å€¤ã‚’è¶…ãˆã¦ã„ã¾ã™ã€‚%g を使ã„ã¾ã™ã€‚" -#: builtin.c:1525 +#: builtin.c:1529 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: 開始インデックス %g ãŒç„¡åйã§ã™ã€‚1を使用ã—ã¾ã™" -#: builtin.c:1530 +#: builtin.c:1534 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: 開始インデックス %g ãŒéžæ•´æ•°ã®ãŸã‚ã€å€¤ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™" -#: builtin.c:1555 +#: builtin.c:1559 msgid "substr: source string is zero length" msgstr "substr: 文字列ã®é•·ã•ãŒã‚¼ãƒ­ã§ã™ã€‚" -#: builtin.c:1571 +#: builtin.c:1575 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: 開始インデックス %g ãŒæ–‡å­—列終端ã®å¾Œã«ã‚りã¾ã™" -#: builtin.c:1579 +#: builtin.c:1583 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -750,219 +750,223 @@ "substr: 開始インデックス %2$g ã‹ã‚‰ã®é•·ã• %1$g ã¯ç¬¬ä¸€å¼•æ•°ã®é•·ã•ã‚’è¶…ãˆã¦ã„ã¾ã™ " "(%3$lu)" -#: builtin.c:1652 +#: builtin.c:1657 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: PROCINFO[\"strftime\"] ã®æ›¸å¼ã®å€¤ã¯æ•°å€¤åž‹ã§ã™" -#: builtin.c:1675 +#: builtin.c:1680 msgid "strftime: received non-numeric second argument" msgstr "strftime: éžæ•°å€¤ã®ç¬¬äºŒå¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: builtin.c:1682 +#: builtin.c:1683 +msgid "strftime: second argument less than 0 or too big for time_t" +msgstr "" + +#: builtin.c:1690 msgid "strftime: received non-string first argument" msgstr "strftime: éžæ–‡å­—列ã®ç¬¬ä¸€å¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: builtin.c:1688 +#: builtin.c:1696 msgid "strftime: received empty format string" msgstr "strftime: ç©ºã®æ›¸å¼æ–‡å­—列をå—ã‘å–りã¾ã—ãŸ" -#: builtin.c:1754 +#: builtin.c:1762 msgid "mktime: received non-string argument" msgstr "mktime: éžæ–‡å­—列引数をå—ã‘å–りã¾ã—ãŸ" -#: builtin.c:1771 +#: builtin.c:1779 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: 一ã¤ä»¥ä¸Šã®å€¤ãŒãƒ‡ãƒ•ォルトã®ç¯„囲を超ãˆã¦ã„ã¾ã™" -#: builtin.c:1806 +#: builtin.c:1814 msgid "'system' function not allowed in sandbox mode" msgstr "サンドボックスモードã§ã¯ 'system' 関数ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" -#: builtin.c:1811 +#: builtin.c:1819 msgid "system: received non-string argument" msgstr "system: 文字列ã§ã¯ç„¡ã„引数をå—ã‘å–りã¾ã—ãŸ" -#: builtin.c:1866 eval.c:1165 eval.c:1698 eval.c:1711 +#: builtin.c:1874 eval.c:1159 eval.c:1790 eval.c:1803 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "åˆæœŸåŒ–ã•れã¦ã„ãªã„変数 `%s' ã¸ã®å‚ç…§ã§ã™" -#: builtin.c:1933 +#: builtin.c:1941 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "åˆæœŸåŒ–ã•れã¦ã„ãªã„フィールド `$%d' ã¸ã®å‚ç…§ã§ã™" -#: builtin.c:2020 +#: builtin.c:2028 msgid "tolower: received non-string argument" msgstr "tolower: éžæ–‡å­—列引数をå—ã‘å–りã¾ã—ãŸ" -#: builtin.c:2054 +#: builtin.c:2062 msgid "toupper: received non-string argument" msgstr "toupper: éžæ–‡å­—列引数をå—ã‘å–りã¾ã—ãŸ" -#: builtin.c:2090 +#: builtin.c:2098 msgid "atan2: received non-numeric first argument" msgstr "atan2: éžæ•°å€¤ã®ç¬¬ä¸€å¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: builtin.c:2092 +#: builtin.c:2100 msgid "atan2: received non-numeric second argument" msgstr "atan2: éžæ•°å€¤ã®ç¬¬äºŒå¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: builtin.c:2111 +#: builtin.c:2119 msgid "sin: received non-numeric argument" msgstr "sin: éžæ•°å€¤ã®å¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: builtin.c:2127 +#: builtin.c:2135 msgid "cos: received non-numeric argument" msgstr "cos: éžæ•°å€¤ã®å¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: builtin.c:2180 +#: builtin.c:2188 msgid "srand: received non-numeric argument" msgstr "srand: éžæ•°å€¤ã®å¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: builtin.c:2211 +#: builtin.c:2219 msgid "match: third argument is not an array" msgstr "match: 第三引数ãŒé…列ã§ã¯ã‚りã¾ã›ã‚“" -#: builtin.c:2718 +#: builtin.c:2483 msgid "gensub: third argument of 0 treated as 1" msgstr "gensub: 第三引数㌠0 ã§ã™ã€‚1 を代ã‚りã«ä½¿ç”¨ã—ã¾ã™" -#: builtin.c:2757 +#: builtin.c:2776 msgid "lshift: received non-numeric first argument" msgstr "lshift: éžæ•°å€¤ã®ç¬¬ä¸€å¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: builtin.c:2759 +#: builtin.c:2778 msgid "lshift: received non-numeric second argument" msgstr "lshift: éžæ•°å€¤ã®ç¬¬äºŒå¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: builtin.c:2765 +#: builtin.c:2784 #, c-format msgid "lshift(%lf, %lf): negative values will give strange results" msgstr "lshift(%lf, %lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: builtin.c:2767 +#: builtin.c:2786 #, c-format msgid "lshift(%lf, %lf): fractional values will be truncated" msgstr "lshift(%lf, %lf): å°æ•°ç‚¹ä»¥ä¸‹ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™" -#: builtin.c:2769 +#: builtin.c:2788 #, c-format msgid "lshift(%lf, %lf): too large shift value will give strange results" msgstr "lshift(%lf, %lf): シフト値ãŒå¤§ãéŽãŽã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: builtin.c:2794 +#: builtin.c:2813 msgid "rshift: received non-numeric first argument" msgstr "rshift: éžæ•°å€¤ã®ç¬¬ä¸€å¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: builtin.c:2796 +#: builtin.c:2815 msgid "rshift: received non-numeric second argument" msgstr "rshift: éžæ•°å€¤ã®ç¬¬äºŒå¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: builtin.c:2802 +#: builtin.c:2821 #, c-format msgid "rshift(%lf, %lf): negative values will give strange results" msgstr "rshift(%lf, %lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: builtin.c:2804 +#: builtin.c:2823 #, c-format msgid "rshift(%lf, %lf): fractional values will be truncated" msgstr "rshift(%lf, %lf): å°æ•°ç‚¹ä»¥ä¸‹ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™" -#: builtin.c:2806 +#: builtin.c:2825 #, c-format msgid "rshift(%lf, %lf): too large shift value will give strange results" msgstr "rshift(%lf, %lf): シフト値ãŒå¤§ãéŽãŽã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: builtin.c:2831 +#: builtin.c:2850 msgid "and: received non-numeric first argument" msgstr "and: éžæ•°å€¤ã®ç¬¬ä¸€å¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: builtin.c:2833 +#: builtin.c:2852 msgid "and: received non-numeric second argument" msgstr "and: éžæ•°å€¤ã®ç¬¬äºŒå¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: builtin.c:2839 +#: builtin.c:2858 #, c-format msgid "and(%lf, %lf): negative values will give strange results" msgstr "and(%lf, %lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: builtin.c:2841 +#: builtin.c:2860 #, c-format msgid "and(%lf, %lf): fractional values will be truncated" msgstr "and(%lf, %lf): å°æ•°ç‚¹ä»¥ä¸‹ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™" -#: builtin.c:2866 +#: builtin.c:2885 msgid "or: received non-numeric first argument" msgstr "or: éžæ•°å€¤ã®ç¬¬ä¸€å¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: builtin.c:2868 +#: builtin.c:2887 msgid "or: received non-numeric second argument" msgstr "or: éžæ•°å€¤ã®ç¬¬äºŒå¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: builtin.c:2874 +#: builtin.c:2893 #, c-format msgid "or(%lf, %lf): negative values will give strange results" msgstr "or(%lf, %lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: builtin.c:2876 +#: builtin.c:2895 #, c-format msgid "or(%lf, %lf): fractional values will be truncated" msgstr "or(%lf, %lf): å°æ•°ç‚¹ä»¥ä¸‹ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™" -#: builtin.c:2904 +#: builtin.c:2923 msgid "xor: received non-numeric first argument" msgstr "xor: éžæ•°å€¤ã®ç¬¬ä¸€å¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: builtin.c:2906 +#: builtin.c:2925 msgid "xor: received non-numeric second argument" msgstr "xor: éžæ•°å€¤ã®ç¬¬äºŒå¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: builtin.c:2912 +#: builtin.c:2931 #, c-format msgid "xor(%lf, %lf): negative values will give strange results" msgstr "xor(%lf, %lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: builtin.c:2914 +#: builtin.c:2933 #, c-format msgid "xor(%lf, %lf): fractional values will be truncated" msgstr "xor(%lf, %lf): å°æ•°ç‚¹ä»¥ä¸‹ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™" -#: builtin.c:2938 builtin.c:2944 +#: builtin.c:2957 builtin.c:2963 msgid "compl: received non-numeric argument" msgstr "compl: éžæ•°å€¤ã®å¼•æ•°ã‚’å—ã‘å–りã¾ã—ãŸ" -#: builtin.c:2946 +#: builtin.c:2965 #, c-format msgid "compl(%lf): negative value will give strange results" msgstr "compl(%lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: builtin.c:2948 +#: builtin.c:2967 #, c-format msgid "compl(%lf): fractional value will be truncated" msgstr "compl(%lf): å°æ•°ç‚¹ä»¥ä¸‹ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™" -#: builtin.c:3117 +#: builtin.c:3136 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s' ã¯ç„¡åйãªãƒ­ã‚±ãƒ¼ãƒ«åŒºåˆ†ã§ã™" -#: eval.c:411 +#: eval.c:412 #, c-format msgid "unknown nodetype %d" msgstr "䏿˜ŽãªãƒŽãƒ¼ãƒ‰åž‹ %d ã§ã™" -#: eval.c:422 eval.c:436 +#: eval.c:423 eval.c:437 #, c-format msgid "unknown opcode %d" msgstr "䏿˜Žãªã‚ªãƒšã‚³ãƒ¼ãƒ‰ %d ã§ã™" -#: eval.c:433 +#: eval.c:434 #, c-format msgid "opcode %s not an operator or keyword" msgstr "オペコード %s ã¯æ¼”ç®—å­ã¾ãŸã¯äºˆç´„語ã§ã¯ã‚りã¾ã›ã‚“" -#: eval.c:487 +#: eval.c:488 msgid "buffer overflow in genflags2str" msgstr "genflags2str 内ã§ãƒãƒƒãƒ•ァオーãƒãƒ¼ãƒ•ローãŒç™ºç”Ÿã—ã¾ã—ãŸ" @@ -999,120 +1003,126 @@ msgid "turning off `--lint' due to assignment to `LINT'" msgstr "`LINT' ã¸ã®ä»£å…¥ã«å¾“ã„ `--lint' を無効ã«ã—ã¾ã™" -#: eval.c:1127 eval.c:1685 +#: eval.c:1127 eval.c:1777 #, c-format msgid "can't use function name `%s' as variable or array" msgstr "関数å `%s' ã¯å¤‰æ•°ã¾ãŸã¯é…列ã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“" -#: eval.c:1155 -msgid "assignment is not allowed to result of builtin function" -msgstr "çµ„è¾¼é–¢æ•°ã®æˆ»ã‚Šå€¤ã¸ã®ä»£å…¥ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" - -#: eval.c:1164 eval.c:1697 eval.c:1710 +#: eval.c:1158 eval.c:1789 eval.c:1802 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "åˆæœŸåŒ–ã•れã¦ã„ãªã„引数 `%s' ã¸ã®å‚ç…§ã§ã™" -#: eval.c:1183 +#: eval.c:1177 msgid "attempt to field reference from non-numeric value" msgstr "éžæ•°å€¤ã‚’使用ã—ãŸãƒ•イールドå‚ç…§ã®è©¦ã¿ã§ã™" -#: eval.c:1185 +#: eval.c:1179 msgid "attempt to field reference from null string" msgstr "NULL 文字列を使用ã—ã¦ãƒ•ィールドã®å‚照を試ã¿ã¦ã„ã¾ã™" -#: eval.c:1191 +#: eval.c:1185 #, c-format msgid "attempt to access field %ld" msgstr "フィールド %ld ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã®è©¦ã¿ã§ã™" -#: eval.c:1200 +#: eval.c:1194 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "åˆæœŸåŒ–ã•れã¦ã„ãªã„フィールド `$%ld' ã¸ã®å‚ç…§ã§ã™" -#: eval.c:1262 +#: eval.c:1256 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "宣言ã•れã¦ã„る数より多ã„引数を使ã£ã¦é–¢æ•° `%s' を呼ã³å‡ºã—ã¾ã—ãŸ" -#: eval.c:1426 +#: eval.c:1437 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: 予期ã—ãªã„åž‹ `%s' ã§ã™" -#: eval.c:1510 +#: eval.c:1532 msgid "division by zero attempted in `/='" msgstr "`/=' 内ã§ã‚¼ãƒ­ã«ã‚ˆã‚‹é™¤ç®—ãŒè¡Œã‚れã¾ã—ãŸ" -#: eval.c:1517 +#: eval.c:1539 #, c-format msgid "division by zero attempted in `%%='" msgstr "`%%=' 内ã§ã‚¼ãƒ­ã«ã‚ˆã‚‹é™¤ç®—ãŒè¡Œã‚れã¾ã—ãŸ" -#: eval.c:1784 eval.c:2030 +#: eval.c:1876 eval.c:2122 #, c-format msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" msgstr "スカラーコンテキスト内ã§é…列 `%s[\"%.*s\"]' ã®ä½¿ç”¨ã®è©¦ã¿ã§ã™" -#: eval.c:1815 +#: eval.c:1907 msgid "assignment used in conditional context" msgstr "æ¡ä»¶ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆå†…ã§ä»£å…¥ãŒä½¿ç”¨ã•れã¾ã—ãŸ" -#: eval.c:1819 +#: eval.c:1911 msgid "statement has no effect" msgstr "æ–‡ã«åŠ¹æžœãŒã‚りã¾ã›ã‚“" -#: eval.c:2233 +#: 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:2343 +#: eval.c:2458 #, c-format msgid "function called indirectly through `%s' does not exist" msgstr "`%s' を通ã—ã¦é–“接的ã«å‘¼ã³å‡ºã•れãŸé–¢æ•°ãŒå­˜åœ¨ã—ã¾ã›ã‚“" -#: eval.c:2355 +#: eval.c:2470 #, c-format msgid "function `%s' not defined" msgstr "関数 `%s' ã¯å®šç¾©ã•れã¦ã„ã¾ã›ã‚“" -#: eval.c:2416 +#: eval.c:2511 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "`%s' ルールã®å†…å´ã§ã¯ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã•れã¦ã„ãªã„ `getline' ã¯ç„¡åйã§ã™" -#: eval.c:2477 +#: 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:2532 +#: eval.c:2661 +#, fuzzy +msgid "`exit' cannot be called in the current context" +msgstr "`next' 㯠`%s' ã‹ã‚‰å‘¼ã³å‡ºã™ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“" + +#: eval.c:2700 #, c-format msgid "`next' cannot be called from a `%s' rule" msgstr "`next' 㯠`%s' ã‹ã‚‰å‘¼ã³å‡ºã™ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“" -#: eval.c:2599 +#: eval.c:2766 #, c-format msgid "Sorry, don't know how to interpret `%s'" msgstr "申ã—訳ã‚りã¾ã›ã‚“㌠`%s' ã‚’ã©ã®ã‚ˆã†ã«è§£é‡ˆã™ã‚‹ã‹åˆ†ã‹ã‚Šã¾ã›ã‚“" -#: ext.c:64 +#: ext.c:54 msgid "extensions are not allowed in sandbox mode" msgstr "サンドボックスモード内ã§ã¯æ‹¡å¼µã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" -#: ext.c:70 ext.c:75 +#: ext.c:60 ext.c:65 msgid "`extension' is a gawk extension" msgstr "`extension' 㯠gawk æ‹¡å¼µã§ã™" -#: ext.c:85 +#: ext.c:75 #, c-format msgid "fatal: extension: cannot open `%s' (%s)\n" msgstr "致命的: extension: `%s' ã‚’é–‹ãã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ (%s)\n" -#: ext.c:94 +#: ext.c:84 #, c-format msgid "" "fatal: extension: library `%s': does not define " @@ -1121,68 +1131,68 @@ "致命的: extension: ライブラリ `%s': `plugin_is_GPL_compatible' ãŒå®šç¾©ã•れã¦ã„" "ã¾ã›ã‚“ (%s)\n" -#: ext.c:103 +#: ext.c:93 #, c-format msgid "fatal: extension: library `%s': cannot call function `%s' (%s)\n" msgstr "" "致命的: extension: ライブラリ `%s': 関数 `%s' を呼ã³å‡ºã™ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ " "(%s)\n" -#: ext.c:137 +#: ext.c:127 msgid "extension: missing function name" msgstr "extension: 関数åãŒã‚りã¾ã›ã‚“" -#: ext.c:142 +#: ext.c:132 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: 関数å `%2$s' ã®ä¸­ã§ä¸æ­£ãªæ–‡å­— `%1$c' ãŒä½¿ç”¨ã•れã¦ã„ã¾ã™" -#: ext.c:151 +#: ext.c:141 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: 関数 `%s' ã‚’å†å®šç¾©ã§ãã¾ã›ã‚“" -#: ext.c:155 +#: ext.c:145 #, c-format msgid "extension: function `%s' already defined" msgstr "extension: 関数 `%s' ã¯æ—¢ã«å®šç¾©ã•れã¦ã„ã¾ã™" -#: ext.c:160 +#: ext.c:150 #, c-format msgid "extension: function name `%s' previously defined" msgstr "extension: 関数å `%s' ã¯å‰ã«å®šç¾©ã•れã¦ã„ã¾ã™" -#: ext.c:162 +#: ext.c:152 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" msgstr "extension: gawk ã«çµ„ã¿è¾¼ã¾ã‚Œã¦ã„ã‚‹ `%s' ã¯é–¢æ•°åã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“" -#: ext.c:166 +#: ext.c:156 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: 関数 `%s' ã®å¼•æ•°ã®æ•°ãŒè² ã§ã™" -#: ext.c:269 +#: ext.c:259 #, c-format msgid "function `%s' defined to take no more than %d argument(s)" msgstr "関数 `%s' ã«ä½¿ãˆã‚‹å¼•æ•°ã®æ•°ã¯ `%d' 以下ã¨å®šç¾©ã•れã¦ã„ã¾ã™" -#: ext.c:272 +#: ext.c:262 #, c-format msgid "function `%s': missing argument #%d" msgstr "関数 `%s': 引数 #%d ãŒã‚りã¾ã›ã‚“" -#: ext.c:289 +#: ext.c:279 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "関数 `%s': 引数 #%d: スカラーをé…列ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™" -#: ext.c:293 +#: ext.c:283 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "関数 `%s': 引数 #%d: é…列をスカラーã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™" -#: ext.c:306 +#: ext.c:296 msgid "Operation Not Supported" msgstr "ã“ã®æ“作ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“" @@ -1190,164 +1200,159 @@ msgid "NF set to negative value" msgstr "NF ãŒè² ã®å€¤ã«è¨­å®šã•れã¦ã„ã¾ã™" -#: field.c:950 field.c:957 field.c:961 +#: field.c:951 field.c:958 field.c:962 msgid "split: fourth argument is a gawk extension" msgstr "split: 第四引数㯠gawk æ‹¡å¼µã§ã™" -#: field.c:954 +#: field.c:955 msgid "split: fourth argument is not an array" msgstr "split: 第四引数ãŒé…列ã§ã¯ã‚りã¾ã›ã‚“" -#: field.c:968 +#: field.c:969 msgid "split: second argument is not an array" msgstr "split: 第二引数ãŒé…列ã§ã¯ã‚りã¾ã›ã‚“" -#: field.c:972 +#: field.c:973 msgid "split: cannot use the same array for second and fourth args" msgstr "split: 第二引数ã¨ç¬¬å››å¼•æ•°ã«åŒã˜é…列を使用ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“" -#: field.c:977 +#: field.c:978 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "split: 第四引数ã«ç¬¬äºŒå¼•æ•°ã®éƒ¨åˆ†é…列を使用ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“" -#: field.c:980 +#: field.c:981 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "split: 第二引数ã«ç¬¬å››å¼•æ•°ã®éƒ¨åˆ†é…列を使用ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“" -#: field.c:1009 +#: field.c:1010 msgid "split: null string for third arg is a gawk extension" msgstr "split: 第三引数㫠NULL 文字列を使用ã™ã‚‹ã“ã¨ã¯ gawk æ‹¡å¼µã§ã™" -#: field.c:1049 +#: field.c:1050 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: 第四引数ãŒé…列ã§ã¯ã‚りã¾ã›ã‚“" -#: field.c:1054 +#: field.c:1055 msgid "patsplit: second argument is not an array" msgstr "patsplit: 第二引数ãŒé…列ã§ã¯ã‚りã¾ã›ã‚“" -#: field.c:1060 +#: field.c:1061 msgid "patsplit: third argument must be non-null" msgstr "patsplit: 第三引数ã¯éž NULL ã§ãªã‘れã°ã„ã‘ã¾ã›ã‚“" -#: field.c:1064 +#: field.c:1065 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "patsplit: 第二引数ã¨ç¬¬å››å¼•æ•°ã«åŒã˜é…列を使用ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“" -#: field.c:1069 +#: field.c:1070 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "patsplit: 第四引数ã«ç¬¬äºŒå¼•æ•°ã®éƒ¨åˆ†é…列を使用ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“" -#: field.c:1072 +#: field.c:1073 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "patsplit: 第二引数ã«ç¬¬å››å¼•æ•°ã®éƒ¨åˆ†é…列を使用ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“" -#: field.c:1109 +#: field.c:1110 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "`FIELDWIDTHS' 㯠gawk æ‹¡å¼µã§ã™" -#: field.c:1172 +#: field.c:1173 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "`%s' 付近㮠FIELDWIDTHS 値ãŒç„¡åйã§ã™" -#: field.c:1245 +#: field.c:1246 msgid "null string for `FS' is a gawk extension" msgstr "`FS' ã« NULL 文字列を使用ã™ã‚‹ã®ã¯ gawk æ‹¡å¼µã§ã™" -#: field.c:1249 +#: field.c:1250 msgid "old awk does not support regexps as value of `FS'" msgstr "å¤ã„ awk 㯠`FS' ã®å€¤ã¨ã—ã¦æ­£è¦è¡¨ç¾ã‚’サãƒãƒ¼ãƒˆã—ã¾ã›ã‚“" -#: field.c:1368 +#: field.c:1369 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:282 +#: io.c:280 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "コマンドライン引数 `%s' ã¯ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ã™: スキップã•れã¾ã—ãŸ" -#: io.c:285 io.c:384 +#: io.c:283 io.c:385 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "ファイル `%s' を読ã¿è¾¼ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“ (%s)" -#: io.c:431 -#, c-format -msgid "error reading input file `%s': %s" -msgstr "入力ファイル `%s' を読ã¿è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ: %s" - -#: io.c:500 +#: io.c:501 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "fd %d (`%s') ã‚’é–‰ã˜ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ (%s)" -#: io.c:577 +#: io.c:578 msgid "redirection not allowed in sandbox mode" msgstr "サンドボックスモード内ã§ã¯ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" -#: io.c:611 +#: io.c:612 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "`%s' リダイレクトã®å‘½ä»¤å¼ã«æ•°å€¤ã—ã‹è¨˜è¿°ã•れã¦ã„ã¾ã›ã‚“。" -#: io.c:617 +#: io.c:618 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "`%s' リダイレクトã®å‘½ä»¤å¼ãŒç©ºåˆ—ã§ã™ã€‚" @@ -1455,7 +1460,7 @@ msgid "no explicit close of file `%s' provided" msgstr "ファイル `%s' を明示ã—ã¦é–‰ã˜ã¦ã„ã¾ã›ã‚“。" -#: io.c:1129 io.c:1184 main.c:795 main.c:832 +#: io.c:1129 io.c:1184 main.c:794 main.c:831 #, c-format msgid "error writing standard output (%s)" msgstr "標準出力ã¸ã®æ›¸è¾¼ã¿ã‚¨ãƒ©ãƒ¼ (%s)" @@ -1518,87 +1523,87 @@ msgid "could not open `%s', mode `%s'" msgstr "`%s' をモード `%s' ã§é–‹ã‘ã¾ã›ã‚“" -#: io.c:1744 +#: io.c:1747 #, c-format msgid "close of master pty failed (%s)" msgstr "マスター pty ã‚’é–‰ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)" -#: io.c:1746 io.c:1914 io.c:2071 +#: io.c:1749 io.c:1917 io.c:2074 #, c-format msgid "close of stdout in child failed (%s)" msgstr "å­ãƒ—ãƒ­ã‚»ã‚¹ãŒæ¨™æº–出力を閉ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)" -#: io.c:1749 +#: io.c:1752 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "å­ãƒ—ロセスãŒã‚¹ãƒ¬ãƒ¼ãƒ– pty を標準出力ã«ç§»å‹•ã§ãã¾ã›ã‚“ (dup: %s)。" -#: io.c:1751 io.c:1919 +#: io.c:1754 io.c:1922 #, c-format msgid "close of stdin in child failed (%s)" msgstr "å­ãƒ—ãƒ­ã‚»ã‚¹ãŒæ¨™æº–入力を閉ã˜ã‚‰ã‚Œã¾ã›ã‚“ (%s)。" -#: io.c:1754 +#: io.c:1757 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "å­ãƒ—ロセスãŒã‚¹ãƒ¬ãƒ¼ãƒ– pty を標準入力ã«ç§»å‹•ã§ãã¾ã›ã‚“ (dup: %s)。" -#: io.c:1756 io.c:1777 +#: io.c:1759 io.c:1780 #, c-format msgid "close of slave pty failed (%s)" msgstr "スレーブ pty ã‚’é–‰ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)" -#: io.c:1855 io.c:1917 io.c:2049 io.c:2074 +#: io.c:1858 io.c:1920 io.c:2052 io.c:2077 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "å­ãƒ—ロセスãŒãƒ‘イプを標準出力ã«ç§»å‹•ã§ãã¾ã›ã‚“ (dup: %s)。" -#: io.c:1862 io.c:1922 +#: io.c:1865 io.c:1925 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "å­ãƒ—ロセスãŒãƒ‘イプを標準入力ã«ç§»å‹•ã§ãã¾ã›ã‚“ (dup: %s)。" -#: io.c:1882 io.c:2064 +#: io.c:1885 io.c:2067 msgid "restoring stdout in parent process failed\n" msgstr "è¦ªãƒ—ãƒ­ã‚»ã‚¹ãŒæ¨™æº–出力を復旧ã§ãã¾ã›ã‚“。\n" -#: io.c:1890 +#: io.c:1893 msgid "restoring stdin in parent process failed\n" msgstr "è¦ªãƒ—ãƒ­ã‚»ã‚¹ãŒæ¨™æº–入力を復旧ã§ãã¾ã›ã‚“。\n" -#: io.c:1925 io.c:2076 io.c:2090 +#: io.c:1928 io.c:2079 io.c:2093 #, c-format msgid "close of pipe failed (%s)" msgstr "パイプを閉ã˜ã‚‰ã‚Œã¾ã›ã‚“ (%s)。" -#: io.c:1970 +#: io.c:1973 msgid "`|&' not supported" msgstr "`|&' ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。" -#: io.c:2036 +#: io.c:2039 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "パイプ `%s' ãŒé–‹ã‘ã¾ã›ã‚“ (%s)。" -#: io.c:2084 +#: io.c:2087 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "`%s' 用ã®å­ãƒ—ロセスを実行ã§ãã¾ã›ã‚“ (fork: %s)。" -#: io.c:2517 +#: io.c:2520 #, c-format msgid "data file `%s' is empty" msgstr "データファイル `%s' ã¯ç©ºã§ã™ã€‚" -#: io.c:2558 io.c:2566 +#: io.c:2561 io.c:2569 msgid "could not allocate more input memory" msgstr "入力用メモリーをã“れ以上確ä¿ã§ãã¾ã›ã‚“。" -#: io.c:3119 +#: io.c:3127 msgid "multicharacter value of `RS' is a gawk extension" msgstr "è¤‡æ•°ã®æ–‡å­—ã‚’ `RS' ã«ä½¿ç”¨ã™ã‚‹ã®ã¯ gawk ç‰¹æœ‰ã®æ‹¡å¼µã§ã™ã€‚" -#: io.c:3224 +#: io.c:3232 msgid "IPv6 communication is not supported" msgstr "IPv6 通信ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“" @@ -1669,119 +1674,119 @@ msgid "no program text at all!" msgstr "プログラム文ãŒå…¨ãã‚りã¾ã›ã‚“!" -#: main.c:735 +#: main.c:734 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" "使用法: %s [POSIX ã¾ãŸã¯ GNU å½¢å¼ã®ã‚ªãƒ—ション] -f progfile [--] file ...\n" -#: main.c:737 +#: main.c:736 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" "使用法: %s [POSIX ã¾ãŸã¯ GNU å½¢å¼ã®ã‚ªãƒ—ション] [--] %cprogram%c file ...\n" -#: main.c:742 +#: main.c:741 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX オプション:\t\tGNU é•·ã„å½¢å¼ã®ã‚ªãƒ—ション: (標準)\n" -#: main.c:743 +#: main.c:742 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f progfile\t\t--file=progfile\n" -#: main.c:744 +#: main.c:743 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:745 +#: main.c:744 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=val\t\t--assign=var=val\n" -#: main.c:746 +#: main.c:745 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "短ã„オプション:\t\tGNU é•·ã„å½¢å¼ã®ã‚ªãƒ—ション: (æ‹¡å¼µ)\n" -#: main.c:747 +#: main.c:746 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:748 +#: main.c:747 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:749 +#: main.c:748 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:750 +#: main.c:749 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[file]\t\t--dump-variables[=file]\n" -#: main.c:751 +#: main.c:750 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'program-text'\t--source='program-text'\n" -#: main.c:752 +#: main.c:751 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E file\t\t\t--exec=file\n" -#: main.c:753 +#: main.c:752 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:754 +#: main.c:753 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:755 +#: main.c:754 msgid "\t-L [fatal]\t\t--lint[=fatal]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: main.c:756 +#: main.c:755 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:757 +#: main.c:756 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:758 +#: main.c:757 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:759 +#: main.c:758 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[file]\t\t--profile[=file]\n" -#: main.c:760 +#: main.c:759 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:761 +#: main.c:760 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:763 +#: main.c:762 msgid "\t-R file\t\t\t--command=file\n" msgstr "\t-R file\t\t\t--command=file\n" -#: main.c:764 +#: main.c:763 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:765 +#: main.c:764 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:766 +#: main.c:765 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:768 +#: main.c:767 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:771 +#: main.c:770 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -1790,7 +1795,7 @@ #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:780 +#: main.c:779 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -1805,7 +1810,7 @@ "翻訳ã«é–¢ã™ã‚‹ãƒã‚°ã¯ã«å ±å‘Šã—ã¦ãã ã•" "ã„。\n" -#: main.c:784 +#: main.c:783 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -1815,7 +1820,7 @@ "デフォルト設定ã§ã¯ã€æ¨™æº–入力を読ã¿è¾¼ã¿ã€æ¨™æº–å‡ºåŠ›ã«æ›¸ã出ã—ã¾ã™ã€‚\n" "\n" -#: main.c:788 +#: main.c:787 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -1825,7 +1830,7 @@ "\tgawk '{ sum += $1 }; END { print sum }' file\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:808 +#: main.c:807 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -1844,7 +1849,7 @@ "(at your option) any later version.\n" "\n" -#: main.c:816 +#: main.c:815 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 +1863,7 @@ "GNU General Public License for more details.\n" "\n" -#: main.c:822 +#: main.c:821 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 +1871,16 @@ "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:857 +#: main.c:856 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "POSIX awk ã§ã¯ -Ft 㯠FS をタブã«è¨­å®šã—ã¾ã›ã‚“" -#: main.c:1091 +#: main.c:1090 #, c-format msgid "unknown value for field spec: %d\n" msgstr "フィールド指定ã«ä¸æ˜Žãªå€¤ãŒã‚りã¾ã™: %d\n" -#: main.c:1152 +#: main.c:1171 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -1884,57 +1889,52 @@ "%s: オプション `-v' ã®å¼•æ•° `%s' ㌠`変数=代入値' ã®å½¢å¼ã«ãªã£ã¦ã„ã¾ã›ã‚“。\n" "\n" -#: main.c:1178 +#: main.c:1197 #, c-format msgid "`%s' is not a legal variable name" msgstr "`%s' ã¯ä¸æ­£ãªå¤‰æ•°åã§ã™" -#: main.c:1181 +#: main.c:1200 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "`%s' ã¯å¤‰æ•°åã§ã¯ã‚りã¾ã›ã‚“。`%s=%s' ã®ãƒ•ァイルを探ã—ã¾ã™ã€‚" -#: main.c:1185 -#, fuzzy, c-format +#: main.c:1204 +#, c-format msgid "cannot use gawk builtin `%s' as variable name" -msgstr "extension: gawk ã«çµ„ã¿è¾¼ã¾ã‚Œã¦ã„ã‚‹ `%s' ã¯é–¢æ•°åã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“" +msgstr "gawk ã«çµ„ã¿è¾¼ã¿ã® `%s' ã¯å¤‰æ•°åã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“" -#: main.c:1190 -#, fuzzy, c-format +#: main.c:1209 +#, c-format msgid "cannot use function `%s' as variable name" -msgstr "関数å `%s' ã¯å¤‰æ•°ã¾ãŸã¯é…列ã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“" +msgstr "関数 `%s' ã¯å¤‰æ•°åã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“" -#: main.c:1243 +#: main.c:1262 msgid "floating point exception" msgstr "æµ®å‹•å°æ•°ç‚¹ä¾‹å¤–" -#: main.c:1250 +#: main.c:1269 msgid "fatal error: internal error" msgstr "致命的エラー: 内部エラー" -#: main.c:1265 +#: main.c:1284 msgid "fatal error: internal error: segfault" msgstr "致命的エラー: 内部エラー: セグメンテーションé•å" -#: main.c:1277 +#: main.c:1296 msgid "fatal error: internal error: stack overflow" msgstr "致命的エラー: 内部エラー: スタックオーãƒãƒ¼ãƒ•ロー" -#: main.c:1327 +#: main.c:1346 #, c-format msgid "no pre-opened fd %d" msgstr "fd %d ãŒäº‹å‰ã«é–‹ã„ã¦ã„ã¾ã›ã‚“。" -#: main.c:1334 +#: main.c:1353 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "事å‰ã« fd %d 用㫠/dev/null ã‚’é–‹ã‘ã¾ã›ã‚“。" -#: main.c:1357 main.c:1366 -#, c-format -msgid "could not find groups: %s" -msgstr "グループãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“: %s" - #: msg.c:63 #, c-format msgid "cmd. line:" @@ -2025,12 +2025,12 @@ msgid "internal error: %s with null vname" msgstr "内部エラー: %s ã® vname ãŒç„¡åйã§ã™ã€‚" -#: profile.c:938 +#: profile.c:952 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawk プロファイルã€ä½œæˆæ—¥æ™‚ %s\n" -#: profile.c:1317 +#: profile.c:1331 #, c-format msgid "" "\n" @@ -2039,89 +2039,95 @@ "\n" "\t# 関数一覧(アルファベット順)\n" -#: profile.c:1356 +#: profile.c:1370 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: 䏿˜Žãªãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆåž‹ %d ã§ã™" -#: re.c:572 -#, c-format -msgid "range of the form `[%c-%c]' is locale dependant" +#: re.c:573 +#, fuzzy, c-format +msgid "range of the form `[%c-%c]' is locale dependent" msgstr "`[%c-%c]' å½¢å¼ã®ç¯„囲ã¯ãƒ­ã‚±ãƒ¼ãƒ«ä¾å­˜ã§ã™" -#: re.c:599 +#: re.c:600 #, 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 "ãƒ¡ãƒ¢ãƒªã‚’ä½¿ã„æžœãŸã—ã¾ã—ãŸ" -#: 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 "could not find groups: %s" +#~ msgstr "グループãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“: %s" + +#~ msgid "assignment is not allowed to result of builtin function" +#~ msgstr "çµ„è¾¼é–¢æ•°ã®æˆ»ã‚Šå€¤ã¸ã®ä»£å…¥ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" diff -urN gawk-4.0.0/po/nl.po gawk-4.0.1/po/nl.po --- gawk-4.0.0/po/nl.po 2011-06-23 09:46:20.000000000 +0300 +++ gawk-4.0.1/po/nl.po 2012-03-28 22:03:47.000000000 +0200 @@ -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 it is different again. +# Als het schone blinkt. # -# Benno Schulenberg , 2005, 2007, 2010, 2011. +# Benno Schulenberg , 2005, 2007, 2010, 2011, 2012. # Erwin Poeze , 2009. 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-06-23 09:46+0300\n" -"PO-Revision-Date: 2011-05-22 21:03+0200\n" +"POT-Creation-Date: 2012-03-28 22:03+0200\n" +"PO-Revision-Date: 2012-01-30 20:40+0100\n" "Last-Translator: Benno Schulenberg \n" "Language-Team: Dutch \n" "Language: nl\n" @@ -45,9 +45,9 @@ msgid "attempt to use scalar `%s' as an array" msgstr "scalair '%s' wordt gebruikt als array" -#: array.c:302 array.c:707 builtin.c:81 builtin.c:1381 builtin.c:1423 -#: builtin.c:1436 builtin.c:1851 builtin.c:1863 eval.c:1135 eval.c:1139 -#: eval.c:1473 eval.c:1720 +#: array.c:302 array.c:707 builtin.c:84 builtin.c:1385 builtin.c:1427 +#: builtin.c:1440 builtin.c:1859 builtin.c:1871 eval.c:1135 eval.c:1139 +#: eval.c:1495 eval.c:1812 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "array '%s' wordt gebruikt in een scalaire context" @@ -67,7 +67,7 @@ msgid "delete: index `%s' not in array `%s'" msgstr "delete: index '%s' niet in array '%s'" -#: array.c:734 eval.c:1773 +#: array.c:734 eval.c:1865 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "scalair '%s[\"%.*s\"]' wordt gebruikt als array" @@ -141,12 +141,12 @@ "asorti: een subarray van het tweede argument kan niet als eerste argument " "gebruikt worden" -#: array.c:1659 +#: array.c:1655 #, c-format msgid "`%s' is invalid as a function name" msgstr "'%s' is ongeldig als functienaam" -#: array.c:1663 +#: array.c:1659 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "sorteervergelijkingsfunctie '%s' is niet gedefinieerd" @@ -187,339 +187,339 @@ msgid "duplicate `default' detected in switch body" msgstr "dubbele 'default' in 'switch'-opdracht" -#: awkgram.y:811 +#: awkgram.y:809 msgid "`break' is not allowed outside a loop or switch" msgstr "'break' buiten een lus of 'switch'-opdracht is niet toegestaan" -#: awkgram.y:820 +#: awkgram.y:818 msgid "`continue' is not allowed outside a loop" msgstr "'continue' buiten een lus is niet toegestaan" -#: awkgram.y:830 +#: awkgram.y:828 #, c-format msgid "`next' used in %s action" msgstr "'next' wordt gebruikt in %s-actie" -#: awkgram.y:838 +#: awkgram.y:836 msgid "`nextfile' is a gawk extension" msgstr "'nextfile' is een gawk-uitbreiding" -#: awkgram.y:843 +#: awkgram.y:841 #, c-format msgid "`nextfile' used in %s action" msgstr "'nextfile' wordt gebruikt in %s-actie" -#: awkgram.y:867 +#: awkgram.y:865 msgid "`return' used outside function context" msgstr "'return' wordt gebruikt buiten functiecontext" -#: awkgram.y:927 +#: awkgram.y:925 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:997 awkgram.y:1001 awkgram.y:1025 +#: awkgram.y:995 awkgram.y:999 awkgram.y:1023 msgid "`delete array' is a gawk extension" msgstr "'delete array' is een gawk-uitbreiding" -#: awkgram.y:1021 +#: awkgram.y:1019 msgid "`delete(array)' is a non-portable tawk extension" msgstr "'delete(array)' is een niet-overdraagbare 'tawk'-uitbreiding" -#: awkgram.y:1137 +#: awkgram.y:1135 msgid "multistage two-way pipelines don't work" msgstr "meerfase-tweerichtings-pijplijnen werken niet" -#: awkgram.y:1240 +#: awkgram.y:1238 msgid "regular expression on right of assignment" msgstr "reguliere expressie rechts van toewijzing" -#: awkgram.y:1251 +#: awkgram.y:1249 msgid "regular expression on left of `~' or `!~' operator" msgstr "reguliere expressie links van operator '~' of '!~'" -#: awkgram.y:1267 awkgram.y:1421 +#: awkgram.y:1265 awkgram.y:1419 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:1277 +#: awkgram.y:1275 msgid "regular expression on right of comparison" msgstr "reguliere expressie rechts van vergelijking" -#: awkgram.y:1396 +#: awkgram.y:1394 #, c-format msgid "`getline var' invalid inside `%s' rule" msgstr "'getline var' is ongeldig binnen een '%s'-regel" -#: awkgram.y:1399 eval.c:2409 +#: awkgram.y:1397 eval.c:2504 #, c-format msgid "`getline' invalid inside `%s' rule" msgstr "'getline' is ongeldig binnen een '%s'-regel" -#: awkgram.y:1404 +#: awkgram.y:1402 msgid "non-redirected `getline' undefined inside END action" msgstr "niet-omgeleide 'getline' is ongedefinieerd binnen een END-actie" -#: awkgram.y:1423 +#: awkgram.y:1421 msgid "old awk does not support multidimensional arrays" msgstr "oude 'awk' kent geen meerdimensionale arrays" -#: awkgram.y:1519 +#: awkgram.y:1517 msgid "call of `length' without parentheses is not portable" msgstr "aanroep van 'length' zonder haakjes is niet overdraagbaar" -#: awkgram.y:1582 +#: awkgram.y:1580 msgid "indirect function calls are a gawk extension" msgstr "indirecte functieaanroepen zijn een gawk-uitbreiding" -#: awkgram.y:1595 +#: awkgram.y:1593 #, 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:1673 +#: awkgram.y:1671 msgid "invalid subscript expression" msgstr "ongeldige index-expressie" -#: awkgram.y:1713 +#: awkgram.y:1711 msgid "use of non-array as array" msgstr "non-array wordt gebruikt als array" -#: awkgram.y:1977 awkgram.y:1997 msg.c:98 +#: awkgram.y:1975 awkgram.y:1995 msg.c:98 msgid "warning: " msgstr "waarschuwing: " -#: awkgram.y:1995 msg.c:130 +#: awkgram.y:1993 msg.c:130 msgid "fatal: " msgstr "fataal: " -#: awkgram.y:2045 +#: awkgram.y:2043 msgid "unexpected newline or end of string" msgstr "onverwacht regeleinde of einde van string" -#: awkgram.y:2301 awkgram.y:2359 awkgram.y:2543 +#: awkgram.y:2300 awkgram.y:2358 awkgram.y:2542 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "kan bronbestand '%s' niet openen om te lezen (%s)" -#: awkgram.y:2302 awkgram.y:2360 builtin.c:119 +#: awkgram.y:2301 awkgram.y:2359 builtin.c:122 msgid "reason unknown" msgstr "reden onbekend" -#: awkgram.y:2318 +#: awkgram.y:2317 #, c-format msgid "already included source file `%s'" msgstr "bronbestand '%s' is reeds ingesloten" -#: awkgram.y:2344 +#: awkgram.y:2343 msgid "@include is a gawk extension" msgstr "'@include' is een gawk-uitbreiding" -#: awkgram.y:2350 +#: awkgram.y:2349 msgid "empty filename after @include" msgstr "lege bestandsnaam na '@include'" -#: awkgram.y:2495 +#: awkgram.y:2494 msgid "empty program text on command line" msgstr "lege programmatekst op commandoregel" -#: awkgram.y:2610 +#: awkgram.y:2609 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "kan bronbestand '%s' niet lezen (%s)" -#: awkgram.y:2621 +#: awkgram.y:2620 #, c-format msgid "source file `%s' is empty" msgstr "bronbestand '%s' is leeg" -#: awkgram.y:2806 +#: awkgram.y:2797 msgid "source file does not end in newline" msgstr "bronbestand eindigt niet met een regeleindeteken (LF)" -#: awkgram.y:2883 +#: awkgram.y:2900 msgid "unterminated regexp ends with `\\' at end of file" msgstr "onafgesloten reguliere expressie eindigt met '\\' aan bestandseinde" -#: awkgram.y:2907 +#: awkgram.y:2924 #, 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:2911 +#: awkgram.y:2928 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "regexp-optie '/.../%c' van 'tawk' werkt niet in gawk" -#: awkgram.y:2918 +#: awkgram.y:2935 msgid "unterminated regexp" msgstr "onafgesloten reguliere expressie" -#: awkgram.y:2922 +#: awkgram.y:2939 msgid "unterminated regexp at end of file" msgstr "onafgesloten reguliere expressie aan bestandseinde" -#: awkgram.y:2981 +#: awkgram.y:2998 msgid "use of `\\ #...' line continuation is not portable" msgstr "gebruik van regelvoortzetting '\\ #...' is niet overdraagbaar" -#: awkgram.y:2997 +#: awkgram.y:3014 msgid "backslash not last character on line" msgstr "backslash is niet het laatste teken op de regel" -#: awkgram.y:3058 +#: awkgram.y:3075 msgid "POSIX does not allow operator `**='" msgstr "POSIX staat operator '**=' niet toe" -#: awkgram.y:3060 +#: awkgram.y:3077 msgid "old awk does not support operator `**='" msgstr "oude 'awk' kent de operator '**=' niet" -#: awkgram.y:3069 +#: awkgram.y:3086 msgid "POSIX does not allow operator `**'" msgstr "POSIX staat operator '**' niet toe" -#: awkgram.y:3071 +#: awkgram.y:3088 msgid "old awk does not support operator `**'" msgstr "oude 'awk' kent de operator '**' niet" -#: awkgram.y:3106 +#: awkgram.y:3123 msgid "operator `^=' is not supported in old awk" msgstr "oude 'awk' kent de operator '^=' niet" -#: awkgram.y:3114 +#: awkgram.y:3131 msgid "operator `^' is not supported in old awk" msgstr "oude 'awk' kent de operator '^' niet" -#: awkgram.y:3207 awkgram.y:3223 +#: awkgram.y:3224 awkgram.y:3240 msgid "unterminated string" msgstr "onafgesloten string" -#: awkgram.y:3419 +#: awkgram.y:3436 #, c-format msgid "invalid char '%c' in expression" msgstr "ongeldig teken '%c' in expressie" -#: awkgram.y:3466 +#: awkgram.y:3483 #, c-format msgid "`%s' is a gawk extension" msgstr "'%s' is een gawk-uitbreiding" -#: awkgram.y:3471 +#: awkgram.y:3488 #, c-format msgid "`%s' is a Bell Labs extension" msgstr "'%s' is een uitbreiding door Bell Labs" -#: awkgram.y:3476 +#: awkgram.y:3493 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX staat '%s' niet toe" -#: awkgram.y:3484 +#: awkgram.y:3501 #, c-format msgid "`%s' is not supported in old awk" msgstr "oude 'awk' kent '%s' niet" -#: awkgram.y:3551 +#: awkgram.y:3568 msgid "`goto' considered harmful!\n" msgstr "'goto' wordt als schadelijk beschouwd!\n" -#: awkgram.y:3604 +#: awkgram.y:3619 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d is een ongeldig aantal argumenten voor %s" -#: awkgram.y:3639 awkgram.y:3642 -msgid "match: third argument is a gawk extension" -msgstr "match: derde argument is een gawk-uitbreiding" - -#: awkgram.y:3670 +#: awkgram.y:3654 #, 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:3675 +#: awkgram.y:3659 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s: derde parameter is geen veranderbaar object" -#: awkgram.y:3761 awkgram.y:3764 +#: awkgram.y:3732 awkgram.y:3735 +msgid "match: third argument is a gawk extension" +msgstr "match: derde argument is een gawk-uitbreiding" + +#: awkgram.y:3789 awkgram.y:3792 msgid "close: second argument is a gawk extension" msgstr "close: tweede argument is een gawk-uitbreiding" -#: awkgram.y:3776 +#: awkgram.y:3804 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "dcgettext(_\"...\") is onjuist: verwijder het liggende streepje" -#: awkgram.y:3791 +#: awkgram.y:3819 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "dcngettext(_\"...\") is onjuist: verwijder het liggende streepje" -#: awkgram.y:3883 +#: awkgram.y:3911 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "functie '%s': parameter #%d, '%s', dupliceert parameter #%d" -#: awkgram.y:3925 +#: awkgram.y:3953 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "functie '%s': parameter '%s' schaduwt een globale variabele" -#: awkgram.y:4083 +#: awkgram.y:4111 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "kan '%s' niet openen om te schrijven (%s)" -#: awkgram.y:4084 +#: awkgram.y:4112 msgid "sending variable list to standard error" msgstr "variabelenlijst gaat naar standaardfoutuitvoer" -#: awkgram.y:4090 +#: awkgram.y:4118 #, c-format msgid "%s: close failed (%s)" msgstr "%s: sluiten is mislukt (%s)" -#: awkgram.y:4142 +#: awkgram.y:4170 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() twee keer aangeroepen!" -#: awkgram.y:4148 +#: awkgram.y:4176 msgid "there were shadowed variables." msgstr "er waren geschaduwde variabelen." -#: awkgram.y:4178 +#: awkgram.y:4206 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "functie '%s': kan functienaam niet als parameternaam gebruiken" -#: awkgram.y:4182 +#: awkgram.y:4210 #, 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:4198 +#: awkgram.y:4226 #, c-format msgid "function name `%s' previously defined" msgstr "functienaam '%s' is al eerder gedefinieerd" -#: awkgram.y:4366 awkgram.y:4372 +#: awkgram.y:4394 awkgram.y:4400 #, c-format msgid "function `%s' called but never defined" msgstr "functie '%s' wordt aangeroepen maar is nergens gedefinieerd" -#: awkgram.y:4375 +#: awkgram.y:4403 #, c-format msgid "function `%s' defined but never called directly" msgstr "functie '%s' is gedefinieerd maar wordt nergens direct aangeroepen" -#: awkgram.y:4407 +#: awkgram.y:4435 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "regexp-constante als parameter #%d levert booleanwaarde op" -#: awkgram.y:4516 +#: awkgram.y:4544 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -528,230 +528,230 @@ "functie '%s' wordt aangeroepen met een spatie tussen naam en '(',\n" "of wordt gebruikt als variabele of array" -#: awkgram.y:4763 eval.c:1964 +#: awkgram.y:4791 eval.c:2056 msgid "division by zero attempted" msgstr "deling door nul" -#: awkgram.y:4772 eval.c:1980 +#: awkgram.y:4800 eval.c:2072 #, c-format msgid "division by zero attempted in `%%'" msgstr "deling door nul in '%%'" -#: builtin.c:117 +#: builtin.c:120 #, c-format msgid "%s to \"%s\" failed (%s)" msgstr "%s naar \"%s\" is mislukt (%s)" -#: builtin.c:118 +#: builtin.c:121 msgid "standard output" msgstr "standaarduitvoer" -#: builtin.c:132 +#: builtin.c:135 msgid "exp: received non-numeric argument" msgstr "exp: argument is geen getal" -#: builtin.c:138 +#: builtin.c:141 #, c-format msgid "exp: argument %g is out of range" msgstr "exp: argument %g ligt buiten toegestane bereik" -#: builtin.c:197 +#: builtin.c:200 #, 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:200 +#: builtin.c:203 #, 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:212 +#: builtin.c:215 #, 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:330 +#: builtin.c:333 msgid "index: received non-string first argument" msgstr "index: eerste argument is geen string" -#: builtin.c:332 +#: builtin.c:335 msgid "index: received non-string second argument" msgstr "index: tweede argument is geen string" -#: builtin.c:454 +#: builtin.c:457 msgid "int: received non-numeric argument" msgstr "int: argument is geen getal" -#: builtin.c:490 +#: builtin.c:493 msgid "length: received array argument" msgstr "length: argument is een array" -#: builtin.c:493 +#: builtin.c:496 msgid "`length(array)' is a gawk extension" msgstr "'length(array)' is een gawk-uitbreiding" -#: builtin.c:501 +#: builtin.c:504 msgid "length: received non-string argument" msgstr "length: argument is geen string" -#: builtin.c:532 +#: builtin.c:535 msgid "log: received non-numeric argument" msgstr "log: argument is geen getal" -#: builtin.c:535 +#: builtin.c:538 #, c-format msgid "log: received negative argument %g" msgstr "log: argument %g is negatief" -#: builtin.c:691 builtin.c:696 +#: builtin.c:694 builtin.c:699 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:758 +#: builtin.c:762 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "veldbreedte wordt genegeerd voor opmaakaanduiding '%%'" -#: builtin.c:760 +#: builtin.c:764 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "veldprecisie wordt genegeerd voor opmaakaanduiding '%%'" -#: builtin.c:762 +#: builtin.c:766 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "veldbreedte en -precisie worden genegeerd voor opmaakaanduiding '%%'" -#: builtin.c:813 +#: builtin.c:817 msgid "fatal: `$' is not permitted in awk formats" msgstr "fataal: '$' is niet toegestaan in awk-opmaak" -#: builtin.c:822 +#: builtin.c:826 msgid "fatal: arg count with `$' must be > 0" msgstr "fataal: het aantal argumenten met '$' moet > 0 zijn" -#: builtin.c:826 +#: builtin.c:830 #, 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:830 +#: builtin.c:834 msgid "fatal: `$' not permitted after period in format" msgstr "fataal: '$' is niet toegestaan na een punt in de opmaak" -#: builtin.c:846 +#: builtin.c:850 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "fataal: geen '$' opgegeven bij positionele veldbreedte of -precisie" -#: builtin.c:917 +#: builtin.c:921 msgid "`l' is meaningless in awk formats; ignored" msgstr "'l' is betekenisloos in awk-opmaak; genegeerd" -#: builtin.c:921 +#: builtin.c:925 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fataal: 'l' is niet toegestaan in POSIX awk-opmaak" -#: builtin.c:934 +#: builtin.c:938 msgid "`L' is meaningless in awk formats; ignored" msgstr "'L' is betekenisloos in awk-opmaak; genegeerd" -#: builtin.c:938 +#: builtin.c:942 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "fataal: 'L' is niet toegestaan in POSIX awk-opmaak" -#: builtin.c:951 +#: builtin.c:955 msgid "`h' is meaningless in awk formats; ignored" msgstr "'h' is betekenisloos in awk-opmaak; genegeerd" -#: builtin.c:955 +#: builtin.c:959 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fataal: 'h' is niet toegestaan in POSIX awk-opmaak" -#: builtin.c:1268 +#: builtin.c:1272 #, 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:1328 +#: builtin.c:1332 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "onbekend opmaakteken '%c' wordt genegeerd: geen argument is geconverteerd" -#: builtin.c:1333 +#: builtin.c:1337 msgid "fatal: not enough arguments to satisfy format string" msgstr "fataal: niet genoeg argumenten voor opmaakstring" -#: builtin.c:1335 +#: builtin.c:1339 msgid "^ ran out for this one" msgstr "niet genoeg ^ voor deze" -#: builtin.c:1342 +#: builtin.c:1346 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: opmaakaanduiding mist een stuurletter" -#: builtin.c:1345 +#: builtin.c:1349 msgid "too many arguments supplied for format string" msgstr "te veel argumenten voor opmaakstring" -#: builtin.c:1419 builtin.c:1430 +#: builtin.c:1423 builtin.c:1434 msgid "printf: no arguments" msgstr "printf: geen argumenten" -#: builtin.c:1471 +#: builtin.c:1475 msgid "sqrt: received non-numeric argument" msgstr "sqrt: argument is geen getal" -#: builtin.c:1475 +#: builtin.c:1479 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: argument %g is negatief" -#: builtin.c:1499 +#: builtin.c:1503 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: lengte %g is niet >= 1" -#: builtin.c:1501 +#: builtin.c:1505 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: lengte %g is niet >= 0" -#: builtin.c:1508 +#: builtin.c:1512 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: lengte %g is geen integer; wordt afgekapt" -#: builtin.c:1513 +#: builtin.c:1517 #, 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:1525 +#: builtin.c:1529 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: startindex %g is ongeldig; 1 wordt gebruikt" -#: builtin.c:1530 +#: builtin.c:1534 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: startindex %g is geen integer; wordt afgekapt" -#: builtin.c:1555 +#: builtin.c:1559 msgid "substr: source string is zero length" msgstr "substr: bronstring heeft lengte nul" -#: builtin.c:1571 +#: builtin.c:1575 #, 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:1579 +#: builtin.c:1583 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -759,219 +759,223 @@ "substr: lengte %g bij startindex %g is groter dan de lengte van het eerste " "argument (%lu)" -#: builtin.c:1652 +#: builtin.c:1657 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: opmaakwaarde in PROCINFO[\"strftime\"] is numeriek" -#: builtin.c:1675 +#: builtin.c:1680 msgid "strftime: received non-numeric second argument" msgstr "strftime: tweede argument is geen getal" -#: builtin.c:1682 +#: builtin.c:1683 +msgid "strftime: second argument less than 0 or too big for time_t" +msgstr "strftime: tweede argument is kleiner dan nul of te groot voor 'time_t'" + +#: builtin.c:1690 msgid "strftime: received non-string first argument" msgstr "strftime: eerste argument is geen string" -#: builtin.c:1688 +#: builtin.c:1696 msgid "strftime: received empty format string" msgstr "strftime: opmaakstring is leeg" -#: builtin.c:1754 +#: builtin.c:1762 msgid "mktime: received non-string argument" msgstr "mktime: argument is geen string" -#: builtin.c:1771 +#: builtin.c:1779 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:1806 +#: builtin.c:1814 msgid "'system' function not allowed in sandbox mode" msgstr "'system'-functie is niet toegestaan in sandbox-modus" -#: builtin.c:1811 +#: builtin.c:1819 msgid "system: received non-string argument" msgstr "system: argument is geen string" -#: builtin.c:1866 eval.c:1165 eval.c:1698 eval.c:1711 +#: builtin.c:1874 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:1933 +#: builtin.c:1941 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "verwijzing naar ongeïnitialiseerd veld '$%d'" -#: builtin.c:2020 +#: builtin.c:2028 msgid "tolower: received non-string argument" msgstr "tolower: argument is geen string" -#: builtin.c:2054 +#: builtin.c:2062 msgid "toupper: received non-string argument" msgstr "toupper: argument is geen string" -#: builtin.c:2090 +#: builtin.c:2098 msgid "atan2: received non-numeric first argument" msgstr "atan2: eerste argument is geen getal" -#: builtin.c:2092 +#: builtin.c:2100 msgid "atan2: received non-numeric second argument" msgstr "atan2: tweede argument is geen getal" -#: builtin.c:2111 +#: builtin.c:2119 msgid "sin: received non-numeric argument" msgstr "sin: argument is geen getal" -#: builtin.c:2127 +#: builtin.c:2135 msgid "cos: received non-numeric argument" msgstr "cos: argument is geen getal" -#: builtin.c:2180 +#: builtin.c:2188 msgid "srand: received non-numeric argument" msgstr "srand: argument is geen getal" -#: builtin.c:2211 +#: builtin.c:2219 msgid "match: third argument is not an array" msgstr "match: derde argument is geen array" -#: builtin.c:2718 +#: builtin.c:2483 msgid "gensub: third argument of 0 treated as 1" msgstr "gensub: derde argument is 0; wordt beschouwd als 1" -#: builtin.c:2757 +#: builtin.c:2776 msgid "lshift: received non-numeric first argument" msgstr "lshift: eerste argument is geen getal" -#: builtin.c:2759 +#: builtin.c:2778 msgid "lshift: received non-numeric second argument" msgstr "lshift: tweede argument is geen getal" -#: builtin.c:2765 +#: builtin.c:2784 #, c-format msgid "lshift(%lf, %lf): negative values will give strange results" msgstr "lshift(%lf, %lf): negatieve waarden geven rare resultaten" -#: builtin.c:2767 +#: builtin.c:2786 #, c-format msgid "lshift(%lf, %lf): fractional values will be truncated" msgstr "lshift(%lf, %lf): cijfers na de komma worden afgekapt" -#: builtin.c:2769 +#: builtin.c:2788 #, 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:2794 +#: builtin.c:2813 msgid "rshift: received non-numeric first argument" msgstr "rshift: eerste argument is geen getal" -#: builtin.c:2796 +#: builtin.c:2815 msgid "rshift: received non-numeric second argument" msgstr "rshift: tweede argument is geen getal" -#: builtin.c:2802 +#: builtin.c:2821 #, c-format msgid "rshift(%lf, %lf): negative values will give strange results" msgstr "rshift(%lf, %lf): negatieve waarden geven rare resultaten" -#: builtin.c:2804 +#: builtin.c:2823 #, c-format msgid "rshift(%lf, %lf): fractional values will be truncated" msgstr "rshift(%lf, %lf): cijfers na de komma worden afgekapt" -#: builtin.c:2806 +#: builtin.c:2825 #, 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:2831 +#: builtin.c:2850 msgid "and: received non-numeric first argument" msgstr "and: eerste argument is geen getal" -#: builtin.c:2833 +#: builtin.c:2852 msgid "and: received non-numeric second argument" msgstr "and: tweede argument is geen getal" -#: builtin.c:2839 +#: builtin.c:2858 #, c-format msgid "and(%lf, %lf): negative values will give strange results" msgstr "and(%lf, %lf): negatieve waarden geven rare resultaten" -#: builtin.c:2841 +#: builtin.c:2860 #, c-format msgid "and(%lf, %lf): fractional values will be truncated" msgstr "and(%lf, %lf): cijfers na de komma worden afgekapt" -#: builtin.c:2866 +#: builtin.c:2885 msgid "or: received non-numeric first argument" msgstr "or: eerste argument is geen getal" -#: builtin.c:2868 +#: builtin.c:2887 msgid "or: received non-numeric second argument" msgstr "or: tweede argument is geen getal" -#: builtin.c:2874 +#: builtin.c:2893 #, c-format msgid "or(%lf, %lf): negative values will give strange results" msgstr "or(%lf, %lf): negatieve waarden geven rare resultaten" -#: builtin.c:2876 +#: builtin.c:2895 #, c-format msgid "or(%lf, %lf): fractional values will be truncated" msgstr "or(%lf, %lf): cijfers na de komma worden afgekapt" -#: builtin.c:2904 +#: builtin.c:2923 msgid "xor: received non-numeric first argument" msgstr "xor: eerste argument is geen getal" -#: builtin.c:2906 +#: builtin.c:2925 msgid "xor: received non-numeric second argument" msgstr "xor: tweede argument is geen getal" -#: builtin.c:2912 +#: builtin.c:2931 #, c-format msgid "xor(%lf, %lf): negative values will give strange results" msgstr "xor(%lf, %lf): negatieve waarden geven rare resultaten" -#: builtin.c:2914 +#: builtin.c:2933 #, c-format msgid "xor(%lf, %lf): fractional values will be truncated" msgstr "xor(%lf, %lf): cijfers na de komma worden afgekapt" -#: builtin.c:2938 builtin.c:2944 +#: builtin.c:2957 builtin.c:2963 msgid "compl: received non-numeric argument" msgstr "compl: argument is geen getal" -#: builtin.c:2946 +#: builtin.c:2965 #, c-format msgid "compl(%lf): negative value will give strange results" msgstr "compl(%lf): negatieve waarden geven rare resultaten" -#: builtin.c:2948 +#: builtin.c:2967 #, c-format msgid "compl(%lf): fractional value will be truncated" msgstr "compl(%lf): cijfers na de komma worden afgekapt" -#: builtin.c:3117 +#: builtin.c:3136 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: '%s' is geen geldige taalregio-deelcategorie" -#: eval.c:411 +#: eval.c:412 #, c-format msgid "unknown nodetype %d" msgstr "onbekend knooptype %d" -#: eval.c:422 eval.c:436 +#: eval.c:423 eval.c:437 #, c-format msgid "unknown opcode %d" msgstr "onbekende opcode %d" -#: eval.c:433 +#: eval.c:434 #, c-format msgid "opcode %s not an operator or keyword" msgstr "opcode %s is geen operator noch sleutelwoord" -#: eval.c:487 +#: eval.c:488 msgid "buffer overflow in genflags2str" msgstr "bufferoverloop in genflags2str()" @@ -1008,122 +1012,126 @@ msgid "turning off `--lint' due to assignment to `LINT'" msgstr "'--lint' wordt uitgeschakeld wegens toewijzing aan 'LINT'" -#: eval.c:1127 eval.c:1685 +#: 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:1155 -msgid "assignment is not allowed to result of builtin function" -msgstr "" -"toewijzing aan het resultaat van een ingebouwde functie is niet toegestaan" - -#: eval.c:1164 eval.c:1697 eval.c:1710 +#: eval.c:1158 eval.c:1789 eval.c:1802 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "verwijzing naar ongeïnitialiseerd argument '%s'" -#: eval.c:1183 +#: eval.c:1177 msgid "attempt to field reference from non-numeric value" msgstr "veldverwijzingspoging via een waarde die geen getal is" -#: eval.c:1185 +#: eval.c:1179 msgid "attempt to field reference from null string" msgstr "veldverwijzingspoging via een lege string" -#: eval.c:1191 +#: eval.c:1185 #, c-format msgid "attempt to access field %ld" msgstr "toegangspoging tot veld %ld" -#: eval.c:1200 +#: eval.c:1194 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "verwijzing naar ongeïnitialiseerd veld '$%ld'" -#: eval.c:1262 +#: eval.c:1256 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "functie '%s' aangeroepen met meer argumenten dan gedeclareerd" -#: eval.c:1426 +#: eval.c:1437 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack(): onverwacht type '%s'" -#: eval.c:1510 +#: eval.c:1532 msgid "division by zero attempted in `/='" msgstr "deling door nul in '/='" -#: eval.c:1517 +#: eval.c:1539 #, c-format msgid "division by zero attempted in `%%='" msgstr "deling door nul in '%%='" -#: eval.c:1784 eval.c:2030 +#: 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:1815 +#: eval.c:1907 msgid "assignment used in conditional context" msgstr "toewijzing wordt gebruikt in een conditionele context" -#: eval.c:1819 +#: eval.c:1911 msgid "statement has no effect" msgstr "opdracht heeft geen effect" -#: eval.c:2233 +#: 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:2343 +#: eval.c:2458 #, c-format msgid "function called indirectly through `%s' does not exist" msgstr "indirect (via '%s') aangeroepen functie bestaat niet" -#: eval.c:2355 +#: eval.c:2470 #, c-format msgid "function `%s' not defined" msgstr "functie '%s' is niet gedefinieerd" -#: eval.c:2416 +#: 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:2477 +#: 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:2532 +#: eval.c:2661 +msgid "`exit' cannot be called in the current context" +msgstr "'exit' kan niet aangeroepen worden in de huidige context" + +#: eval.c:2700 #, c-format msgid "`next' cannot be called from a `%s' rule" msgstr "'next' kan niet aangeroepen worden in een '%s'-regel" -#: eval.c:2599 +#: eval.c:2766 #, c-format msgid "Sorry, don't know how to interpret `%s'" msgstr "Kan '%s' niet interpreteren" -#: ext.c:64 +#: ext.c:54 msgid "extensions are not allowed in sandbox mode" msgstr "uitbreidingen zijn niet toegestaan in sandbox-modus" -#: ext.c:70 ext.c:75 +#: ext.c:60 ext.c:65 msgid "`extension' is a gawk extension" msgstr "'extension' is een gawk-uitbreiding" -#: ext.c:85 +#: ext.c:75 #, c-format msgid "fatal: extension: cannot open `%s' (%s)\n" msgstr "fatale fout: extension: kan '%s' niet openen (%s)\n" -#: ext.c:94 +#: ext.c:84 #, c-format msgid "" "fatal: extension: library `%s': does not define " @@ -1132,69 +1140,69 @@ "fatale fout: extension: bibliotheek '%s': definieert " "'plugin_is_GPL_compatible' niet (%s)\n" -#: ext.c:103 +#: ext.c:93 #, c-format msgid "fatal: 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:127 msgid "extension: missing function name" msgstr "extension: ontbrekende functienaam" -#: ext.c:142 +#: ext.c:132 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: ongeldig teken '%c' in functienaam '%s'" -#: ext.c:151 +#: ext.c:141 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: kan functie '%s' niet herdefiniëren" -#: ext.c:155 +#: ext.c:145 #, c-format msgid "extension: function `%s' already defined" msgstr "extension: functie '%s' is al gedefinieerd" -#: ext.c:160 +#: ext.c:150 #, c-format msgid "extension: function name `%s' previously defined" msgstr "extension: functienaam '%s' is al eerder gedefinieerd" -#: ext.c:162 +#: ext.c:152 #, 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:156 #, 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:259 #, 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:262 #, c-format msgid "function `%s': missing argument #%d" msgstr "functie '%s': ontbrekend argument #%d" -#: ext.c:289 +#: ext.c:279 #, 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:283 #, 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:296 msgid "Operation Not Supported" msgstr "Actie wordt niet ondersteund" @@ -1202,176 +1210,171 @@ msgid "NF set to negative value" msgstr "NF is op een negatieve waarde gezet" -#: field.c:950 field.c:957 field.c:961 +#: field.c:951 field.c:958 field.c:962 msgid "split: fourth argument is a gawk extension" msgstr "split: vierde argument is een gawk-uitbreiding" -#: field.c:954 +#: field.c:955 msgid "split: fourth argument is not an array" msgstr "split: vierde argument is geen array" -#: field.c:968 +#: field.c:969 msgid "split: second argument is not an array" msgstr "split: tweede argument is geen array" -#: field.c:972 +#: field.c:973 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:977 +#: field.c:978 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:980 +#: field.c:981 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:1009 +#: field.c:1010 msgid "split: null string for third arg is a gawk extension" msgstr "split: lege string als derde argument is een gawk-uitbreiding" -#: field.c:1049 +#: field.c:1050 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: vierde argument is geen array" -#: field.c:1054 +#: field.c:1055 msgid "patsplit: second argument is not an array" msgstr "patsplit: tweede argument is geen array" -#: field.c:1060 +#: field.c:1061 msgid "patsplit: third argument must be non-null" msgstr "patsplit: derde argument moet niet-nil zijn" -#: field.c:1064 +#: field.c:1065 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:1069 +#: field.c:1070 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:1072 +#: field.c:1073 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:1109 +#: field.c:1110 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "'FIELDWIDTHS' is een gawk-uitbreiding" -#: field.c:1172 +#: field.c:1173 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "ongeldige waarde voor FIELDWIDTHS, nabij '%s'" -#: field.c:1245 +#: field.c:1246 msgid "null string for `FS' is a gawk extension" msgstr "een lege string als 'FS' is een gawk-uitbreiding" -#: field.c:1249 +#: field.c:1250 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:1368 +#: field.c:1369 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:282 +#: io.c:280 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "opdrachtregelargument '%s' is een map -- overgeslagen" -#: io.c:285 io.c:384 +#: io.c:283 io.c:385 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "kan bestand '%s' niet openen om te lezen (%s)" -#: io.c:431 -#, c-format -msgid "error reading input file `%s': %s" -msgstr "fout tijdens lezen van invoerbestand '%s': %s" - -#: io.c:500 +#: io.c:501 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "sluiten van bestandsdescriptor %d ('%s') is mislukt (%s)" -#: io.c:577 +#: io.c:578 msgid "redirection not allowed in sandbox mode" msgstr "omleiding is niet toegestaan in sandbox-modus" -#: io.c:611 +#: io.c:612 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "expressie in omleiding '%s' heeft alleen een getal als waarde" -#: io.c:617 +#: io.c:618 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "expressie voor omleiding '%s' heeft een lege string als waarde" @@ -1478,7 +1481,7 @@ msgid "no explicit close of file `%s' provided" msgstr "geen expliciete sluiting van bestand '%s' aangegeven" -#: io.c:1129 io.c:1184 main.c:795 main.c:832 +#: io.c:1129 io.c:1184 main.c:794 main.c:831 #, c-format msgid "error writing standard output (%s)" msgstr "fout tijdens schrijven van standaarduitvoer (%s)" @@ -1540,93 +1543,93 @@ msgid "could not open `%s', mode `%s'" msgstr "kan '%s' niet openen -- modus '%s'" -#: io.c:1744 +#: io.c:1747 #, c-format msgid "close of master pty failed (%s)" msgstr "kan meester-pty van dochterproces niet sluiten (%s)" -#: io.c:1746 io.c:1914 io.c:2071 +#: io.c:1749 io.c:1917 io.c:2074 #, c-format msgid "close of stdout in child failed (%s)" msgstr "kan standaarduitvoer van dochterproces niet sluiten (%s)" -#: io.c:1749 +#: io.c:1752 #, 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:1751 io.c:1919 +#: io.c:1754 io.c:1922 #, c-format msgid "close of stdin in child failed (%s)" msgstr "kan standaardinvoer van dochterproces niet sluiten (%s)" -#: io.c:1754 +#: io.c:1757 #, 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:1756 io.c:1777 +#: io.c:1759 io.c:1780 #, c-format msgid "close of slave pty failed (%s)" msgstr "kan slaaf-pty niet sluiten (%s)" -#: io.c:1855 io.c:1917 io.c:2049 io.c:2074 +#: io.c:1858 io.c:1920 io.c:2052 io.c:2077 #, 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:1862 io.c:1922 +#: io.c:1865 io.c:1925 #, 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:1882 io.c:2064 +#: io.c:1885 io.c:2067 msgid "restoring stdout in parent process failed\n" msgstr "kan standaarduitvoer van ouderproces niet herstellen\n" -#: io.c:1890 +#: io.c:1893 msgid "restoring stdin in parent process failed\n" msgstr "kan standaardinvoer van ouderproces niet herstellen\n" -#: io.c:1925 io.c:2076 io.c:2090 +#: io.c:1928 io.c:2079 io.c:2093 #, c-format msgid "close of pipe failed (%s)" msgstr "kan pijp niet sluiten (%s)" -#: io.c:1970 +#: io.c:1973 msgid "`|&' not supported" msgstr "'|&' wordt niet ondersteund" -#: io.c:2036 +#: io.c:2039 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "kan pijp '%s' niet openen (%s)" -#: io.c:2084 +#: io.c:2087 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "kan voor '%s' geen dochterproces starten (fork: %s)" -#: io.c:2517 +#: io.c:2520 #, c-format msgid "data file `%s' is empty" msgstr "databestand '%s' is leeg" -#: io.c:2558 io.c:2566 +#: io.c:2561 io.c:2569 msgid "could not allocate more input memory" msgstr "kan geen extra invoergeheugen meer toewijzen" -#: io.c:3119 +#: io.c:3127 msgid "multicharacter value of `RS' is a gawk extension" msgstr "een 'RS' van meerdere tekens is een gawk-uitbreiding" -#: io.c:3224 +#: io.c:3232 msgid "IPv6 communication is not supported" msgstr "IPv6-communicatie wordt niet ondersteund" @@ -1692,121 +1695,121 @@ msgid "no program text at all!" msgstr "helemaal geen programmatekst!" -#: main.c:735 +#: main.c:734 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "Gebruik: %s [opties] -f programmabestand [--] bestand...\n" -#: main.c:737 +#: main.c:736 #, 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:742 +#: main.c:741 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "\tPOSIX-opties:\t\tEquivalente GNU-opties: (standaard)\n" -#: main.c:743 +#: main.c:742 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f programmabestand\t--file=programmabestand\n" -#: main.c:744 +#: main.c:743 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F veldscheidingsteken\t--field-separator=veldscheidingsteken\n" -#: main.c:745 +#: main.c:744 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:746 +#: main.c:745 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "\tKorte opties:\t\tEquivalente GNU-opties: (uitbreidingen)\n" -#: main.c:747 +#: main.c:746 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:748 +#: main.c:747 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:749 +#: main.c:748 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:750 +#: main.c:749 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[bestand]\t\t--dump-variables[=bestand]\n" -#: main.c:751 +#: main.c:750 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'programmatekst'\t--source='programmatekst'\n" -#: main.c:752 +#: main.c:751 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E bestand\t\t--exec=bestand\n" -#: main.c:753 +#: main.c:752 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:754 +#: main.c:753 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:755 +#: main.c:754 msgid "\t-L [fatal]\t\t--lint[=fatal]\n" msgstr "\t-L [fataal]\t\t--lint[=fataal]\n" -#: main.c:756 +#: main.c:755 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:757 +#: main.c:756 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:758 +#: main.c:757 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:759 +#: main.c:758 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[bestand]\t\t--profile[=bestand]\n" -#: main.c:760 +#: main.c:759 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:761 +#: main.c:760 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:763 +#: main.c:762 msgid "\t-R file\t\t\t--command=file\n" msgstr "\t-R bestand\t\t\t--command=bestand\n" -#: main.c:764 +#: main.c:763 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:765 +#: main.c:764 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:766 +#: main.c:765 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:768 +#: main.c:767 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t\t--nostalgia\n" -#: main.c:771 +#: main.c:770 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t\t--parsedebug\n" @@ -1815,7 +1818,7 @@ #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:780 +#: main.c:779 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -1828,7 +1831,7 @@ "Meld fouten in de vertaling aan .\n" "\n" -#: main.c:784 +#: main.c:783 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -1838,7 +1841,7 @@ "Standaard leest het van standaardinvoer en schrijft naar standaarduitvoer.\n" "\n" -#: main.c:788 +#: main.c:787 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -1848,7 +1851,7 @@ "\tgawk '{ som += $1 }; END { print som }' bestand\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:808 +#: main.c:807 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -1866,7 +1869,7 @@ "uitgegeven door de Free Software Foundation, naar keuze ofwel onder\n" "versie 3 of onder een nieuwere versie van die licentie.\n" -#: main.c:816 +#: main.c:815 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" @@ -1880,7 +1883,7 @@ "Zie de GNU General Public License voor meer details.\n" "\n" -#: main.c:822 +#: main.c:821 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" @@ -1889,16 +1892,16 @@ "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:857 +#: main.c:856 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft maakt van FS geen tab in POSIX-awk" -#: main.c:1091 +#: main.c:1090 #, c-format msgid "unknown value for field spec: %d\n" msgstr "onbekende waarde voor veldspecificatie: %d\n" -#: main.c:1152 +#: main.c:1171 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -1907,57 +1910,52 @@ "%s: argument '%s' van '-v' is niet van de vorm 'var=waarde'\n" "\n" -#: main.c:1178 +#: main.c:1197 #, c-format msgid "`%s' is not a legal variable name" msgstr "'%s' is geen geldige variabelenaam" -#: main.c:1181 +#: main.c:1200 #, 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:1185 -#, fuzzy, c-format +#: main.c:1204 +#, c-format msgid "cannot use gawk builtin `%s' as variable name" -msgstr "extension: kan in gawk ingebouwde '%s' niet als functienaam gebruiken" +msgstr "kan in gawk ingebouwde '%s' niet als variabelenaam gebruiken" -#: main.c:1190 -#, fuzzy, c-format +#: main.c:1209 +#, c-format msgid "cannot use function `%s' as variable name" -msgstr "kan functienaam '%s' niet als variabele of array gebruiken" +msgstr "kan functie '%s' niet als variabelenaam gebruiken" -#: main.c:1243 +#: main.c:1262 msgid "floating point exception" -msgstr "drijvende-komma-berekeningsfout" +msgstr "drijvendekomma-berekeningsfout" -#: main.c:1250 +#: main.c:1269 msgid "fatal error: internal error" msgstr "fatale fout: **interne fout**" -#: main.c:1265 +#: main.c:1284 msgid "fatal error: internal error: segfault" msgstr "fatale fout: **interne fout**: segmentatiefout" -#: main.c:1277 +#: main.c:1296 msgid "fatal error: internal error: stack overflow" msgstr "fatale fout: **interne fout**: stack is vol" -#: main.c:1327 +#: main.c:1346 #, c-format msgid "no pre-opened fd %d" msgstr "geen reeds-geopende bestandsdescriptor %d" -#: main.c:1334 +#: main.c:1353 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "kan /dev/null niet openen voor bestandsdescriptor %d" -#: main.c:1357 main.c:1366 -#, c-format -msgid "could not find groups: %s" -msgstr "kan groepen niet vinden: %s" - #: msg.c:63 #, c-format msgid "cmd. line:" @@ -2050,12 +2048,12 @@ msgid "internal error: %s with null vname" msgstr "**interne fout**: %s heeft een lege 'vname'" -#: profile.c:938 +#: profile.c:952 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawk-profiel, gemaakt op %s\n" -#: profile.c:1317 +#: profile.c:1331 #, c-format msgid "" "\n" @@ -2064,96 +2062,103 @@ "\n" "\t# Functies, alfabetisch geordend\n" -#: profile.c:1356 +#: profile.c:1370 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str(): onbekend omleidingstype %d" -#: re.c:572 +#: re.c:573 #, c-format -msgid "range of the form `[%c-%c]' is locale dependant" +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:600 #, 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 "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" + #~ msgid "attempt to use array in a scalar context" #~ msgstr "array wordt gebruikt in een scalaire context" diff -urN gawk-4.0.0/po/pl.po gawk-4.0.1/po/pl.po --- gawk-4.0.0/po/pl.po 2011-06-23 09:46:20.000000000 +0300 +++ gawk-4.0.1/po/pl.po 2012-03-28 22:03:47.000000000 +0200 @@ -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 , 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011. +# Wojciech Polak , 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012. # additional help by Sergey Poznyakoff , 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-06-23 09:46+0300\n" -"PO-Revision-Date: 2011-05-14 11:41-0400\n" +"POT-Creation-Date: 2012-03-28 22:03+0200\n" +"PO-Revision-Date: 2012-02-04 19:17+0100\n" "Last-Translator: Wojciech Polak \n" "Language-Team: Polish \n" "Language: pl\n" @@ -44,9 +44,9 @@ 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:81 builtin.c:1381 builtin.c:1423 -#: builtin.c:1436 builtin.c:1851 builtin.c:1863 eval.c:1135 eval.c:1139 -#: eval.c:1473 eval.c:1720 +#: array.c:302 array.c:707 builtin.c:84 builtin.c:1385 builtin.c:1427 +#: builtin.c:1440 builtin.c:1859 builtin.c:1871 eval.c:1135 eval.c:1139 +#: eval.c:1495 eval.c:1812 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "próba użycia tablicy `%s' w kontekÅ›cie skalaru" @@ -66,7 +66,7 @@ msgid "delete: index `%s' not in array `%s'" msgstr "delete: indeks `%s' nie jest w tablicy `%s'" -#: array.c:734 eval.c:1773 +#: array.c:734 eval.c:1865 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "próba użycia skalaru `%s[\"%.*s\"]' jako tablicy" @@ -136,12 +136,12 @@ msgstr "" "asorti: nie można użyć podtablicy drugiego argumentu dla pierwszego argumentu" -#: array.c:1659 +#: array.c:1655 #, c-format msgid "`%s' is invalid as a function name" msgstr "nieprawidÅ‚owa nazwa funkcji `%s'" -#: array.c:1663 +#: array.c:1659 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "funkcja porównujÄ…ca w sortowaniu `%s' nie zostaÅ‚a zdefiniowna" @@ -185,350 +185,349 @@ msgid "duplicate `default' detected in switch body" msgstr "wykryto powielony `default' w ciele switch" -#: awkgram.y:811 +#: awkgram.y:809 msgid "`break' is not allowed outside a loop or switch" msgstr "instrukcja `break' poza pÄ™tlÄ… lub switch'em jest niedozwolona" -#: awkgram.y:820 +#: awkgram.y:818 msgid "`continue' is not allowed outside a loop" msgstr "instrukcja `continue' poza pÄ™tlÄ… jest niedozwolona" -#: awkgram.y:830 +#: awkgram.y:828 #, c-format msgid "`next' used in %s action" msgstr "`next' użyty w akcji %s" -#: awkgram.y:838 +#: awkgram.y:836 msgid "`nextfile' is a gawk extension" msgstr "`nextfile' jest rozszerzeniem gawk" -#: awkgram.y:843 +#: awkgram.y:841 #, c-format msgid "`nextfile' used in %s action" msgstr "`nextfile' użyty w akcji %s" -#: awkgram.y:867 +#: awkgram.y:865 msgid "`return' used outside function context" msgstr "`return' użyty poza kontekstem funkcji" -#: awkgram.y:927 +#: awkgram.y:925 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" "zwykÅ‚y `print' w reguÅ‚ach BEGIN lub END powinien prawdopodobnie być jako " "`print \"\"'" -#: awkgram.y:997 awkgram.y:1001 awkgram.y:1025 +#: awkgram.y:995 awkgram.y:999 awkgram.y:1023 msgid "`delete array' is a gawk extension" msgstr "`delete tablica' jest rozszerzeniem gawk" -#: awkgram.y:1021 +#: awkgram.y:1019 msgid "`delete(array)' is a non-portable tawk extension" msgstr "`delete(tablica)' jest nieprzenoÅ›nym rozszerzeniem tawk" -#: awkgram.y:1137 +#: awkgram.y:1135 msgid "multistage two-way pipelines don't work" msgstr "wieloetapowe dwukierunkowe linie potokowe nie dziaÅ‚ajÄ…" -#: awkgram.y:1240 +#: awkgram.y:1238 msgid "regular expression on right of assignment" msgstr "wyrażanie regularne po prawej stronie przypisania" -#: awkgram.y:1251 +#: awkgram.y:1249 msgid "regular expression on left of `~' or `!~' operator" msgstr "wyrażenie regularne po lewej stronie operatora `~' lub `!~'" -#: awkgram.y:1267 awkgram.y:1421 +#: awkgram.y:1265 awkgram.y:1419 msgid "old awk does not support the keyword `in' except after `for'" msgstr "" "stary awk nie wspiera sÅ‚owa kluczowego `in', z wyjÄ…tkiem po sÅ‚owie `for'" -#: awkgram.y:1277 +#: awkgram.y:1275 msgid "regular expression on right of comparison" msgstr "wyrażenie regularne po prawej stronie porównania" -#: awkgram.y:1396 +#: awkgram.y:1394 #, c-format msgid "`getline var' invalid inside `%s' rule" msgstr "nieprawidÅ‚owy `getline var' wewnÄ…trz reguÅ‚y `%s'" -#: awkgram.y:1399 eval.c:2409 +#: awkgram.y:1397 eval.c:2504 #, c-format msgid "`getline' invalid inside `%s' rule" msgstr "nieprawidÅ‚owy `getline' wewnÄ…trz reguÅ‚y `%s'" -#: awkgram.y:1404 +#: awkgram.y:1402 msgid "non-redirected `getline' undefined inside END action" msgstr "" "komenda `getline' bez przekierowania nie jest zdefiniowana wewnÄ…trz akcji END" -#: awkgram.y:1423 +#: awkgram.y:1421 msgid "old awk does not support multidimensional arrays" msgstr "stary awk nie wspiera wielowymiarowych tablic" -#: awkgram.y:1519 +#: awkgram.y:1517 msgid "call of `length' without parentheses is not portable" msgstr "wywoÅ‚anie `length' bez nawiasów jest nieprzenoÅ›ne" -#: awkgram.y:1582 +#: awkgram.y:1580 msgid "indirect function calls are a gawk extension" msgstr "poÅ›rednie wywoÅ‚ania funkcji sÄ… rozszerzeniem gawk" -#: awkgram.y:1595 +#: awkgram.y:1593 #, c-format msgid "can not use special variable `%s' for indirect function call" msgstr "" "nie można użyć specjalnej zmiennej `%s' do poÅ›redniego wywoÅ‚ania funkcji" -#: awkgram.y:1673 +#: awkgram.y:1671 msgid "invalid subscript expression" msgstr "nieprawidÅ‚owe wyrażenie indeksowe" -#: awkgram.y:1713 +#: awkgram.y:1711 msgid "use of non-array as array" msgstr "użycie nie-tablicy jako tablicy" -#: awkgram.y:1977 awkgram.y:1997 msg.c:98 +#: awkgram.y:1975 awkgram.y:1995 msg.c:98 msgid "warning: " msgstr "ostrzeżenie: " -#: awkgram.y:1995 msg.c:130 +#: awkgram.y:1993 msg.c:130 msgid "fatal: " msgstr "fatalny błąd: " -#: awkgram.y:2045 +#: awkgram.y:2043 msgid "unexpected newline or end of string" msgstr "niespodziewany znak nowego wiersza lub koÅ„ca Å‚aÅ„cucha" -#: awkgram.y:2301 awkgram.y:2359 awkgram.y:2543 +#: awkgram.y:2300 awkgram.y:2358 awkgram.y:2542 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "nie można otworzyć pliku źródÅ‚owego `%s' do czytania (%s)" -#: awkgram.y:2302 awkgram.y:2360 builtin.c:119 +#: awkgram.y:2301 awkgram.y:2359 builtin.c:122 msgid "reason unknown" msgstr "nieznany powód" -#: awkgram.y:2318 +#: awkgram.y:2317 #, c-format msgid "already included source file `%s'" msgstr "plik źródÅ‚owy `%s' jest już załączony" -#: awkgram.y:2344 +#: awkgram.y:2343 msgid "@include is a gawk extension" msgstr "@include jest rozszerzeniem gawk" -#: awkgram.y:2350 +#: awkgram.y:2349 msgid "empty filename after @include" msgstr "pusta nazwa pliku po @include" -#: awkgram.y:2495 +#: awkgram.y:2494 msgid "empty program text on command line" msgstr "pusty tekst programu w linii poleceÅ„" -#: awkgram.y:2610 +#: awkgram.y:2609 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "nie można otworzyć pliku źródÅ‚owego `%s' (%s)" -#: awkgram.y:2621 +#: awkgram.y:2620 #, c-format msgid "source file `%s' is empty" msgstr "plik źródÅ‚owy `%s' jest pusty" -#: awkgram.y:2806 +#: awkgram.y:2797 msgid "source file does not end in newline" msgstr "plik źródÅ‚owy nie posiada na koÅ„cu znaku nowego wiersza" -#: awkgram.y:2883 +#: awkgram.y:2900 msgid "unterminated regexp ends with `\\' at end of file" msgstr "" "niezakoÅ„czone prawidÅ‚owo wyrażenie regularne koÅ„czy siÄ™ znakiem `\\' na " "koÅ„cu pliku" -#: awkgram.y:2907 +#: awkgram.y:2924 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "%s: %d: modyfikator wyrażenia regularnego `/.../%c' tawk nie dziaÅ‚a w gawk" -#: awkgram.y:2911 +#: awkgram.y:2928 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "modyfikator wyrażenia regularnego `/.../%c' tawk nie dziaÅ‚a w gawk" -#: awkgram.y:2918 +#: awkgram.y:2935 msgid "unterminated regexp" msgstr "niezakoÅ„czone wyrażenie regularne" -#: awkgram.y:2922 +#: awkgram.y:2939 msgid "unterminated regexp at end of file" msgstr "niezakoÅ„czone wyrażenie regularne na koÅ„cu pliku" -#: awkgram.y:2981 +#: awkgram.y:2998 msgid "use of `\\ #...' line continuation is not portable" msgstr "użycie `\\ #...' kontynuacji linii nie jest przenoÅ›ne" -#: awkgram.y:2997 +#: awkgram.y:3014 msgid "backslash not last character on line" msgstr "backslash nie jest ostatnim znakiem w wierszu" -#: awkgram.y:3058 +#: awkgram.y:3075 msgid "POSIX does not allow operator `**='" msgstr "POSIX nie zezwala na operator `**='" -#: awkgram.y:3060 +#: awkgram.y:3077 msgid "old awk does not support operator `**='" msgstr "stary awk nie wspiera operatora `**='" -#: awkgram.y:3069 +#: awkgram.y:3086 msgid "POSIX does not allow operator `**'" msgstr "POSIX nie zezwala na operator `**'" -#: awkgram.y:3071 +#: awkgram.y:3088 msgid "old awk does not support operator `**'" msgstr "stary awk nie wspiera operatora `**'" -#: awkgram.y:3106 +#: awkgram.y:3123 msgid "operator `^=' is not supported in old awk" msgstr "operator `^=' nie jest wspierany w starym awk" -#: awkgram.y:3114 +#: awkgram.y:3131 msgid "operator `^' is not supported in old awk" msgstr "operator `^' nie jest wspierany w starym awk" -#: awkgram.y:3207 awkgram.y:3223 +#: awkgram.y:3224 awkgram.y:3240 msgid "unterminated string" msgstr "niezakoÅ„czony Å‚aÅ„cuch" -#: awkgram.y:3419 +#: awkgram.y:3436 #, c-format msgid "invalid char '%c' in expression" msgstr "nieprawidÅ‚owy znak '%c' w wyrażeniu" -#: awkgram.y:3466 +#: awkgram.y:3483 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s' jest rozszerzeniem gawk" -#: awkgram.y:3471 +#: awkgram.y:3488 #, c-format msgid "`%s' is a Bell Labs extension" msgstr "`%s' jest rozszerzeniem Bell Labs" -#: awkgram.y:3476 +#: awkgram.y:3493 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX nie zezwala na `%s'" -#: awkgram.y:3484 +#: awkgram.y:3501 #, c-format msgid "`%s' is not supported in old awk" msgstr "`%s' nie jest wspierany w starym awk" -#: awkgram.y:3551 +#: awkgram.y:3568 msgid "`goto' considered harmful!\n" msgstr "`goto' uważane za szkodliwe!\n" -#: awkgram.y:3604 +#: awkgram.y:3619 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d jest nieprawidÅ‚owe jako liczba argumentów dla %s" -#: awkgram.y:3639 awkgram.y:3642 -msgid "match: third argument is a gawk extension" -msgstr "match: trzeci argument jest rozszerzeniem gawk" - -#: awkgram.y:3670 +#: awkgram.y:3654 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "" "%s: literaÅ‚ Å‚aÅ„cuchowy jako ostatni argument podstawienia nie ma żadnego " "efektu" -#: awkgram.y:3675 +#: awkgram.y:3659 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s trzeci parametr nie jest zmiennym obiektem" -#: awkgram.y:3761 awkgram.y:3764 +#: awkgram.y:3732 awkgram.y:3735 +msgid "match: third argument is a gawk extension" +msgstr "match: trzeci argument jest rozszerzeniem gawk" + +#: awkgram.y:3789 awkgram.y:3792 msgid "close: second argument is a gawk extension" msgstr "close: drugi argument jest rozszerzeniem gawk" -#: awkgram.y:3776 +#: awkgram.y:3804 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "nieprawidÅ‚owe użycie dcgettext(_\"...\"): usuÅ„ znak podkreÅ›lenia" -#: awkgram.y:3791 +#: awkgram.y:3819 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "nieprawidÅ‚owe użycie dcngettext(_\"...\"): usuÅ„ znak podkreÅ›lenia" -#: awkgram.y:3883 +#: awkgram.y:3911 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funkcja `%s': parametr #%d, `%s', powiela parametr #%d" -#: awkgram.y:3925 +#: awkgram.y:3953 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funkcja `%s': parametr `%s' zasÅ‚ania globalnÄ… zmiennÄ…" -#: awkgram.y:4083 +#: awkgram.y:4111 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "nie można otworzyć `%s' do zapisu (%s)" -#: awkgram.y:4084 -#, fuzzy +#: awkgram.y:4112 msgid "sending variable list to standard error" -msgstr "wysyÅ‚anie profilu na standardowe wyjÅ›cie diagnostyczne" +msgstr "wysyÅ‚anie listy zmiennych na standardowe wyjÅ›cie diagnostyczne" -#: awkgram.y:4090 +#: awkgram.y:4118 #, c-format msgid "%s: close failed (%s)" msgstr "%s: zamkniÄ™cie nie powiodÅ‚o siÄ™ (%s)" -#: awkgram.y:4142 +#: awkgram.y:4170 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() wywoÅ‚ana podwójnie!" -#: awkgram.y:4148 +#: awkgram.y:4176 msgid "there were shadowed variables." msgstr "wystÄ…piÅ‚y przykryte zmienne." -#: awkgram.y:4178 +#: awkgram.y:4206 #, 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:4182 +#: awkgram.y:4210 #, 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:4198 +#: awkgram.y:4226 #, c-format msgid "function name `%s' previously defined" msgstr "nazwa funkcji `%s' zostaÅ‚a zdefiniowana poprzednio" -#: awkgram.y:4366 awkgram.y:4372 +#: awkgram.y:4394 awkgram.y:4400 #, c-format msgid "function `%s' called but never defined" msgstr "funkcja `%s' zostaÅ‚a wywoÅ‚ana, ale nigdy nie zostaÅ‚a zdefiniowana" -#: awkgram.y:4375 +#: awkgram.y:4403 #, c-format msgid "function `%s' defined but never called directly" msgstr "" "funkcja `%s' zostaÅ‚a zdefiniowana, ale nigdy nie zostaÅ‚a wywoÅ‚ana " "bezpoÅ›rednio" -#: awkgram.y:4407 +#: awkgram.y:4435 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "staÅ‚e wyrażenie regularne dla parametru #%d daje wartość logicznÄ…" -#: awkgram.y:4516 +#: awkgram.y:4544 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -538,233 +537,233 @@ "`(',\n" "lub użyta jako zmienna lub jako tablica" -#: awkgram.y:4763 eval.c:1964 +#: awkgram.y:4791 eval.c:2056 msgid "division by zero attempted" msgstr "próba dzielenia przez zero" -#: awkgram.y:4772 eval.c:1980 +#: awkgram.y:4800 eval.c:2072 #, c-format msgid "division by zero attempted in `%%'" msgstr "próba dzielenia przez zero w `%%'" -#: builtin.c:117 +#: builtin.c:120 #, c-format msgid "%s to \"%s\" failed (%s)" msgstr "%s do \"%s\" nie powiódÅ‚ siÄ™ (%s)" -#: builtin.c:118 +#: builtin.c:121 msgid "standard output" msgstr "standardowe wyjÅ›cie" -#: builtin.c:132 +#: builtin.c:135 msgid "exp: received non-numeric argument" msgstr "exp: otrzymano argument nie bÄ™dÄ…cy liczbÄ…" -#: builtin.c:138 +#: builtin.c:141 #, c-format msgid "exp: argument %g is out of range" msgstr "exp: argument %g jest poza zasiÄ™giem" -#: builtin.c:197 +#: builtin.c:200 #, 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:200 +#: builtin.c:203 #, 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:212 +#: builtin.c:215 #, 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:330 +#: builtin.c:333 msgid "index: received non-string first argument" msgstr "index: otrzymano pierwszy argument, który nie jest Å‚aÅ„cuchem" -#: builtin.c:332 +#: builtin.c:335 msgid "index: received non-string second argument" msgstr "index: otrzymano drugi argument, który nie jest Å‚aÅ„cuchem" -#: builtin.c:454 +#: builtin.c:457 msgid "int: received non-numeric argument" msgstr "int: otrzymano argument, który nie jest liczbÄ…" -#: builtin.c:490 +#: builtin.c:493 msgid "length: received array argument" msgstr "length: otrzymano argument, który jest tablicÄ…" -#: builtin.c:493 +#: builtin.c:496 msgid "`length(array)' is a gawk extension" msgstr "`length(tablica)' jest rozszerzeniem gawk" -#: builtin.c:501 +#: builtin.c:504 msgid "length: received non-string argument" msgstr "length: otrzymano argument, który nie jest Å‚aÅ„cuchem" -#: builtin.c:532 +#: builtin.c:535 msgid "log: received non-numeric argument" msgstr "log: otrzymano argument, który nie jest liczbÄ…" -#: builtin.c:535 +#: builtin.c:538 #, c-format msgid "log: received negative argument %g" msgstr "log: otrzymano ujemny argument %g" -#: builtin.c:691 builtin.c:696 +#: builtin.c:694 builtin.c:699 msgid "fatal: must use `count$' on all formats or none" msgstr "fatal: należy użyć `count$' we wszystkich formatach lub nic" -#: builtin.c:758 +#: builtin.c:762 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "szerokość pola jest ignorowana dla specyfikatora `%%'" -#: builtin.c:760 +#: builtin.c:764 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "precyzja jest ignorowana dla specyfikatora `%%'" -#: builtin.c:762 +#: builtin.c:766 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "szerokość pola i precyzja sÄ… ignorowane dla specyfikatora `%%'" -#: builtin.c:813 +#: builtin.c:817 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal: `$' jest niedozwolony w formatach awk" -#: builtin.c:822 +#: builtin.c:826 msgid "fatal: arg count with `$' must be > 0" msgstr "fatal: argument count z `$' musi być > 0" -#: builtin.c:826 +#: builtin.c:830 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "" "fatal: argument count %ld wiÄ™kszy niż caÅ‚kowita suma argumentów dostarczonych" -#: builtin.c:830 +#: builtin.c:834 msgid "fatal: `$' not permitted after period in format" msgstr "fatal: `$' jest niedozwolony po kropce w formacie" -#: builtin.c:846 +#: builtin.c:850 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "fatal: brak `$' dla pozycyjnej szerokoÅ›ci pola lub precyzji" -#: builtin.c:917 +#: builtin.c:921 msgid "`l' is meaningless in awk formats; ignored" msgstr "`l' jest bezsensowny w formatach awk; zignorowany" -#: builtin.c:921 +#: builtin.c:925 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fatal: `l' jest niedozwolony w formatach POSIX awk" -#: builtin.c:934 +#: builtin.c:938 msgid "`L' is meaningless in awk formats; ignored" msgstr "`L' jest bezsensowny w formatach awk; zignorowany" -#: builtin.c:938 +#: builtin.c:942 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "fatal: `L' jest niedozwolony w formatach POSIX awk" -#: builtin.c:951 +#: builtin.c:955 msgid "`h' is meaningless in awk formats; ignored" msgstr "`h' jest bezsensowny w formatach awk; zignorowany" -#: builtin.c:955 +#: builtin.c:959 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fatal: `h' jest niedozwolony w formatach POSIX awk" -#: builtin.c:1268 +#: builtin.c:1272 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: wartość %g jest poza zasiÄ™giem dla formatu `%%%c'" -#: builtin.c:1328 +#: builtin.c:1332 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "pominiÄ™cie nieznanego formatu specyfikatora znaku `%c': nie skonwertowano " "argumentu" -#: builtin.c:1333 +#: builtin.c:1337 msgid "fatal: not enough arguments to satisfy format string" msgstr "" "fatal: brak wystarczajÄ…cej liczby argumentów, aby zaspokoić Å‚aÅ„cuch " "formatujÄ…cy" -#: builtin.c:1335 +#: builtin.c:1339 msgid "^ ran out for this one" msgstr "zabrakÅ‚o ^" -#: builtin.c:1342 +#: builtin.c:1346 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: specyfikator formatu nie posiada kontrolnej litery" -#: builtin.c:1345 +#: builtin.c:1349 msgid "too many arguments supplied for format string" msgstr "zbyt dużo podanych argumentów w Å‚aÅ„cuchu formatujÄ…cym" -#: builtin.c:1419 builtin.c:1430 +#: builtin.c:1423 builtin.c:1434 msgid "printf: no arguments" msgstr "printf: brak argumentów" -#: builtin.c:1471 +#: builtin.c:1475 msgid "sqrt: received non-numeric argument" msgstr "sqrt: otrzymano argument, który nie jest liczbÄ…" -#: builtin.c:1475 +#: builtin.c:1479 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: wywoÅ‚ana z ujemnym argumentem %g" -#: builtin.c:1499 +#: builtin.c:1503 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: dÅ‚ugość %g nie jest >= 1" -#: builtin.c:1501 +#: builtin.c:1505 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: dÅ‚ugość %g nie jest >= 0" -#: builtin.c:1508 +#: builtin.c:1512 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: dÅ‚ugość %g, która nie jest liczbÄ… caÅ‚kowitÄ…, zostanie obciÄ™ta" -#: builtin.c:1513 +#: builtin.c:1517 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "substr: dÅ‚ugość %g zbyt duża dla indeksu Å‚aÅ„cucha, obcinanie do %g" -#: builtin.c:1525 +#: builtin.c:1529 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: poczÄ…tkowy indeks %g jest nieprawidÅ‚owy, nastÄ…pi użycie 1" -#: builtin.c:1530 +#: builtin.c:1534 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "" "substr: poczÄ…tkowy indeks %g, który nie jest liczbÄ… caÅ‚kowitÄ…, zostanie " "obciÄ™ty" -#: builtin.c:1555 +#: builtin.c:1559 msgid "substr: source string is zero length" msgstr "substr: Å‚aÅ„cuch źródÅ‚owy ma zerowÄ… dÅ‚ugość" -#: builtin.c:1571 +#: builtin.c:1575 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: poczÄ…tkowy indeks %g leży poza koÅ„cem Å‚aÅ„cucha" -#: builtin.c:1579 +#: builtin.c:1583 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -772,222 +771,226 @@ "substr: dÅ‚ugość %g zaczynajÄ…c od %g przekracza dÅ‚ugość pierwszego argumentu " "(%lu)" -#: builtin.c:1652 +#: builtin.c:1657 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" "strftime: wartość formatu w PROCINFO[\"strftime\"] posiada typ numeryczny" -#: builtin.c:1675 +#: builtin.c:1680 msgid "strftime: received non-numeric second argument" msgstr "strftime: otrzymano drugi argument, który nie jest liczbÄ…" -#: builtin.c:1682 +#: builtin.c:1683 +msgid "strftime: second argument less than 0 or too big for time_t" +msgstr "strftime: drugi argument mniejszy od 0 lub zbyt duży dla time_t" + +#: builtin.c:1690 msgid "strftime: received non-string first argument" msgstr "strftime: otrzymano pierwszy argument, który nie jest Å‚aÅ„cuchem" -#: builtin.c:1688 +#: builtin.c:1696 msgid "strftime: received empty format string" msgstr "strftime: otrzymano pusty Å‚aÅ„cuch formatujÄ…cy" -#: builtin.c:1754 +#: builtin.c:1762 msgid "mktime: received non-string argument" msgstr "mktime: otrzymano argument, który nie jest Å‚aÅ„cuchem" -#: builtin.c:1771 +#: builtin.c:1779 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: przynajmniej jedna z wartoÅ›ci jest poza domyÅ›lnym zakresem" -#: builtin.c:1806 +#: builtin.c:1814 msgid "'system' function not allowed in sandbox mode" msgstr "funkcja 'system' nie jest dozwolona w trybie piaskownicy" -#: builtin.c:1811 +#: builtin.c:1819 msgid "system: received non-string argument" msgstr "system: otrzymano argument, który nie jest Å‚aÅ„cuchem" -#: builtin.c:1866 eval.c:1165 eval.c:1698 eval.c:1711 +#: builtin.c:1874 eval.c:1159 eval.c:1790 eval.c:1803 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "odwoÅ‚anie do niezainicjowanej zmiennej `%s'" -#: builtin.c:1933 +#: builtin.c:1941 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "odwoÅ‚anie do niezainicjowanego pola `$%d'" -#: builtin.c:2020 +#: builtin.c:2028 msgid "tolower: received non-string argument" msgstr "tolower: otrzymano argument, który nie jest Å‚aÅ„cuchem" -#: builtin.c:2054 +#: builtin.c:2062 msgid "toupper: received non-string argument" msgstr "toupper: otrzymano argument, który nie jest Å‚aÅ„cuchem" -#: builtin.c:2090 +#: builtin.c:2098 msgid "atan2: received non-numeric first argument" msgstr "atan2: otrzymano pierwszy argument, który nie jest liczbÄ…" -#: builtin.c:2092 +#: builtin.c:2100 msgid "atan2: received non-numeric second argument" msgstr "atan2: otrzymano drugi argument, który nie jest liczbÄ…" -#: builtin.c:2111 +#: builtin.c:2119 msgid "sin: received non-numeric argument" msgstr "sin: otrzymano argument, który nie jest liczbÄ…" -#: builtin.c:2127 +#: builtin.c:2135 msgid "cos: received non-numeric argument" msgstr "cos: otrzymano argument, który nie jest liczbÄ…" -#: builtin.c:2180 +#: builtin.c:2188 msgid "srand: received non-numeric argument" msgstr "srand: otrzymano argument, który nie jest liczbÄ…" -#: builtin.c:2211 +#: builtin.c:2219 msgid "match: third argument is not an array" msgstr "match: otrzymano trzeci argument, który nie jest tablicÄ…" -#: builtin.c:2718 +#: builtin.c:2483 msgid "gensub: third argument of 0 treated as 1" msgstr "gensub: trzeci argument 0 potraktowany jako 1" -#: builtin.c:2757 +#: builtin.c:2776 msgid "lshift: received non-numeric first argument" msgstr "lshift: otrzymano pierwszy argument, który nie jest liczbÄ…" -#: builtin.c:2759 +#: builtin.c:2778 msgid "lshift: received non-numeric second argument" msgstr "lshift: otrzymano drugi argument, który nie jest liczbÄ…" -#: builtin.c:2765 +#: builtin.c:2784 #, c-format msgid "lshift(%lf, %lf): negative values will give strange results" msgstr "lshift(%lf, %lf): ujemne wartoÅ›ci spowodujÄ… dziwne wyniki" -#: builtin.c:2767 +#: builtin.c:2786 #, c-format msgid "lshift(%lf, %lf): fractional values will be truncated" msgstr "lshift(%lf, %lf): uÅ‚amkowe wartoÅ›ci zostanÄ… obciÄ™te" -#: builtin.c:2769 +#: builtin.c:2788 #, c-format msgid "lshift(%lf, %lf): too large shift value will give strange results" msgstr "" "lshift(%lf, %lf): zbyt duża wartość przesuniÄ™cia spowoduje dziwne wyniki" -#: builtin.c:2794 +#: builtin.c:2813 msgid "rshift: received non-numeric first argument" msgstr "rshift: otrzymano pierwszy argument, który nie jest liczbÄ…" -#: builtin.c:2796 +#: builtin.c:2815 msgid "rshift: received non-numeric second argument" msgstr "rshift: otrzymano drugi argument, który nie jest liczbÄ…" -#: builtin.c:2802 +#: builtin.c:2821 #, c-format msgid "rshift(%lf, %lf): negative values will give strange results" msgstr "rshift(%lf, %lf): ujemne wartoÅ›ci spowodujÄ… dziwne wyniki" -#: builtin.c:2804 +#: builtin.c:2823 #, c-format msgid "rshift(%lf, %lf): fractional values will be truncated" msgstr "rshift(%lf, %lf): uÅ‚amkowe wartoÅ›ci zostanÄ… obciÄ™te" -#: builtin.c:2806 +#: builtin.c:2825 #, c-format msgid "rshift(%lf, %lf): too large shift value will give strange results" msgstr "" "rshift(%lf, %lf): zbyt duża wartość przesuniÄ™cia spowoduje dziwne wyniki" -#: builtin.c:2831 +#: builtin.c:2850 msgid "and: received non-numeric first argument" msgstr "and: otrzymano pierwszy argument, który nie jest liczbÄ…" -#: builtin.c:2833 +#: builtin.c:2852 msgid "and: received non-numeric second argument" msgstr "and: otrzymano drugi argument, który nie jest liczbÄ…" -#: builtin.c:2839 +#: builtin.c:2858 #, c-format msgid "and(%lf, %lf): negative values will give strange results" msgstr "and(%lf, %lf): ujemne wartoÅ›ci spowodujÄ… dziwne wyniki" -#: builtin.c:2841 +#: builtin.c:2860 #, c-format msgid "and(%lf, %lf): fractional values will be truncated" msgstr "and(%lf, %lf): uÅ‚amkowe wartoÅ›ci zostanÄ… obciÄ™te" -#: builtin.c:2866 +#: builtin.c:2885 msgid "or: received non-numeric first argument" msgstr "or: otrzymano pierwszy argument, który nie jest liczbÄ…" -#: builtin.c:2868 +#: builtin.c:2887 msgid "or: received non-numeric second argument" msgstr "or: otrzymano drugi argument, który nie jest liczbÄ…" -#: builtin.c:2874 +#: builtin.c:2893 #, c-format msgid "or(%lf, %lf): negative values will give strange results" msgstr "or(%lf, %lf): ujemne wartoÅ›ci spowodujÄ… dziwne wyniki" -#: builtin.c:2876 +#: builtin.c:2895 #, c-format msgid "or(%lf, %lf): fractional values will be truncated" msgstr "or(%lf, %lf): uÅ‚amkowe wartoÅ›ci zostanÄ… obciÄ™te" -#: builtin.c:2904 +#: builtin.c:2923 msgid "xor: received non-numeric first argument" msgstr "xor: otrzymano pierwszy argument, który nie jest liczbÄ…" -#: builtin.c:2906 +#: builtin.c:2925 msgid "xor: received non-numeric second argument" msgstr "xor: otrzymano drugi argument, który nie jest liczbÄ…" -#: builtin.c:2912 +#: builtin.c:2931 #, c-format msgid "xor(%lf, %lf): negative values will give strange results" msgstr "xor(%lf, %lf): ujemne wartoÅ›ci spowodujÄ… dziwne wyniki" -#: builtin.c:2914 +#: builtin.c:2933 #, c-format msgid "xor(%lf, %lf): fractional values will be truncated" msgstr "xor(%lf, %lf): uÅ‚amkowe wartoÅ›ci zostanÄ… obciÄ™te" -#: builtin.c:2938 builtin.c:2944 +#: builtin.c:2957 builtin.c:2963 msgid "compl: received non-numeric argument" msgstr "compl: otrzymano argument, który nie jest liczbÄ…" -#: builtin.c:2946 +#: builtin.c:2965 #, c-format msgid "compl(%lf): negative value will give strange results" msgstr "compl(%lf): ujemne wartoÅ›ci spowodujÄ… dziwne wyniki" -#: builtin.c:2948 +#: builtin.c:2967 #, c-format msgid "compl(%lf): fractional value will be truncated" msgstr "compl(%lf): uÅ‚amkowe wartoÅ›ci zostanÄ… obciÄ™te" -#: builtin.c:3117 +#: builtin.c:3136 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s' nie jest prawidÅ‚owÄ… kategoriÄ… lokalizacji" -#: eval.c:411 +#: eval.c:412 #, c-format msgid "unknown nodetype %d" msgstr "nieznany typ wÄ™zÅ‚a %d" -#: eval.c:422 eval.c:436 +#: eval.c:423 eval.c:437 #, c-format msgid "unknown opcode %d" msgstr "nieznany opcode %d" -#: eval.c:433 +#: eval.c:434 #, c-format msgid "opcode %s not an operator or keyword" msgstr "opcode %s nie jest operatorem ani sÅ‚owem kluczowym" -#: eval.c:487 +#: eval.c:488 msgid "buffer overflow in genflags2str" msgstr "przepeÅ‚nienie bufora w genflags2str" @@ -1024,124 +1027,129 @@ msgid "turning off `--lint' due to assignment to `LINT'" msgstr "wyłączenie `--lint' z powodu przypisania do `LINT'" -#: eval.c:1127 eval.c:1685 +#: 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:1155 -msgid "assignment is not allowed to result of builtin function" -msgstr "przypisanie do wyniku wbudowanej funkcji nie jest dozwolone" - -#: eval.c:1164 eval.c:1697 eval.c:1710 +#: eval.c:1158 eval.c:1789 eval.c:1802 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "odwoÅ‚anie do niezainicjowanego argumentu `%s'" -#: eval.c:1183 +#: eval.c:1177 msgid "attempt to field reference from non-numeric value" msgstr "próba odwoÅ‚ania do pola poprzez nienumerycznÄ… wartość" -#: eval.c:1185 +#: eval.c:1179 msgid "attempt to field reference from null string" msgstr "próba odwoÅ‚ania z zerowego Å‚aÅ„cucha" -#: eval.c:1191 +#: eval.c:1185 #, c-format msgid "attempt to access field %ld" msgstr "próba dostÄ™pu do pola %ld" -#: eval.c:1200 +#: eval.c:1194 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "odwoÅ‚anie do niezainicjowanego pola `$%ld'" -#: eval.c:1262 +#: eval.c:1256 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "" "funkcja `%s' zostaÅ‚a wywoÅ‚ana z wiÄ™kszÄ… iloÅ›ciÄ… argumentów niż zostaÅ‚o to " "zadeklarowane" -#: eval.c:1426 +#: eval.c:1437 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: niespodziewany typ `%s'" -#: eval.c:1510 +#: eval.c:1532 msgid "division by zero attempted in `/='" msgstr "próba dzielenia przez zero w `/='" -#: eval.c:1517 +#: eval.c:1539 #, c-format msgid "division by zero attempted in `%%='" msgstr "próba dzielenia przez zero w `%%='" -#: eval.c:1784 eval.c:2030 +#: 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 kontekÅ›cie skalaru" -#: eval.c:1815 +#: eval.c:1907 msgid "assignment used in conditional context" msgstr "przypisanie użyte w kontekÅ›cie warunkowym" -#: eval.c:1819 +#: eval.c:1911 msgid "statement has no effect" msgstr "instrukcja nie ma żadnego efektu" -#: eval.c:2233 +#: eval.c:2343 #, c-format msgid "for loop: array `%s' changed size from %ld to %ld during loop execution" msgstr "" "pÄ™tla for: tablica `%s' zmieniÅ‚a rozmiar z %ld do %ld podczas wykonywania " "pÄ™tli" -#: eval.c:2343 +#: eval.c:2458 #, c-format msgid "function called indirectly through `%s' does not exist" msgstr "poÅ›rednio wywoÅ‚ana funkcja poprzez `%s' nie istnieje" -#: eval.c:2355 +#: eval.c:2470 #, c-format msgid "function `%s' not defined" msgstr "funkcja `%s' nie zostaÅ‚a zdefiniowana" -#: eval.c:2416 +#: eval.c:2511 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "" "komenda `getline' bez przekierowania jest nieprawidÅ‚owa wewnÄ…trz reguÅ‚y `%s'" -#: eval.c:2477 +#: eval.c:2600 +#, c-format +msgid "error reading input file `%s': %s" +msgstr "błąd 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ć wywoÅ‚ana z wnÄ™trza reguÅ‚y `%s'" -#: eval.c:2532 +#: eval.c:2661 +msgid "`exit' cannot be called in the current context" +msgstr "instrukcja `exit' nie może być wywoÅ‚ana w tym kontekÅ›cie" + +#: eval.c:2700 #, c-format msgid "`next' cannot be called from a `%s' rule" msgstr "instrukcja `next' nie może być wywoÅ‚ana z wnÄ™trza reguÅ‚y `%s'" -#: eval.c:2599 +#: eval.c:2766 #, c-format msgid "Sorry, don't know how to interpret `%s'" msgstr "Niestety nie wiem jak zinterpretować `%s'" -#: ext.c:64 +#: ext.c:54 msgid "extensions are not allowed in sandbox mode" msgstr "rozszerzenia nie sÄ… dozwolone w trybie piaskownicy" -#: ext.c:70 ext.c:75 +#: ext.c:60 ext.c:65 msgid "`extension' is a gawk extension" msgstr "`extension' jest rozszerzeniem gawk" -#: ext.c:85 +#: ext.c:75 #, c-format msgid "fatal: extension: cannot open `%s' (%s)\n" msgstr "fatal: rozszerzenie: nie można otworzyć `%s' (%s)\n" -#: ext.c:94 +#: ext.c:84 #, c-format msgid "" "fatal: extension: library `%s': does not define " @@ -1150,67 +1158,67 @@ "fatal: rozszerzenie: biblioteka `%s': nie definiuje " "`plugin_is_GPL_compatible' (%s)\n" -#: ext.c:103 +#: ext.c:93 #, c-format msgid "fatal: extension: library `%s': cannot call function `%s' (%s)\n" msgstr "" "fatal: rozszerzenie: biblioteka `%s': nie można wywoÅ‚ać funkcji `%s' (%s)\n" -#: ext.c:137 +#: ext.c:127 msgid "extension: missing function name" msgstr "rozszerzenie: brakujÄ…ca nazwa funkcji" -#: ext.c:142 +#: ext.c:132 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "rozszerzenie: nieprawidÅ‚owy znak `%c' w nazwie funkcji `%s'" -#: ext.c:151 +#: ext.c:141 #, c-format msgid "extension: can't redefine function `%s'" msgstr "rozszerzenie: nie można zredefiniować funkcji `%s'" -#: ext.c:155 +#: ext.c:145 #, c-format msgid "extension: function `%s' already defined" msgstr "rozserzenie: funkcja `%s' zostaÅ‚a już zdefiniowana" -#: ext.c:160 +#: ext.c:150 #, c-format msgid "extension: function name `%s' previously defined" msgstr "rozserzenie: nazwa funkcji `%s' zostaÅ‚a zdefiniowana wczeÅ›niej" -#: ext.c:162 +#: ext.c:152 #, 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:156 #, 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:259 #, c-format msgid "function `%s' defined to take no more than %d argument(s)" msgstr "funkcja `%s' zdefiniowana aby pobrać nie wiÄ™cej niż %d argument(ów)" -#: ext.c:272 +#: ext.c:262 #, c-format msgid "function `%s': missing argument #%d" msgstr "funkcja `%s': brakuje #%d argumentu" -#: ext.c:289 +#: ext.c:279 #, 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:283 #, 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:296 msgid "Operation Not Supported" msgstr "Operacja nie jest wspierana" @@ -1218,172 +1226,167 @@ msgid "NF set to negative value" msgstr "NF ustawiony na wartość ujemnÄ…" -#: field.c:950 field.c:957 field.c:961 +#: field.c:951 field.c:958 field.c:962 msgid "split: fourth argument is a gawk extension" msgstr "split: czwarty argument jest rozszerzeniem gawk" -#: field.c:954 +#: field.c:955 msgid "split: fourth argument is not an array" msgstr "split: czwarty argument nie jest tablicÄ…" -#: field.c:968 +#: field.c:969 msgid "split: second argument is not an array" msgstr "split: drugi argument nie jest tablicÄ…" -#: field.c:972 +#: field.c:973 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:977 +#: field.c:978 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:980 +#: field.c:981 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:1009 +#: field.c:1010 msgid "split: null string for third arg is a gawk extension" msgstr "split: zerowy Å‚aÅ„cuch dla trzeciego argumentu jest rozszerzeniem gawk" -#: field.c:1049 +#: field.c:1050 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: czwarty argument nie jest tablicÄ…" -#: field.c:1054 +#: field.c:1055 msgid "patsplit: second argument is not an array" msgstr "patsplit: drugi argument nie jest tablicÄ…" -#: field.c:1060 +#: field.c:1061 msgid "patsplit: third argument must be non-null" msgstr "patsplit: trzeci argument nie może być pusty" -#: field.c:1064 +#: field.c:1065 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:1069 +#: field.c:1070 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:1072 +#: field.c:1073 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:1109 +#: field.c:1110 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "`FIELDWIDTHS' jest rozszerzeniem gawk" -#: field.c:1172 +#: field.c:1173 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "nieprawidÅ‚owa wartość FIELDWIDTHS, w pobliżu `%s'" -#: field.c:1245 +#: field.c:1246 msgid "null string for `FS' is a gawk extension" msgstr "zerowy Å‚aÅ„cuch dla `FS' jest rozszerzeniem gawk" -#: field.c:1249 +#: field.c:1250 msgid "old awk does not support regexps as value of `FS'" msgstr "stary awk nie wspiera wyrażeÅ„ regularnych jako wartoÅ›ci `FS'" -#: field.c:1368 +#: field.c:1369 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: błędna 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:282 +#: io.c:280 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "argument linii poleceÅ„ `%s' jest katalogiem: pominiÄ™to" -#: io.c:285 io.c:384 +#: io.c:283 io.c:385 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "nie można otworzyć pliku `%s' do czytania (%s)" -#: io.c:431 -#, c-format -msgid "error reading input file `%s': %s" -msgstr "błąd podczas czytania z pliku `%s': %s" - -#: io.c:500 +#: io.c:501 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "zamkniÄ™cie fd %d (`%s') nie powiodÅ‚o siÄ™ (%s)" -#: io.c:577 +#: io.c:578 msgid "redirection not allowed in sandbox mode" msgstr "przekierowanie nie jest dozwolone w trybie piaskownicy" -#: io.c:611 +#: io.c:612 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "wyrażenie w przekierowaniu `%s' ma tylko wartość numerycznÄ…" -#: io.c:617 +#: io.c:618 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "wyrażenie dla przekierowania `%s' ma zerowÄ… wartość Å‚aÅ„cucha" @@ -1493,7 +1496,7 @@ msgid "no explicit close of file `%s' provided" msgstr "brak jawnego zamkniÄ™cia pliku `%s'" -#: io.c:1129 io.c:1184 main.c:795 main.c:832 +#: io.c:1129 io.c:1184 main.c:794 main.c:831 #, c-format msgid "error writing standard output (%s)" msgstr "błąd podczas zapisu na standardowe wyjÅ›cie (%s)" @@ -1556,99 +1559,99 @@ msgid "could not open `%s', mode `%s'" msgstr "nie można otworzyć `%s', tryb `%s'" -#: io.c:1744 +#: io.c:1747 #, c-format msgid "close of master pty failed (%s)" msgstr "zamkniÄ™cie nadrzÄ™dnego pty nie powiodÅ‚o siÄ™ (%s)" -#: io.c:1746 io.c:1914 io.c:2071 +#: io.c:1749 io.c:1917 io.c:2074 #, c-format msgid "close of stdout in child failed (%s)" msgstr "" "zamkniÄ™cie standardowego wyjÅ›cia w procesie potomnym nie powiodÅ‚o siÄ™ (%s)" -#: io.c:1749 +#: io.c:1752 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" "przesuniÄ™cie podlegÅ‚ego pty na standardowe wyjÅ›cie w procesie potomnym nie " "powiodÅ‚o siÄ™ (dup: %s)" -#: io.c:1751 io.c:1919 +#: io.c:1754 io.c:1922 #, c-format msgid "close of stdin in child failed (%s)" msgstr "" "zamkniÄ™cie standardowego wejÅ›cia w procesie potomnym nie powiodÅ‚o siÄ™ (%s)" -#: io.c:1754 +#: io.c:1757 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" "przesuniÄ™cie podlegÅ‚ego pty na standardowe wejÅ›cie w procesie potomnym nie " "powiodÅ‚o siÄ™ (dup: %s)" -#: io.c:1756 io.c:1777 +#: io.c:1759 io.c:1780 #, c-format msgid "close of slave pty failed (%s)" msgstr "zamkniÄ™cie podlegÅ‚ego pty nie powiodÅ‚o siÄ™ (%s)" -#: io.c:1855 io.c:1917 io.c:2049 io.c:2074 +#: io.c:1858 io.c:1920 io.c:2052 io.c:2077 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" "przesuniÄ™cie potoku na standardowe wyjÅ›cie w procesie potomnym nie powiodÅ‚o " "siÄ™ (dup: %s)" -#: io.c:1862 io.c:1922 +#: io.c:1865 io.c:1925 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" "przesuniÄ™cie potoku na standardowe wejÅ›cie w procesie potomnym nie powiodÅ‚o " "siÄ™ (dup: %s)" -#: io.c:1882 io.c:2064 +#: io.c:1885 io.c:2067 msgid "restoring stdout in parent process failed\n" msgstr "" "odzyskanie standardowego wyjÅ›cia w procesie potomnym nie powiodÅ‚o siÄ™\n" -#: io.c:1890 +#: io.c:1893 msgid "restoring stdin in parent process failed\n" msgstr "" "odzyskanie standardowego wejÅ›cia w procesie potomnym nie powiodÅ‚o siÄ™\n" -#: io.c:1925 io.c:2076 io.c:2090 +#: io.c:1928 io.c:2079 io.c:2093 #, c-format msgid "close of pipe failed (%s)" msgstr "zamkniÄ™cie potoku nie powiodÅ‚o siÄ™ (%s)" -#: io.c:1970 +#: io.c:1973 msgid "`|&' not supported" msgstr "`|&' nie jest wspierany" -#: io.c:2036 +#: io.c:2039 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "nie można otworzyć potoku `%s' (%s)" -#: io.c:2084 +#: io.c:2087 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "nie można utworzyć procesu potomnego dla `%s' (fork: %s)" -#: io.c:2517 +#: io.c:2520 #, c-format msgid "data file `%s' is empty" msgstr "plik danych `%s' jest pusty" -#: io.c:2558 io.c:2566 +#: io.c:2561 io.c:2569 msgid "could not allocate more input memory" msgstr "nie można zarezerwować wiÄ™cej pamiÄ™ci wejÅ›ciowej" -#: io.c:3119 +#: io.c:3127 msgid "multicharacter value of `RS' is a gawk extension" msgstr "wieloznakowa wartość `RS' jest rozszerzeniem gawk" -#: io.c:3224 +#: io.c:3232 msgid "IPv6 communication is not supported" msgstr "Komunikacja IPv6 nie jest wspierana" @@ -1716,120 +1719,118 @@ msgid "no program text at all!" msgstr "brak tekstu programu!" -#: main.c:735 +#: main.c:734 #, 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:737 +#: main.c:736 #, 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:742 +#: main.c:741 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Opcje POSIX:\t\tDÅ‚ugie opcje GNU (standard):\n" -#: main.c:743 +#: main.c:742 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f program\t\t--file=program\n" -#: main.c:744 +#: main.c:743 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:745 +#: main.c:744 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v zmienna=wartość\t--assign=zmienna=wartość\n" -#: main.c:746 +#: main.c:745 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Krótkie opcje:\t\tDÅ‚ugie opcje GNU: (rozszerzenia)\n" -#: main.c:747 +#: main.c:746 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:748 +#: main.c:747 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:749 +#: main.c:748 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:750 -#, fuzzy +#: main.c:749 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:751 +#: main.c:750 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'tekst-programu'\t--source='tekst-programu'\n" -#: main.c:752 +#: main.c:751 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E plik\t\t\t--exec=plik\n" -#: main.c:753 +#: main.c:752 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:754 +#: main.c:753 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:755 +#: main.c:754 msgid "\t-L [fatal]\t\t--lint[=fatal]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: main.c:756 +#: main.c:755 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:757 +#: main.c:756 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:758 +#: main.c:757 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:759 -#, fuzzy +#: main.c:758 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:760 +#: main.c:759 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:761 +#: main.c:760 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:763 +#: main.c:762 msgid "\t-R file\t\t\t--command=file\n" msgstr "\t-R plik\t\t\t--command=plik\n" -#: main.c:764 +#: main.c:763 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:765 +#: main.c:764 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:766 +#: main.c:765 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:768 +#: main.c:767 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:771 +#: main.c:770 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -1838,7 +1839,7 @@ #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:780 +#: main.c:779 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -1851,7 +1852,7 @@ "dokumentacji.\n" "\n" -#: main.c:784 +#: main.c:783 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -1861,7 +1862,7 @@ "Program domyÅ›lnie czyta standardowe wejÅ›cie i zapisuje standardowe wyjÅ›cie.\n" "\n" -#: main.c:788 +#: main.c:787 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -1871,7 +1872,7 @@ "\tgawk '{ suma += $1 }; END { print suma }' plik\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:808 +#: main.c:807 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -1890,7 +1891,7 @@ "tej Licencji lub którejÅ› z późniejszych wersji.\n" "\n" -#: main.c:816 +#: main.c:815 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 +1906,7 @@ "PowszechnÄ… LicencjÄ™ PublicznÄ… GNU.\n" "\n" -#: main.c:822 +#: main.c:821 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 +1915,16 @@ "Powszechnej Licencji Publicznej GNU (GNU General Public License);\n" "jeÅ›li zaÅ› nie - odwiedź stronÄ™ http://www.gnu.org/licenses/.\n" -#: main.c:857 +#: main.c:856 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft nie ustawia FS na znak tabulatora w POSIX awk" -#: main.c:1091 +#: main.c:1090 #, c-format msgid "unknown value for field spec: %d\n" msgstr "nieznana wartość dla specyfikacji pola: %d\n" -#: main.c:1152 +#: main.c:1171 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -1932,57 +1933,52 @@ "%s: argument `%s' dla `-v' nie jest zgodny ze skÅ‚adniÄ… `zmienna=wartość'\n" "\n" -#: main.c:1178 +#: main.c:1197 #, c-format msgid "`%s' is not a legal variable name" msgstr "`%s' nie jest dozwolonÄ… nazwÄ… zmiennej" -#: main.c:1181 +#: main.c:1200 #, 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:1185 -#, fuzzy, c-format +#: main.c:1204 +#, 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:1190 -#, fuzzy, c-format +#: main.c:1209 +#, 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:1243 +#: main.c:1262 msgid "floating point exception" msgstr "wyjÄ…tek zmiennopozycyjny" -#: main.c:1250 +#: main.c:1269 msgid "fatal error: internal error" msgstr "fatalny błąd: wewnÄ™trzny błąd" -#: main.c:1265 +#: main.c:1284 msgid "fatal error: internal error: segfault" msgstr "fatalny błąd: wewnÄ™trzny błąd: błąd segmentacji" -#: main.c:1277 +#: main.c:1296 msgid "fatal error: internal error: stack overflow" msgstr "fatalny błąd: wewnÄ™trzny błąd: przepeÅ‚nienie stosu" -#: main.c:1327 +#: main.c:1346 #, c-format msgid "no pre-opened fd %d" msgstr "brak już otwartego fd %d" -#: main.c:1334 +#: main.c:1353 #, 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:1357 main.c:1366 -#, c-format -msgid "could not find groups: %s" -msgstr "nie można znaleźć grup: %s" - #: msg.c:63 #, c-format msgid "cmd. line:" @@ -2073,12 +2069,12 @@ msgid "internal error: %s with null vname" msgstr "wewnÄ™trzny błąd: %s z zerowym vname" -#: profile.c:938 +#: profile.c:952 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# profil programu gawk, utworzony %s\n" -#: profile.c:1317 +#: profile.c:1331 #, c-format msgid "" "\n" @@ -2087,93 +2083,99 @@ "\n" "\t# Funkcje, spis alfabetyczny\n" -#: profile.c:1356 +#: profile.c:1370 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: nieznany typ przekierowania %d" -#: re.c:572 +#: re.c:573 #, c-format -msgid "range of the form `[%c-%c]' is locale dependant" +msgid "range of the form `[%c-%c]' is locale dependent" msgstr "zasiÄ™g formy `[%c-%c]' jest zależny od lokalizacji" -#: re.c:599 +#: re.c:600 #, 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 "NieprawidÅ‚owe wyrażenie regularne" -#: regcomp.c:141 +#: regcomp.c:140 msgid "Invalid collation character" msgstr "NieprawidÅ‚owy znak porównania" -#: regcomp.c:144 +#: regcomp.c:143 msgid "Invalid character class name" msgstr "NieprawidÅ‚owa nazwa klasy znaku" -#: regcomp.c:147 +#: regcomp.c:146 msgid "Trailing backslash" msgstr "KoÅ„cowy znak backslash" -#: regcomp.c:150 +#: regcomp.c:149 msgid "Invalid back reference" msgstr "NieprawidÅ‚owe odwoÅ‚anie 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 "NieprawidÅ‚owa zawartość \\{\\}" -#: regcomp.c:165 +#: regcomp.c:164 msgid "Invalid range end" msgstr "NieprawidÅ‚owy 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 "NieprawidÅ‚owe poprzedzajÄ…ce 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 "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" + #~ msgid "attempt to use array in a scalar context" #~ msgstr "próba użycia tablicy w kontekÅ›cie skalaru" diff -urN gawk-4.0.0/po/sv.po gawk-4.0.1/po/sv.po --- gawk-4.0.0/po/sv.po 2011-06-23 09:46:21.000000000 +0300 +++ gawk-4.0.1/po/sv.po 2012-03-28 22:03:47.000000000 +0200 @@ -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ögren , 2001-2002. # Christer Andersson , 2007. -# Göran Uddeborg , 2011. +# Göran Uddeborg , 2011, 2012. # -# $Id: gawk.po,v 1.2 2011-06-07 14:23:08+02 göran Exp $ +# $Revision: 1.7 $ 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-06-23 09:46+0300\n" -"PO-Revision-Date: 2011-06-07 14:22+0200\n" +"POT-Creation-Date: 2012-03-28 22:03+0200\n" +"PO-Revision-Date: 2012-01-30 12:07+0100\n" "Last-Translator: Göran Uddeborg \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -43,9 +43,9 @@ msgid "attempt to use scalar `%s' as an array" msgstr "försök att använda skalären \"%s\" som en vektor" -#: array.c:302 array.c:707 builtin.c:81 builtin.c:1381 builtin.c:1423 -#: builtin.c:1436 builtin.c:1851 builtin.c:1863 eval.c:1135 eval.c:1139 -#: eval.c:1473 eval.c:1720 +#: array.c:302 array.c:707 builtin.c:84 builtin.c:1385 builtin.c:1427 +#: builtin.c:1440 builtin.c:1859 builtin.c:1871 eval.c:1135 eval.c:1139 +#: eval.c:1495 eval.c:1812 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "försök att använda vektorn \"%s\" i skalärsammanhang" @@ -65,7 +65,7 @@ msgid "delete: index `%s' not in array `%s'" msgstr "delete: index \"%s\" finns inte i vektorn \"%s\"" -#: array.c:734 eval.c:1773 +#: array.c:734 eval.c:1865 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "försök att använda skalären \"%s[\"%.*s\"]\" som en vektor" @@ -139,12 +139,12 @@ "asorti: det går inte att använda en delvektor av andra argumentet som första " "argument" -#: array.c:1659 +#: array.c:1655 #, c-format msgid "`%s' is invalid as a function name" msgstr "\"%s\" är ogiltigt som ett funktionsnamn" -#: array.c:1663 +#: array.c:1659 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "jämförelsefunktionen \"%s\" för sortering är inte definierad" @@ -185,348 +185,348 @@ msgid "duplicate `default' detected in switch body" msgstr "flera \"default\" upptäcktes i switch-sats" -#: awkgram.y:811 +#: awkgram.y:809 msgid "`break' is not allowed outside a loop or switch" msgstr "\"break\" är inte tillåtet utanför en slinga eller switch" -#: awkgram.y:820 +#: awkgram.y:818 msgid "`continue' is not allowed outside a loop" msgstr "\"continue\" är inte tillåtet utanför en slinga" -#: awkgram.y:830 +#: awkgram.y:828 #, c-format msgid "`next' used in %s action" msgstr "\"next\" använt i %s-åtgärd" -#: awkgram.y:838 +#: awkgram.y:836 msgid "`nextfile' is a gawk extension" msgstr "\"nextfile\" är en gawk-utökning" -#: awkgram.y:843 +#: awkgram.y:841 #, c-format msgid "`nextfile' used in %s action" msgstr "\"nextfile\" använt i %s-åtgärd" -#: awkgram.y:867 +#: awkgram.y:865 msgid "`return' used outside function context" msgstr "\"return\" använd utanför funktion" -#: awkgram.y:927 +#: awkgram.y:925 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" "ensamt \"print\" i BEGIN eller END-regel bör troligen vara 'print \"\"'" -#: awkgram.y:997 awkgram.y:1001 awkgram.y:1025 +#: awkgram.y:995 awkgram.y:999 awkgram.y:1023 msgid "`delete array' is a gawk extension" msgstr "\"delete array\" är en gawk-utökning" -#: awkgram.y:1021 +#: awkgram.y:1019 msgid "`delete(array)' is a non-portable tawk extension" msgstr "\"delete(array)\" är en icke portabel tawk-utökning" -#: awkgram.y:1137 +#: awkgram.y:1135 msgid "multistage two-way pipelines don't work" msgstr "flerstegs dubbelriktade rör fungerar inte" -#: awkgram.y:1240 +#: awkgram.y:1238 msgid "regular expression on right of assignment" msgstr "reguljärt uttryck i högerledet av en tilldelning" -#: awkgram.y:1251 +#: awkgram.y:1249 msgid "regular expression on left of `~' or `!~' operator" msgstr "reguljärt uttryck på vänster sida om en \"~\"- eller \"!~\"-operator" -#: awkgram.y:1267 awkgram.y:1421 +#: awkgram.y:1265 awkgram.y:1419 msgid "old awk does not support the keyword `in' except after `for'" msgstr "gamla awk stöder inte operatorn \"**\"" -#: awkgram.y:1277 +#: awkgram.y:1275 msgid "regular expression on right of comparison" msgstr "reguljärt uttryck i högerledet av en jämförelse" -#: awkgram.y:1396 +#: awkgram.y:1394 #, c-format msgid "`getline var' invalid inside `%s' rule" msgstr "\"getline var\" är ogiltigt inuti \"%s\"-regel" -#: awkgram.y:1399 eval.c:2409 +#: awkgram.y:1397 eval.c:2504 #, c-format msgid "`getline' invalid inside `%s' rule" msgstr "\"getline är ogiltigt inuti \"%s\"-regel" -#: awkgram.y:1404 +#: awkgram.y:1402 msgid "non-redirected `getline' undefined inside END action" msgstr "icke omdirigerad \"getline\" odefinierad inuti END-åtgärd" -#: awkgram.y:1423 +#: awkgram.y:1421 msgid "old awk does not support multidimensional arrays" msgstr "gamla awk stöder inte flerdimensionella vektorer" -#: awkgram.y:1519 +#: awkgram.y:1517 msgid "call of `length' without parentheses is not portable" msgstr "anrop av \"length\" utan parenteser är inte portabelt" -#: awkgram.y:1582 +#: awkgram.y:1580 msgid "indirect function calls are a gawk extension" msgstr "indirekta funktionsanrop är en gawk-utökning" -#: awkgram.y:1595 +#: awkgram.y:1593 #, c-format msgid "can not use special variable `%s' for indirect function call" msgstr "" "det går inte att använda specialvariabeln \"%s\" för indirekta fuktionsanrop" -#: awkgram.y:1673 +#: awkgram.y:1671 msgid "invalid subscript expression" msgstr "ogiltig indexuttryck" -#: awkgram.y:1713 +#: awkgram.y:1711 msgid "use of non-array as array" msgstr "icke-vektor används som vektor" -#: awkgram.y:1977 awkgram.y:1997 msg.c:98 +#: awkgram.y:1975 awkgram.y:1995 msg.c:98 msgid "warning: " msgstr "varning: " -#: awkgram.y:1995 msg.c:130 +#: awkgram.y:1993 msg.c:130 msgid "fatal: " msgstr "ödesdigert: " -#: awkgram.y:2045 +#: awkgram.y:2043 msgid "unexpected newline or end of string" msgstr "oväntat nyradstecken eller slut på strängen" -#: awkgram.y:2301 awkgram.y:2359 awkgram.y:2543 +#: awkgram.y:2300 awkgram.y:2358 awkgram.y:2542 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "kan inte öppna källfilen \"%s\" för läsning (%s)" -#: awkgram.y:2302 awkgram.y:2360 builtin.c:119 +#: awkgram.y:2301 awkgram.y:2359 builtin.c:122 msgid "reason unknown" msgstr "okänd anledning" -#: awkgram.y:2318 +#: awkgram.y:2317 #, c-format msgid "already included source file `%s'" msgstr "inkluderade redan källfilen \"%s\"" -#: awkgram.y:2344 +#: awkgram.y:2343 msgid "@include is a gawk extension" msgstr "@include är en gawk-utökning" -#: awkgram.y:2350 +#: awkgram.y:2349 msgid "empty filename after @include" msgstr "tomt filnamn efter @include" -#: awkgram.y:2495 +#: awkgram.y:2494 msgid "empty program text on command line" msgstr "tom programtext på kommandoraden" -#: awkgram.y:2610 +#: awkgram.y:2609 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "kan inte läsa källfilen \"%s\" (%s)" -#: awkgram.y:2621 +#: awkgram.y:2620 #, c-format msgid "source file `%s' is empty" msgstr "källfilen \"%s\" är tom" -#: awkgram.y:2806 +#: awkgram.y:2797 msgid "source file does not end in newline" msgstr "källfilen slutar inte med en ny rad" -#: awkgram.y:2883 +#: awkgram.y:2900 msgid "unterminated regexp ends with `\\' at end of file" msgstr "oavslutat reguljärt uttryck slutar med \"\\\" i slutet av filen" -#: awkgram.y:2907 +#: awkgram.y:2924 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "%s: %d: tawk-modifierare för reguljära uttryck \"/.../%c\" fungerar inte i " "gawk" -#: awkgram.y:2911 +#: awkgram.y:2928 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "tawk-modifierare för reguljära uttryck \"/.../%c\" fungerar inte i gawk" -#: awkgram.y:2918 +#: awkgram.y:2935 msgid "unterminated regexp" msgstr "oavslutat reguljärt uttryck" -#: awkgram.y:2922 +#: awkgram.y:2939 msgid "unterminated regexp at end of file" msgstr "oavslutat reguljärt uttryck i slutet av filen" -#: awkgram.y:2981 +#: awkgram.y:2998 msgid "use of `\\ #...' line continuation is not portable" msgstr "Användning av \"\\ #...\" för radfortsättning är inte portabelt" -#: awkgram.y:2997 +#: awkgram.y:3014 msgid "backslash not last character on line" msgstr "sista tecknet på raden är inte ett omvänt snedstreck" -#: awkgram.y:3058 +#: awkgram.y:3075 msgid "POSIX does not allow operator `**='" msgstr "POSIX tillåter inte operatorn \"**=\"" -#: awkgram.y:3060 +#: awkgram.y:3077 msgid "old awk does not support operator `**='" msgstr "gamla awk stöder inte operatorn \"**=\"" -#: awkgram.y:3069 +#: awkgram.y:3086 msgid "POSIX does not allow operator `**'" msgstr "POSIX tillåter inte operatorn \"**\"" -#: awkgram.y:3071 +#: awkgram.y:3088 msgid "old awk does not support operator `**'" msgstr "gamla awk stöder inte operatorn \"**\"" -#: awkgram.y:3106 +#: awkgram.y:3123 msgid "operator `^=' is not supported in old awk" msgstr "operatorn \"^=\" stöds inte i gamla awk" -#: awkgram.y:3114 +#: awkgram.y:3131 msgid "operator `^' is not supported in old awk" msgstr "operatorn \"^\" stöds inte i gamla awk" -#: awkgram.y:3207 awkgram.y:3223 +#: awkgram.y:3224 awkgram.y:3240 msgid "unterminated string" msgstr "oavslutad sträng" -#: awkgram.y:3419 +#: awkgram.y:3436 #, c-format msgid "invalid char '%c' in expression" msgstr "ogiltigt tecken \"%c\" i uttryck" -#: awkgram.y:3466 +#: awkgram.y:3483 #, c-format msgid "`%s' is a gawk extension" msgstr "\"%s\" är en gawk-utökning" -#: awkgram.y:3471 +#: awkgram.y:3488 #, c-format msgid "`%s' is a Bell Labs extension" msgstr "\"%s\" är en Bell Labs-utökning" -#: awkgram.y:3476 +#: awkgram.y:3493 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX tillåter inte \"%s\"" -#: awkgram.y:3484 +#: awkgram.y:3501 #, c-format msgid "`%s' is not supported in old awk" msgstr "\"%s\" stöds inte i gamla awk" -#: awkgram.y:3551 +#: awkgram.y:3568 msgid "`goto' considered harmful!\n" msgstr "\"goto\" anses skadlig!\n" -#: awkgram.y:3604 +#: awkgram.y:3619 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d är ett ogiltigt antal argument för %s" -#: awkgram.y:3639 awkgram.y:3642 -msgid "match: third argument is a gawk extension" -msgstr "match: tredje argumentet är en gawk-utökning" - -#: awkgram.y:3670 +#: awkgram.y:3654 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "" "%s: bokstavlig sträng som sista argument till ersättning har ingen effekt" -#: awkgram.y:3675 +#: awkgram.y:3659 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s: tredje argumentet är inte ett ändringsbart objekt" -#: awkgram.y:3761 awkgram.y:3764 +#: awkgram.y:3732 awkgram.y:3735 +msgid "match: third argument is a gawk extension" +msgstr "match: tredje argumentet är en gawk-utökning" + +#: awkgram.y:3789 awkgram.y:3792 msgid "close: second argument is a gawk extension" msgstr "close: andra argumentet är en gawk-utökning" -#: awkgram.y:3776 +#: awkgram.y:3804 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "användandet av dcgettext(_\"...\") är felaktigt: ta bort det inledande " "understrykningstecknet" -#: awkgram.y:3791 +#: awkgram.y:3819 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "användandet av dcngettext(_\"...\") är felaktigt: ta bort det inledande " "understrykningstecknet" -#: awkgram.y:3883 +#: awkgram.y:3911 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funktionen \"%s\": parameter %d, \"%s\", är samma som parameter %d" -#: awkgram.y:3925 +#: awkgram.y:3953 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funktionen \"%s\": parametern \"%s\" överskuggar en global variabel" -#: awkgram.y:4083 +#: awkgram.y:4111 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "kunde inte öppna \"%s\" för skrivning (%s)" -#: awkgram.y:4084 +#: awkgram.y:4112 msgid "sending variable list to standard error" msgstr "skickar variabellista till standard fel" -#: awkgram.y:4090 +#: awkgram.y:4118 #, c-format msgid "%s: close failed (%s)" msgstr "%s: misslyckades att stänga (%s)" -#: awkgram.y:4142 +#: awkgram.y:4170 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() anropad två gånger!" -#: awkgram.y:4148 +#: awkgram.y:4176 msgid "there were shadowed variables." msgstr "det fanns överskuggade variabler." -#: awkgram.y:4178 +#: awkgram.y:4206 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "funktionen \"%s\": kan inte använda funktionsnamn som parameternamn" -#: awkgram.y:4182 +#: awkgram.y:4210 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "" "funktionen \"%s\": det går inte att använda specialvariabeln \"%s\" som en " "funktionsparameter" -#: awkgram.y:4198 +#: awkgram.y:4226 #, c-format msgid "function name `%s' previously defined" msgstr "funktionsnamnet \"%s\" är definierat sedan tidigare" -#: awkgram.y:4366 awkgram.y:4372 +#: awkgram.y:4394 awkgram.y:4400 #, c-format msgid "function `%s' called but never defined" msgstr "funktionen \"%s\" anropad men aldrig definierad" -#: awkgram.y:4375 +#: awkgram.y:4403 #, c-format msgid "function `%s' defined but never called directly" msgstr "funktionen \"%s\" definierad men aldrig anropad direkt" -#: awkgram.y:4407 +#: awkgram.y:4435 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "konstant reguljärt uttryck för parameter %d ger ett booleskt värde" -#: awkgram.y:4516 +#: awkgram.y:4544 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -535,229 +535,229 @@ "funktionen \"%s\" anropad med blanktecken mellan namnet och \"(\",\n" "eller använd som variabel eller vektor" -#: awkgram.y:4763 eval.c:1964 +#: awkgram.y:4791 eval.c:2056 msgid "division by zero attempted" msgstr "försökte dividera med noll" -#: awkgram.y:4772 eval.c:1980 +#: awkgram.y:4800 eval.c:2072 #, c-format msgid "division by zero attempted in `%%'" msgstr "försökte dividera med noll i \"%%\"" -#: builtin.c:117 +#: builtin.c:120 #, c-format msgid "%s to \"%s\" failed (%s)" msgstr "%s till \"%s\" misslyckades (%s)" -#: builtin.c:118 +#: builtin.c:121 msgid "standard output" msgstr "standard ut" -#: builtin.c:132 +#: builtin.c:135 msgid "exp: received non-numeric argument" msgstr "exp: fick ett ickenumeriskt argument" -#: builtin.c:138 +#: builtin.c:141 #, c-format msgid "exp: argument %g is out of range" msgstr "exp: argumentet %g är inte inom tillåten gräns" -#: builtin.c:197 +#: builtin.c:200 #, c-format msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing" msgstr "" "fflush: kan inte spola: röret \"%s\" öppnat för läsning, inte skrivning" -#: builtin.c:200 +#: builtin.c:203 #, c-format msgid "fflush: cannot flush: file `%s' opened for reading, not writing" msgstr "" "fflush: kan inte spola: filen \"%s\" öppnad för läsning, inte skrivning" -#: builtin.c:212 +#: builtin.c:215 #, c-format msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "fflush: \"%s\" är inte en öppen fil, rör eller koprocess" -#: builtin.c:330 +#: builtin.c:333 msgid "index: received non-string first argument" msgstr "index: första argumentet är inte en sträng" -#: builtin.c:332 +#: builtin.c:335 msgid "index: received non-string second argument" msgstr "index: andra argumentet är inte en sträng" -#: builtin.c:454 +#: builtin.c:457 msgid "int: received non-numeric argument" msgstr "int: fick ett ickenumeriskt argument" -#: builtin.c:490 +#: builtin.c:493 msgid "length: received array argument" msgstr "length: fick ett vektorargument" -#: builtin.c:493 +#: builtin.c:496 msgid "`length(array)' is a gawk extension" msgstr "\"length(array)\" är en gawk-utökning" -#: builtin.c:501 +#: builtin.c:504 msgid "length: received non-string argument" msgstr "length: fick ett argument som inte är en sträng" -#: builtin.c:532 +#: builtin.c:535 msgid "log: received non-numeric argument" msgstr "log: fick ett ickenumeriskt argument" -#: builtin.c:535 +#: builtin.c:538 #, c-format msgid "log: received negative argument %g" msgstr "log: fick ett negativt argumentet %g" -#: builtin.c:691 builtin.c:696 +#: builtin.c:694 builtin.c:699 msgid "fatal: must use `count$' on all formats or none" msgstr "ödesdigert: måste använda \"count$\" på alla eller inga format" -#: builtin.c:758 +#: builtin.c:762 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "fältbredd ignoreras för \"%%\"-specificerare" -#: builtin.c:760 +#: builtin.c:764 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "precision ignoreras för \"%%\"-specificerare" -#: builtin.c:762 +#: builtin.c:766 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "fältbredd och precision ignoreras för \"%%\"-specificerare" -#: builtin.c:813 +#: builtin.c:817 msgid "fatal: `$' is not permitted in awk formats" msgstr "ödesdigert: \"$\" tillåts inte i awk-format" -#: builtin.c:822 +#: builtin.c:826 msgid "fatal: arg count with `$' must be > 0" msgstr "ödesdigert: argumentantalet med \"$\" måste vara > 0" -#: builtin.c:826 +#: builtin.c:830 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "ödesdigert: argumentantalet %ld är större än antalet givna argument" -#: builtin.c:830 +#: builtin.c:834 msgid "fatal: `$' not permitted after period in format" msgstr "ödesdigert: \"$\" tillåts inte efter en punkt i formatet" -#: builtin.c:846 +#: builtin.c:850 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" "ödesdigert: inget \"$\" bifogat för positionsangiven fältbredd eller " "precision" -#: builtin.c:917 +#: builtin.c:921 msgid "`l' is meaningless in awk formats; ignored" msgstr "\"l\" är meningslös i awk-format, ignorerad" -#: builtin.c:921 +#: builtin.c:925 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "ödesdigert: \"l\" tillåts inte i POSIX awk-format" -#: builtin.c:934 +#: builtin.c:938 msgid "`L' is meaningless in awk formats; ignored" msgstr "\"L\" är meningslös i awk-format, ignorerad" -#: builtin.c:938 +#: builtin.c:942 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "ödesdigert: \"L\" tillåts inte i POSIX awk-format" -#: builtin.c:951 +#: builtin.c:955 msgid "`h' is meaningless in awk formats; ignored" msgstr "\"h\" är meningslös i awk-format, ignorerad" -#: builtin.c:955 +#: builtin.c:959 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "ödesdigert: \"h\" tillåts inte i POSIX awk-format" -#: builtin.c:1268 +#: builtin.c:1272 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: värdet %g är utanför \"%%%c\"-formatets giltiga intervall" -#: builtin.c:1328 +#: builtin.c:1332 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "ignorerar okänt formatspecifikationstecken \"%c\": inget argument konverterat" -#: builtin.c:1333 +#: builtin.c:1337 msgid "fatal: not enough arguments to satisfy format string" msgstr "ödesdigert: för få argument för formatsträngen" -#: builtin.c:1335 +#: builtin.c:1339 msgid "^ ran out for this one" msgstr "^ tog slut här" -#: builtin.c:1342 +#: builtin.c:1346 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: formatspecifieraren har ingen kommandobokstav" -#: builtin.c:1345 +#: builtin.c:1349 msgid "too many arguments supplied for format string" msgstr "för många argument för formatsträngen" -#: builtin.c:1419 builtin.c:1430 +#: builtin.c:1423 builtin.c:1434 msgid "printf: no arguments" msgstr "printf: inga argument" -#: builtin.c:1471 +#: builtin.c:1475 msgid "sqrt: received non-numeric argument" msgstr "sqrt: fick ickenumeriskt argument" -#: builtin.c:1475 +#: builtin.c:1479 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: anropad med negativt argument %g" -#: builtin.c:1499 +#: builtin.c:1503 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: längden %g är inte >= 1" -#: builtin.c:1501 +#: builtin.c:1505 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: längden %g är inte >= 0" -#: builtin.c:1508 +#: builtin.c:1512 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: längden %g som inte är ett heltal kommer trunkeras" -#: builtin.c:1513 +#: builtin.c:1517 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "substr: längden %g är för stor för strängindexering, trunkeras till %g" -#: builtin.c:1525 +#: builtin.c:1529 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: startindex %g är ogiltigt, använder 1" -#: builtin.c:1530 +#: builtin.c:1534 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: startindex %g som inte är ett heltal kommer trunkeras" -#: builtin.c:1555 +#: builtin.c:1559 msgid "substr: source string is zero length" msgstr "substr: källsträngen är tom" -#: builtin.c:1571 +#: builtin.c:1575 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: startindex %g är bortom strängens slut" -#: builtin.c:1579 +#: builtin.c:1583 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -765,219 +765,223 @@ "substr: längden %g vid startindex %g överskrider det första argumentets " "längd (%lu)" -#: builtin.c:1652 +#: builtin.c:1657 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: formatvärde i PROCINFO[\"strftime\"] har numerisk typ" -#: builtin.c:1675 +#: builtin.c:1680 msgid "strftime: received non-numeric second argument" msgstr "strftime: fick ett ickenumeriskt andra argument" -#: builtin.c:1682 +#: builtin.c:1683 +msgid "strftime: second argument less than 0 or too big for time_t" +msgstr "strftime: andra argimentet mindre än 0 eller för stort för time_t" + +#: builtin.c:1690 msgid "strftime: received non-string first argument" msgstr "strftime: fick ett första argument som inte är en sträng" -#: builtin.c:1688 +#: builtin.c:1696 msgid "strftime: received empty format string" msgstr "strftime: fick en tom formatsträng" -#: builtin.c:1754 +#: builtin.c:1762 msgid "mktime: received non-string argument" msgstr "mktime: fick ett argument som inte är en sträng" -#: builtin.c:1771 +#: builtin.c:1779 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: åtminstone ett av värdena är utanför standardintervallet" -#: builtin.c:1806 +#: builtin.c:1814 msgid "'system' function not allowed in sandbox mode" msgstr "funktionen \"system\" är inte tillåten i sandlådeläge" -#: builtin.c:1811 +#: builtin.c:1819 msgid "system: received non-string argument" msgstr "system: fick ett argument som inte är en sträng" -#: builtin.c:1866 eval.c:1165 eval.c:1698 eval.c:1711 +#: builtin.c:1874 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:1933 +#: builtin.c:1941 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "referens till icke initierat fält \"$%d\"" -#: builtin.c:2020 +#: builtin.c:2028 msgid "tolower: received non-string argument" msgstr "tolower: fick ett argument som inte är en sträng" -#: builtin.c:2054 +#: builtin.c:2062 msgid "toupper: received non-string argument" msgstr "toupper: fick ett argument som inte är en sträng" -#: builtin.c:2090 +#: builtin.c:2098 msgid "atan2: received non-numeric first argument" msgstr "atan2: fick ett ickenumeriskt första argument" -#: builtin.c:2092 +#: builtin.c:2100 msgid "atan2: received non-numeric second argument" msgstr "atan2: fick ett ickenumeriskt andra argument" -#: builtin.c:2111 +#: builtin.c:2119 msgid "sin: received non-numeric argument" msgstr "sin: fick ett ickenumeriskt argument" -#: builtin.c:2127 +#: builtin.c:2135 msgid "cos: received non-numeric argument" msgstr "cos: fick ett ickenumeriskt argument" -#: builtin.c:2180 +#: builtin.c:2188 msgid "srand: received non-numeric argument" msgstr "srand: fick ett ickenumeriskt argument" -#: builtin.c:2211 +#: builtin.c:2219 msgid "match: third argument is not an array" msgstr "match: tredje argumentet är inte en vektor" -#: builtin.c:2718 +#: builtin.c:2483 msgid "gensub: third argument of 0 treated as 1" msgstr "gensub: nollan i tredje argumentet behandlad som en etta" -#: builtin.c:2757 +#: builtin.c:2776 msgid "lshift: received non-numeric first argument" msgstr "lshift: fick ett ickenumeriskt första argument" -#: builtin.c:2759 +#: builtin.c:2778 msgid "lshift: received non-numeric second argument" msgstr "lshift: fick ett ickenumeriskt andra argument" -#: builtin.c:2765 +#: builtin.c:2784 #, c-format msgid "lshift(%lf, %lf): negative values will give strange results" msgstr "lshift(%lf, %lf): negativa värden kommer ge konstiga resultat" -#: builtin.c:2767 +#: builtin.c:2786 #, c-format msgid "lshift(%lf, %lf): fractional values will be truncated" msgstr "lshift(%lf, %lf): flyttalsvärden kommer trunkeras" -#: builtin.c:2769 +#: builtin.c:2788 #, c-format msgid "lshift(%lf, %lf): too large shift value will give strange results" msgstr "lshift(%lf, %lf): för stora skiftvärden kommer ge konstiga resultat" -#: builtin.c:2794 +#: builtin.c:2813 msgid "rshift: received non-numeric first argument" msgstr "rshift: fick ett ickenumeriskt första argument" -#: builtin.c:2796 +#: builtin.c:2815 msgid "rshift: received non-numeric second argument" msgstr "rshift: fick ett ickenumeriskt andra argument" -#: builtin.c:2802 +#: builtin.c:2821 #, c-format msgid "rshift(%lf, %lf): negative values will give strange results" msgstr "rshift(%lf, %lf): negativa värden kommer ge konstiga resultat" -#: builtin.c:2804 +#: builtin.c:2823 #, c-format msgid "rshift(%lf, %lf): fractional values will be truncated" msgstr "rshift(%lf, %lf): flyttalsvärden kommer trunkeras" -#: builtin.c:2806 +#: builtin.c:2825 #, c-format msgid "rshift(%lf, %lf): too large shift value will give strange results" msgstr "rshift(%lf, %lf): för stora skiftvärden kommer ge konstiga resultat" -#: builtin.c:2831 +#: builtin.c:2850 msgid "and: received non-numeric first argument" msgstr "and: fick ett ickenumeriskt första argument" -#: builtin.c:2833 +#: builtin.c:2852 msgid "and: received non-numeric second argument" msgstr "and: fick ett ickenumeriskt andra argument" -#: builtin.c:2839 +#: builtin.c:2858 #, c-format msgid "and(%lf, %lf): negative values will give strange results" msgstr "and(%lf, %lf): negativa värden kommer ge konstiga resultat" -#: builtin.c:2841 +#: builtin.c:2860 #, c-format msgid "and(%lf, %lf): fractional values will be truncated" msgstr "and(%lf, %lf): flyttalsvärden kommer trunkeras" -#: builtin.c:2866 +#: builtin.c:2885 msgid "or: received non-numeric first argument" msgstr "or: fick ett ickenumeriskt första argument" -#: builtin.c:2868 +#: builtin.c:2887 msgid "or: received non-numeric second argument" msgstr "or: fick ett ickenumeriskt andra argument" -#: builtin.c:2874 +#: builtin.c:2893 #, c-format msgid "or(%lf, %lf): negative values will give strange results" msgstr "or(%lf, %lf): negativa värden kommer ge konstiga resultat" -#: builtin.c:2876 +#: builtin.c:2895 #, c-format msgid "or(%lf, %lf): fractional values will be truncated" msgstr "or(%lf, %lf): flyttalsvärden kommer trunkeras" -#: builtin.c:2904 +#: builtin.c:2923 msgid "xor: received non-numeric first argument" msgstr "xor: fick ett ickenumeriskt första argument" -#: builtin.c:2906 +#: builtin.c:2925 msgid "xor: received non-numeric second argument" msgstr "xor: fick ett ickenumeriskt andra argument" -#: builtin.c:2912 +#: builtin.c:2931 #, c-format msgid "xor(%lf, %lf): negative values will give strange results" msgstr "xor(%lf, %lf): negativa värden kommer ge konstiga resultat" -#: builtin.c:2914 +#: builtin.c:2933 #, c-format msgid "xor(%lf, %lf): fractional values will be truncated" msgstr "xor(%lf, %lf): flyttalsvärden kommer trunkeras" -#: builtin.c:2938 builtin.c:2944 +#: builtin.c:2957 builtin.c:2963 msgid "compl: received non-numeric argument" msgstr "compl: fick ett ickenumeriskt argument" -#: builtin.c:2946 +#: builtin.c:2965 #, c-format msgid "compl(%lf): negative value will give strange results" msgstr "compl(%lf): negativa värden kommer ge konstiga resultat" -#: builtin.c:2948 +#: builtin.c:2967 #, c-format msgid "compl(%lf): fractional value will be truncated" msgstr "compl(%lf): flyttalsvärden kommer trunkeras" -#: builtin.c:3117 +#: builtin.c:3136 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: \"%s\" är inte en giltig lokalkategori" -#: eval.c:411 +#: eval.c:412 #, c-format msgid "unknown nodetype %d" msgstr "okänd nodtyp %d" -#: eval.c:422 eval.c:436 +#: eval.c:423 eval.c:437 #, c-format msgid "unknown opcode %d" msgstr "okänd op-kod %d" -#: eval.c:433 +#: eval.c:434 #, c-format msgid "opcode %s not an operator or keyword" msgstr "op-kod %s är inte en operator eller ett nyckelord" -#: eval.c:487 +#: eval.c:488 msgid "buffer overflow in genflags2str" msgstr "buffertöverflöd i genflags2str" @@ -1014,191 +1018,197 @@ msgid "turning off `--lint' due to assignment to `LINT'" msgstr "slår av \"--lint\" på grund av en tilldelning till \"LINT\"" -#: eval.c:1127 eval.c:1685 +#: eval.c:1127 eval.c:1777 #, c-format msgid "can't use function name `%s' as variable or array" msgstr "kan inte använda funktionsnamnet \"%s\" som variabel eller vektor" -#: eval.c:1155 -msgid "assignment is not allowed to result of builtin function" -msgstr "det är inte tillåtet att tilldela resultatet från en inbyggd funktion" - -#: eval.c:1164 eval.c:1697 eval.c:1710 +#: eval.c:1158 eval.c:1789 eval.c:1802 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "referens till icke initierat argument \"%s\"" -#: eval.c:1183 +#: eval.c:1177 msgid "attempt to field reference from non-numeric value" msgstr "försök att fältreferera från ickenumeriskt värde" -#: eval.c:1185 +#: eval.c:1179 msgid "attempt to field reference from null string" msgstr "försök till fältreferens från en tom sträng" -#: eval.c:1191 +#: eval.c:1185 #, c-format msgid "attempt to access field %ld" msgstr "försök att komma åt fält nummer %ld" -#: eval.c:1200 +#: eval.c:1194 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "referens till icke initierat fält \"$%ld\"" -#: eval.c:1262 +#: eval.c:1256 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "funktionen \"%s\" anropad med fler argument än vad som deklarerats" -#: eval.c:1426 +#: eval.c:1437 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: oväntad typ \"%s\"" -#: eval.c:1510 +#: eval.c:1532 msgid "division by zero attempted in `/='" msgstr "försökte dividera med noll i \"/=\"" -#: eval.c:1517 +#: eval.c:1539 #, c-format msgid "division by zero attempted in `%%='" msgstr "försökte dividera med noll i \"%%=\"" -#: eval.c:1784 eval.c:2030 +#: eval.c:1876 eval.c:2122 #, c-format msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" msgstr "försök att använda vektorn \"%s[\"%.*s\"]\" i skalärsammanhang" -#: eval.c:1815 +#: eval.c:1907 msgid "assignment used in conditional context" msgstr "tilldelning använt i jämförelsesammanhang" -#: eval.c:1819 +#: eval.c:1911 msgid "statement has no effect" msgstr "kommandot har ingen effekt" -#: eval.c:2233 +#: eval.c:2343 #, c-format msgid "for loop: array `%s' changed size from %ld to %ld during loop execution" msgstr "" "forslinga: vektorn \"%s\" ändrade storlek från %ld till %ld under " "slingexekvering" -#: eval.c:2343 +#: eval.c:2458 #, c-format msgid "function called indirectly through `%s' does not exist" msgstr "funktionen anropad indirekt genom \"%s\" finns inte" -#: eval.c:2355 +#: eval.c:2470 #, c-format msgid "function `%s' not defined" msgstr "funktionen \"%s\" är inte definierad" -#: eval.c:2416 +#: eval.c:2511 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "icke omdirigerad \"getline\" odefinierad inuti \"%s\"-regel" -#: eval.c:2477 +#: eval.c:2600 +#, c-format +msgid "error reading input file `%s': %s" +msgstr "fel vid läsning av indatafilen \"%s\": %s" + +#: eval.c:2614 #, c-format msgid "`nextfile' cannot be called from a `%s' rule" msgstr "\"nextfile\" kan inte anropas från en \"%s\"-regel" -#: eval.c:2532 +#: eval.c:2661 +msgid "`exit' cannot be called in the current context" +msgstr "\"exit\" kan inte anropas i det aktuella sammanhanget" + +#: eval.c:2700 #, c-format msgid "`next' cannot be called from a `%s' rule" msgstr "\"next\" kan inte anropas från en \"%s\"-regel" -#: eval.c:2599 +#: eval.c:2766 #, c-format msgid "Sorry, don't know how to interpret `%s'" msgstr "Tyvärr, vet inte hur \"%s\" skall tolkas" -#: ext.c:64 +#: ext.c:54 msgid "extensions are not allowed in sandbox mode" msgstr "utökningar är inte tillåtna i sandlådeläge" -#: ext.c:70 ext.c:75 +#: ext.c:60 ext.c:65 msgid "`extension' is a gawk extension" msgstr "\"extension\" är en gawk-utökning" -#: ext.c:85 +#: ext.c:75 #, c-format msgid "fatal: extension: cannot open `%s' (%s)\n" -msgstr "ödesdigert: utökning: kan inte öppna \"%s\" (%s)\n" +msgstr "ödesdigert: extension: kan inte öppna \"%s\" (%s)\n" -#: ext.c:94 +#: ext.c:84 #, c-format msgid "" "fatal: extension: library `%s': does not define " "`plugin_is_GPL_compatible' (%s)\n" msgstr "" -"ödesdigert: utökning: bibliotek \"%s\": kan inte definiera " +"ödesdigert: extension: biblioteket \"%s\": definierar inte " "\"plugin_is_GPL_compatible\" (%s)\n" -#: ext.c:103 +#: ext.c:93 #, c-format msgid "fatal: extension: library `%s': cannot call function `%s' (%s)\n" msgstr "" -"ödesdigert: utvidgning: bibliotek \"%s\": kan inte anropa funktionen \"%s" +"ödesdigert: extension: bibliotek \"%s\": kan inte anropa funktionen \"%s" "\" (%s)\n" -#: ext.c:137 +#: ext.c:127 msgid "extension: missing function name" -msgstr "utökning: saknar funktionsnamn" +msgstr "extension: saknar funktionsnamn" -#: ext.c:142 +#: ext.c:132 #, c-format msgid "extension: illegal character `%c' in function name `%s'" -msgstr "utökning: ogiltigt tecken \"%c\" i funktionsnamnet \"%s\"" +msgstr "extension: ogiltigt tecken \"%c\" i funktionsnamnet \"%s\"" -#: ext.c:151 +#: ext.c:141 #, c-format msgid "extension: can't redefine function `%s'" -msgstr "utökning: kan inte definiera om funktionen \"%s\"" +msgstr "extension: det går inte att definiera om funktionen \"%s\"" -#: ext.c:155 +#: ext.c:145 #, c-format msgid "extension: function `%s' already defined" -msgstr "utökning: funktionen \"%s\" är redan definierad" +msgstr "extension: funktionen \"%s\" är redan definierad" -#: ext.c:160 +#: ext.c:150 #, c-format msgid "extension: function name `%s' previously defined" -msgstr "utökning: funktionsnamnet \"%s\" är definierat sedan tidigare" +msgstr "extension: funktionsnamnet \"%s\" är definierat sedan tidigare" -#: ext.c:162 +#: ext.c:152 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" -msgstr "utökning: kan inte använda gawks inbyggda \"%s\" som ett funktionsnamn" +msgstr "" +"extension: kan inte använda gawks inbyggda \"%s\" som ett funktionsnamn" -#: ext.c:166 +#: ext.c:156 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: negativt argumentantal för funktionen \"%s\"" -#: ext.c:269 +#: ext.c:259 #, c-format msgid "function `%s' defined to take no more than %d argument(s)" msgstr "funktionen \"%s\" definierades för att ta maximalt %d argument" -#: ext.c:272 +#: ext.c:262 #, c-format msgid "function `%s': missing argument #%d" msgstr "funktionen \"%s\": argument %d saknas" -#: ext.c:289 +#: ext.c:279 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "funktionen \"%s\": argument %d: försök att använda skalär som vektor" -#: ext.c:293 +#: ext.c:283 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "funktionen \"%s\": argument %d: försök att använda vektor som skalär" -#: ext.c:306 +#: ext.c:296 msgid "Operation Not Supported" msgstr "Operationen stöds inte" @@ -1206,174 +1216,169 @@ msgid "NF set to negative value" msgstr "NF satt till ett negativt värde" -#: field.c:950 field.c:957 field.c:961 +#: field.c:951 field.c:958 field.c:962 msgid "split: fourth argument is a gawk extension" msgstr "split: fjärde argumentet är en gawk-utökning" -#: field.c:954 +#: field.c:955 msgid "split: fourth argument is not an array" msgstr "split: fjärde argumentet är inte en vektor" -#: field.c:968 +#: field.c:969 msgid "split: second argument is not an array" msgstr "split: andra argumentet är inte en vektor" -#: field.c:972 +#: field.c:973 msgid "split: cannot use the same array for second and fourth args" msgstr "" "split: det går inte att använda samma vektor som andra och fjärde argument" -#: field.c:977 +#: field.c:978 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "" "split: det går inte att använda en delvektor av andra argumentet som fjärde " "argument" -#: field.c:980 +#: field.c:981 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "" "split: det går inte att använda en delvektor av fjärde argumentet som andra " "argument" -#: field.c:1009 +#: field.c:1010 msgid "split: null string for third arg is a gawk extension" msgstr "split: tom sträng som tredje argument är en gawk-utökning" -#: field.c:1049 +#: field.c:1050 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: fjärde argumentet är inte en vektor" -#: field.c:1054 +#: field.c:1055 msgid "patsplit: second argument is not an array" msgstr "patsplit: andra argumentet är inte en vektor" -#: field.c:1060 +#: field.c:1061 msgid "patsplit: third argument must be non-null" msgstr "patsplit: tredje argumentet får inte vara tomt" -#: field.c:1064 +#: field.c:1065 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "" "patsplit: det går inte att använda samma vektor som andra och fjärde argument" -#: field.c:1069 +#: field.c:1070 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "" "patsplit: det går inte att använda en delvektor av andra argumentet som " "fjärde argument" -#: field.c:1072 +#: field.c:1073 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "" "patsplit: det går inte att använda en delvektor av fjärde argumentet som " "andra argument" -#: field.c:1109 +#: field.c:1110 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "\"FIELDWIDTHS\" är en gawk-utökning" -#: field.c:1172 +#: field.c:1173 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "ogiltigt FIELDWITHS-värde i närheten av \"%s\"" -#: field.c:1245 +#: field.c:1246 msgid "null string for `FS' is a gawk extension" msgstr "tom sträng som \"FS\" är en gawk-utökning" -#: field.c:1249 +#: field.c:1250 msgid "old awk does not support regexps as value of `FS'" msgstr "gamla awk stöder inte reguljära uttryck som värden på \"FS\"" -#: field.c:1368 +#: field.c:1369 msgid "`FPAT' is a gawk extension" msgstr "\"FPAT\" är en gawk-utökning" -#: 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\" är 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åter inte något 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åter inte något 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äver 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änd 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änd 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äver 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\" är 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åter inte något 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äver ett argument\n" -#: io.c:282 +#: io.c:280 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "kommandoradsargumentet \"%s\" är en katalog: hoppas över" -#: io.c:285 io.c:384 +#: io.c:283 io.c:385 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "kan inte öppna filen \"%s\" för läsning (%s)" -#: io.c:431 -#, c-format -msgid "error reading input file `%s': %s" -msgstr "fel vid läsning av indatafilen \"%s\": %s" - -#: io.c:500 +#: io.c:501 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "stängning av fd %d (\"%s\") misslyckades (%s)" -#: io.c:577 +#: io.c:578 msgid "redirection not allowed in sandbox mode" msgstr "omdirigering är inte tillåten i sandlådeläge" -#: io.c:611 +#: io.c:612 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "uttrycket i \"%s\"-omdirigering har bara numeriskt värde" -#: io.c:617 +#: io.c:618 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "uttrycket för \"%s\"-omdirigering har en tom sträng som värde" @@ -1480,7 +1485,7 @@ msgid "no explicit close of file `%s' provided" msgstr "ingen explicit stängning av filen \"%s\" tillhandahållen" -#: io.c:1129 io.c:1184 main.c:795 main.c:832 +#: io.c:1129 io.c:1184 main.c:794 main.c:831 #, c-format msgid "error writing standard output (%s)" msgstr "fel vid skrivning till standard ut (%s)" @@ -1543,87 +1548,87 @@ msgid "could not open `%s', mode `%s'" msgstr "kunde inte öppna \"%s\", läge \"%s\"" -#: io.c:1744 +#: io.c:1747 #, c-format msgid "close of master pty failed (%s)" msgstr "stängning av huvudpty misslyckades (%s)" -#: io.c:1746 io.c:1914 io.c:2071 +#: io.c:1749 io.c:1917 io.c:2074 #, c-format msgid "close of stdout in child failed (%s)" msgstr "stängning av standard ut i barnet misslyckades (%s)" -#: io.c:1749 +#: io.c:1752 #, 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:1751 io.c:1919 +#: io.c:1754 io.c:1922 #, c-format msgid "close of stdin in child failed (%s)" msgstr "stängning av standard in i barnet misslyckades (%s)" -#: io.c:1754 +#: io.c:1757 #, 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:1756 io.c:1777 +#: io.c:1759 io.c:1780 #, c-format msgid "close of slave pty failed (%s)" msgstr "stängning av slavpty misslyckades (%s)" -#: io.c:1855 io.c:1917 io.c:2049 io.c:2074 +#: io.c:1858 io.c:1920 io.c:2052 io.c:2077 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "flyttande av rör till standard ut i barnet misslyckades (dup: %s)" -#: io.c:1862 io.c:1922 +#: io.c:1865 io.c:1925 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "flyttande av rör till standard in i barnet misslyckades (dup: %s)" -#: io.c:1882 io.c:2064 +#: io.c:1885 io.c:2067 msgid "restoring stdout in parent process failed\n" msgstr "återställande av standard ut i förälderprocessen misslyckades\n" -#: io.c:1890 +#: io.c:1893 msgid "restoring stdin in parent process failed\n" msgstr "återställande av standard in i förälderprocessen misslyckades\n" -#: io.c:1925 io.c:2076 io.c:2090 +#: io.c:1928 io.c:2079 io.c:2093 #, c-format msgid "close of pipe failed (%s)" msgstr "stängning av röret misslyckades (%s)" -#: io.c:1970 +#: io.c:1973 msgid "`|&' not supported" msgstr "\"|&\" stöds inte" -#: io.c:2036 +#: io.c:2039 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "kan inte öppna röret \"%s\" (%s)" -#: io.c:2084 +#: io.c:2087 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "kan inte skapa barnprocess för \"%s\" (fork: %s)" -#: io.c:2517 +#: io.c:2520 #, c-format msgid "data file `%s' is empty" msgstr "datafilen \"%s\" är tom" -#: io.c:2558 io.c:2566 +#: io.c:2561 io.c:2569 msgid "could not allocate more input memory" msgstr "kunde inte allokera mer indataminne" -#: io.c:3119 +#: io.c:3127 msgid "multicharacter value of `RS' is a gawk extension" msgstr "flerteckensvärdet av \"RS\" är en gawk-utökning" -#: io.c:3224 +#: io.c:3232 msgid "IPv6 communication is not supported" msgstr "IPv6-kommunikation stöds inte" @@ -1689,118 +1694,118 @@ msgid "no program text at all!" msgstr "ingen programtext alls!" -#: main.c:735 +#: main.c:734 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" "Användning: %s [POSIX- eller GNU-stilsflaggor] -f progfil [--] fil ...\n" -#: main.c:737 +#: main.c:736 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "Användning: %s [POSIX- eller GNU-stilsflaggor] %cprogram%c fil ...\n" -#: main.c:742 +#: main.c:741 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX-flaggor:\t\tGNU långa flaggor: (standard)\n" -#: main.c:743 +#: main.c:742 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f progfil\t\t--file=progfil\n" -#: main.c:744 +#: main.c:743 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:745 +#: main.c:744 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=värde\t\t--assign=var=värde\n" -#: main.c:746 +#: main.c:745 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Korta flaggor:\t\tGNU långa flaggor: (utökningar)\n" -#: main.c:747 +#: main.c:746 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:748 +#: main.c:747 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:749 +#: main.c:748 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:750 +#: main.c:749 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[fil]\t\t\t--dump-variables[=fil]\n" -#: main.c:751 +#: main.c:750 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'programtext'\t--source='programtext'\n" -#: main.c:752 +#: main.c:751 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E fil\t\t\t--exec=fil\n" -#: main.c:753 +#: main.c:752 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:754 +#: main.c:753 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:755 +#: main.c:754 msgid "\t-L [fatal]\t\t--lint[=fatal]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: main.c:756 +#: main.c:755 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:757 +#: main.c:756 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:758 +#: main.c:757 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:759 +#: main.c:758 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[fil]\t\t\t--profile[=fil]\n" -#: main.c:760 +#: main.c:759 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:761 +#: main.c:760 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:763 +#: main.c:762 msgid "\t-R file\t\t\t--command=file\n" msgstr "\t-R file\t\t\t--command=file\n" -#: main.c:764 +#: main.c:763 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:765 +#: main.c:764 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:766 +#: main.c:765 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:768 +#: main.c:767 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:771 +#: main.c:770 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -1809,7 +1814,7 @@ #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:780 +#: main.c:779 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -1823,7 +1828,7 @@ "Rapportera synpunkter på översättningen till .\n" "\n" -#: main.c:784 +#: main.c:783 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -1833,7 +1838,7 @@ "Normalt läser det från standard in och skriver till standard ut.\n" "\n" -#: main.c:788 +#: main.c:787 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -1843,7 +1848,7 @@ "\tgawk '{ sum += $1 }; END { print sum }' fil\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:808 +#: main.c:807 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -1862,7 +1867,7 @@ "någon senare version.\n" "\n" -#: main.c:816 +#: main.c:815 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" @@ -1876,7 +1881,7 @@ "General Public License för ytterligare information.\n" "\n" -#: main.c:822 +#: main.c:821 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" @@ -1884,73 +1889,68 @@ "Du bör ha fått en kopia av GNU General Public License tillsammans\n" "med detta program. Om inte, se http//www.gnu.org/liceences/.\n" -#: main.c:857 +#: main.c:856 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft sätter inte FS till tab i POSIX-awk" -#: main.c:1091 +#: main.c:1090 #, c-format msgid "unknown value for field spec: %d\n" msgstr "okänt värde till fältspecifikation: %d\n" -#: main.c:1152 +#: main.c:1171 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" "\n" msgstr "%s: Argumentet \"%s\" till \"-v\" är inte på formatet \"var=värde\"\n" -#: main.c:1178 +#: main.c:1197 #, c-format msgid "`%s' is not a legal variable name" msgstr "\"%s\" är inte ett giltigt variabelnamn" -#: main.c:1181 +#: main.c:1200 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "\"%s\" är inte ett variabelnamn, letar efter filen \"%s=%s\"" -#: main.c:1185 -#, fuzzy, c-format +#: main.c:1204 +#, c-format msgid "cannot use gawk builtin `%s' as variable name" -msgstr "utökning: kan inte använda gawks inbyggda \"%s\" som ett funktionsnamn" +msgstr "kan inte använda gawks inbyggda \"%s\" som ett funktionsnamn" -#: main.c:1190 -#, fuzzy, c-format +#: main.c:1209 +#, c-format msgid "cannot use function `%s' as variable name" -msgstr "kan inte använda funktionsnamnet \"%s\" som variabel eller vektor" +msgstr "kan inte använda funktionen \"%s\" som variabelnamn" -#: main.c:1243 +#: main.c:1262 msgid "floating point exception" msgstr "flyttalsundantag" -#: main.c:1250 +#: main.c:1269 msgid "fatal error: internal error" msgstr "ödesdigert fel: internt fel" -#: main.c:1265 +#: main.c:1284 msgid "fatal error: internal error: segfault" msgstr "ödesdigert fel: internt fel: segmenteringsfel" -#: main.c:1277 +#: main.c:1296 msgid "fatal error: internal error: stack overflow" msgstr "ödesdigert fel: internt fel: stackspill" -#: main.c:1327 +#: main.c:1346 #, c-format msgid "no pre-opened fd %d" msgstr "ingen föröppnad fd %d" -#: main.c:1334 +#: main.c:1353 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "kunde inte föröppna /dev/null för fd %d" -#: main.c:1357 main.c:1366 -#, c-format -msgid "could not find groups: %s" -msgstr "kunde inte hitta grupper: %s" - #: msg.c:63 #, c-format msgid "cmd. line:" @@ -2041,12 +2041,12 @@ msgid "internal error: %s with null vname" msgstr "internt fel: %s med null vname" -#: profile.c:938 +#: profile.c:952 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawkprofil, skapad %s\n" -#: profile.c:1317 +#: profile.c:1331 #, c-format msgid "" "\n" @@ -2055,90 +2055,93 @@ "\n" "\t# Funktioner, listade alfabetiskt\n" -#: profile.c:1356 +#: profile.c:1370 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: okänd omdirigeringstyp %d" -#: re.c:572 +#: re.c:573 #, c-format -msgid "range of the form `[%c-%c]' is locale dependant" +msgid "range of the form `[%c-%c]' is locale dependent" msgstr "intervall på formen \"[%c-%c]\" är lokalberoende" -#: re.c:599 +#: re.c:600 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" "komponenten \"%.*s\" i reguljäruttryck skall förmodligen 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ärt 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äpande omvänt snedstreck" -#: regcomp.c:150 +#: regcomp.c:149 msgid "Invalid back reference" msgstr "Ogiltig bakåtrerefens" -#: 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åll i \\{\\}" -#: regcomp.c:165 +#: regcomp.c:164 msgid "Invalid range end" msgstr "Ogiltigt omfångsslut" -#: 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öregående reguljärt uttryck" -#: regcomp.c:174 +#: regcomp.c:173 msgid "Premature end of regular expression" msgstr "För tidigt slut på reguljärt uttryck" -#: regcomp.c:177 +#: regcomp.c:176 msgid "Regular expression too big" msgstr "Reguljärt uttryck för 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öregående reguljärt uttryck" + +#~ msgid "could not find groups: %s" +#~ msgstr "kunde inte hitta grupper: %s" diff -urN gawk-4.0.0/posix/ChangeLog gawk-4.0.1/posix/ChangeLog --- gawk-4.0.0/posix/ChangeLog 2011-06-23 09:44:35.000000000 +0300 +++ gawk-4.0.1/posix/ChangeLog 2012-03-28 22:02:21.000000000 +0200 @@ -1,3 +1,7 @@ +2012-03-28 Arnold D. Robbins + + * 4.0.1: Release tar ball made. + 2011-06-23 Arnold D. Robbins * ChangeLog.0: Rotated ChangeLog into this file. diff -urN gawk-4.0.0/profile.c gawk-4.0.1/profile.c --- gawk-4.0.0/profile.c 2011-02-27 08:00:54.000000000 +0200 +++ gawk-4.0.1/profile.c 2012-03-28 21:47:54.000000000 +0200 @@ -507,6 +507,20 @@ case Op_after_endfile: break; + case Op_sub_builtin: + { + const char *fname = "sub"; + if (pc->sub_flags & GSUB) + fname = "gsub"; + else if (pc->sub_flags & GENSUB) + fname = "gensub"; + tmp = pp_list(pc->expr_count, "()", ", "); + str = pp_concat(fname, tmp, ""); + efree(tmp); + pp_push(Op_sub_builtin, str, CAN_FREE); + } + break; + case Op_builtin: { static char *ext_func = "extension_function()"; @@ -1348,8 +1362,8 @@ " >> ", /* redirect_append */ " | ", /* redirect_pipe */ " | ", /* redirect_pipein */ - " < " /* redirect_input */ - " |& " /* redirect_twoway */ + " < ", /* redirect_input */ + " |& ", /* redirect_twoway */ }; if (redirtype < 0 || redirtype > redirect_twoway) diff -urN gawk-4.0.0/re.c gawk-4.0.1/re.c --- gawk-4.0.0/re.c 2011-06-15 20:02:39.000000000 +0300 +++ gawk-4.0.1/re.c 2012-03-28 21:52:21.000000000 +0200 @@ -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. @@ -52,7 +52,7 @@ * It is 0, when the current character is a singlebyte character. */ size_t is_multibyte = 0; -#ifdef MBS_SUPPORT +#if MBS_SUPPORT mbstate_t mbs; if (gawk_mb_cur_max > 1) @@ -85,7 +85,7 @@ dest = buf; while (src < end) { -#ifdef MBS_SUPPORT +#if MBS_SUPPORT if (gawk_mb_cur_max > 1 && ! is_multibyte) { /* The previous byte is a singlebyte character, or last byte of a multibyte character. We check the next character. */ @@ -322,6 +322,7 @@ dfaerror(const char *s) { fatal("%s", s); + exit(EXIT_FATAL); /* for DJGPP */ } /* re_update --- recompile a dynamic regexp */ @@ -569,7 +570,7 @@ && ! isdigit((unsigned char) sp[-1]) && ! isdigit((unsigned char) sp[1]) && ! (sp[-2] == '[' && sp[-1] == '^')) { range_warned = TRUE; - warning(_("range of the form `[%c-%c]' is locale dependant"), + warning(_("range of the form `[%c-%c]' is locale dependent"), sp[-1], sp[1]); } if (count == 0) { diff -urN gawk-4.0.0/regcomp.c gawk-4.0.1/regcomp.c --- gawk-4.0.0/regcomp.c 2011-06-15 20:04:51.000000000 +0300 +++ gawk-4.0.1/regcomp.c 2012-03-28 21:47:54.000000000 +0200 @@ -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 . @@ -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 + . */ static reg_errcode_t re_compile_internal (regex_t *preg, const char * pattern, size_t length, reg_syntax_t syntax); @@ -974,6 +973,35 @@ { 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 @@ _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 @@ { char_buf[0] = ch; cp = char_buf; - idx2 = findidx (&cp); + idx2 = findidx (&cp, 1); /* idx2 = table[ch]; */ diff -urN gawk-4.0.0/regex.c gawk-4.0.1/regex.c --- gawk-4.0.0/regex.c 2010-12-18 20:11:01.000000000 +0200 +++ gawk-4.0.1/regex.c 2012-03-28 21:47:54.000000000 +0200 @@ -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 + . */ #ifdef HAVE_CONFIG_H #include "config.h" diff -urN gawk-4.0.0/regex.h gawk-4.0.1/regex.h --- gawk-4.0.0/regex.h 2011-06-15 20:02:25.000000000 +0300 +++ gawk-4.0.1/regex.h 2012-03-28 21:47:54.000000000 +0200 @@ -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 + . */ #ifndef _REGEX_H #define _REGEX_H 1 @@ -349,9 +348,9 @@ /* 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 @@ /* 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 -urN gawk-4.0.0/regex_internal.c gawk-4.0.1/regex_internal.c --- gawk-4.0.0/regex_internal.c 2011-05-18 22:04:07.000000000 +0300 +++ gawk-4.0.1/regex_internal.c 2012-03-28 21:47:54.000000000 +0200 @@ -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 . @@ -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 + . */ static void re_string_construct_common (const char *str, int len, re_string_t *pstr, @@ -246,13 +245,8 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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) @@ -871,7 +876,7 @@ } static unsigned char -internal_function __attribute ((pure)) +internal_function re_string_fetch_byte_case (re_string_t *pstr) { if (BE (!pstr->mbs_allocated, 1)) diff -urN gawk-4.0.0/regex_internal.h gawk-4.0.1/regex_internal.h --- gawk-4.0.0/regex_internal.h 2011-05-20 10:57:47.000000000 +0300 +++ gawk-4.0.1/regex_internal.h 2012-03-28 21:47:54.000000000 +0200 @@ -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 . @@ -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 + . */ #ifndef _REGEX_INTERNAL_H #define _REGEX_INTERNAL_H 1 @@ -27,16 +26,18 @@ #include #include +#include "mbsupport.h" /* gawk */ + #if defined HAVE_LANGINFO_H || defined HAVE_LANGINFO_CODESET || defined _LIBC # include #endif #if defined HAVE_LOCALE_H || defined _LIBC # include #endif -#if defined HAVE_WCHAR_H || defined _LIBC +#if MBS_SUPPORT && (defined HAVE_WCHAR_H || defined _LIBC) # include #endif /* HAVE_WCHAR_H || _LIBC */ -#if defined HAVE_WCTYPE_H || defined _LIBC +#if MBS_SUPPORT && (defined HAVE_WCTYPE_H || defined _LIBC) # include #endif /* HAVE_WCTYPE_H || _LIBC */ #if defined HAVE_STDBOOL_H || defined _LIBC @@ -108,14 +109,7 @@ # define SIZE_MAX ((size_t) -1) #endif -#ifndef NO_MBSUPPORT -#include "mbsupport.h" /* gawk */ -#endif -#ifndef MB_CUR_MAX -#define MB_CUR_MAX 1 -#endif - -#if (defined MBS_SUPPORT) || _LIBC +#if MBS_SUPPORT || _LIBC # define RE_ENABLE_I18N #endif @@ -788,7 +782,6 @@ # ifdef _LIBC const unsigned char *p, *extra; const int32_t *table, *indirect; - int32_t tmp; # include uint_fast32_t nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES); @@ -800,7 +793,7 @@ indirect = (const int32_t *) _NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTMB); p = pstr->mbs + idx; - tmp = findidx (&p); + findidx (&p, pstr->len - idx); return p - pstr->mbs - idx; } else diff -urN gawk-4.0.0/regexec.c gawk-4.0.1/regexec.c --- gawk-4.0.0/regexec.c 2011-05-18 22:09:16.000000000 +0300 +++ gawk-4.0.1/regexec.c 2012-03-28 21:47:54.000000000 +0200 @@ -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 . @@ -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 + . */ static reg_errcode_t match_ctx_init (re_match_context_t *cache, int eflags, int n) internal_function; @@ -200,6 +199,15 @@ 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 @@ 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 @@ { 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 @@ 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 @@ _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) { @@ -3963,18 +3974,10 @@ # endif /* _LIBC */ { /* match with range expression? */ -#if __GNUC__ >= 2 - wchar_t cmp_buf[] = {L'\0', L'\0', wc, L'\0', L'\0', L'\0'}; -#else - wchar_t cmp_buf[] = {L'\0', L'\0', L'\0', L'\0', L'\0', L'\0'}; - cmp_buf[2] = wc; -#endif for (i = 0; i < cset->nranges; ++i) { - cmp_buf[0] = cset->range_starts[i]; - cmp_buf[4] = cset->range_ends[i]; - if (wcscoll (cmp_buf, cmp_buf + 2) <= 0 - && wcscoll (cmp_buf + 2, cmp_buf + 4) <= 0) + if (cset->range_starts[i] <= wc + && wc <= cset->range_ends[i]) { match_len = char_len; goto check_node_accept_bytes_match; @@ -4121,7 +4124,7 @@ return REG_ESPACE; /* Double the lengthes of the buffers. */ - ret = re_string_realloc_buffers (pstr, pstr->bufs_len * 2); + ret = re_string_realloc_buffers (pstr, MIN (pstr->len, pstr->bufs_len * 2)); if (BE (ret != REG_NOERROR, 0)) return ret; diff -urN gawk-4.0.0/replace.c gawk-4.0.1/replace.c --- gawk-4.0.0/replace.c 2011-02-27 08:00:54.000000000 +0200 +++ gawk-4.0.1/replace.c 2011-12-08 21:12:16.000000000 +0200 @@ -111,3 +111,7 @@ #ifndef HAVE_STRCOLL #include "missing_d/strcoll.c" #endif + +#if ! MBS_SUPPORT +#include "missing_d/wcmisc.c" +#endif diff -urN gawk-4.0.0/test/ChangeLog gawk-4.0.1/test/ChangeLog --- gawk-4.0.0/test/ChangeLog 2011-06-24 11:24:30.000000000 +0300 +++ gawk-4.0.1/test/ChangeLog 2012-03-28 22:02:15.000000000 +0200 @@ -1,3 +1,85 @@ +2012-03-28 Arnold D. Robbins + + * 4.0.1: Release tar ball made. + +2012-03-20 Arnold D. Robbins + + * Makefile.am (printfbad3): New test. + * printfbad3.awk, printfbad3.ok: New files. + +2012-02-22 Arnold D. Robbins + + * 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 . + +2011-12-26 Arnold D. Robbins + + * Makefile.am (rri1): New test. + * rri1.awk, rri1.in, rri1.ok: New files. + +2011-12-06 Arnold D. Robbins + + * Makefile.am: Rationalize the $(CMP) lines wherever possible. + +2011-10-24 Arnold D. Robbins + + * beginfile2.sh: Use `...` instead of $(...) for broken systems + where /bin/sh doesn't support $(...). Thanks to Nelson Beebe for + the report. + +2011-10-21 John Haque + + * beginfile2.in, beginfile2.sh, beginfile2.ok: Adjust input file names. + +2011-10-21 Corinna Vinschen + + * Makefile.am (beginfile2): Adjust for running out of srcdir. + * beginfile2.sh: Same. + +2011-10-02 Arnold D. Robbins + + * Makefile.am (rtlen, rtlen01, rtlenmb): New tests. + * rtlen.ok, rtlen.sh, rtlen01.ok, rtlen01.sh: New files. + Thanks to Rogier as forwarded by + Jeroen Schot . + +2011-08-10 Arnold D. Robbins + + * Makefile.am (beginfile2, fpat3, fwtest3): New tests. + * beginfile2.awk, beginfile2.in, beginfile2.ok: New files. + * fpat3.awk, fpat3.in, fpat3.ok: New files. + * fwtest3.awk, fwtest3.in, fwtest3.ok: New files. + +2011-08-09 Arnold D. Robbins + + * pty1.awk, pty1.ok: New files. + * Makefile.am (pty1): New test. + (profile1, profile2, profile3): Use unique names for the profile + files to avoid problems with parallel 'make check' + +2011-07-29 Arnold D. Robbins + + * Makefile.am (next): Redirect output to output file! + +2011-07-28 Arnold D. Robbins + + * sortu.awk, sortu.ok: Modified to make numeric comparison do + a stable sort. Thanks to Peter Fales . + * backgsub.ok: Update for change in code. + * Makefile.am (posix2008sub): Add --posix to invocation. + +2011-07-26 Arnold D. Robbins + + * Makefile.am (getline4, gsubtst8): New tests. + * getline4.awk, getline4.in, getline4.ok: New files. + * gsubtst8.awk, gsubtst8.in, gsubtst8.ok: New files. + +2011-07-15 Arnold D. Robbins + + * Makefile.am (gsubtst7): New test. + * gsubtst7.awk, gsubtst7.in, gsubtst7.ok: New files. + 2011-06-24 Arnold D. Robbins * Makefile.am (EXTRA_DIST): Add ChangeLog.0. diff -urN gawk-4.0.0/test/Makefile.am gawk-4.0.1/test/Makefile.am --- gawk-4.0.0/test/Makefile.am 2011-06-24 11:24:18.000000000 +0300 +++ gawk-4.0.1/test/Makefile.am 2012-03-28 21:47:54.000000000 +0200 @@ -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. @@ -115,6 +115,9 @@ badargs.ok \ beginfile1.awk \ beginfile1.ok \ + beginfile2.in \ + beginfile2.ok \ + beginfile2.sh \ binmode1.ok \ childin.awk \ childin.in \ @@ -231,6 +234,9 @@ fpat1.ok \ fpat2.awk \ fpat2.ok \ + fpat3.awk \ + fpat3.in \ + fpat3.ok \ fpatnull.awk \ fpatnull.in \ fpatnull.ok \ @@ -271,6 +277,9 @@ fwtest2.awk \ fwtest2.in \ fwtest2.ok \ + fwtest3.awk \ + fwtest3.in \ + fwtest3.ok \ gensub.awk \ gensub.in \ gensub.ok \ @@ -283,6 +292,9 @@ getline2.ok \ getline3.awk \ getline3.ok \ + getline4.awk \ + getline4.in \ + getline4.ok \ getlnbuf.awk \ getlnbuf.in \ getlnbuf.ok \ @@ -318,6 +330,12 @@ gsubtst5.ok \ gsubtst6.awk \ gsubtst6.ok \ + gsubtst7.awk \ + gsubtst7.in \ + gsubtst7.ok \ + gsubtst8.awk \ + gsubtst8.in \ + gsubtst8.ok \ gtlnbufv.awk \ hex.awk \ hex.ok \ @@ -555,6 +573,8 @@ printfbad2.awk \ printfbad2.in \ printfbad2.ok \ + printfbad3.awk \ + printfbad3.ok \ printfloat.awk \ printlang.awk \ prmarscl.awk \ @@ -567,6 +587,8 @@ prt1eval.ok \ prtoeval.awk \ prtoeval.ok \ + pty1.awk \ + pty1.ok \ rand.awk \ rand.ok \ range1.awk \ @@ -605,6 +627,9 @@ resplit.awk \ resplit.in \ resplit.ok \ + rri1.awk \ + rri1.in \ + rri1.ok \ rs.awk \ rs.in \ rs.ok \ @@ -635,6 +660,10 @@ rswhite.awk \ rswhite.in \ rswhite.ok \ + rtlen.ok \ + rtlen.sh \ + rtlen01.ok \ + rtlen01.sh \ scalar.awk \ scalar.ok \ sclforin.awk \ @@ -755,48 +784,62 @@ # 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 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 \ - 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 + 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 UNIX_TESTS = \ - fflush getlnhd localenl pid pipeio1 pipeio2 poundbang space strftlng + fflush getlnhd localenl pid pipeio1 pipeio2 poundbang rtlen rtlen01 \ + space strftlng GAWK_EXT_TESTS = \ aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \ - backw badargs beginfile1 binmode1 clos1way delsub devfd devfd1 \ - devfd2 dumpvars exit fieldwdth fpat1 fpat2 fpatnull fsfwfs funlen \ - fwtest fwtest2 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 \ - profile1 profile2 profile3 rebuf regx8bit reint reint2 rsstart1 \ + 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 printfbad3 procinfs \ + profile1 profile2 profile3 pty1 \ + rebuf regx8bit reint reint2 rsstart1 \ rsstart2 rsstart3 rstest6 shadow sortfor sortu splitarg4 strftime \ strtonum switch2 @@ -808,7 +851,7 @@ LOCALE_CHARSET_TESTS = \ asort asorti fmttest fnarydel fnparydl lc_num1 mbfw1 \ - mbprintf1 mbprintf2 mbprintf3 rebt8b2 sort1 sprintfc + mbprintf1 mbprintf2 mbprintf3 rebt8b2 rtlenmb sort1 sprintfc # List of the tests which should be run with --lint option: NEED_LINT = \ @@ -945,7 +988,7 @@ .) : ;; \ *) rm -f ./argarray.in ;; \ esac - @-$(CMP) $(srcdir)/argarray.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ regtest:: @echo 'Some of the output from regtest is very system specific, do not' @@ -960,43 +1003,44 @@ @$(AWK) 'BEGIN { for (i = 1; i <= 1030; i++) print i, i}' >_$@ @$(AWK) -f $(srcdir)/manyfiles.awk _$@ _$@ @wc -l junk/* | $(AWK) '$$1 != 2' | wc -l | sed "s/ *//g" > _$@ - @rm -rf junk ; $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + @rm -rf junk + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ compare:: @echo $@ @$(AWK) -f $(srcdir)/compare.awk 0 1 $(srcdir)/compare.in >_$@ - @-$(CMP) $(srcdir)/compare.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ inftest:: @echo $@ @echo This test is very machine specific... @$(AWK) -f $(srcdir)/inftest.awk | sed "s/inf/Inf/g" >_$@ - @-$(CMP) $(srcdir)/inftest.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ getline2:: @echo $@ @$(AWK) -f $(srcdir)/getline2.awk $(srcdir)/getline2.awk $(srcdir)/getline2.awk >_$@ - @-$(CMP) $(srcdir)/getline2.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ awkpath:: @echo $@ @AWKPATH="$(srcdir)$(PATH_SEPARATOR)$(srcdir)/lib" $(AWK) -f awkpath.awk >_$@ - @-$(CMP) $(srcdir)/awkpath.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ argtest:: @echo $@ @$(AWK) -f $(srcdir)/argtest.awk -x -y abc >_$@ - @-$(CMP) $(srcdir)/argtest.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ badargs:: @echo $@ @-$(AWK) -f 2>&1 | grep -v patchlevel >_$@ - @-$(CMP) $(srcdir)/badargs.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ nonl:: @echo $@ @-AWKPATH=$(srcdir) $(AWK) --lint -f nonl.awk /dev/null >_$@ 2>&1 - @-$(CMP) $(srcdir)/nonl.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ strftime:: @echo This test could fail on slow machines or on a minute boundary, @@ -1010,7 +1054,7 @@ litoct:: @echo $@ @echo ab | $(AWK) --traditional -f $(srcdir)/litoct.awk >_$@ - @-$(CMP) $(srcdir)/litoct.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ devfd:: @echo $@ @@ -1020,13 +1064,13 @@ fflush:: @echo $@ @$(srcdir)/fflush.sh >_$@ - @-$(CMP) $(srcdir)/fflush.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ tweakfld:: @echo $@ @$(AWK) -f $(srcdir)/tweakfld.awk $(srcdir)/tweakfld.in >_$@ @rm -f errors.cleanup - @-$(CMP) $(srcdir)/tweakfld.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ mmap8k:: @echo $@ @@ -1036,7 +1080,7 @@ tradanch:: @echo $@ @$(AWK) --traditional -f $(srcdir)/tradanch.awk $(srcdir)/tradanch.in >_$@ - @-$(CMP) $(srcdir)/tradanch.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ # AIX /bin/sh exec's the last command in a list, therefore issue a ":" # command so that pid.sh is fork'ed as a child before being exec'ed. @@ -1051,12 +1095,12 @@ @if $(CMP) $(srcdir)/strftlng.ok _$@ >/dev/null 2>&1 ; then : ; else \ TZ=UTC0; export TZ; $(AWK) -f $(srcdir)/strftlng.awk >_$@ ; \ fi - @-$(CMP) $(srcdir)/strftlng.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ nors:: @echo $@ @echo A B C D E | tr -d '\12\15' | $(AWK) '{ print $$NF }' - $(srcdir)/nors.in > _$@ - @-$(CMP) $(srcdir)/nors.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ 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 @@ -1069,18 +1113,18 @@ reint:: @echo $@ @$(AWK) --re-interval -f $(srcdir)/reint.awk $(srcdir)/reint.in >_$@ - @-$(CMP) $(srcdir)/reint.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ pipeio1:: @echo $@ @$(AWK) -f $(srcdir)/pipeio1.awk >_$@ @rm -f test1 test2 - @-$(CMP) $(srcdir)/pipeio1.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ pipeio2:: @echo $@ @$(AWK) -v SRCDIR=$(srcdir) -f $(srcdir)/pipeio2.awk >_$@ - @-$(CMP) $(srcdir)/pipeio2.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ clobber:: @echo $@ @@ -1091,7 +1135,7 @@ arynocls:: @echo $@ @-AWKPATH=$(srcdir) $(AWK) -v INPUT=$(srcdir)/arynocls.in -f arynocls.awk >_$@ - @-$(CMP) $(srcdir)/arynocls.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ getlnbuf:: @echo $@ @@ -1125,12 +1169,12 @@ redfilnm:: @echo $@ @$(AWK) -f $(srcdir)/redfilnm.awk srcdir=$(srcdir) $(srcdir)/redfilnm.in >_$@ - @-$(CMP) $(srcdir)/redfilnm.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ leaddig:: @echo $@ @$(AWK) -v x=2E -f $(srcdir)/leaddig.awk >_$@ - @-$(CMP) $(srcdir)/leaddig.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ gsubtst3:: @echo $@ @@ -1238,6 +1282,22 @@ @head $(srcdir)/rsstart1.in | $(AWK) -f $(srcdir)/rsstart2.awk >_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +rtlen:: + @echo $@ + @$(srcdir)/$@.sh >_$@ || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +rtlen01:: + @echo $@ + @$(srcdir)/$@.sh >_$@ || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +rtlenmb:: + @echo $@ + @GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \ + $(srcdir)/rtlen.sh >_$@ || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/rtlen.ok _$@ && rm -f _$@ + nondec2:: @echo $@ @$(AWK) --non-decimal-data -v a=0x1 -f $(srcdir)/$@.awk >_$@ @@ -1341,6 +1401,11 @@ @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) && LC_ALL=C AWK="$(abs_builddir)/$(AWKPROG)" $(srcdir)/$@.sh $(srcdir)/$@.in ) > _$@ 2>&1 + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + dumpvars:: @echo $@ @AWKPATH=$(srcdir) $(AWK) --dump-variables 1 < $(srcdir)/$@.in >/dev/null 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1349,32 +1414,43 @@ profile1: @echo $@ - @$(AWK) --profile -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > _$@.out1 - @$(AWK) -f awkprof.out $(srcdir)/dtdgport.awk > _$@.out2 ; rm awkprof.out + @$(AWK) --profile=ap-$@.out -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > _$@.out1 + @$(AWK) -f ap-$@.out $(srcdir)/dtdgport.awk > _$@.out2 ; rm ap-$@.out @cmp _$@.out1 _$@.out2 && rm _$@.out[12] || echo EXIT CODE: $$? >>_$@ profile2: @echo $@ - @$(PGAWK) -v sortcmd=sort -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > /dev/null - @sed 1,2d < awkprof.out > _$@; rm awkprof.out + @$(PGAWK) --profile=ap-$@.out -v sortcmd=sort -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > /dev/null + @sed 1,2d < ap-$@.out > _$@; rm ap-$@.out @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ profile3: @echo $@ - @$(PGAWK) -f $(srcdir)/$@.awk > /dev/null - @sed 1,2d < awkprof.out > _$@; rm awkprof.out + @$(PGAWK) --profile=ap-$@.out -f $(srcdir)/$@.awk > /dev/null + @sed 1,2d < ap-$@.out > _$@; rm ap-$@.out + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +posix2008sub: + @echo $@ + @$(AWK) --posix -f $(srcdir)/$@.awk > _$@ 2>&1 @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ next: @echo $@ @-AWK="$(AWKPROG)" $(srcdir)/$@.sh > _$@ 2>&1 - @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + @-LC_ALL=C $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ exit: @echo $@ @-AWK="$(AWKPROG)" $(srcdir)/$@.sh > _$@ 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 _$@ + # Targets generated for other tests: include Maketests diff -urN gawk-4.0.0/test/Makefile.in gawk-4.0.1/test/Makefile.in --- gawk-4.0.0/test/Makefile.in 2011-06-24 11:26:55.000000000 +0300 +++ gawk-4.0.1/test/Makefile.in 2012-03-28 22:03:23.000000000 +0200 @@ -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. @@ -150,7 +150,6 @@ SHELL = @SHELL@ SOCKET_LIBS = @SOCKET_LIBS@ STRIP = @STRIP@ -U = @U@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ @@ -300,6 +299,9 @@ badargs.ok \ beginfile1.awk \ beginfile1.ok \ + beginfile2.in \ + beginfile2.ok \ + beginfile2.sh \ binmode1.ok \ childin.awk \ childin.in \ @@ -416,6 +418,9 @@ fpat1.ok \ fpat2.awk \ fpat2.ok \ + fpat3.awk \ + fpat3.in \ + fpat3.ok \ fpatnull.awk \ fpatnull.in \ fpatnull.ok \ @@ -456,6 +461,9 @@ fwtest2.awk \ fwtest2.in \ fwtest2.ok \ + fwtest3.awk \ + fwtest3.in \ + fwtest3.ok \ gensub.awk \ gensub.in \ gensub.ok \ @@ -468,6 +476,9 @@ getline2.ok \ getline3.awk \ getline3.ok \ + getline4.awk \ + getline4.in \ + getline4.ok \ getlnbuf.awk \ getlnbuf.in \ getlnbuf.ok \ @@ -503,6 +514,12 @@ gsubtst5.ok \ gsubtst6.awk \ gsubtst6.ok \ + gsubtst7.awk \ + gsubtst7.in \ + gsubtst7.ok \ + gsubtst8.awk \ + gsubtst8.in \ + gsubtst8.ok \ gtlnbufv.awk \ hex.awk \ hex.ok \ @@ -740,6 +757,8 @@ printfbad2.awk \ printfbad2.in \ printfbad2.ok \ + printfbad3.awk \ + printfbad3.ok \ printfloat.awk \ printlang.awk \ prmarscl.awk \ @@ -752,6 +771,8 @@ prt1eval.ok \ prtoeval.awk \ prtoeval.ok \ + pty1.awk \ + pty1.ok \ rand.awk \ rand.ok \ range1.awk \ @@ -790,6 +811,9 @@ resplit.awk \ resplit.in \ resplit.ok \ + rri1.awk \ + rri1.in \ + rri1.ok \ rs.awk \ rs.in \ rs.ok \ @@ -820,6 +844,10 @@ rswhite.awk \ rswhite.in \ rswhite.ok \ + rtlen.ok \ + rtlen.sh \ + rtlen01.ok \ + rtlen01.sh \ scalar.awk \ scalar.ok \ sclforin.awk \ @@ -940,48 +968,62 @@ # 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 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 \ - 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 + 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 UNIX_TESTS = \ - fflush getlnhd localenl pid pipeio1 pipeio2 poundbang space strftlng + fflush getlnhd localenl pid pipeio1 pipeio2 poundbang rtlen rtlen01 \ + space strftlng GAWK_EXT_TESTS = \ aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \ - backw badargs beginfile1 binmode1 clos1way delsub devfd devfd1 \ - devfd2 dumpvars exit fieldwdth fpat1 fpat2 fpatnull fsfwfs funlen \ - fwtest fwtest2 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 \ - profile1 profile2 profile3 rebuf regx8bit reint reint2 rsstart1 \ + 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 printfbad3 procinfs \ + profile1 profile2 profile3 pty1 \ + rebuf regx8bit reint reint2 rsstart1 \ rsstart2 rsstart3 rstest6 shadow sortfor sortu splitarg4 strftime \ strtonum switch2 @@ -990,7 +1032,7 @@ MACHINE_TESTS = double1 double2 fmtspcl intformat LOCALE_CHARSET_TESTS = \ asort asorti fmttest fnarydel fnparydl lc_num1 mbfw1 \ - mbprintf1 mbprintf2 mbprintf3 rebt8b2 sort1 sprintfc + mbprintf1 mbprintf2 mbprintf3 rebt8b2 rtlenmb sort1 sprintfc # List of the tests which should be run with --lint option: @@ -1296,7 +1338,7 @@ .) : ;; \ *) rm -f ./argarray.in ;; \ esac - @-$(CMP) $(srcdir)/argarray.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ regtest:: @echo 'Some of the output from regtest is very system specific, do not' @@ -1311,43 +1353,44 @@ @$(AWK) 'BEGIN { for (i = 1; i <= 1030; i++) print i, i}' >_$@ @$(AWK) -f $(srcdir)/manyfiles.awk _$@ _$@ @wc -l junk/* | $(AWK) '$$1 != 2' | wc -l | sed "s/ *//g" > _$@ - @rm -rf junk ; $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + @rm -rf junk + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ compare:: @echo $@ @$(AWK) -f $(srcdir)/compare.awk 0 1 $(srcdir)/compare.in >_$@ - @-$(CMP) $(srcdir)/compare.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ inftest:: @echo $@ @echo This test is very machine specific... @$(AWK) -f $(srcdir)/inftest.awk | sed "s/inf/Inf/g" >_$@ - @-$(CMP) $(srcdir)/inftest.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ getline2:: @echo $@ @$(AWK) -f $(srcdir)/getline2.awk $(srcdir)/getline2.awk $(srcdir)/getline2.awk >_$@ - @-$(CMP) $(srcdir)/getline2.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ awkpath:: @echo $@ @AWKPATH="$(srcdir)$(PATH_SEPARATOR)$(srcdir)/lib" $(AWK) -f awkpath.awk >_$@ - @-$(CMP) $(srcdir)/awkpath.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ argtest:: @echo $@ @$(AWK) -f $(srcdir)/argtest.awk -x -y abc >_$@ - @-$(CMP) $(srcdir)/argtest.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ badargs:: @echo $@ @-$(AWK) -f 2>&1 | grep -v patchlevel >_$@ - @-$(CMP) $(srcdir)/badargs.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ nonl:: @echo $@ @-AWKPATH=$(srcdir) $(AWK) --lint -f nonl.awk /dev/null >_$@ 2>&1 - @-$(CMP) $(srcdir)/nonl.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ strftime:: @echo This test could fail on slow machines or on a minute boundary, @@ -1361,7 +1404,7 @@ litoct:: @echo $@ @echo ab | $(AWK) --traditional -f $(srcdir)/litoct.awk >_$@ - @-$(CMP) $(srcdir)/litoct.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ devfd:: @echo $@ @@ -1371,13 +1414,13 @@ fflush:: @echo $@ @$(srcdir)/fflush.sh >_$@ - @-$(CMP) $(srcdir)/fflush.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ tweakfld:: @echo $@ @$(AWK) -f $(srcdir)/tweakfld.awk $(srcdir)/tweakfld.in >_$@ @rm -f errors.cleanup - @-$(CMP) $(srcdir)/tweakfld.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ mmap8k:: @echo $@ @@ -1387,7 +1430,7 @@ tradanch:: @echo $@ @$(AWK) --traditional -f $(srcdir)/tradanch.awk $(srcdir)/tradanch.in >_$@ - @-$(CMP) $(srcdir)/tradanch.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ # AIX /bin/sh exec's the last command in a list, therefore issue a ":" # command so that pid.sh is fork'ed as a child before being exec'ed. @@ -1402,12 +1445,12 @@ @if $(CMP) $(srcdir)/strftlng.ok _$@ >/dev/null 2>&1 ; then : ; else \ TZ=UTC0; export TZ; $(AWK) -f $(srcdir)/strftlng.awk >_$@ ; \ fi - @-$(CMP) $(srcdir)/strftlng.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ nors:: @echo $@ @echo A B C D E | tr -d '\12\15' | $(AWK) '{ print $$NF }' - $(srcdir)/nors.in > _$@ - @-$(CMP) $(srcdir)/nors.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ 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 @@ -1420,18 +1463,18 @@ reint:: @echo $@ @$(AWK) --re-interval -f $(srcdir)/reint.awk $(srcdir)/reint.in >_$@ - @-$(CMP) $(srcdir)/reint.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ pipeio1:: @echo $@ @$(AWK) -f $(srcdir)/pipeio1.awk >_$@ @rm -f test1 test2 - @-$(CMP) $(srcdir)/pipeio1.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ pipeio2:: @echo $@ @$(AWK) -v SRCDIR=$(srcdir) -f $(srcdir)/pipeio2.awk >_$@ - @-$(CMP) $(srcdir)/pipeio2.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ clobber:: @echo $@ @@ -1442,7 +1485,7 @@ arynocls:: @echo $@ @-AWKPATH=$(srcdir) $(AWK) -v INPUT=$(srcdir)/arynocls.in -f arynocls.awk >_$@ - @-$(CMP) $(srcdir)/arynocls.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ getlnbuf:: @echo $@ @@ -1476,12 +1519,12 @@ redfilnm:: @echo $@ @$(AWK) -f $(srcdir)/redfilnm.awk srcdir=$(srcdir) $(srcdir)/redfilnm.in >_$@ - @-$(CMP) $(srcdir)/redfilnm.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ leaddig:: @echo $@ @$(AWK) -v x=2E -f $(srcdir)/leaddig.awk >_$@ - @-$(CMP) $(srcdir)/leaddig.ok _$@ && rm -f _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ gsubtst3:: @echo $@ @@ -1589,6 +1632,22 @@ @head $(srcdir)/rsstart1.in | $(AWK) -f $(srcdir)/rsstart2.awk >_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +rtlen:: + @echo $@ + @$(srcdir)/$@.sh >_$@ || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +rtlen01:: + @echo $@ + @$(srcdir)/$@.sh >_$@ || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +rtlenmb:: + @echo $@ + @GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \ + $(srcdir)/rtlen.sh >_$@ || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/rtlen.ok _$@ && rm -f _$@ + nondec2:: @echo $@ @$(AWK) --non-decimal-data -v a=0x1 -f $(srcdir)/$@.awk >_$@ @@ -1692,6 +1751,11 @@ @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) && LC_ALL=C AWK="$(abs_builddir)/$(AWKPROG)" $(srcdir)/$@.sh $(srcdir)/$@.in ) > _$@ 2>&1 + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + dumpvars:: @echo $@ @AWKPATH=$(srcdir) $(AWK) --dump-variables 1 < $(srcdir)/$@.in >/dev/null 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1700,31 +1764,42 @@ profile1: @echo $@ - @$(AWK) --profile -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > _$@.out1 - @$(AWK) -f awkprof.out $(srcdir)/dtdgport.awk > _$@.out2 ; rm awkprof.out + @$(AWK) --profile=ap-$@.out -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > _$@.out1 + @$(AWK) -f ap-$@.out $(srcdir)/dtdgport.awk > _$@.out2 ; rm ap-$@.out @cmp _$@.out1 _$@.out2 && rm _$@.out[12] || echo EXIT CODE: $$? >>_$@ profile2: @echo $@ - @$(PGAWK) -v sortcmd=sort -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > /dev/null - @sed 1,2d < awkprof.out > _$@; rm awkprof.out + @$(PGAWK) --profile=ap-$@.out -v sortcmd=sort -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > /dev/null + @sed 1,2d < ap-$@.out > _$@; rm ap-$@.out @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ profile3: @echo $@ - @$(PGAWK) -f $(srcdir)/$@.awk > /dev/null - @sed 1,2d < awkprof.out > _$@; rm awkprof.out + @$(PGAWK) --profile=ap-$@.out -f $(srcdir)/$@.awk > /dev/null + @sed 1,2d < ap-$@.out > _$@; rm ap-$@.out + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +posix2008sub: + @echo $@ + @$(AWK) --posix -f $(srcdir)/$@.awk > _$@ 2>&1 @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ next: @echo $@ @-AWK="$(AWKPROG)" $(srcdir)/$@.sh > _$@ 2>&1 - @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + @-LC_ALL=C $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ exit: @echo $@ @-AWK="$(AWKPROG)" $(srcdir)/$@.sh > _$@ 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: @@ -2042,6 +2117,11 @@ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +getline4: + @echo getline4 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + getnr2tb: @echo getnr2tb @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2077,6 +2157,16 @@ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +gsubtst7: + @echo gsubtst7 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +gsubtst8: + @echo gsubtst8 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + hex: @echo hex @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2317,11 +2407,6 @@ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ -posix2008sub: - @echo posix2008sub - @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ - prdupval: @echo prdupval @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2647,6 +2732,11 @@ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +fpat3: + @echo fpat3 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + fpatnull: @echo fpatnull @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2672,6 +2762,11 @@ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +fwtest3: + @echo fwtest3 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + gensub: @echo gensub @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2787,11 +2882,21 @@ @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: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +pty1: + @echo pty1 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + rebuf: @echo rebuf @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff -urN gawk-4.0.0/test/Maketests gawk-4.0.1/test/Maketests --- gawk-4.0.0/test/Maketests 2011-06-24 11:26:54.000000000 +0300 +++ gawk-4.0.1/test/Maketests 2012-03-28 21:47:54.000000000 +0200 @@ -315,6 +315,11 @@ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +getline4: + @echo getline4 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + getnr2tb: @echo getnr2tb @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -350,6 +355,16 @@ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +gsubtst7: + @echo gsubtst7 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +gsubtst8: + @echo gsubtst8 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + hex: @echo hex @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -590,11 +605,6 @@ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ -posix2008sub: - @echo posix2008sub - @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ - prdupval: @echo prdupval @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -920,6 +930,11 @@ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +fpat3: + @echo fpat3 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + fpatnull: @echo fpatnull @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -945,6 +960,11 @@ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +fwtest3: + @echo fwtest3 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + gensub: @echo gensub @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1060,11 +1080,21 @@ @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: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +pty1: + @echo pty1 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + rebuf: @echo rebuf @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff -urN gawk-4.0.0/test/backgsub.ok gawk-4.0.1/test/backgsub.ok --- gawk-4.0.0/test/backgsub.ok 2010-11-12 08:48:08.000000000 +0200 +++ gawk-4.0.1/test/backgsub.ok 2011-11-01 22:09:45.000000000 +0200 @@ -1 +1 @@ -\x\y\z +\\x\\y\\z diff -urN gawk-4.0.0/test/beginfile2.in gawk-4.0.1/test/beginfile2.in --- gawk-4.0.0/test/beginfile2.in 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/beginfile2.in 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1,242 @@ +#TEST1# +BEGINFILE { + print "In BEGINFILE:", FILENAME +} +BEGIN { + count = 0 + print "In BEGIN" + while (getline > 0) + count++; + print count == NR +} + +#TEST2# +BEGINFILE { + print "In BEGINFILE:", FILENAME + nextfile +} +ENDFILE{ + print "In ENDFILE:", FILENAME +} + + +#TEST3# +BEGINFILE { + print "In BEGINFILE:", FILENAME +} +END { + print "executing END rule" + ARGV[ARGC++] = src; + count = 0 + while (getline> 0) + count++; + print count == FNR + print "Done executing END rule" +} +ENDFILE { + print "In ENDFILE:", FILENAME +} + +#TEST4# +BEGINFILE { + print "In BEGINFILE:", FILENAME + nextfile +} +END { + print "executing END rule" + ARGV[ARGC++] = src; + getline + print $0 + print "Done executing END rule" +} +ENDFILE { + print "ENDFILE:", FILENAME +} + + +#TEST5# +BEGIN { + getline + count++ + print NR, count +} +{ + count++ +} +END { + print NR == count +} + +#TEST6# +BEGINFILE { + print "In BEGINFILE:", FILENAME + count = 0 +} +BEGIN { + getline + count++ + print FNR, count +} +{ + count++ +} +ENDFILE { + print "In ENDFILE:", FILENAME + print count == FNR +} + +#TEST7# +BEGINFILE { + print "In BEGINFILE:", FILENAME + count = 0 + if (ARGIND == 1) + nextfile +} +BEGIN { + getline + print "In BEGIN:", FILENAME +} +{ count++ } +ENDFILE { + print "In ENDFILE:", FILENAME + print (FNR - count) +} + +#TEST8# +function f(a, b) { + getline + print FILENAME + print a, b +} +function g(x, y) { + return x +} +BEGINFILE { nextfile } +BEGIN { g(3, f(1, 2)) } + +#TEST9# +function f(a, b) { + b = b ":" a; + if (skip || ERRNO != "") { + print "Skipping:", b + nextfile + } + return b +} +BEGINFILE { print "In BEGINFILE:", f(FILENAME, ++i)} +FNR == 1 { print "In Rule:", FILENAME } +ENDFILE { print "In ENDFILE:", FILENAME } + +#TEST10# +function f() { + nextfile +} +function g( cnt) { + cnt = 0 + while (getline > 0) + cnt++; + return cnt +} +BEGINFILE { if (ARGIND == 1) f(); } +BEGIN { + print g(), NR +} + +#TEST11# +function f(a, b) { + print a + nextfile + print b +} +function g(x, y) { + print x + getline + return y +} +BEGINFILE { ARGIND == 1 ? g(3, f(FILENAME, 2)) : f(3, g(FILENAME, 2)) } + +#TEST12# +BEGINFILE { + print "In BEGINFILE:", FILENAME +} +function g() { + nextfile +} +function f( cnt) { + print cnt + 0 + while (getline > 0) { + if (++cnt == 2) { + g() + print "shouldn't see this line" + } + } +} +{ + print FNR + f() +} +ENDFILE { + print "In ENDFILE:", FILENAME +} + +#TEST13# +# exit in BEGINFILE +BEGINFILE { + print "In BEGINFILE:", FILENAME + exit(0) +} +ENDFILE { + print "In ENDFILE:", FILENAME +} +END { + print "In END:", FILENAME + while (getline > 0) + ; + print "shouldn't see this line" +} + +#TEST14# +# exit in ENDFILE +BEGINFILE { + print "In BEGINFILE:", FILENAME +} +ENDFILE { + print "In ENDFILE:", FILENAME + exit(0) +} +END { + print "In END:", FILENAME + while (getline > 0) + ; + print "shouldn't see this line" +} + +#TEST15# +BEGINFILE { + print "BEGINFILE:", FILENAME +} +{ nextfile } +END { + print NR +} + +#TEST16# +BEGINFILE { + print "In BEGINFILE:", FILENAME +} +BEGIN { + getline + print "In BEGIN:", FILENAME +} +{ + if (NR == FNR) { + print "In Rule:", FILENAME + nextfile + } + exit(0) +} + +ENDFILE { + print "In ENDFILE: ", FILENAME +} + diff -urN gawk-4.0.0/test/beginfile2.ok gawk-4.0.1/test/beginfile2.ok --- gawk-4.0.0/test/beginfile2.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/beginfile2.ok 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1,93 @@ +--Test 1a-- +In BEGIN +In BEGINFILE: beginfile2.in +1 +--Test 1b-- +In BEGIN +In BEGINFILE: beginfile2.in +In BEGINFILE: /file/does/not/exist +gawk: cmd. line:3: fatal: cannot open file `/file/does/not/exist' for reading (No such file or directory) +--Test 2-- +In BEGINFILE: beginfile2.in +In ENDFILE: beginfile2.in +In BEGINFILE: /file/does/not/exist +--Test 3-- +In BEGINFILE: beginfile2.in +In ENDFILE: beginfile2.in +executing END rule +In BEGINFILE: beginfile2.sh +In ENDFILE: beginfile2.sh +1 +Done executing END rule +--Test 4-- +In BEGINFILE: beginfile2.in +ENDFILE: beginfile2.in +executing END rule +In BEGINFILE: beginfile2.sh +ENDFILE: beginfile2.sh + +Done executing END rule +--Test 5-- +1 1 +1 +--Test 6-- +In BEGINFILE: beginfile2.in +1 1 +In ENDFILE: beginfile2.in +1 +--Test 7-- +In BEGINFILE: beginfile2.in +In ENDFILE: beginfile2.in +0 +In BEGINFILE: beginfile2.sh +In BEGIN: beginfile2.sh +In ENDFILE: beginfile2.sh +1 +--Test 8-- +beginfile2.in +1 2 +--Test 9a-- +Skipping: 1:/file/does/not/exist +In BEGINFILE: 2:beginfile2.in +In Rule: beginfile2.in +In ENDFILE: beginfile2.in +--Test 9b-- +Skipping: 1:/file/does/not/exist +Skipping: 2:beginfile2.in +In ENDFILE: beginfile2.in +--Test 10-- +82 82 +--Test 11-- +beginfile2.in +beginfile2.sh +gawk: cmd. line:9: fatal: non-redirected `getline' invalid inside `BEGINFILE' rule +--Test 12-- +In BEGINFILE: beginfile2.in +1 +0 +In ENDFILE: beginfile2.in +In BEGINFILE: beginfile2.sh +1 +0 +In ENDFILE: beginfile2.sh +--Test 13-- +In BEGINFILE: beginfile2.in +In END: beginfile2.in +In ENDFILE: beginfile2.in +In BEGINFILE: beginfile2.sh +--Test 14-- +In BEGINFILE: beginfile2.in +In ENDFILE: beginfile2.in +In END: beginfile2.in +In BEGINFILE: beginfile2.sh +In ENDFILE: beginfile2.sh +--Test 15-- +BEGINFILE: beginfile2.in +BEGINFILE: beginfile2.sh +2 +--Test 16-- +In BEGINFILE: beginfile2.in +In BEGIN: beginfile2.in +In Rule: beginfile2.in +In ENDFILE: beginfile2.in +In BEGINFILE: beginfile2.sh diff -urN gawk-4.0.0/test/beginfile2.sh gawk-4.0.1/test/beginfile2.sh --- gawk-4.0.0/test/beginfile2.sh 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/beginfile2.sh 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1,82 @@ +#!/bin/sh + +# beginfile2.sh --- test BEGINFILE/ENDFILE/getline/nextfile/exit combinations + +#AWK="../gawk" +AWKPROG="beginfile2.in" +SCRIPT=`basename $0` + +if [ "$AWK" = "" ] +then + echo $0: You must set AWK >&2 + exit 1 +fi + +echo "--Test 1a--" +prog=`$AWK '/#TEST1#/, /#TEST2#/' $AWKPROG` +$AWK "$prog" $AWKPROG +echo "--Test 1b--" +$AWK "$prog" $AWKPROG /file/does/not/exist + +echo "--Test 2--" +prog=`$AWK '/#TEST2#/, /#TEST3#/' $AWKPROG` +$AWK "$prog" $AWKPROG /file/does/not/exist + +echo "--Test 3--" +prog=`$AWK '/#TEST3#/, /#TEST4#/' $AWKPROG` +$AWK -vsrc=$SCRIPT "$prog" $AWKPROG + +echo "--Test 4--" +prog=`$AWK '/#TEST4#/, /#TEST5#/' $AWKPROG` +$AWK -vsrc=$SCRIPT "$prog" $AWKPROG + +echo "--Test 5--" +prog=`$AWK '/#TEST5#/, /#TEST6#/' $AWKPROG` +$AWK "$prog" $AWKPROG + +echo "--Test 6--" +prog=`$AWK '/#TEST6#/, /#TEST7#/' $AWKPROG` +$AWK "$prog" $AWKPROG + +echo "--Test 7--" +prog=`$AWK '/#TEST7#/, /#TEST8#/' $AWKPROG` +$AWK "$prog" $AWKPROG $SCRIPT + +echo "--Test 8--" +prog=`$AWK '/#TEST8#/, /#TEST9#/' $AWKPROG` +$AWK "$prog" $AWKPROG + +echo "--Test 9a--" +prog=`$AWK '/#TEST9#/, /#TEST10#/' $AWKPROG` +$AWK "$prog" /file/does/not/exist $AWKPROG +echo "--Test 9b--" +$AWK -vskip=1 "$prog" /file/does/not/exist $AWKPROG + +echo "--Test 10--" +prog=`$AWK '/#TEST10#/, /#TEST11#/' $AWKPROG` +$AWK "$prog" $AWKPROG $SCRIPT + +echo "--Test 11--" +prog=`$AWK '/#TEST11#/, /#TEST12#/' $AWKPROG` +$AWK "$prog" $AWKPROG $SCRIPT + +echo "--Test 12--" +prog=`$AWK '/#TEST12#/, /#TEST13#/' $AWKPROG` +$AWK "$prog" $AWKPROG $SCRIPT + +echo "--Test 13--" +prog=`$AWK '/#TEST13#/, /#TEST14#/' $AWKPROG` +$AWK "$prog" $AWKPROG $SCRIPT + +echo "--Test 14--" +prog=`$AWK '/#TEST14#/, /#TEST15#/' $AWKPROG` +$AWK "$prog" $AWKPROG $SCRIPT + +echo "--Test 15--" +prog=`$AWK '/#TEST15#/, /#TEST16#/' $AWKPROG` +$AWK "$prog" $AWKPROG $SCRIPT + +echo "--Test 16--" +prog=`$AWK '/#TEST16#/, /#TEST17#/' $AWKPROG` +$AWK "$prog" $AWKPROG $SCRIPT + diff -urN gawk-4.0.0/test/fpat3.awk gawk-4.0.1/test/fpat3.awk --- gawk-4.0.0/test/fpat3.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/fpat3.awk 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1,10 @@ +BEGIN { + FPAT = "[^,]*" + +} + +{ + if (x) NF + for (i = 1; i <= 4; ++i) + print i, $i +} diff -urN gawk-4.0.0/test/fpat3.in gawk-4.0.1/test/fpat3.in --- gawk-4.0.0/test/fpat3.in 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/fpat3.in 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1 @@ +a,b,,c diff -urN gawk-4.0.0/test/fpat3.ok gawk-4.0.1/test/fpat3.ok --- gawk-4.0.0/test/fpat3.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/fpat3.ok 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1,4 @@ +1 a +2 b +3 +4 c diff -urN gawk-4.0.0/test/fwtest3.awk gawk-4.0.1/test/fwtest3.awk --- gawk-4.0.0/test/fwtest3.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/fwtest3.awk 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1 @@ +BEGIN { FIELDWIDTHS="5" } { print $1 } diff -urN gawk-4.0.0/test/fwtest3.in gawk-4.0.1/test/fwtest3.in --- gawk-4.0.0/test/fwtest3.in 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/fwtest3.in 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1 @@ +1234567890 diff -urN gawk-4.0.0/test/fwtest3.ok gawk-4.0.1/test/fwtest3.ok --- gawk-4.0.0/test/fwtest3.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/fwtest3.ok 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1 @@ +12345 diff -urN gawk-4.0.0/test/getline4.awk gawk-4.0.1/test/getline4.awk --- gawk-4.0.0/test/getline4.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/getline4.awk 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1 @@ +END { getline $2; print} diff -urN gawk-4.0.0/test/getline4.in gawk-4.0.1/test/getline4.in --- gawk-4.0.0/test/getline4.in 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/getline4.in 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1 @@ + aaa bbb diff -urN gawk-4.0.0/test/getline4.ok gawk-4.0.1/test/getline4.ok --- gawk-4.0.0/test/getline4.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/getline4.ok 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1 @@ + aaa bbb diff -urN gawk-4.0.0/test/gsubtst7.awk gawk-4.0.1/test/gsubtst7.awk --- gawk-4.0.0/test/gsubtst7.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/gsubtst7.awk 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1,92 @@ +# From bug-gawk-bounces+arnold=skeeve.com@gnu.org Tue Jul 12 08:18:24 2011 +# Return-Path: +# Received: from localhost (localhost [127.0.0.1]) +# by skeeve.com (8.14.3/8.14.3) with ESMTP id p6C5HArm002260 +# for ; Tue, 12 Jul 2011 08:18:23 +0300 +# X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on sls-af11p1 +# X-Spam-Level: +# X-Spam-Status: No, score=-5.5 required=5.0 tests=BAYES_00,DNS_FROM_OPENWHOIS, +# RCVD_IN_DNSWL_MED autolearn=ham version=3.2.5 +# X-Envelope-From: bug-gawk-bounces+arnold=skeeve.com@gnu.org +# Received: from server1.f7.net [66.148.120.132] +# by localhost with IMAP (fetchmail-6.3.11) +# for (single-drop); Tue, 12 Jul 2011 08:18:23 +0300 (IDT) +# Received: from lists.gnu.org (lists.gnu.org [140.186.70.17]) +# by freefriends.org (8.14.4/8.14.4) with ESMTP id p6BIYi4t032040; +# Mon, 11 Jul 2011 14:34:48 -0400 +# Received: from localhost ([::1]:38787 helo=lists.gnu.org) +# by lists.gnu.org with esmtp (Exim 4.71) +# (envelope-from ) +# id 1QgLJb-0004tM-Eg +# for arnold@skeeve.com; Mon, 11 Jul 2011 14:34:43 -0400 +# Received: from eggs.gnu.org ([140.186.70.92]:54022) +# by lists.gnu.org with esmtp (Exim 4.71) +# (envelope-from ) id 1QgD0R-0004Vi-HZ +# for bug-gawk@gnu.org; Mon, 11 Jul 2011 05:42:24 -0400 +# Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) +# (envelope-from ) id 1QgD0Q-0000SE-8u +# for bug-gawk@gnu.org; Mon, 11 Jul 2011 05:42:23 -0400 +# Received: from moat.camk.edu.pl ([148.81.175.50]:34696) +# by eggs.gnu.org with esmtp (Exim 4.71) +# (envelope-from ) id 1QgD0P-0000Px-V3 +# for bug-gawk@gnu.org; Mon, 11 Jul 2011 05:42:22 -0400 +# Received: from localhost (localhost.localdomain [127.0.0.1]) +# by moat.camk.edu.pl (Postfix) with ESMTP id 72C1D5F004C +# for ; Mon, 11 Jul 2011 11:42:13 +0200 (CEST) +# X-Virus-Scanned: amavisd-new at camk.edu.pl +# Received: from moat.camk.edu.pl ([127.0.0.1]) +# by localhost (liam.camk.edu.pl [127.0.0.1]) (amavisd-new, port 10024) +# with LMTP id oh+-Yw+zHhK6 for ; +# Mon, 11 Jul 2011 11:42:07 +0200 (CEST) +# Received: from gatekeeper.camk.edu.pl (gatekeeper.camk.edu.pl [192.168.1.23]) +# by moat.camk.edu.pl (Postfix) with ESMTP id 89AA55F0046 +# for ; Mon, 11 Jul 2011 11:42:07 +0200 (CEST) +# Received: by gatekeeper.camk.edu.pl (Postfix, from userid 1293) +# id 796C8809FB; Mon, 11 Jul 2011 11:42:07 +0200 (CEST) +# Date: Mon, 11 Jul 2011 11:42:07 +0200 +# From: Kacper Kornet +# To: bug-gawk@gnu.org +# Message-ID: <20110711094207.GA2616@camk.edu.pl> +# MIME-Version: 1.0 +# Content-Type: text/plain; charset=iso-8859-2 +# Content-Disposition: inline +# User-Agent: Mutt/1.5.20 (2009-06-14) +# X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) +# X-Received-From: 148.81.175.50 +# X-Mailman-Approved-At: Mon, 11 Jul 2011 14:34:26 -0400 +# Subject: [bug-gawk] Change in behavior of gsub inside loop +# X-BeenThere: bug-gawk@gnu.org +# X-Mailman-Version: 2.1.14 +# Precedence: list +# List-Id: "Bug reports and all discussion about gawk." +# List-Unsubscribe: , +# +# List-Archive: +# List-Post: +# List-Help: +# List-Subscribe: , +# +# Errors-To: bug-gawk-bounces+arnold=skeeve.com@gnu.org +# Sender: bug-gawk-bounces+arnold=skeeve.com@gnu.org +# Status: R +# +# Hi, +# +# I have observed the following changed behavior between gawk-3.8.1 and +# gakw-4.0.0. While in the former +# +# echo -ne ' aaa' | gawk '{for (c = 1; c <= NF; c++) {gsub("foo", "bar", $c); print}}' +# +# prints: +# +# aaa +# +# the gawk-4.0.0 does not preserve the leading spaces and prints: +# +# aaa +# +# Best regards, +# -- +# Kacper +# +{for (c = 1; c <= NF; c++) {gsub("foo", "bar", $c); print}} diff -urN gawk-4.0.0/test/gsubtst7.in gawk-4.0.1/test/gsubtst7.in --- gawk-4.0.0/test/gsubtst7.in 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/gsubtst7.in 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1 @@ + aaa \ No newline at end of file diff -urN gawk-4.0.0/test/gsubtst7.ok gawk-4.0.1/test/gsubtst7.ok --- gawk-4.0.0/test/gsubtst7.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/gsubtst7.ok 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1 @@ + aaa diff -urN gawk-4.0.0/test/gsubtst8.awk gawk-4.0.1/test/gsubtst8.awk --- gawk-4.0.0/test/gsubtst8.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/gsubtst8.awk 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1,5 @@ +{ + OFS = " " $2 " " + gsub("foo", "_", OFS) + print $1, $2 +} diff -urN gawk-4.0.0/test/gsubtst8.in gawk-4.0.1/test/gsubtst8.in --- gawk-4.0.0/test/gsubtst8.in 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/gsubtst8.in 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1,2 @@ +a bar b +c foo d diff -urN gawk-4.0.0/test/gsubtst8.ok gawk-4.0.1/test/gsubtst8.ok --- gawk-4.0.0/test/gsubtst8.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/gsubtst8.ok 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1,2 @@ +a bar bar +c _ foo diff -urN gawk-4.0.0/test/printfbad3.awk gawk-4.0.1/test/printfbad3.awk --- gawk-4.0.0/test/printfbad3.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/printfbad3.awk 2012-03-28 21:47:54.000000000 +0200 @@ -0,0 +1,22 @@ +# Date: Wed, 14 Mar 2012 08:10:48 -0500 +# From: John Haque +# 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 -urN gawk-4.0.0/test/printfbad3.ok gawk-4.0.1/test/printfbad3.ok --- gawk-4.0.0/test/printfbad3.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/printfbad3.ok 2012-03-28 21:47:54.000000000 +0200 @@ -0,0 +1 @@ +>><< >>0xa7<< >>0xa7<< diff -urN gawk-4.0.0/test/pty1.awk gawk-4.0.1/test/pty1.awk --- gawk-4.0.0/test/pty1.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/pty1.awk 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1,54 @@ +# Message-ID: <1312419482.36133.YahooMailNeo@web110416.mail.gq1.yahoo.com> +# Date: Wed, 3 Aug 2011 17:58:02 -0700 (PDT) +# From: "T. X. G." +# To: "bug-gawk@gnu.org" +# Subject: [bug-gawk] two bugs in gawk 4.0.0 with FPAT and pty +# +# $ gawk --version +# GNU Awk 4.0.0 +# Copyright (C) 1989, 1991-2011 Free Software Foundation. +# +# # bug due to trying to make field splitting more efficient by not parse all fields +# $ echo a,b,,c |gawk '{for(i=1;i<=4;++i)print i, $i}' FPAT='[^,]*' +# 1 a +# 2 +# 3 b +# 4 +# +# # work around +# $ echo a,b,,c |gawk '{NF;for(i=1;i<=4;++i)print i, $i}' FPAT='[^,]*' +# 1 a +# 2 b +# 3 +# 4 c +# +# This bug, as you commented in function fpat_parse_field, is subtle. The null matches of previous call should be remembered across calls. You could make the auto variable non_empty static, but then any calls to patsplit between references of fields will cause it to be wrong. I guess you can either forgo the field splitting optimization by always parse all field in the case of FPAT or make a separate function for splitting $0 only (or pass an extra arg to it?) I am sure you will find the best fix. +# +# +# The next bug is with pty: +# +# $ gawk 'BEGIN{ +# c = "echo 123 > /dev/tty; read x < /dev/tty; echo \"x is $x\"" +# PROCINFO[c, "pty"] = 1 +# c |& getline;print +# print "abc" |& c +# c |& getline;print +# }' +# 123 +# ^C +# +# Adding a call to setsid() in the function two_way_open right after fork in the child process seems to fix it. +# +# One request for feature: +# Currently the format for mktime is not configurable. Could you please make it configurable just like strftime through PROCINFO["mktime"]? In fact I have already done it myself. But I don't think you would like my style. It should be pretty simple for you to implement. +# +# Thank you, Arnold. Again as I have said before, I enjoy your writings and appreciate your contributions to the FSF. +# W. G. +# +BEGIN { + c = "echo 123 > /dev/tty; read x < /dev/tty; echo \"x is $x\"" + PROCINFO[c, "pty"] = 1 + c |& getline; print + print "abc" |& c + c |& getline; print +} diff -urN gawk-4.0.0/test/pty1.ok gawk-4.0.1/test/pty1.ok --- gawk-4.0.0/test/pty1.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/pty1.ok 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1,2 @@ +123 +x is abc diff -urN gawk-4.0.0/test/rri1.awk gawk-4.0.1/test/rri1.awk --- gawk-4.0.0/test/rri1.awk 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/rri1.awk 2011-12-26 22:45:29.000000000 +0200 @@ -0,0 +1 @@ +/[d-f]/ diff -urN gawk-4.0.0/test/rri1.in gawk-4.0.1/test/rri1.in --- gawk-4.0.0/test/rri1.in 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/rri1.in 2011-12-26 22:45:29.000000000 +0200 @@ -0,0 +1 @@ +no match: è diff -urN gawk-4.0.0/test/rtlen.ok gawk-4.0.1/test/rtlen.ok --- gawk-4.0.0/test/rtlen.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/rtlen.ok 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1,3 @@ +3 +5 +2 diff -urN gawk-4.0.0/test/rtlen.sh gawk-4.0.1/test/rtlen.sh --- gawk-4.0.0/test/rtlen.sh 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/rtlen.sh 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1,5 @@ +#! /bin/sh + +AWK=${AWK:-../gawk} + +$AWK 'BEGIN {printf "0\n\n\n1\n\n\n\n\n2\n\n"; exit}' | $AWK 'BEGIN {RS=""}; {print length(RT)}' diff -urN gawk-4.0.0/test/rtlen01.ok gawk-4.0.1/test/rtlen01.ok --- gawk-4.0.0/test/rtlen01.ok 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/rtlen01.ok 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1,3 @@ +0 +1 +2 diff -urN gawk-4.0.0/test/rtlen01.sh gawk-4.0.1/test/rtlen01.sh --- gawk-4.0.0/test/rtlen01.sh 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.0.1/test/rtlen01.sh 2011-11-01 22:09:45.000000000 +0200 @@ -0,0 +1,8 @@ +#! /bin/sh + +AWK=${AWK:-../gawk} + +$AWK 'BEGIN {printf "0"; exit}' | $AWK 'BEGIN {RS=""}; {print length(RT)}' +$AWK 'BEGIN {printf "0\n"; exit}' | $AWK 'BEGIN {RS=""}; {print length(RT)}' +$AWK 'BEGIN {printf "0\n\n"; exit}' | $AWK 'BEGIN {RS=""}; {print length(RT)}' + diff -urN gawk-4.0.0/test/sortu.awk gawk-4.0.1/test/sortu.awk --- gawk-4.0.0/test/sortu.awk 2011-04-22 16:01:11.000000000 +0300 +++ gawk-4.0.1/test/sortu.awk 2011-11-01 22:09:45.000000000 +0200 @@ -16,8 +16,12 @@ } # ascending value number -function comp_val_num(s1, v1, s2, v2) +function comp_val_num(s1, v1, s2, v2, num) { + num = "^[-+]?([0-9]+[.]?[0-9]*|[.][0-9]+)([eE][-+]?[0-9]+)?$" + # force stable sort, compare as strings if not numeric + if ((v1 - v2) == 0 && (v1 !~ num || v2 !~ num)) + return comp_val_str(s1, v1, s2, v2) return (v1 - v2) } diff -urN gawk-4.0.0/test/sortu.ok gawk-4.0.1/test/sortu.ok --- gawk-4.0.0/test/sortu.ok 2011-04-22 16:06:21.000000000 +0300 +++ gawk-4.0.1/test/sortu.ok 2011-11-01 22:09:45.000000000 +0200 @@ -13,9 +13,9 @@ 100 5 4 1 --- asort(a, b, "comp_val_num"), IGNORECASE = 0--- -[1] :barz barz -[2] :blattt blattt -[3] :Zebra Zebra +[1] :barz Zebra +[2] :blattt barz +[3] :Zebra blattt [4] :1234 234 [5] :234 1234 --- asort(a, b, "comp_val_str"), IGNORECASE = 0--- diff -urN gawk-4.0.0/version.c gawk-4.0.1/version.c --- gawk-4.0.0/version.c 2011-06-24 11:26:44.000000000 +0300 +++ gawk-4.0.1/version.c 2012-03-28 22:03:34.000000000 +0200 @@ -1,3 +1,3 @@ #include "config.h" -const char *version_string = "GNU Awk 4.0.0"; +const char *version_string = "GNU Awk 4.0.1"; diff -urN gawk-4.0.0/vms/ChangeLog gawk-4.0.1/vms/ChangeLog --- gawk-4.0.0/vms/ChangeLog 2011-06-24 11:17:54.000000000 +0300 +++ gawk-4.0.1/vms/ChangeLog 2012-03-28 22:02:08.000000000 +0200 @@ -1,3 +1,50 @@ +2012-03-28 Arnold D. Robbins + + * 4.0.1: Release tar ball made. + +2012-03-28 Arnold D. Robbins + + * vms-conf.h: Update copyright year. + +2012-03-21 Anders Wallin + + * vmstest.com: Make printfbad3 test work. + +2012-03-20 Arnold D. Robbins + + * vmstest.com: Add printfbad3 test. + +2012-02-10 Arnold D. Robbins + + * vmsbuild.com, descrip.mms, vms-conf.h: Update patch level. + +2011-12-31 Arnold D. Robbins + + * vms_misc.c: [STREQ, STREQN]: Change use of macros to call + strcmp, strncmp, directly. + +2011-11-02 Pat Rankin + + * vms-conf.h (HAVE_SETSID, HAVE_SYS_IOCTL): Add but leave undef'd. + (HAVE_ISWCTYPE, HAVE_ISWLOWER, HAVE_ISWUPPER, HAVE_MBRLEN, + HAVE_MBRTOWC, HAVE_TOWLOWER, HAVE_TOWUPPER, HAVE_WCHAR_H, + HAVE_WCRTOMB, HAVE_WCSCOLL, HAVE_WCTYPE, HAVE_WCTYPE_H, + HAVE_WCTYPE_T): Define as 1 since DEC C supports all these. + + * descrip.mms (replace.obj): Add dependencies for missing_d/*.c. + * vmstest.com (unix_tests): Fix typo in spelling of rtlen01. + +2011-10-30 Pat Rankin + + * vmstest.com (fpat3, fwtest3, getline5, gsubtst7, gsubtst8, + pty1, rtlen, rtlen01, rtlenmb): New tests. + (posix2008sub): Revised test. + +2011-10-25 Anders Wallin + + * vmstest.com (posix2008sub): Added as specific test in order to + use --posix option. + 2011-06-24 Arnold D. Robbins * vmsbuild.com (REL, PATCHLVL): Move to 4.0.0. diff -urN gawk-4.0.0/vms/descrip.mms gawk-4.0.1/vms/descrip.mms --- gawk-4.0.0/vms/descrip.mms 2011-06-24 11:14:23.000000000 +0300 +++ gawk-4.0.1/vms/descrip.mms 2012-03-28 21:47:54.000000000 +0200 @@ -48,6 +48,7 @@ # location of various source files, relative to the 'main' directory VMSDIR = [.vms] DOCDIR = [.doc] +MISSNGD = [.missing_d] MAKEFILE = $(VMSDIR)Descrip.MMS # debugging &c !'ccflags' is an escape to allow external compile flags @@ -139,7 +140,7 @@ # Release of gawk REL=4.0 -PATCHLVL=0 +PATCHLVL=1 # generic target all : gawk,pgawk,dgawk @@ -226,6 +227,13 @@ dfa.obj : dfa.c dfa.h regex.obj : regex.c regcomp.c regex_internal.c regexec.c regex.h regex_internal.h command.obj,debug.obj : cmd.h +replace.obj : replace.c $(MISSNGD)system.c $(MISSNGD)memcmp.c \ + $(MISSNGD)memcpy.c $(MISSNGD)memset.c $(MISSNGD)memmove.c \ + $(MISSNGD)strncasecmp.c $(MISSNGD)strerror.c \ + $(MISSNGD)strftime.c $(MISSNGD)strchr.c $(MISSNGD)strtod.c \ + $(MISSNGD)strtoul.c $(MISSNGD)tzset.c $(MISSNGD)mktime.c \ + $(MISSNGD)snprintf.c $(MISSNGD)getaddrinfo.c $(MISSNGD)usleep.c \ + $(MISSNGD)setenv.c $(MISSNGD)strcoll.c $(MISSNGD)wcmisc.c # bison or yacc required awkgram.c : awkgram.y # foo.y :: yacc => y[_]tab.c, bison => foo_tab.c diff -urN gawk-4.0.0/vms/vms-conf.h gawk-4.0.1/vms/vms-conf.h --- gawk-4.0.0/vms/vms-conf.h 2011-06-24 11:17:32.000000000 +0300 +++ gawk-4.0.1/vms/vms-conf.h 2012-03-28 21:59:47.000000000 +0200 @@ -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. @@ -128,13 +128,13 @@ #define HAVE_ISASCII 1 /* Define to 1 if you have the `iswctype' function. */ -#undef HAVE_ISWCTYPE +#define HAVE_ISWCTYPE 1 /* Define to 1 if you have the `iswlower' function. */ -#undef HAVE_ISWLOWER +#define HAVE_ISWLOWER 1 /* Define to 1 if you have the `iswupper' function. */ -#undef HAVE_ISWUPPER +#define HAVE_ISWUPPER 1 /* Define if you have and nl_langinfo(CODESET). */ #undef HAVE_LANGINFO_CODESET @@ -167,10 +167,10 @@ #undef HAVE_LONG_LONG_INT /* Define to 1 if you have the `mbrlen' function. */ -#undef HAVE_MBRLEN +#define HAVE_MBRLEN 1 /* Define to 1 if mbrtowc and mbstate_t are properly declared. */ -#undef HAVE_MBRTOWC +#define HAVE_MBRTOWC 1 /* Define to 1 if you have the header file. */ #undef HAVE_MCHECK_H @@ -214,6 +214,9 @@ /* Define to 1 if you have the `setlocale' function. */ #undef HAVE_SETLOCALE +/* Define to 1 if you have the `setsid' function. */ +#undef HAVE_SETSID + /* Define to 1 if you have the `snprintf' function. */ #undef HAVE_SNPRINTF @@ -289,6 +292,9 @@ /* Define to 1 if you have the `system' function. */ #define HAVE_SYSTEM 1 +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_IOCTL_H + /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H @@ -322,10 +328,10 @@ #undef HAVE_TM_ZONE /* Define to 1 if you have the `towlower' function. */ -#undef HAVE_TOWLOWER +#define HAVE_TOWLOWER 1 /* Define to 1 if you have the `towupper' function. */ -#undef HAVE_TOWUPPER +#define HAVE_TOWUPPER 1 /* Define to 1 if you don't have `tm_zone' but do have the external array `tzname'. */ @@ -357,22 +363,22 @@ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ -#undef HAVE_WCHAR_H +#define HAVE_WCHAR_H 1 /* Define to 1 if you have the `wcrtomb' function. */ -#undef HAVE_WCRTOMB +#define HAVE_WCRTOMB 1 /* Define to 1 if you have the `wcscoll' function. */ -#undef HAVE_WCSCOLL +#define HAVE_WCSCOLL 1 /* Define to 1 if you have the `wctype' function. */ -#undef HAVE_WCTYPE +#define HAVE_WCTYPE 1 /* Define to 1 if you have the header file. */ -#undef HAVE_WCTYPE_H +#define HAVE_WCTYPE_H 1 /* systems should define this type here */ -#undef HAVE_WCTYPE_T +#define HAVE_WCTYPE_T 1 /* systems should define this type here */ #undef HAVE_WINT_T @@ -402,14 +408,11 @@ #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 -/* Define to 1 if the C compiler supports function prototypes. */ -#define PROTOTYPES 1 - /* Define as the return type of signal handlers (`int' or `void'). */ #define RETSIGTYPE void @@ -435,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. @@ -481,9 +484,6 @@ # undef _TANDEM_SOURCE #endif -/* Define like PROTOTYPES; this can be used by system headers. */ -#define __PROTOTYPES 1 - /* Define to empty if `const' does not conform to ANSI C. */ #undef const diff -urN gawk-4.0.0/vms/vms_misc.c gawk-4.0.1/vms/vms_misc.c --- gawk-4.0.0/vms/vms_misc.c 2011-02-27 08:00:54.000000000 +0200 +++ gawk-4.0.1/vms/vms_misc.c 2011-12-31 20:54:26.000000000 +0200 @@ -98,7 +98,7 @@ { int result; - if (STREQN(name, "/dev/", 5)) { + if (strncmp(name, "/dev/", 5) == 0) { /* (this used to be handled in vms_devopen(), but that is only called when opening files for output; we want it for input too) */ if (strcmp(name + 5, "null") == 0) /* /dev/null -> NL: */ @@ -307,7 +307,7 @@ if (result == 0 /* GAWK addition; fixup /dev/null flags */ && (statbuf->st_mode & S_IFREG) - && STREQ(statbuf->st_dev, "_NLA0:")) + && strcmp(statbuf->st_dev, "_NLA0:") == 0) { statbuf->st_mode &= ~S_IFREG; statbuf->st_mode |= S_IFCHR; @@ -354,7 +354,7 @@ if (result == 0 /* GAWK addition; fixup /dev/null flags */ && (statbuf->st_mode & S_IFREG) - && STREQ(statbuf->st_dev, "_NLA0:")) + && strcmp(statbuf->st_dev, "_NLA0:") == 0) { statbuf->st_mode &= ~S_IFREG; statbuf->st_mode |= S_IFCHR; diff -urN gawk-4.0.0/vms/vmsbuild.com gawk-4.0.1/vms/vmsbuild.com --- gawk-4.0.0/vms/vmsbuild.com 2011-06-24 11:15:07.000000000 +0300 +++ gawk-4.0.1/vms/vmsbuild.com 2012-03-28 21:47:54.000000000 +0200 @@ -12,7 +12,7 @@ $! gawk 4.0.0 revd, May'11 $! $ REL = "4.0" !release version number -$ PATCHLVL = "0" +$ PATCHLVL = "1" $! $! $ CCFLAGS = "/noList" ! "/noOpt/Debug" diff -urN gawk-4.0.0/vms/vmstest.com gawk-4.0.1/vms/vmstest.com --- gawk-4.0.0/vms/vmstest.com 2011-06-23 09:31:19.000000000 +0300 +++ gawk-4.0.1/vms/vmstest.com 2012-03-28 21:47:54.000000000 +0200 @@ -47,15 +47,17 @@ + " clobber closebad clsflnam compare compare2 concat1" $ gosub list_of_tests $ list = "concat2 concat3 concat4 convfmt datanonl defref" - - + " delargv delarprm delarpm2 delfunc dynlj eofsplit exitval1" - - + " dfastress" - + + " delargv delarprm delarpm2 delfunc dfastress dynlj" - + + " eofsplit exitval1" - + " exitval2 fcall_exit fcall_exit2 fldchg fldchgnf" - + " fnamedat fnarray fnarray2 fnaryscl fnasgnm fnmisc" - + " fordel forref forsimp fsbs fsspcoln fsrs fstabplus" - - + " funsemnl funsmnam funstack getline getline2 getline3" + + " funsemnl funsmnam funstack getline getline2 getline3" - + + " getline4" $ gosub list_of_tests $ list = "getlnbuf getnr2tb getnr2tm gsubasgn gsubtest" - - + " gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 hex" - + + " gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6" - + + " gsubtst7 gsubtst8 hex" - + " hsprint inputred intest intprec iobug1" - + " leaddig leadnl litoct longsub longwrds"- + " manglprm math membug1 messages minusstr mmap8k" - @@ -87,7 +89,7 @@ $unix: $unix_tests: echo "unix_tests..." $ list = "fflush getlnhd localenl pid pipeio1 pipeio2" - - + " poundbang space strftlng" + + " poundbang rtlen rtlen01 space strftlng" $ gosub list_of_tests $ return $ @@ -96,7 +98,8 @@ $ list = "aadelete1 aadelete2 aarray1 aasort aasorti" - + " argtest arraysort backw badargs beginfile1 binmode1" - + " clos1way delsub devfd devfd1 devfd2 dumpvars exit" - - + " fieldwdth fpat1 fpat2 fpatnull funlen fsfwfs fwtest fwtest2" - + + " fieldwdth fpat1 fpat2 fpat3 fpatnull funlen fsfwfs" - + + " fwtest fwtest2 fwtest3" - + " gensub gensub2 getlndir gnuops2 gnuops3 gnureops" - + " icasefs icasers igncdym igncfs ignrcase ignrcas2" $ gosub list_of_tests @@ -104,9 +107,9 @@ + " match2 match3 manyfiles mbprintf3 mbstr1" - + " nastyparm next nondec" - + " nondec2 patsplit posix profile1 procinfs printfbad1" - - + " printfbad2 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 $ @@ -121,7 +124,7 @@ $ ! without i18n kit, VMS only supports the C locale $ ! and several of these fail $ list = "asort asorti fmttest fnarydel fnparydl lc_num1 mbfw1" - - + " mbprintf1 mbprintf2 rebt8b2 sort1 sprintfc" + + " mbprintf1 mbprintf2 rebt8b2 rtlenmb sort1 sprintfc" $ gosub list_of_tests $ return $ @@ -194,6 +197,7 @@ $fmttest: $fordel: $fpat1: +$fpat3: $fpatnull: $fsfwfs: $fsrs: @@ -201,14 +205,18 @@ $funstack: $fwtest: $fwtest2: +$fwtest3: $gensub: $getline3: +$getline4: $getnr2tb: $getnr2tm: $gsubtest: $gsubtst2: $gsubtst4: $gsubtst5: +$gsubtst7: +$gsubtst8: $hex: $icasers: $igncfs: @@ -312,7 +320,6 @@ $paramtyp: $patsplit: $pcntplus: -$posix2008sub: $printf1: $procinfs: $prt1eval: @@ -364,7 +371,8 @@ $ return $ $poundbang: -$ echo "poundbang: not supported" +$pty1: +$ echo "''test': not supported" $ return $ $messages: echo "messages" @@ -1078,10 +1086,12 @@ $ if $status then rm _space.tmp; $ return $ -$printf0: echo "printf0" -$ gawk --posix -f printf0.awk >_printf0.tmp -$ cmp printf0.ok _printf0.tmp -$ if $status then rm _printf0.tmp; +$posix2008sub: +$printf0: +$ echo "''test'" +$ gawk --posix -f 'test'.awk >_'test'.tmp +$ cmp 'test'.ok _'test'.tmp +$ if $status then rm _'test'.tmp; $ return $ $rsnulbig: echo "rsnulbig" @@ -1196,6 +1206,50 @@ $ if $status then rm _rsstart3.tmp; $ return $ +$rtlen: +$rtlen01: +$rtlenmb: +$ echo "''test'" +$ if .not.pipeok +$ then echo "Without the PIPE command, ''test' can't be run." +$ On warning then return +$ pipe echo "With PIPE, ''test' will finish quickly." +$ On warning then $ +$ pipeok = 1 +$ endif +$ f = "''test'.ok" +$ if test.eqs."rtlen" .or. test.eqs."rtlenmb" +$ then +$ if test.eqs."rtlenmb" then GAWKLOCALE = "en_US.UTF-8" +$ pipe - + gawk -- "BEGIN {printf ""0\n\n\n1\n\n\n\n\n2\n\n""; exit}" | - + gawk -- "BEGIN {RS=""""}; {print length(RT)}" >_'test'.tmp +$ if test.eqs."rtlenmb" then delet_/Symbol/Local GAWKLOCALE +$ if test.eqs."rtlenmb" then f = "rtlen.ok" +$ else +$ call/Output=_rtlen01.tmp do__rtlen01 +$ ! first test yields 1 instead of 0 due to forced newline +$ gawk -- "FNR==1 {sub(""1"",""0"")}; {print}" _rtlen01.tmp >_rtlen01.too +$ rm _rtlen01.tmp; +$ mv _rtlen01.too _rtlen01.tmp +$ endif +$ cmp 'f' _'test'.tmp +$ if $status then rm _'test'.tmp; +$ return +$ +$do__rtlen01: subroutine +$ gawk = gawk !PIPE won't propagate local symbols from outer procedure +$ pipe - + gawk -- "BEGIN {printf ""0""; exit}" | - + gawk -- "BEGIN {RS=""""}; {print length(RT)}" +$ pipe - + gawk -- "BEGIN {printf ""0\n""; exit}" | - + gawk -- "BEGIN {RS=""""}; {print length(RT)}" +$ pipe - + gawk -- "BEGIN {printf ""0\n\n""; exit}" | - + gawk -- "BEGIN {RS=""""}; {print length(RT)}" +$ endsubroutine !do__rtlen01 +$ $nondec2: echo "nondec2" $ gawk --non-decimal-data -v "a=0x1" -f nondec2.awk >_nondec2.tmp $ cmp nondec2.ok _nondec2.tmp @@ -1346,12 +1400,14 @@ $ if $status then rm _mbstr1.tmp; $ return $ -$printfbad2: echo "printfbad2" +$printfbad2: +$printfbad3: +$ echo "''test'" $ set noOn -$ gawk --lint -f printfbad2.awk printfbad2.in >_printfbad2.tmp 2>&1 +$ gawk --lint -f 'test'.awk 'test'.in >_'test'.tmp 2>&1 $ set On -$ cmp printfbad2.ok _printfbad2.tmp -$ if $status then rm _printfbad2.tmp; +$ cmp 'test'.ok _'test'.tmp +$ if $status then rm _'test'.tmp; $ return $ $fmtspcl: echo "fmtspcl: not supported" diff -urN gawk-4.0.0/xalloc.h gawk-4.0.1/xalloc.h --- gawk-4.0.0/xalloc.h 2011-06-23 09:27:01.000000000 +0300 +++ gawk-4.0.1/xalloc.h 2011-11-01 22:09:45.000000000 +0200 @@ -281,6 +281,16 @@ return XNMALLOC (n, char); } +/* Allocate S bytes of zeroed memory dynamically, with error checking. + There's no need for xnzalloc (N, S), since it would be equivalent + to xcalloc (N, S). */ + +inline void * +xzalloc (size_t s) +{ + return memset (xmalloc (s), 0, s); +} + # endif # ifdef __cplusplus EOF # Final cleanup echo Sleeping and touching files to update timestamps. # touch list of zero length files sleep 2 touch aclocal.m4 configh.in test/Makefile.in touch awklib/Makefile.in doc/Makefile.in Makefile.in sleep 2 touch configure version.c touch test/rri1.ok chmod +x ./configure chmod +x test/rtlen.sh chmod +x test/rtlen01.sh chmod +x test/beginfile2.sh echo Remove any .orig or "'~'" files that may remain. echo Use '"configure && make"' to rebuild any dependent files. echo Use "'make distclean'" to clean up.